	/* 	----------------------------------------------------------------------------------------
		SPRY AJAX Functions
		----------------------------------------------------------------------------------------
	*/

	function SpryCreateXMLObject( xml_string ) {
		// Create a XML DOM document
		var spry_XMLdoc = Spry.Utils.stringToXMLDoc( trim(xml_string) );
		if (!spry_XMLdoc || !spry_XMLdoc.firstChild) {
			return null;
		}

		// Convert the XML DOM document to a JS object.
		var spry_xmlObj = Spry.XML.documentToObject( spry_XMLdoc );
		if (spry_xmlObj && spry_xmlObj.reply) {
			return spry_xmlObj;
		} else {
			return null;
		}
	}


	/* 	----------------------------------------------------------------------------------------
		UTILITY Functions
		----------------------------------------------------------------------------------------
	*/

	function isNull(argvalue) {
		if (typeof argvalue + "" == "undefined" || argvalue === null || argvalue == '')
			return true;
		else
			return false;
	}

	function isEmail(argvalue) {
		argvalue = trim(argvalue);
		if (argvalue == "")
			return false;

  		if (argvalue.indexOf(" ") != -1)
			return false;
		else if (argvalue.indexOf("@") == -1)
			return false;
		else if (argvalue.indexOf("@") == 0)
			return false;
		else if (argvalue.indexOf("@") == (argvalue.length-1))
			return false;

  		arrayString = argvalue.split("@");

		if (arrayString[1].indexOf(".") == -1)
			return false;
		else if (arrayString[1].indexOf(".") == 0)
			return false;
		else if (arrayString[1].charAt(arrayString[1].length-1) == ".") {
			return false;
		}
		return true;
	}


	function isPhoneFax (inputVal) {
		var inputStr = inputVal.toString();
		inputStr = trim(inputStr.toLowerCase());

		if (inputStr == "")
			return false;
		for (var i=0; i<inputStr.length; i++) {
			var aChar = inputStr.charAt(i);
			if ((aChar < "0" || aChar > "9") && !(aChar == " " || aChar == "(" || aChar == ")" || aChar == "x" || aChar == "," || aChar == "-")) {
				return false;
			}
		}
		return true;
	}


	// Remove the leading space/s of an argument.
	function ltrim(argvalue) {
		if (typeof argvalue + "" == "undefined" || argvalue == null || argvalue == '') return '';
		while (1) {
			if (argvalue.substring(0, 1) != " ")
				break;
			argvalue = argvalue.substring(1, argvalue.length);
		}
		return argvalue;
	}

	// Remove the trailing space/s of an argument.
	function rtrim(argvalue) {
		if (typeof argvalue + "" == "undefined" || argvalue == null || argvalue == '') return '';
		while (1) {
			if (argvalue.substring(argvalue.length - 1, argvalue.length) != " ")
				break;
			argvalue = argvalue.substring(0, argvalue.length - 1);
		}
		return argvalue;
	}

	// Remove both the leading and the trailing space/s of an argument.
	function trim(argvalue) {
		if (typeof argvalue + "" == "undefined" || argvalue == null || argvalue == '') return '';
		var tmpstr = ltrim(argvalue);
		return rtrim(tmpstr);
	}

	// Disable Right-click Context Menu
	function mouseDown(e) {
		if (parseInt(navigator.appVersion)>3) {
			var clickType=1;
			if (navigator.appName=="Netscape")
				clickType=e.which;
			else
				clickType=event.button;

			if (clickType!=1) {
				return false;
			}
		}
		return true;
	}


	/* 	----------------------------------------------------------------------------------------
		DHTML Functions
		----------------------------------------------------------------------------------------
	*/
	// Image into IMG Object
	function swapImage( id, img_src ){
		if(document.getElementById){
			if (!isNull( document.getElementById(id) ))
				if (document.getElementById(id).src != img_src)
					document.getElementById(id).src = img_src + '#'
		} else if (document.all) {
			if (!isNull( document.all[id] ))
				if (document.all[id].src != img_src)
					document.all[id].src = img_src + '#';
		} else if (document.layers){
			if (!isNull( document.layers[id] ))
				if (document.layers[id].src != img_src)
					document.layers[id].src = img_src + '#';
		}
	}


	// Hide DIV layer
	function hideDivLayer( id ){
		if(document.getElementById){
			if (!isNull( document.getElementById(id) )) {
				document.getElementById(id).style.visibility = "hidden";
				document.getElementById(id).style.display = "none";
			}
		} else if (document.all) {
			if (!isNull( document.all[id] )) {
				document.all[id].style.visibility = "hidden";
				document.all[id].style.display = "none";
			}
		} else if (document.layers){
			if (!isNull( document.layers[id] )) {
				document.layers[id].display = "hidden";
			}
		}
	}

	// Show DIV layer
	function showDivLayer( id ){
		if(document.getElementById){
			if (!isNull( document.getElementById(id) )) {
				document.getElementById(id).style.visibility = "visible";
				document.getElementById(id).style.display = "block";
			}
		} else if (document.all) {
			if (!isNull( document.all[id] )) {
				document.all[id].style.visibility = "visible";
				document.all[id].style.display = "block";
			}
		} else if (document.layers){
			if (!isNull( document.layers[id] )) {
				document.layers[id].display = "visible";
			}
		}
	}

	// Resize a DIV layer
	function setDivSize( id, x, y ){
		if(document.getElementById){
			document.getElementById(id).style.width  = x + "px";
			document.getElementById(id).style.height = y + "px";
		} else if (document.all) {
			document.all[id].style.width  = x;
			document.all[id].style.height = y;
		} else if (document.layers){
			document.layers[id].width  = x;
			document.layers[id].height = y;
			document.layers[id].clip.right  = x;
			document.layers[id].clip.bottom = y;
		}
	}

	// Move a DIV layer
	function setDivPosition( id, x, y ){
		if(document.getElementById){
			document.getElementById(id).style.left  = x + "px";
			document.getElementById(id).style.top = y + "px";
		} else if (document.all) {
			document.all[id].style.left  = x;
			document.all[id].style.top = y;
		} else if (document.layers){
			document.layers[id].left  = x;
			document.layers[id].top = y;
		}
	}

	// Get a DIV layer Position
	function getDivPosition( id ){
		var divObj = new Object;

		if(document.getElementById) {
			divObj.x = document.getElementById(id).style.left;
			divObj.y = document.getElementById(id).style.top;
		} else if (document.all) {
			divObj.x = document.all[id].style.left;
			divObj.y = document.all[id].style.top;
		} else if (document.layers) {
			divObj.x = document.layers[id].left;
			divObj.y = document.layers[id].top;
		}

		return divObj;
	}

	function getPageDims() {
		var wObj = new Object;

		// Firefox
		if( window.innerHeight && window.scrollMaxY ) {
			wObj.pageWidth = window.innerWidth + window.scrollMaxX;
			wObj.pageHeight = window.innerHeight + window.scrollMaxY;
		}
		// all but Explorer Mac
		else if( document.body.scrollHeight > document.body.offsetHeight )	{
			wObj.pageWidth = document.body.scrollWidth;
			wObj.pageHeight = document.body.scrollHeight;
		}
		// works in Explorer 6 Strict, Mozilla (not FF) and Safari
		else {
			wObj.pageWidth = document.body.offsetWidth + document.body.offsetLeft;
			wObj.pageHeight = document.body.offsetHeight + document.body.offsetTop;
		}

		return wObj;
	}


	/* 	----------------------------------------------------------------------------------------
		DEBUG Functions
		----------------------------------------------------------------------------------------
	*/

    // List an Ojects properties
    function dumpObject(o, objName) {
            var result = ""
            count = 0
            for (var i in o) {
                    result += o + "." + i + "=" + o[i] + "\n"
                    count++
                    if (count == 25) {
                            alert(result)
                            result = ""
                            count = 0
                    }
            }
            alert(result)
    }


