var downStrokeField;
function autojump(fieldName,nextFieldName,fakeMaxLength)
{
var myForm=document.forms[document.forms.length - 1];
var myField=myForm.elements[fieldName];
myField.nextField=myForm.elements[nextFieldName];

if (myField.maxLength == null)
   myField.maxLength=fakeMaxLength;

myField.onkeydown=autojump_keyDown;
myField.onkeyup=autojump_keyUp;
}

function autojump_keyDown()
{
this.beforeLength=this.value.length;
downStrokeField=this;
}

function autojump_keyUp()
{
if (
   (this == downStrokeField) && 
   (this.value.length > this.beforeLength) && 
   (this.value.length >= this.maxLength)
   )
   this.nextField.focus();
downStrokeField=null;
}

function placeFocus() {
if (document.forms.length > 0) {
var field = document.forms[0];
for (i = 0; i < field.length; i++) {
if ((field.elements[i].type == "text") || (field.elements[i].type == "textarea") || (field.elements[i].type.toString().charAt(0) == "s")) {
document.forms[0].elements[i].focus();
break;
         }
      }
   }
}

function limitToggle(fieldObj,div,question,count,vrule) {
	for (b=1;b <= count;b++){
		 gl_1_obj = document.getElementById('building_' + div + question + b);
		 sl_1_obj = gl_1_obj.getElementsByTagName('SELECT');
		if((fieldObj.value > 0 && vrule =='GT') || (fieldObj.value == 0 && vrule =='LT')) {
			gl_1_obj.style.display= 'none';
			for (a =0;a < sl_1_obj.length;a++){
				sl_1_obj[a].style.display='none';
			}
		} else {
			gl_1_obj.style.display= '';
			for (a =0;a < sl_1_obj.length;a++){
				sl_1_obj[a].style.display='';
			}
		}
	}
}
function ruleToggle(fieldObj,questionlist,rule) {
	
	var questionAry = questionlist.split(',');
	var r = 0;
	var questionfield ="";
	var questionSelectObjs="";
	var questionObj = "";
	var a = 0;
	
	if (questionAry.length > 0) {
		for (r=0;r < questionAry.length; r++) {
			questionfield = questionAry[r];
			
			questionObj = document.getElementById(questionfield);
			if (questionObj != null) {
				
				questionSelectObjs = questionObj.getElementsByTagName('SELECT');
				if(!(parseInt(fieldObj.value) > 0)) {
					fieldObj.value = 0; 
				}
				if((parseInt(fieldObj.value) > 0 && rule == 'GT') || (parseInt(fieldObj.value) == 0 && rule == 'LT')) {
					// Loop over selects
					if(parseInt(questionSelectObjs.length) > 0) {
						for(a=0;a < questionSelectObjs.length;a++) {
							questionSelectObjs[a].style.display='none';
						} 
					}
					questionObj.style.display='none';
				} else {
					// Loop over selects
					if(parseInt(questionSelectObjs.length) > 0) {
						for(a=0;a < questionSelectObjs.length;a++) {
							questionSelectObjs[a].style.display='';
						}
					} 
					questionObj.style.display='';
				}
			}
			questionObj = "";
		}
	}
}
//toggle an element
function toggleelem(elementname,inputObj){
		var velement = document.getElementById(elementname);
		var selectsObjs = velement.getElementsByTagName('SELECT'); 
	if(inputObj.value == 'N' ||  inputObj.value== '') {
		velement.style.display = 'none';
		for (i=0; i< selectsObjs.length; i++) {
			selectsObjs[i].style.display='none';	
		}
	} else{
		velement.style.display = '';	
		for (i=0; i< selectsObjs.length; i++) {
			selectsObjs[i].style.display='';	
		}
	}
}

function synchLists(source, target){
	var from = document.getElementById(source);
	var to = document.getElementById(target);
	if(to !=null && from!=null)
		to.value=from.value;
}

function synchThisListTo(from,target){

	var to = document.getElementById(target);
	if(to !=null && from!=null)
		to.value=from.value;
}

function toggleelemrange(elementname,inputObj,range){
		var aryRange = range.split('-');
		var vStart = 0;
		var vEnd = 0;
		var newelement = elementname;
		var velement = '';
		var selectObjs = '';
		if(aryRange.length == 2) {
			vStart = aryRange[0];
			vEnd = aryRange[1];
		}
	for (a=0;a <=vEnd;a++){
		 newelement = elementname + '_' + a;
		 velement = document.getElementById(newelement);
		 selectsObjs = velement.getElementsByTagName('SELECT'); 
		if(inputObj.value == 'N' ||  inputObj.value== '') {
			velement.style.display = 'none';
			for (i=0; i< selectsObjs.length; i++) {
				selectsObjs[i].style.display='none';	
			}
		} else{
			velement.style.display = '';	
			for (i=0; i< selectsObjs.length; i++) {
				selectsObjs[i].style.display='';	
			}
		}
	}
}
function toggleelemlist(elementlist,inputObj){
		var elementAry = elementlist.split(',');
		var newelement = '';
		var velement = '';
		var selectObjs = '';	
	for (a=0;a <=elementAry.length;a++){
		 newelement = elementAry[a];
		 velement = document.getElementById(newelement);
		 selectsObjs = velement.getElementsByTagName('SELECT'); 
		if(inputObj.value == 'N' ||  inputObj.value== '') {
			velement.style.display = 'none';
			for (i=0; i< selectsObjs.length; i++) {
				selectsObjs[i].style.display='none';	
			}
		} else{
			velement.style.display = '';	
			for (i=0; i< selectsObjs.length; i++) {
				selectsObjs[i].style.display='';	
			}
		}
	}
}
function httpRequest(url) {
	// creates XMLHttpRequest object
	if (window.XMLHttpRequest) req = new XMLHttpRequest();
	else if (window.ActiveXObject) req = new ActiveXObject("Microsoft.XMLHTTP");
	// request URL
	req.open("GET", url, false);
	req.send(null);
	return req.responseText;
}	
function wddxGetElement(str,elementName) {
	var re = new RegExp('<'+elementName+'>([\\s\\S]*?)<\/'+elementName+'>','i');
	var arrFound = re.exec(str);
	if (arrFound && (arrFound.length>1)) return arrFound[1];
	else return "Error on RegExp";
}
function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
function removeCommas( strValue ) {
/************************************************
DESCRIPTION: Removes commas from source string.

PARAMETERS:
  strValue - Source string from which commas will
    be removed;

RETURNS: Source string with commas removed.
*************************************************/
  var objRegExp = /,/g; //search for commas globally

  //replace all matches with empty strings
  return strValue.replace(objRegExp,'');
}

function addCommas( strValue ) {
/************************************************
DESCRIPTION: Inserts commas into numeric string.

PARAMETERS:
  strValue - source string containing commas.

RETURNS: String modified with comma grouping if
  source was all numeric, otherwise source is
  returned.

REMARKS: Used with integers or numbers with
  2 or less decimal places.
*************************************************/
  var objRegExp  = new RegExp('(-?[0-9]+)([0-9]{3})');

    //check for match to search criteria
    while(objRegExp.test(strValue)) {
       //replace original string with first group match,
       //a comma, then second group match
       strValue = strValue.replace(objRegExp, '$1,$2');
    }
  return strValue;
}

