actionYet = false;


//prevents the same form to be posted twice 
function checkIsValid() {
	if (!actionYet) {
		if (window.ValidatorOnSubmit) {
			ValidatorOnSubmit();
			if (typeof(Page_ClientValidate) == 'function') {
			    if (Page_IsValid) {
				    actionYet = true;
			    }
			}else{
			    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 dValue = unescape(results[2]);
			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 (dValue!='' && (value==null || value=='undefined' || value=='')){
						    if (option.value == dValue){
							    selectIndex = i;
						    }
						}else{
						    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,cnd,ts,tsd,sw,dv){
		var cFilters = new Array();
		for (var i=0; i < fieldNames.length; i++){
			var fnEl = getFormElementByNameEnd(fieldNames[i]);
			//if (fnEl!=null && fnEl!='undefined'){
			    cFilters[i] = escape(fnEl.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 + '&cnd=' + cnd + '&tcn=' + tcn + '&ts=' + ts + '&tsd=' + tsd + '&sw=' + sw  + '&dv=' + dv
		
		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;
	}


var __resultStore=null;
function addToResultStore(result, param1,param2,param3){
    if (__resultStore==null){
        __resultStore=[];
    }    
 	isSet=false;
 	for(var i = 0; i < __resultStore.length; i++) {
 	    if (__resultStore[i][1]==param1 && __resultStore[i][2]==param2 && __resultStore[i][3]==param3){
 	        isSet=true;
 	        __resultStore[i]=[result,param1,param2,param3]
 	        break;
 	    } 
 	}
    if (isSet==false){
        __resultStore[__resultStore.length]=[result,param1,param2,param3]
    }
    return result;
}
function checkResultStore(param1,param2,param3){
    if (__resultStore==null){
        return null;
    }else{
 	    for(var i = 0; i < __resultStore.length; i++) {
 	        if (__resultStore[i][1]==param1 && __resultStore[i][2]==param2 && __resultStore[i][3]==param3){
 	            return __resultStore[i][0]
 	        } 
 	    }
    }
    return null
}
function getFormElementsByNameEnd(elementName, substring, returnFirstResultOnly){// return array
	var result = checkResultStore(elementName, substring, returnFirstResultOnly)
	if (null!=result){
	    return result;
	}
	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];
							if (returnFirstResultOnly==true){
							    return addToResultStore(els,elementName, substring, returnFirstResultOnly);
							} 
						}
					}
				}else{
					if (nmEnd == elName){
						els[els.length] = frm[j];
						if (returnFirstResultOnly==true){
						    return addToResultStore(els,elementName, substring, returnFirstResultOnly);
						} 
					}
				}
			}
		}
    }
    return addToResultStore(els,elementName, substring, returnFirstResultOnly);
}


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;
	//oh my s h i t http://www.thescripts.com/forum/thread151666.html
	if(window.event){
		keyCode = event.keyCode  //ie
		if (event.type=='keypress' && keyCode==39){
		    return;    
		}
	}else{
		keyCode = ev.which;   //firefox
		if (ev.which!=ev.keyCode){
		    return;
		}
	}
	if (keyCode==0){
		return;
	}
			
	isDown=(keyCode==40);isUp=(keyCode==38);isLeft=(keyCode==37);isRight=(keyCode==39);isCtrl=(ev.ctrlKey)
	if (isDown==false && isUp==false && isLeft==false && isRight==false){
	    return;
	}
	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;
		}
	}
	if (indoo_ge_ids[vid]!='undefined' && indoo_ge_ids[vid]!=null && indoo_ge_ids[vid][1]!=null){
	    hidl=(indoo_ge_ids[vid][1].split('|').length)
	    hid=parseInt(idxs[1])
	} else {
	    return;
	}
	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;
}

// test area

if (typeof window.event != 'undefined'){
    document.onkeydown = function()
    {
        if (event.srcElement.tagName.toUpperCase() != 'TEXTAREA' && (event.srcElement.tagName.toUpperCase() != 'INPUT' || event.srcElement.type.toUpperCase() != 'TEXT'))
              return (event.keyCode != 8);
    }
}else{
    document.onkeypress = function(e)
    {
        if (e.target.nodeName.toUpperCase() != 'TEXTAREA' && (e.target.nodeName.toUpperCase() != 'INPUT' || e.target.type.toUpperCase() != 'TEXT'))
              return (e.which != 8);
    }
}



