var DHTML = (document.getElementById || document.all || document.layers);
var num = 0;

/*
var e = window.event;
e.pageX = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
e.pageY = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
*/
function check_age(){
	if(mainContentForm.userAge.value == 0){
		alert("Please tell us your age.");
		return false;
	}
	return true;
}
function IsNumeric(sText){
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;
 
   for (i = 0; i < sText.length && IsNumber == true; i++) { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) IsNumber = false;
   }
   
   return IsNumber;
}

function redirect(url){
	window.location.href = url;
}

function getObj(name) {
	if (document.getElementById) {
		this.obj = document.getElementById(name);
	} else if (document.all)  {
		this.obj = document.all[name];
	} else if (document.layers)  {
		this.obj = document.layers[name];
	}
	return this.obj;
}

function objExist(name) {
	if (document.getElementById) {
		this.obj = document.getElementById(name);
	} else if (document.all)  {
		this.obj = document.all[name];
	} else if (document.layers)  {
		this.obj = document.layers[name];
	}
	if(this.obj) 
		return true;
	else 
		return false;
}

function divDsp(hideThis,dspThis,zeroLocal,zeroGlobal)
{
	
	//zeroLocal = 
	//zeroGlobal = adds field name to the 
	
	if (!DHTML) return;
	var x = new getObj(hideThis);
	x.style.display = (dspThis)? dspThis : (x.style.display=='inline'||x.style.display=='') ? 'none' : 'inline';
	//x.style.display = 'inline';
	if (zeroLocal) {
		var valueArray=zeroLocal.split(";");
		for(var i=0; i<valueArray.length; i++){
			var eleType = eval('document.mainContentForm.' + valueArray[i] + '.type');
			if (eleType == 'select-one'){
				eval('document.mainContentForm.' + valueArray[i] + '.selectedIndex = 0');
			}
			else if (eleType == 'text'){
				eval('document.mainContentForm.' + valueArray[i] + '.value = 0');
			}
			else {
				eval('document.mainContentForm.' + valueArray[i] + '[1].checked = true');
			}
		}
	}
	/*
	if (zeroLocal) {
		var valueArray=zeroLocal.split(";");
		for(var i=0; i<valueArray.length; i++){
		  eval('this.form.' + valueArray[i] + '.value = 0');
		}
	}
	*/
	//if (zeroGlobal) {
	//	this.form.zeroGlobal.value = zeroGlobal;
	//}
	//alert(user.userSpouseIncome)
}

function displayDiv(obj,id){
	if(obj.value=="y")
	{
		document.getElementById(id).style.display="";
	}
	else
	{
		document.getElementById(id).style.display="none";
	}
}

function popup(href,width,height,win_name) {
	    if (!win_name) win_name = 'none';
	    var window_features = "height="+height+",width="+width+",toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=0,copyhistory=0,dependent=1,top=100,left=100";
		win = window.open(href,win_name,window_features);
		if(win) {win.focus();}
		return false;
}

function selectAll(selectBox){
	for(var i=0;i<selectBox.options.length;i++){
		selectBox.options[i].selected = true;
	}
	return;
}

function unSelectAll(selectBox){
	for(var i=0;i<selectBox.options.length;i++){
		selectBox.options[i].selected = false;
	}
	return;
}

function selectAllChecked(selectBox){
	for(var i=0;i<selectBox.length;i++){
		selectBox[i].checked = true;
	}
	return;
}

function unSelectAllChecked(selectBox){
	for(var i=0;i<selectBox.length;i++){
		selectBox[i].checked = false;
	}
	return;
}

function numOnly(el) {
	var tmp 	= el.value.replace(/[^0-9.]/g,'');
	var argv 	= numOnly.arguments;
	if (argv.length==2) {
		if(tmp.length >= argv[1]) {
			el.form[(getIndex(el)+1) % el.form.length].focus();
		}
	}
	return el.value=tmp;
}

function getIndex(input) {
	var index = -1, i = 0, found = false;
	while (i < input.form.length && index == -1)
	if (input.form[i] == input)index = i;
	else i++;
	return index;
}


function checkAll(checkBox){
	for(var i=0;i<checkBox.length;i++){
		checkBox[i].checked = true;
	}
	return;
}

function unCheckAll(checkBox){
	for(var i=0;i<checkBox.length;i++){
		checkBox[i].checked = false;
	}
	return;
}



checked_toggle_check = 0;

function checkToggle(checkBox){
	if(checked_toggle_check==0){
		checkAll(checkBox);
		checked_toggle_check = 1;
	} else {
		unCheckAll(checkBox);
		checked_toggle_check = 0;
	}
	return;
}


// AJAX Functionality
function holler(method,url,parameters,callback) {
	method = method.toUpperCase();
	 try{
	    if (window.XMLHttpRequest) {
	        xmlhttp = new XMLHttpRequest();
	    } else if (window.ActiveXObject) {
	        //xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			try {
				xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
					xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {}
			}
	    }
		
		if(method=="POST"){
			xmlhttp.open(method, url, true);
			xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");//application/x-www-form-urlencoded
			xmlhttp.setRequestHeader("Content-length", parameters.length);//parameters.length
			xmlhttp.setRequestHeader("Connection", "close");
			xmlhttp.send(parameters);
		} else{
			xmlhttp.open(method, url+'&'+parameters, true);
			xmlhttp.send(null);
		}
		
     } catch(e){
	 	alert('Error occurred while trying to process your request');
	 	return;
	 }
	
    xmlhttp.onreadystatechange = function () {
	  		if (xmlhttp.readyState == 4 || xmlhttp.readyState == 'complete') {
				if (xmlhttp.status == 200) {
					eval(callback)
				} else{
					alert('An error occurred while trying to return your request. \nError '+xmlhttp.status+': '+xmlhttp.statusText);
					return;
				}
		    }
		};
	//xmlhttp.setRequestHeader("Content-Length", "66");
}

function hollerBack(method,url,parameters,thisObj,LoadingTxt) {
	 //alert(parameters);
	 method = method.toUpperCase();
	 try{
	    if (window.XMLHttpRequest) {
	        xmlhttp = new XMLHttpRequest();
	    } else if (window.ActiveXObject) {
	        //xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			try {
				xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
					xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {}
			}
	    }
		
		if(method=="POST"){
			xmlhttp.open(method, url, true);
			xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");//application/x-www-form-urlencoded
			xmlhttp.setRequestHeader("Content-length", parameters.length);//parameters.length
			xmlhttp.setRequestHeader("Connection", "close");
			xmlhttp.send(parameters);
		} else{
			xmlhttp.open(method, url+'&'+parameters, true);
			xmlhttp.send(null);
		}
		
     } catch(e){
	 	alert('Error occurred while trying to process your request');
	 	return;
	 }
	
    xmlhttp.onreadystatechange = function () {
			
		if (objExist(thisObj)) { 
			var x = new getObj(thisObj);
		}

		if (xmlhttp.readyState == 4 || xmlhttp.readyState == 'complete') {

			try {
				x.innerHTML = xmlhttp.responseText;
			} catch (e) {
				alert('An error occurred while trying to return your request. \nError '+e.description);
			}
			
			if (xmlhttp.status != 200) {
				alert('An error occurred while trying to return your request. \nError '+xmlhttp.status+': '+xmlhttp.statusText);
				return;
			}
	    } else{
			
			if(LoadingTxt){
				x.innerHTML = '<div>'+LoadingTxt+'</div>';
			} else {
				x.innerHTML = '<div><img src="/img/icon.indicator.gif" alt="" width="16" height="16" border="0"></div>';
			}
			return;
			//x.innerHTML = '<b>Loading...</b>';
		}
	};
	//xmlhttp.setRequestHeader("Content-Length", "66");
}

function hollerAtMe(method,formObj,url,thisObj) 
{
	
	this.uniqueId = new Date().getTime();
	this.frameName = 'frame_'+this.uniqueId;
	
	try{
		// Create New hidden iframe
		var divElm = document.createElement('DIV');
		divElm.style.display = 'none';
		document.body.appendChild(divElm);
		divElm.innerHTML = '<iframe name=\"'+this.frameName+'\" id=\"'+this.frameName+'\" src=\"about:blank\" onload=\"loadFrame(this,\''+thisObj+'\')\"></iframe>';
	} catch(e){
	 	alert('Error occurred while trying to create frame');
	 	return;
	 }
	
	try{
		
		//alert(formObj.action+"="+url);
		h_action = formObj.action;
		h_method = formObj.method;
		h_target = formObj.target;
		
		// Set target of ajax call to frame
		formObj.action 	= url;
		formObj.method 	= method;
		formObj.target = this.frameName;
		formObj.submit();
		
		formObj.action	= h_action;
		formObj.method 	= h_method;
		formObj.target 	= h_target;
		
	} catch(e){
	 	alert('Error occurred while trying to submit form');
	 	return;
	 }

	// the source div to swap out
	if (objExist(thisObj)) { 
		var x = new getObj(thisObj);
		x.innerHTML = '<div><img src="/img/loading.gif" alt="" width="220" height="19" border="0" /></div>';
		//x.innerHTML = '<div><img src="/img/icon.indicator.gif" alt="" width="16" height="16" border="0" /></div>';
	}
	

}


function hollerBacki(method,url,thisObj) 
{
	this.uniqueId = new Date().getTime();
	this.frameName = 'frame_'+this.uniqueId;
	
	try{
		// Create New hidden iframe
		var divElm = document.createElement('DIV');
		//divElm.style.display = 'none';
		document.body.appendChild(divElm);
		divElm.innerHTML = '<iframe name=\"'+this.frameName+'\" id=\"'+this.frameName+'\" src=\"about:blank\" onload=\"loadFrame(this,\''+thisObj+'\')\"></iframe>';
		var xframe = new getObj(this.frameName);
		
	} catch(e){
	 	alert('Error occurred while trying to create frame');
	 	return;
	 }
	
	try{
		
	} catch(e){
	 	alert('Error occurred while trying to submit form');
	 	return;
	 }

	// the source div to swap out
	if (objExist(thisObj)) { 
		var x = new getObj(thisObj);
		x.innerHTML = '<div><img src="/img/loading.gif" alt="" width="220" height="19" border="0" /></div>';
		//x.innerHTML = '<div><img src="/img/icon.indicator.gif" alt="" width="16" height="16" border="0" /></div>';
	}
	

}


function loadFrame(iframeObj,thisObj) {
	try{
		frameName = iframeObj.id;
		var x = new getObj(thisObj);
		x.innerHTML = '<div><img src="/img/loading.gif" alt="" width="220" height="19" border="0" /></div>';
		x.innerHTML = window.frames[frameName].document.body.innerHTML;
	} catch(e){
	 	alert('Error occurred while trying to load data from frame');
	 	return;
	}
}

function loadFrame(iframeObj,thisObj) {
	try{
		frameName = iframeObj.id;
		var x = new getObj(thisObj);
		x.innerHTML = '<div><img src="/img/loading.gif" alt="" width="220" height="19" border="0" /></div>';
		x.innerHTML = window.frames[frameName].document.body.innerHTML;
	} catch(e){
	 	alert('Error occurred while trying to load data from frame');
	 	return;
	}
}

function getFormValues(fobj,valFunc) {    
	var str         = "";
	var valueArr     = null;
	var val         = "";
	var cmd         = "";

	for(var i = 0;i < fobj.elements.length;i++) {        
		switch(fobj.elements[i].type) {            
			case "hidden":
			case "text":
			case "textarea":
			case "password":
				if(valFunc) {
					//use single quotes for argument so that the value of
					//fobj.elements[i].value is treated as a string not a literal
					cmd = valFunc + "(" + 'fobj.elements[i].value' + ")";
					val = eval(cmd)
				}
				str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value) + "&";
			break;            
			case "select-one":
				str += fobj.elements[i].name + "=" + fobj.elements[i].options[fobj.elements[i].selectedIndex].value + "&";
			break;
			case "select-multiple":                
				for(var z=0;z<fobj.elements[i].options.length;z++){
					if(fobj.elements[i].options[z].selected==true)
						str += fobj.elements[i].name + "=" + fobj.elements[i].options[z].value + "&";
				}
			break;
			case "checkbox":
				if(fobj.elements[i].checked==true)
					str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value) + "&";
			break;
		}
	}
	str = str.substr(0,(str.length - 1)); 
	return str;
} 

function maxlength(obj, len)
{
	if(obj.value.length>=len) { obj.value = obj.value.substr(0,len) }
}

function print_r(obj) {
	big_list = "";
	for (property in obj) {
    	big_list +=property+"="+obj[property]+"\n";
	  }
	alert(big_list);
	return;
}

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 explain(msg) {
newwin = window.open('','','top=150,left=600,width=325,height=200');
if (!newwin.opener) newwin.opener = self;
with (newwin.document)
{
open();
write('<html>');
write('<body bgcolor="#EAEFF8" onLoad="document.form.box.focus()"><form name=form><center>' + msg + '<br>');
write('<p><input type=button value="Click to close when finished" onClick=window.close()>');
write('</center></form></body></html>');
close();
   }
}

function dropdown(mySel)
{
var myWin, myVal;
myVal = mySel.options[mySel.selectedIndex].value;
if(myVal)
   {
   if(mySel.form.target)myWin = parent[mySel.form.target];
   else myWin = window;
   if (! myWin) return true;
   myWin.open(myVal,"_blank","");
   }
return false;
}
/*function checkNumeric(id){
	var thisElement = document.getElementById(id);
	var thisValue = thisElement.value;
	//alert(thisElement);
	var numericExpression = /^[0-9]+[\.]+[0-9]$/;
	if(thisValue.match(numericExpression)){
		return true;
	}else{
		//alert(helperMsg);
		thisElement.style.background = 'Yellow'; 
		thisElement.focus();
		alert("Please enter a numberic field");
		return false;
	}

}*/
function checkNumeric(id,e){
	var key //= (window.event) ? event.keyCode : e.which;
	var thisElement = document.getElementById(id);
	var thisValue = thisElement.value;
	var numericExpression = /\.+/;
	//alert(e);
	if (window.event)
		key = event.keyCode
	else 
		key = e.which ? e.which : e.keyCode;
	// Was key that was pressed a numeric character (0-9) or backspace (8)?
	if ( key > 47 && key < 58 || key == 8 || key == 9){
		return; // if so, do nothing
	}else if (	key == 46 ){
		if( thisValue.match(numericExpression) ){
			if (window.event) {//IE
				window.event.returnValue = null;
			}else{ //Firefox
				e.preventDefault();
			}
		}else{
			return;	
		}
	}else{
		if (window.event) //IE
			window.event.returnValue = null;
		else //Firefox
			e.preventDefault();
	}
}
function checkNumericNoDecimals(id,e){
	var key //= (window.event) ? event.keyCode : e.which;
	var thisElement = document.getElementById(id);
	var thisValue = thisElement.value;
	var numericExpression = /\.+/;
	//alert(e);
	if (window.event)
		key = event.keyCode
	else 
		key = e.which ? e.which : e.keyCode;
	// Was key that was pressed a numeric character (0-9) or backspace (8)?
	if ( key > 47 && key < 58 || key == 8 || key == 9){
		return; // if so, do nothing
	}else{
		if (window.event) //IE
			window.event.returnValue = null;
		else //Firefox
			e.preventDefault();
	}
}
function showward(obj)
{
	selectbox=document.getElementById('ward'); 
	removeAllOptions(selectbox); 
	if(obj.value=="3")
	{
		for(i=1;i<=8;i++)
		{
			AddItem("Ward "+i,i);		
		}
		document.getElementById('div2').style.display='';
		document.getElementById('trwardfield').style.display='';
		document.getElementById('trward').style.display='';
	}
	else
	{
		AddItem("","0");
		document.getElementById('div2').style.display='none';
		document.getElementById('trwardfield').style.display='none';
		document.getElementById('trward').style.display='none';
	}
}
function AddItem(Text,Value)
{
	var opt = document.createElement("option");
	document.getElementById("ward").options.add(opt);
	opt.text = Text;
	opt.value = Value;
}
function removeAllOptions(selectbox)
{
	var i;
	for(i=selectbox.options.length-1;i>=0;i--)
	{
		selectbox.remove(i);
	}
}

function selval(formobj,idx)
{
	formobj.ward.options.selectedIndex = idx-1;	
}
