/* creates an XMLHttpRequest instance */
function createXmlHttpRequestObject() {
	// will store the reference to the XMLHttpRequest object
	var xmlHttp;
	// this should work for all browsers except IE6 and older
	try {
		// try to create XMLHttpRequest object
		xmlHttp = new XMLHttpRequest();
	}
	catch(e) {
		// assume IE6 or older
		var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
						"MSXML2.XMLHTTP.5.0",
						"MSXML2.XMLHTTP.4.0",
						"MSXML2.XMLHTTP.3.0",
						"MSXML2.XMLHTTP",
						"Microsoft.XMLHTTP");
		// try every prog id until one works
		for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++) {
			try { 
				// try to create XMLHttpRequest object
				xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
			} 
			catch (e) {}
		}
	}
	// return the created object or display an error message
	if (!xmlHttp)
		alert("Error creating the XMLHttpRequest object.");
	else 
		return xmlHttp;

	return null;
}

function unescapeHtml(html) {
	if (html == "") return "";
	var temp = document.createElement("div");
	temp.innerHTML = html;
	var result = temp.childNodes[0].nodeValue;
	temp.removeChild(temp.firstChild)
	return result;  
}
function URLEncode(plaintext) {
	// The Javascript escape and unescape functions do not correspond
	// with what browsers actually do...
	var SAFECHARS = "0123456789" +					// Numeric
					"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +	// Alphabetic
					"abcdefghijklmnopqrstuvwxyz" +
					"-_.!~*'()";					// RFC2396 Mark characters
	var HEX = "0123456789ABCDEF";

	var encoded = "";
	for (var i = 0; i < plaintext.length; i++ ) {
		var ch = plaintext.charAt(i);
		if (ch == " ") {
			encoded += "+";				// x-www-urlencoded, rather than %20
		} else if (SAFECHARS.indexOf(ch) != -1) {
			encoded += ch;
		} else {
			var charCode = ch.charCodeAt(0);
			if (charCode > 255) {
				alert( "Unicode Character '" 
				+ ch 
				+ "' cannot be encoded using standard URL encoding.\n" +
				          "(URL encoding only supports 8-bit characters.)\n" +
						  "A space (+) will be substituted." );
				encoded += "+";
			} else {
				encoded += "%";
				encoded += HEX.charAt((charCode >> 4) & 0xF);
				encoded += HEX.charAt(charCode & 0xF);
			}
		}
	} // for
	return encoded;
}

function URLDecode(encoded) {
	// Replace + with ' '
	// Replace %xx with equivalent character
	// Put [ERROR] in output if %xx is invalid.
	var HEXCHARS = "0123456789ABCDEFabcdef"; 
	var plaintext = "";
	var i = 0;
	while (i < encoded.length) {
		var ch = encoded.charAt(i);
		if (ch == "+") {
			plaintext += " ";
			i++;
		} else if (ch == "%") {
			if (i < (encoded.length-2) 
			&& HEXCHARS.indexOf(encoded.charAt(i+1)) != -1 
			&& HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) {
				plaintext += unescape( encoded.substr(i,3) );
				i += 3;
			} else {
				alert( 'Bad escape combination near ...' + encoded.substr(i) );
				plaintext += "%[ERROR]";
				i++;
			}
		} else {
			plaintext += ch;
			i++;
		}
	} // while
	return plaintext;
}

function isEmpty(strValue) {
	var strTemp = trimAll(strValue);
	if(strTemp.length > 0)	return false;
	return true;
}

function trimAll(strValue) {
	var objRegExp = /^(\s*)$/;
	
	//check for all spaces
	if(objRegExp.test(strValue))
		strValue = strValue.replace(objRegExp, '');
	if(strValue.length == 0)
		return strValue;
	
	//check for leading & trailing spaces
	objRegExp = /^(\s*)([\W\w]*)(\b\s*$)/;
	if(objRegExp.test(strValue)) {
		//remove leading and trailing whitespace characters
		strValue = strValue.replace(objRegExp, '$2');
	}
	return strValue;
}

function isValidEmail(email) {
	var model = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
	return model.test(email);
}

function isValidDate(date) {
	var model = /^([0-9]{2})\/([0-9]{2})\/([0-9]{4})$/;
	if (!model.test(date)) return false;

	var inputday = date.substr(0,2);
	if (inputday.substr(0,1) == "0") inputday = inputday.substr(1,1);
	var inputmonth = date.substr(3,2);
	if (inputmonth.substr(0,1) == "0") inputmonth = inputmonth.substr(1,1);
	inputmonth--;
	var inputyear = date.substr(6,4);
	var inputdate = new Date(inputyear,inputmonth,inputday);
	if (inputdate.getDate() != inputday || inputdate.getMonth() != inputmonth) return false;
	return true;
}

function isValidPassword(passwd) {
	var model = /^[a-zA-Z0-9]*$/;
	return model.test(passwd);
}

function isValidNumeric(strnumber) {
	var objRegExp  =  /(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/;
	return objRegExp.test(strnumber);
}

function isValidInteger(strnumber) {
	var objRegExp  = /(^-?\d\d*$)/;
	return objRegExp.test(strnumber);
}

function convertFrenchNumber(strnumber) {
	var strnumber =  strnumber.replace(",",".");
	strnumber =  strnumber.replace(" ","");
	return strnumber;
}

function isValidPostalCode(strcp) {
	var objRegExp  = /(^\d{5}$)/;
	return objRegExp.test(strcp);
}

function isValidTagsCode(strcode) {
	var model = /(^[A-Z0-9]{4}$)/;
	return model.test(strcode);
}

