var session = new Session();

function get(id) {

	return document.getElementById(id);
}

function Session() {

	this.setAttribute = function(name, value) {

		try {
			ajaxSyncRequest("SessionServlet?name=" + name + "&value=" + value, "POST");
		} catch (error) {
			alert(error);
		}
	}

	this.getAttribute = function(name, value) {

		var response = ajaxSyncRequest("SessionServlet?name=" + name + (value != null ? "&value=" + value : ""), "GET");
		response = eval('(' + response + ')');
		return response.attribute.value;
	}
}

function displayMsg(id, msg, duration) {

	var node = document.getElementById(id);
	if (node != null) {
		node.style.display = "block";
		node.innerHTML = msg;
		setTimeout("hideMsg('" + id + "')", duration); 
	}
}

function hideMsg(id) {

	var node = document.getElementById(id);
	if (node != null) {
		node.style.display = "none";
		node.innerHTML = "";
	}
}

function display(id) {

	var node = get(id);
	node.style.display = 'block';
}

function hide(id) {
	
	var node = get(id);
	node.style.display = 'none';
}

function submitForm(form, action) {

	if (form != "[object HTMLFormElement]")
		form = document.getElementById(form);
	var url = action + getQueryString(form);
	return trim(ajaxSyncRequest(url, form.method));
}

function resetForm(form, hide) {

	if (form != "[object HTMLFormElement]")
		form = document.getElementById(form);
	form.reset();
	if (hide != null) {
		if (hide == true) {
			form.style.display = 'none';
		}
	}
	return false;
}

function createAction(form, action) {

	var node = document.createElement("input");
	node.type = "hidden";
	node.name = "action";
	node.value = action;
	form.appendChild(node);
}

function getQueryString(form) {

	if (form != "[object HTMLFormElement]")
		form = document.getElementById(form);
	var queryString = "";
	for (var i = 0; i < form.elements.length; i++) {
		var element = form.elements[i];
		if (element.name != "") {
			if (i == 0) {
				queryString += "?" + element.name + "=" + element.value;
			} else {
				queryString += "&" + element.name + "=" + element.value;
			}
		}
	}
	return queryString;
}

function encodeURL(url) {  

	if (url.indexOf("?") > 0) {
		encodedParams = "?";  
		parts = url.split("?");  
		params = parts[1].split("&");  
		for(i = 0; i < params.length; i++)  {  
			if (i > 0) {  
				encodedParams += "&";  
			}
			if (params[i].indexOf("=") > 0) {  
				p = params[i].split("=");  
				encodedParams += (p[0] + "=" + escape(encodeURI(p[1])));  
			} else {   
				encodedParams += params[i];  
			}  
		}  
		url = parts[0] + encodedParams;  
	}  
	return url;  
}	

function checkRequired(input, msg, where) {

	var node = document.getElementById(where);
	if (input.type == "checkbox") {
		if (input.checked == false) {
			if (node == null)
				node = document.getElementById(input.name + "-validation");
			node.innerHTML = msg;
			return false;
		} else {
			if (node == null)
				node = document.getElementById(input.name + "-validation");
			node.innerHTML = "";
			return true;
		}
	} else {
		if (input.value == "") {
			if (node == null)
				node = document.getElementById(input.name + "-validation");
			node.innerHTML = msg;
			return false;
		} else {
			if (node == null)
				node = document.getElementById(input.name + "-validation");
			node.innerHTML = "";
			return true;
		}
	}
}

function setNumeric(id, defValue) {

	var mask = document.getElementById(id + "-mask");
	var back = document.getElementById(id);
	back.style.display = "none";
	
	var value = back.value;
	if (value != "") {
		defValue = value;
	} else {
		defValue = getDefValue();
	}
	back.value = defValue;
	mask.value = formatCurrency(getDefValue());

	function getDefValue() {

		if (defValue == null || trim(defValue) == "")
			defValue = 0;
		return defValue;
	}
	
	mask.onkeypress = function(event) {
	
		return isNumber(mask.value, event);
	}
	
	mask.onfocus = function() {
	
		var value = back.value;
		if (parseFloat(value) == 0)
			value = "";
		mask.value = value;
	}
	
	mask.onblur = function() {
		
		var value = mask.value;
		if (value == "")
			value = "0";
		back.value = value;
		mask.value = formatCurrency(back.value);
	}
}


function isNumber(value, e) {

	var validChars = "0123456789.";

	var keynum;
	var numcheck;
	if(window.event) {
		// IE
		keynum = e.keyCode;
	} else if(e.which) {
		// Netscape/Firefox/Opera
		keynum = e.which;
	} 
	if (keynum == 8) {
		return true;
	} else if (keynum == undefined) {
		return true;
	} else {
		var keychar = String.fromCharCode(keynum);
		if (keychar == ".") {
			if (value.indexOf(keychar) == -1) {
				return true;
			} 
			return false;
		} else if (validChars.indexOf(keychar) == -1) {
			return false;
		}
		return true;
	}
}

function formatCurrency(num) {
	
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
		num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10)
		cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
		num = num.substring(0,num.length-(4*i+3))+','+
	num.substring(num.length-(4*i+3));
	return (((sign)?'':'-') + '' + num + '.' + cents);
}

function trim(str, chars) {

    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {

    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {

    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}
