actionYet = false;


//prevents the same form to be posted twice 
function checkIsValid() {
	if (!actionYet) {
		if (window.ValidatorOnSubmit) {
			ValidatorOnSubmit();
			if (Page_IsValid) {
				actionYet = true;
			}
		} else {
			actionYet = true;
		}
	}
}

// allow user input tab character into textarea field using ctrl-tab 
function cTab(elementID) {
	if (document.getElementById){
		if (document.getElementById(elementID)){
			element=document.getElementById(elementID);
			if ((9==event.keyCode) && (event.ctrlKey)) {
				element.selection = document.selection.createRange(); 
				element.selection.text=String.fromCharCode(9);
				setTimeout('element.focus()',0);
			}
		}
	}
}
// 'replacement' for missing maxLenght property in textarea 
function checkLen(maxLength,element) {
	var maxLen = new Number;
	maxLength = maxLength - 3;
	maxLen = maxLength;

	var returnCount = 0;
	var i = 0;
	if (element.value.length+returnCount >= maxLen) {
		element.value=element.value.substring(0,maxLen-returnCount)
	}
}


    function fillDDLresult(result){
    
		var results = result.split('|');
		if (results.length > 1){
			var options = results[1].split(">");
			var selectIndex = 0;
			var element = getFormElementByNameEnd(unescape(results[0]));
			if (element != null){
				value = new String(element.value);
				element.disabled = false;
				element.title = ''; 
				while (element.options.length > 0) {
					element.options[0] = null;
				}
				for (var i = 0; i < options.length - 1; i++)
				{
					aValueText = options[i].split("<");
					if (aValueText.length>1){
						option = new Option;
						option.text = unescape(aValueText[1]);
						option.value = unescape(aValueText[0]);
						if (option.value == value){
							selectIndex = i;
						}
						element.options[element.options.length] = option;
					}
				}
				if (element.options.length > 0){
					element.options[selectIndex].selected = true;
				}
			}
		}
    }

	function setFilterDDL(fCount,tName,tText,tValue,fieldNames,cNames,id,ttn,tcn,nt){
		var cFilters = new Array();
		for (var i=0; i < fieldNames.length; i++){
			cFilters[i] = escape(getFormElementByNameEnd(fieldNames[i]).value)
			// check if radiobutton exists
			var els = getFormElementsByNameEnd(fieldNames[i]);
			if (els.length>1){
				for (var j=0; j < els.length; j++){
					if (els[j].type=='radio'){
						if(els[j].checked==true){
							cFilters[i] = escape(els[j].value)
						}
					}
				}
			}
		}
		var url = ""
		var rsID = "remoteScriptID"
		url = url + 'tn=' + tName + '&tt=' + tText + '&tv=' + tValue + '&tc=' + fCount + '&fid=' + escape(id) + '&ttn=' + ttn + '&tcn=' + tcn
		
		for (var i=0; i < fieldNames.length; i++){
			url = url + '&cn' + i + '=' + escape(cNames[i]) + '&cv' + i + '=' + escape(cFilters[i]);
		}
		url = url + '&nt=' + nt
		var element = getFormElementByNameEnd(id);
		if (element != null){
			element.title = ge_ddlWaitInfo; 
			element.disabled = true;
			getRemoteDdlValues(url);
		}
	}
    
    function getFormElementByNameEnd(elementName){
		var frm = document.forms[0];
		for(var j = 0; j < frm.length; j++){
			nm = frm[j].name;
			if (nm == elementName){
			   return frm[j];
			}
			if (nm.length > elementName.length) {
				nmEnd = nm.substr(nm.length - elementName.length,nm.length)
				if (nmEnd == elementName){
				   return frm[j];
				}
			}
		}
		return null;
	}
function getFormElementsByNameEnd(elementName, substring){// return array
	var frm = document.forms[0];
	if (elementName.length>1){
		elName = elementName.substr(1)
	}else{
		elName = elementName
	}
    var els = new Array();
    for(var j = 0; j < frm.length; j++){
        nm = frm[j].name
		if (nm == elementName){
		   els[els.length] = frm[j];
		} else {
			if (nm.length > elName.length) {
				nmEnd = nm.substr(nm.length - elName.length,nm.length)
				if (substring != null){
					 if (nm.indexOf(substring)>-1){
						if (nmEnd == elName){
							els[els.length] = frm[j];
						}
					}
				}else{
					if (nmEnd == elName){
						els[els.length] = frm[j];
					}
				}
			}
		}
    }
    return els;
}
function resTB(element){
	if((element.value == null) || (element.value == '')){
		element.size = 1;
	}else{
		if(element.value.length > element.size){
			element.size = element.value.length;
		}
	}
}

function chgfld(val){
	el=document.forms[0][indexFldName];
	if (el.value.indexOf(val)<0){
		el.value=el.value + "|" + val + "|"
	}
}
// field key press
function fkpr(el,ev){
	idxs=el.getAttribute('alt').split('|')
	vid=-1;hid=-1; //vertical,horizontal id
	var indoo_ge_ids = new Array();
	for (var i=0; i < __indoo_ge_ids.length; i++){
		if (__indoo_ge_ids[i][2] == idxs[2]){
			indoo_ge_ids[indoo_ge_ids.length]=__indoo_ge_ids[i];
		}
	}
	vidlAll=indoo_ge_ids.length
	stopIt=false;
	if(window.event){
		keyCode = event.keyCode  //ie
	}else{
		keyCode = ev.which;   //firefox
	}
	if (keyCode==0){
		return;
	}
			
	isDown=(keyCode==40);isUp=(keyCode==38);isLeft=(keyCode==37);isRight=(keyCode==39);isCtrl=(ev.ctrlKey)
	for (var i=0; i < vidlAll; i++){
		if (indoo_ge_ids[i][0] == idxs[0]){
			vid=i;
		}
	}
	vidl=0
	for (var i=0; i < vidlAll; i++){
		if (indoo_ge_ids[i][2] == idxs[2]){
			vidl=vidl+1;
		}
	}
	
	hidl=(indoo_ge_ids[vid][1].split('|').length)
	hid=parseInt(idxs[1])
	if (vidl<1 || hidl<1){
		return;
	}
	
	/*37=left;39=right;38=up;40=down;*/
	if (isLeft && ((isText(el)!=true || isCtrl)||(isText(el)==true && doGetCaretPosition(el)==0))){
		hid=hid-1
		if(hid==-1){
			hid=hidl-1
			vid=vid-1
			if (vid>-1){
				if(indoo_ge_ids[vid][2] != idxs[2]){
					return;
				}
			}
			if (checkPageChange(vid,vidl,hid,idxs[2])){return};
		}
	}
	if (isRight && ((isText(el)!=true || isCtrl)||(isText(el)==true&&doGetCaretPosition(el)==getElementValueLen(el)))){
		hid=hid+1
		if(hid==hidl){
			hid=0
			vid=vid+1
			if (checkPageChange(vid,vidl,hid,idxs[2])){return};
			if (vid<vidlAll){
				if(indoo_ge_ids[vid][2] != idxs[2]){
					return;
				}
			}

		}
	}
	if (isDown && (el.tagName!='SELECT' || isCtrl)){
		vid=vid+1
		if (checkPageChange(vid,vidl,hid,idxs[2])){return};
	}
	if (isUp && (el.tagName!='SELECT' || isCtrl)){
		vid=vid-1
		if (checkPageChange(vid,vidl,hid,idxs[2])){return};
	}
	if ((isUp || isDown) && el.tagName=='SELECT' && isCtrl==false){
		return;
	}
	//el.type == 'text'
	
	if (el.tagName=='TEXTAREA' && isCtrl==false){
		//return;
	}
	
	if (vid>-1 && vid<vidlAll){
		nels=indoo_ge_ids[vid][1].split('|');
		if (nels.length < hid+1){
			return;
		}else{
			id = nels[hid];
			nel = getFormElementByNameEnd(id)
			if (nel!=null){

				if (isText(nel)==true && isCtrl==false && (isLeft||isRight)){
					if (el!=nel){
						stopIt=true;
					}
				}
				if (nel.tagName=='SELECT' && (((isUp||isDown)&& isCtrl==true)||(isLeft||isRight))){
					stopIt=true;
				}
				if (stopIt==true){
					document.body.focus();
					if (el.id!=''&&el.id!=null&&el.id!='undefined'&&el.disabled!='undefined'){
						el.disabled=true;
						setTimeout("focussel('"+el.id+"')",5);
					}
					if (nel.id!=''&&nel.id!=null&&nel.id!='undefined'&&el.disabled!='undefined'){
						nel.disabled=true;
						setTimeout("focussel2('"+nel.id+"')",5);
					}
				}else{
					nel.focus();
				}
			}
		}
	}
}
function isText(el){
	if (el.type=='text' || el.tagName=='TEXTAREA'){
		return true;
	}else{
		return false;
	}
}

function getElementValueLen(el){
	if (el!=null && el!='undefined'){
		if(el.value!=null && el.value!='undefined'){
			return el.value.length
		}
	}
	return 0;
}
function checkPageChange(vid,vidl,hid,gv_id){
	if (vid==-1){
		goPreviousPage(hid);
		return true
	}
	if (vid==vidl){
		goNextPage(hid);
		return true
	}
	return false;
}

function goNextPage(hid){
	//alert('next'+hid)
}
function goPreviousPage(hid){
	//alert('previous'+hid)
}

function focussel2(idEnds){
	nel = document.getElementById(idEnds);
	nel.disabled=false;
	nel.focus();
	return false;
}
function focussel(id){
	nel = document.getElementById(id);
	nel.disabled=false;
}
function doGetCaretPosition (ctrl) {

	var CaretPos = 0;
	// IE Support
	if (document.selection) {

		ctrl.focus ();
		var Sel = document.selection.createRange ();

		Sel.moveStart ('character', -ctrl.value.length);

		CaretPos = Sel.text.length;
	}
	// Firefox support
	else if (ctrl.selectionStart || ctrl.selectionStart == '0')
		CaretPos = ctrl.selectionStart;

	return (CaretPos);

}


function setUnloadTrigger(){
	if (window.onbeforeunload!='undefined'){
		window.onbeforeunload = checkUnloadChanges
	} 
}

var unloadCount=0;
function checkUnloadChanges(){
	if (stopReloadWarn!=null && stopReloadWarn!='undefined'){
		texts = stopReloadWarn.split('|');
		theform=document.forms[0];
		if (window.event){
			if (window.event.type=='beforeunload' && window.event.srcElement==null){
				//alert(unloadCount)
				if (unloadCount==0){
					unloadCount=1;
					setTimeout('unloadCount=0;',50);
				}else{
					unloadCount=0
					return ;
				}			
			}
		}
		if (theform.__indooButton!=null && theform.__indooButton!='undefined'){
			if (theform.__indooButton.value!='' ){
				return
			}

			c=getRecordChangeCount();
			if (c>0){
				return texts[0] + c + texts[1];				
			}
		}
	}
}

function getRecordChangeCount(){
			ids=document.forms[0].__gechg.value.split('|');
	c=0
	for (var i=0; i < ids.length; i++){
		if (ids[i]!=null && ids[i]!=''){
			c = c+1		
		}
	}
	return c;
}
