﻿// JavaScript Document

var strAjaxElementID,strAjaxLoadingText,strAjaxLoadingTextDots,intAjaxIntervalID,intAjaxInProgress=0;
var strAjaxChkSum,intAjaxRetries,strAjaxUrl,strAjaxPostData;
var pageFlags='x';

var bodyKeyDownCode;
var bodyKeyDownCodeRes=',';
function onBodyKeyDown(e)
{
	if(window.event) // IE
	{
		bodyKeyDownCode = e.keyCode;
	}
	else if(e.which) // Netscape/Firefox/Opera
	{
		bodyKeyDownCode = e.which;
	}
	//append down-keys
	if (bodyKeyDownCodeRes.indexOf(','+bodyKeyDownCode+',')==-1) bodyKeyDownCodeRes+=bodyKeyDownCode+',';
	
	if (bodyKeyDownCode>=16 && bodyKeyDownCode<=18)				//16=shift    17=ctrl      18=alt
	{
		//check if bodyFlags-ctrlKeys elemet found
		if(document.getElementById('bodyFlags-ctrlKeys')!=null)
		{
			objTemp=document.getElementById('bodyFlags-ctrlKeys');
			if (objTemp.value.indexOf(','+bodyKeyDownCode+',')==-1)
			{
				if (objTemp.value=='') objTemp.value=',';
				objTemp.value+=bodyKeyDownCode+',';
			}
		}
	}
	return true;
}
function onBodyKeyUp(e)
{
	if(window.event) // IE
	{
		bodyKeyDownCode = e.keyCode;
	}
	else if(e.which) // Netscape/Firefox/Opera
	{
		bodyKeyDownCode = e.which;
	}
	//exclude up-keys from 
	if (bodyKeyDownCodeRes.indexOf(','+bodyKeyDownCode+',')!=-1) bodyKeyDownCodeRes=bodyKeyDownCodeRes.replace(','+bodyKeyDownCode+',',',')
	
	if (bodyKeyDownCode>=16 && bodyKeyDownCode<=18)				//16=shift    17=ctrl      18=alt
	{
		if(document.getElementById('bodyFlags-ctrlKeys')!=null)
		{
			objTemp=document.getElementById('bodyFlags-ctrlKeys');
			if (objTemp.value.indexOf(','+bodyKeyDownCode+',')!=-1)
			{
				objTemp.value=objTemp.value.replace(','+bodyKeyDownCode+',',',')
				if (objTemp.value==',') objTemp.value='';				
			}
		}
	}
	if (typeof window.onFormKeyUp=='function') onFormKeyUp(bodyKeyDownCode);
	bodyKeyDownCode=0;
	return true;
}

function onBodyFocus()
{
	bodyKeyDownCode=0;
}
function runOnBodyLoad()
{
	//try to focus on first TEXT or COMBO element in first FORM
	var objMainForm=document.getElementById('frmMain');
	if (objMainForm)
	{
		//check if lang="onloadFocus:off;"
		if (getStrParam(objMainForm.lang,'onloadFocus')!='off')
		{
			var objTextElements=objMainForm.getElementsByTagName('input');
			if (objTextElements)
			{			
				var intC=0;
				do
				{
					if (objTextElements[intC].type!='submit' && objTextElements[intC].type!='button' && objTextElements[intC].type!='hidden' && objTextElements[intC].style.display!='none')
					{
						try
						{
							objTextElements[intC].focus();
						}
						catch (err)
						{
						}
						intC=-1;
					}
					intC++;
				}while(intC<objTextElements.length && intC!=0);
			}
		}
	}	
	//alert(document.getElementsByTagName('form').length);
	//setFocusToFirstControl();
	if (typeof window.onBodyLoad=='function')
	{
		pageFlags+='b';
		onBodyLoad();
		pageFlags=pageFlags.replace('b','');
	}
}

function runOnBodyUnload()
{
	try
	{
		onBodyUnload();
	}
	catch(err)
	{
	}
}

function setFocusToFirstControl()
{
	var bFound = false; 
 //for each form
	for (f=0; f < document.forms.length; f++) 
	{
		//for each element in each form
		for(i=0; i < document.forms[f].length; i++)
		{
			//if it's not a hidden element
			strObjType=document.forms[f][i].type;
			if (strObjType=="text")
			{ 
				//and it's not disabled
				if (document.forms[f][i].disabled != true) 
				{
					try {
						 //set the focus to it
						 document.forms[f][i].focus();
						 var bFound = true;
					}
					catch(err){}
				}
			}
			//if found in this element, stop looking
			if (bFound == true)
				break;
		}
		//if found in this form, stop looking
		if (bFound == true)
			break;
	}
}
///////////////////////////////////////////////

function openUrl(strUrl,strPostData)
{
	xmlHttp=GetXmlHttpObject();
	if (xmlHttp!=null)
	{
		if (typeof strPostData=='undefined')
		{
			xmlHttp.open("GET",strUrl,true);
			xmlHttp.send(null);
		}
		else
		{
			xmlHttp.open("POST",strUrl,true);
			xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
			xmlHttp.setRequestHeader('Referer', 'secretCode')
			xmlHttp.send(strPostData);
		}
	}	
}

var objBriefFetchDataXml=null;
function briefFetchData(strUrl,strPostData,strReplyFunctionName,strElement)
{
	//NOTE: server response page result, may be in brakets: HTML BODY....[result=...] HTML TAGS...	
	if (objBriefFetchDataXml!=null)				//ajax in progress
	{
		objBriefFetchDataXml.abort();
	}
	objBriefFetchDataXml=GetXmlHttpObject();	
	if (objBriefFetchDataXml==null)
	{
		alert ("Your browser does not support AJAX!");
		return;
	} 	
	objBriefFetchDataXml.onreadystatechange=function ()
	{
		if (objBriefFetchDataXml.readyState==4)
		{
			if (objBriefFetchDataXml.status==200)
			{
				var responseText=objBriefFetchDataXml.responseText;			
				//alert(responseText);
				responseText=responseText.replace(/'/g,'');
				responseText=responseText.replace(/\\/g,'');
				//responseText=responseText.replace(/"/g,'');									//???
				pos1=responseText.indexOf('[');
				pos2=responseText.indexOf(']');
				if (pos1!=-1 && pos2!=-1) responseText=responseText.substr(pos1+1,pos2-pos1-1);
				if (typeof strElement!='undefined')
				{					
					if(document.getElementById(strElement).tagName.toLowerCase()=='textarea')
					{
						document.getElementById(strElement).value=responseText;
					}
					else
					{
						document.getElementById(strElement).innerHTML=responseText;
					}
				}				
				if (strReplyFunctionName!='')
				{
					responseText=responseText.replace(/\n/g,'');					//remove LF and CR
					responseText=responseText.replace(/\r/g,'');					//remove LF and CR
					eval(strReplyFunctionName+'(\''+responseText+'\')');
				}
				objBriefFetchDataXml=null;
			}
		}
	}
	objBriefFetchDataXml.open("POST",strUrl,true);
	objBriefFetchDataXml.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	objBriefFetchDataXml.send(strPostData);
}

function cancelBriefFetchData()
{
	if (objBriefFetchDataXml!=null)				//ajax in progress
	{
		objBriefFetchDataXml.abort();
	}
	objBriefFetchDataXml=null;
}

function fetchData(strUrl,strElementID,strLoadingText,strChkSum,strPostData)
{
	strAjaxElementID=strElementID;
	strAjaxPostData=strPostData;
	strAjaxUrl=strUrl;
	if (typeof strChkSum=='undefined')
	{
		strChkSum='';
	}
	strAjaxChkSum=strChkSum;
	xmlHttp=GetXmlHttpObject();
	if (xmlHttp==null)
	{
		alert ("Your browser does not support AJAX!");
		return;
	} 
	if (strAjaxUrl.indexOf('?')!=-1)
	{
		strAjaxUrl=strAjaxUrl+'&';
	}
	else
	{
		strAjaxUrl=strAjaxUrl+'?';
	}
	strAjaxUrl=strAjaxUrl+'rid='+Math.random();	
	xmlHttp.onreadystatechange=stateChanged;
	if (strAjaxPostData=='')
	{
		xmlHttp.open("GET",strAjaxUrl,true);
		xmlHttp.send(null);
	}
	else
	{
		xmlHttp.open("POST",strAjaxUrl,true);
		xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		xmlHttp.setRequestHeader('Referer', 'secretCode')
		xmlHttp.send(strAjaxPostData);
	}
	intAjaxRetries=5;
	//show loading...
	if (intAjaxInProgress==0)
	{
		strAjaxLoadingText=strLoadingText;
		if (strAjaxLoadingText.indexOf('...')>0)
		{
			strAjaxLoadingText=strAjaxLoadingText.slice(0,strAjaxLoadingText.indexOf('...'));
			strAjaxLoadingTextDots='';
			intAjaxIntervalID=setInterval("refreshLoadingText()",500)
		}
		else
		{
			clearInterval(intAjaxIntervalID);
		}
	}
	document.getElementById(strAjaxElementID).innerHTML=strAjaxLoadingText;
	intAjaxInProgress=1;
}

function GetXmlHttpObject()
{
var xmlHttp=null;
try
	{
	// Firefox, Opera 8.0+, Safari
	xmlHttp=new XMLHttpRequest();
	}
catch (e)
	{
	// Internet Explorer
	try
		{
		xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
	catch (e)
		{
		xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
return xmlHttp;
}


function stateChanged() 
{ 
	if (xmlHttp.readyState==4)
	{
		strTemp=xmlHttp.responseText;
		if (strTemp.slice(0,strAjaxChkSum.length)==strAjaxChkSum)
		{
			//fetch URL Done
			document.getElementById(strAjaxElementID).innerHTML=xmlHttp.responseText;
			intAjaxInProgress=0;
			clearInterval(intAjaxIntervalID);
			try
			{
				initialBody();
			}
			catch(err)
			{
			}			
		}
		else
		{
			//Error fetch URL
			intAjaxRetries=intAjaxRetries-1;
			if (intAjaxRetries>0)
			{
				//Retry
				xmlHttp=GetXmlHttpObject();
				if (strAjaxUrl.indexOf('?')>0)
				{
					strAjaxUrl=strAjaxUrl+'&';
				}
				else
				{
					strAjaxUrl=strAjaxUrl+'?';
				}
				strAjaxUrl=strAjaxUrl+'rid='+Math.random();	
				xmlHttp.onreadystatechange=stateChanged;
				if (strAjaxPostData=='')
				{
					xmlHttp.open("GET",strAjaxUrl,true);
					xmlHttp.send(null);
				}
				else
				{
					xmlHttp.open("POST",strAjaxUrl,true);
					xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
					xmlHttp.setRequestHeader('Referer', 'secretCode')
					xmlHttp.send(strAjaxPostData);
				}
			}
			else
			{
				//Raise error
				document.getElementById(strAjaxElementID).innerHTML='Connection Error!';
				intAjaxInProgress=0;
				clearInterval(intAjaxIntervalID);
			}
		}
	}
}

function refreshLoadingText()
{
	strAjaxLoadingTextDots=strAjaxLoadingTextDots+'.';
	if (strAjaxLoadingTextDots.length>3) strAjaxLoadingTextDots='';
	document.getElementById(strAjaxElementID).innerHTML=strAjaxLoadingText+strAjaxLoadingTextDots;
}

function charCount(strString,strChar)
{
	intCount=0;
	for (intC=0;intC<strString.length;intC++)
	{
		if (strString.slice(intC,intC+1)==strChar)
		{
			intCount++;
		}
	}
	return intCount;
}

function openpopup(popurl,w,h,s,strPopupName)
{
	if (strPopupName==null) strPopupName='popupwindow';
	if (s==1)  //s: 1=w scrollbars   0=w/o
	{
	  window.open(popurl,strPopupName,"scrollbars=2,width=" + w + ",height=" + h + ",left=" + (screen.width-w)/2 + ",top=" + (screen.height-h)/2)
    //alert('x1');
		return;
	}
	else
	{
		 window.open(popurl,strPopupName,"width=" + w + ",height=" + h + ",left=" + (screen.width-w)/2 + ",top=" + (screen.height-h)/2)
     //alert('x2');
		 return;
	}
}

function resizePopupHeight(intBottomPadding,centerScreen)
{
	if(typeof intBottomPadding=='undefined') intBottomPadding=10;
	var intMaxHeight=0;
	var intX=(document.body.offsetWidth);
	var intY=(document.body.offsetHeight);
	
	//find proper node
	for(intC=0;intC<document.body.childNodes.length;intC++)	
	{
		if(document.body.childNodes[intC].tagName)
		{
			if (document.body.childNodes[intC].offsetHeight) intMaxHeight=document.body.childNodes[intC].offsetHeight;
		}
	}	
	if (intMaxHeight!=0) intY=intMaxHeight;
	
	intFY=intBottomPadding;
	intAddX=8;
	intAddY=75;
	intDelY=0;
	if( getBrowser()=='ie') 
	{
		ieversion=getBrowserVer();
		intAddX=10;
		if (ieversion >=6 && ieversion < 7)
		{
			intAddY=50;
		}
	}
	intFY+=intAddY;
	if (centerScreen)
	{
		var w=document.body.offsetWidth;
		var h=document.body.offsetHeight;
		window.moveTo((screen.width-w)/2,(screen.height-h)/2);
	}
	window.resizeTo(intX+intAddX,intY+intFY+intDelY);
}

//Colorpicker
var newwindow='';function pickerPopup202(ifn,sam){var bl=screen.width/2-102;var bt=screen.height/2-104;page="fcp202.html"+"?ifn="+escape(ifn)+"&sam="+escape(sam);if(!newwindow.closed&&newwindow.location){newwindow.location.href=page;}else{newwindow=window.open(page,"CTRLWINDOW","help=no,status=no,toolbar=no,menubar=no,location=no,scrollbars=no,resizable=no,dependent=yes,width=250,height=250,left="+bl+",top="+bt+",");if(!newwindow.opener)newwindow.opener=self;};if(window.focus){newwindow.focus()}}

function getBrowser()
{
	if (navigator.userAgent.indexOf('MSIE')>0)
	{
		return 'ie';
	}
	else
	{
		return 'ff';
	}
}
function getBrowserVer()
{
	var strV='';
	strBName='firefox,msie,chrome,safari,opera,aol';
	arrBName=strBName.split(',');
	strAl=' 0123456789./';
	strUserA=navigator.userAgent.toLowerCase();
	intC=0;
	intStart=-1;
	strV='';
	strTypeB='';
	do
	{	
		intStart=strUserA.indexOf(arrBName[intC]);
		strTypeB=arrBName[intC];
		intC++;
	}while(intStart==-1 && intC < arrBName.length);
	if(intStart>-1)
	{
		intC=strTypeB.length+intStart;
		do
		{
			flag=0;
			if(strAl.indexOf(strUserA.charAt(intC))>-1)
			{
				flag=1;
				strV+=strUserA.charAt(intC);
				
			}
			intC++;	
		}while(flag==1 && intC < strUserA.length)
	}
	strV=strV.replace(/ /g,'');
	strV=strV.replace(/\//g,'');
	arr=strV.split('.');
	strV='';
	for(intC=0;intC < arr.length; intC++)
	{
		if(intC==1) strV+='.';
		strV+=arr[intC];
	}
	return strV;

}
function getBrowserVersion()
{
	
	if (/MSIE (\d+\.\d+);/.test(navigator.userAgent))
	{ //test for MSIE x.x;
		var ieversion=new Number(RegExp.$1) // capture x.x portion and store as a number
		var strV='';
		if (ieversion>=8)
		strV=8;
		else if (ieversion>=7)
		strV=7;
		else if (ieversion>=6)
		strV=6;
		else if (ieversion>=5)
		strV=5;
	}
	return strV;
}
function findPosXReal(obj)
{
	var curleft = 0;
	if(obj.offsetParent)
		while(1) 
		{
			alert(obj.tagName+' x='+obj.offsetLeft+' rx='+(obj.offsetLeft-obj.scrollLeft+obj.clientLeft));
			curleft += obj.offsetLeft-obj.scrollLeft+obj.clientLeft;
			if(!obj.offsetParent)
				break;
			obj = obj.offsetParent;
		}
	else if(obj.x)
		{
		curleft += obj.x;
		}
	return curleft;
}

function findPosX(obj)
{
	var curleft = 0;
	if(obj.offsetParent)
		while(1) 
		{
			curleft += obj.offsetLeft;
			if(!obj.offsetParent)
				break;
			obj = obj.offsetParent;
		}
	else if(obj.x)
		{
		curleft += obj.x;
		}
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if(obj.offsetParent)
		while(1)
		{
			curtop += obj.offsetTop;
			if(!obj.offsetParent)
				break;
			obj = obj.offsetParent;
		}
	else if(obj.y)
		curtop += obj.y;
	return curtop;
}

function queryString(parameter)
{ 
	var loc = location.search.substring(1, location.search.length);
	var param_value = false;
	var params = loc.split("&");
	for (i=0; i<params.length;i++)
	{
		param_name = params[i].substring(0,params[i].indexOf('='));
		if (param_name == parameter)
		{
			param_value = params[i].substring(params[i].indexOf('=')+1)
		}
	}
	if (param_value)
	{
		return param_value;
	}
	else
	{
		return false; //Here determine return if no parameter is found
	}
}

function switchObjects(strObjSource,strObjTarget)
{
	document.getElementById(strObjSource).style.display='none';
	document.getElementById(strObjTarget).style.display='';
}

function toggleObject(objCaller,strTargetObjectName)
{
	var objTarget=document.getElementById(strTargetObjectName);	
	if (objTarget)
	{
		if (!objCaller.innerHTML)
		{
		alert(objCaller.innerHTML);
			do
			{
				objCaller=objCaller.parentNode;
			}while(objCaller.innerHTML);
		}
		if (objTarget.style.display=='none')
		{
			objTarget.style.display='';
			objCaller.innerHTML=objCaller.innerHTML.replace('+','-');
		}
		else
		{
			objTarget.style.display='none';
			objCaller.innerHTML=objCaller.innerHTML.replace('-','+');
		}
	}
	return true;
}


////////////////////////////////Date and time boxes
function chkSlashFocusNext(e,objObjectNull)
{
	var intC,strC,strO,key;
	if (window.event)
	{
		e = window.event;
		obj = e.srcElement;
		key = e.keyCode;
	}
	else
	{
		obj = e.target;
		key = e.charCode;
	}

	intC=obj.name.indexOf('_')+1;
	strO=obj.name.slice(0,intC+1);
	strC=obj.name.slice(intC+1,intC+2);
	
	if (key==47 && strC!='y')
	{
		if (strC=='d')
	{
		strC='m';
	}
	else if (strC=='m')
	{
		strC='y';
	}
	else if (strC=='s')
	{
		strC='n';
	}
	else if (strC=='n')
	{
		strC='h';
	}
	else if (strC=='h')
	{
		strC='d';
	}
		document.getElementById(strO+strC).focus();
		document.getElementById(strO+strC).select();
		return false;
	}
	else if((key>=48 && key<=57) || (key>=127 && key<=255) || (key<32))
	{
		return true;
	}
	else
	{
		return false;
	}
}

function getMainParent(objObject)
{
	objParent=objObject;
	do
	{
		objParent=objParent.parentNode;
	}while (objParent.length==undefined);
	return objParent;
}

function textFilter(strFilters,e)
{
	//document.getElementById('33').value=String.fromCharCode(8);
	strFilters+=',functionKeys';
	if (window.event)
	{
		e = window.event;
		obj = e.srcElement;
		key = e.keyCode;
	}
	else
	{
		obj = e.target;
		key = e.charCode;
		//key = e.keyCode;
	}
	
	strFiltersS=strFilters.split(',');
	intC=0;
	strKey=String.fromCharCode(key);
	resKey=null;
	resReturn=true;
	
	do
	{
		switch(strFiltersS[intC])
		{
			case 'signs':
				strValidChars='`~!@#$%^&*()_+-=\\|{}[]<>,.;\'?/';
				if (strValidChars.indexOf(strKey)!=-1)
				{
					resKey=key;
				}
				break;
			case 'email':
				strValidChars='@.-_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
				if (strValidChars.indexOf(strKey)!=-1)
				{
					resKey=key;
				}
				break;
			case 'latin':
				strValidChars=' abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
				if (strValidChars.indexOf(strKey)!=-1)
				{
					resKey=key;
				}
				break;
			case 'numbers':
				strValidChars='0123456789';
				if (strValidChars.indexOf(strKey)!=-1)
				{
					resKey=key;
				}
				break;
			case 'farsiNumbers':
				strValidChars='0123456789';
				if (strValidChars.indexOf(strKey)!=-1)
				{
					resKey=key+1728;
				}
				break;
			case 'functionKeys':											//include unicode
				if ((key < 32) || (key > 128))
				{
					return true;
				}
				break;
			case 'farsi':
				if ((key >= 32) && (key < 128))
				{
					strValidChars=' abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`\;\'[]';
					if (strValidChars.indexOf(strKey)!=-1)
					{
						resKey=' !"#$%،گ)(×+و-./0123456789:ك,=.؟@ِذ}ىُىلآ÷ـ،/’د×؛َءٍف‘{ًْإ~جژچ^_پشذزيثبلاهتنمئدخحضقسفعرصطغظ<|>ّ'.charCodeAt(key-32);
					}
				}
				break;
		}
		intC++;
	}while(( resKey==null) && intC<strFiltersS.length);
	
	if (resKey==null)
	{
		resReturn=false;
		
	}
	else
	{
		try
		{
			// Windows
			e.keyCode = resKey;
		}
		catch(err)
		{
			try
			{
				// Try inserting at cursor position, Gecko after banning fake key emission
				pnhMozStringInsert(obj, String.fromCharCode(resKey));
				e.preventDefault();
			}
			catch(err)
			{
				// Everything else, simply add to the end of buffer
				obj.value += String.fromCharCode(resKey);
				e.preventDefault();
			}
		}
	}
	return resReturn;
}

function getStrParam(strText,strParam,strSeparator,strEqualSign)
{
	if (strSeparator==undefined) strSeparator=';';
	if (strEqualSign==undefined) strEqualSign=':';
	strParamsS=strText.split(strSeparator);
	for (intSC=0;intSC<strParamsS.length;intSC++)
	{
		strParamNameVal=strParamsS[intSC].split(strEqualSign);
		if (strParamNameVal.length==0)
		{
			strParamName=strParamNameVal[0];
			strParamVal=strParamNameVal[0];
		}
		else
		{
			strParamName=strParamNameVal[0];
			strParamVal=strParamNameVal[1];
		}
		if (strParamName.toLowerCase()==strParam.toLowerCase())
		{
			return strParamVal;
		}
	}				 
	return '';
}

function doTrim(strText)
{
	strText=strText.replace('&nbsp;',' ');
	strText=strText.replace(String.fromCharCode(160),' ');
	var strTemp=strText.replace(/^\s*/, "").replace(/\s*$/, "");
	return strTemp;
}

/*
function doTrim(str)			//fastest trim!
{
	str = str.replace(/^\s+/, '');
	for (var i = str.length - 1; i >= 0; i--) {
		if (/\S/.test(str.charAt(i))) {
			str = str.substring(0, i + 1);
			break;
		}
	}
	return str;
}
*/

function fireEvent(objElement,strEvent){
	if (document.createEventObject)
	{
		var evt = document.createEventObject();
		return objElement.fireEvent('on'+strEvent,evt)
	}
	else
	{
		var evt = document.createEvent("HTMLEvents");
		evt.initEvent(strEvent, true, true ); // event type,bubbling,cancelable
		return !objElement.dispatchEvent(evt);
	}
}

function separateNums(strNum)
{
	var strRes='';
	var intT=0;
	strNum=strNum+'';
	for (var intC=strNum.length-1;intC>=0;intC--)
	{
		if (strNum.charCodeAt(intC)>=48 && strNum.charCodeAt(intC)<=57)
		{
			strRes=strNum.slice(intC,intC+1)+strRes;
			intT++;
			if ((intT % 3)==0 && intC!=0) strRes=','+strRes;
		}
	}
	return strRes;
}

function confirmDel()
{
	if (document.getElementById('gridSelect').value!=0 && document.getElementById('gridSelect').value!='')
	{
		return confirm('Are you sure?')==true;
	}
	else
	{
		return false;
	}
}

function iframeSetHeight(iframeWindow)
{
	alert('DEBUG NOTE: the function iframeSetHeight is replaced by setIFrameHeight');
}

function setIFrameHeight(iframeWindow)
{
	if (iframeWindow.document.height) {
		var iframeElement = parent.document.getElementById(iframeWindow.name);
		iframeElement.style.height = iframeWindow.document.height + 'px';
		//iframeElement.style.width = iframeWindow.document.width + 'px';
	}
	else if (document.all) {
		var iframeElement = parent.document.all[iframeWindow.name];
		if (iframeWindow.document.compatMode && iframeWindow.document.compatMode != 'BackCompat') 
		{
			iframeElement.style.height =  iframeWindow.document.documentElement.scrollHeight + 5 + 'px';
			//iframeElement.style.width = iframeWindow.document.documentElement.scrollWidth + 5 + 'px';
		}
		else {
			iframeElement.style.height = iframeWindow.document.body.scrollHeight + 5 + 'px';
			//iframeElement.style.width = iframeWindow.document.body.scrollWidth + 5 + 'px';
		}
	}
}

function truncateString(strText,intCharNo)
{
	//like strText.slice(0,intCharNo)+'...' but only add '...' when characters are more than intCharNo and UNICODE compatible
	var strRes=strText;
	if (strText.length>intCharNo)
	{
		strRes=strText.slice(0,intCharNo)+'...';
	}	
	return strRes;
}

function val(strText)
{
	//convert string to numeric value	
if(strText=='00-1')
{
	return -1;
}
	var strRes='';
	var strSign=1;
	if (strText.length>0 && strText!=null && strText!=undefined && strText!='')
	{
		var intC=0;
		var strDot='.';		//one dot only can be used
		if (strText.slice(0,1)=='-')
		{
			strSign=-1;
			strText=strText.slice(1,strText.length);
		}
		if (strText.slice(0,1)=='+') strText=strText.slice(1,strText.length);
		do
		{
			var strCh=strText.slice(intC,intC+1);
			if ((strCh==strDot) || (strCh.charCodeAt(0)>=48 && strCh.charCodeAt(0)<=57)) strRes=strRes+''+strCh; else intC=strText.length;
			if (strCh==strDot) strDot='';
			intC++;
		}while (intC<strText.length);
	}
	else
	{
		strRes=0;
	}
	strRes=strSign*strRes;
	return strRes;
}

function getElementByIdArray(strTagName,strId,intElementIndex)
{
	objElements=document.getElementsByTagName(strTagName);
	if (objElements!=null)
	{
		if (objElements.length>0)
		{
			var intElementCounter=-1;
			var intC=-1;
			do
			{
				intC++;
				if (objElements[intC].id==strId) intElementCounter++;
			}while (!((intC>=objElements.length || (objElements[intC].id==strId && intElementCounter==intElementIndex))));
			if (objElements[intC].id==strId)
			{
				return objElements[intC];
			}
			else
			{
				return false;
			}
		}
		else
		{
			if (objElements.id==strId)
			{
				return objElements;
			}
			else
			{
				return false;
			}			
		}
	}
	else
	{
		return false;
	}
}

function unseparateNums(strNum)
{
	if (strNum!=null && strNum!='' && strNum!=undefined)
	{
		strRes=strNum.replace(/,/g,'');
	}	
	else
	{
		strRes=0;
	}
	return parseInt(strRes);
}

function getAllChildNodes(objMain)
{		
	var objChildNodesAr=new Array();
	objChildNodesAr=getAllChildNodesAppend(objChildNodesAr,objMain);
	return objChildNodesAr;
}

function getAllChildNodesAppend(objArray,objMain)
{
	var intCO=0;
	var objChildNodes;
	objChildNodes=objMain.childNodes;
	for (intCO=0;intCO<=objChildNodes.length-1;intCO++)
	{
		objArray[objArray.length]=objChildNodes[intCO];
		objArray=getAllChildNodesAppend(objArray,objChildNodes[intCO]);		
	}
	
	return objArray;
}

function getListboxText(objListbox,intValue)
{
	//get a listbox and value as input, and return Options[].TEXT of the selectedIndex item
	var intLc=-1;
	do
	{
		intLc++;
	}while (intLc<objListbox.options.length && objListbox.options[intLc].value!=intValue)
	if (objListbox.options[intLc].value==intValue)
	{
		return objListbox.options[intLc].text;
	}
	else
	{
		return false;
	}
}

function getListboxLang(objListbox,intValue)
{
	//get a listbox and value as input, and return Options[].LANG of the selectedIndex item
	var intLc=-1;
	do
	{
		intLc++;
	}while (intLc<objListbox.options.length && objListbox.options[intLc].value!=intValue);
	if (objListbox.options[intLc].value==intValue)
	{
		return objListbox.options[intLc].lang;
	}
	else
	{
		return false;
	}
}

function isNumeric(input)
{
	var RE = /^-{0,1}\d*\.{0,1}\d+$/;
	return (RE.test(input));
}


function doChangeDynamicListbox(objCaller,strItemTitle)
{
	//to user Dynamic Category Listboxes...
	if (objCaller.value.slice(0,1)=='[')
	{
		var strNewItem=prompt('لطفاً نام '+strItemTitle+' جدید را وارد کنید',strItemTitle+' جدید');
		if (strNewItem)
		{
			doAddNewItem(strNewItem,objCaller)
		}
		else
		{
			objCaller.selectedIndex=0;
		}
	}
	if (document.getElementById('txtSelected'+objCaller.id))
	{		
		document.getElementById('txtSelected'+objCaller.id).value=objCaller.value;
	}
	else
	{
		objCaller.value=objCaller.value;
	}
}
function doAddNewItem(strNewItem,objCaller)
{
	objOldOpt=objCaller.options[objCaller.length-1];
	objCaller.remove(objCaller.selectedIndex);
	objOpt=document.createElement('OPTION');
	objOpt.text=strNewItem;
	objOpt.value=strNewItem;
	objCaller.options.add(objOpt);
	objCaller.options.add(objOldOpt);
	objCaller.selectedIndex=objCaller.length-2;
}
function doInitializeDynamicListbox(objCaller,strItemTitle)
{
	objOpt=document.createElement('OPTION');
	objOpt.text='['+strItemTitle+' جدید]';
	objOpt.value=objOpt.text;
	objCaller.options.add(objOpt);

	//add new categoryTitle (if not exist) NOTE: only occure on NEW categories that are not SAVED yet
	var strSelText=document.getElementById('txtSelected'+objCaller.id).value;
	var isSelectedItemExist=false;	
	if (strSelText!='')
	{
		for (var intC=0;intC<objCaller.length;intC++)
		{
			if (objCaller.options[intC].value==strSelText) isSelectedItemExist=true;
		}
		if (isSelectedItemExist==false) doAddNewItem(strSelText,objCaller);
	}

}

function getListboxLangParam(objSelect,strParamName,intItemIndex)
{
	//USAGE: get a param value of LANG attribute from a listBox (comboBox) of itemIndex option
	// param:value;param2:value2;param3:value3...
	var strTemp;
	strParams=objSelect.options[intItemIndex].lang;
	if (strParams)
	{
		var strParamsS=strParams.split(';');
		for(intC=0;intC<strParamsS.length-1;intC++)
		{
			if (strParamsS[intC]!='')
			{
				strTemp=strParamsS[intC].split(':');
				if (strTemp[0]==strParamName)
				{
					return strTemp[1];
				}			
			}
		}
	}
	return false;
}

function loadDataOnBody(strData)
{
	//USAGE: 
	//NOTES: data format must be PipeSeparatedValues
	var strDataS=strData.split('||');
	var strSpcParams=new Array();
	//set value of all normal-named elements
	for (intC=0;intC<strDataS.length;intC+=2)
	{
		var strParamName=strDataS[intC];
		var strParamValue=strDataS[intC+1];
		if (document.getElementById(strParamName))
		{
			var strElementType=document.getElementById(strParamName).tagName.toLowerCase();
			if (strElementType=='input')
			{
				if (document.getElementById(strParamName).type.toLowerCase()=='text' || document.getElementById(strParamName).type.toLowerCase()=='hidden')
				{
					document.getElementById(strParamName).value=strParamValue;
					fireEvent(document.getElementById(strParamName),'change');
					fireEvent(document.getElementById(strParamName),'keyup');
				}
				else
				{
					//todo: radioboxes, checkboxes w/o underline,... should add here later
				}				
			}
			else if (strElementType=='select')
			{
				document.getElementById(strParamName).value=strParamValue;
				fireEvent(document.getElementById(strParamName),'change');
				fireEvent(document.getElementById(strParamName),'keyup');
			}
		}
		else
		{
			//add to an collection array, to process later [may be spc-named element]
			strSpcParams[strParamName]=strParamValue;
		}		
	}
	//set value for spc-named elements (has underline in name, etc.)
	for(intC=0;intC<document.frmMain.elements.length;intC++)
	{
		if (document.frmMain.elements[intC].name)
		{
			if (document.frmMain.elements[intC].name.indexOf('_')!=-1)
			{
				var strElementName=document.frmMain.elements[intC].name;
				var strElementPostfix=strElementName.slice(strElementName.indexOf('_')+1,strElementName.length);
				strElementName=strElementName.slice(0,strElementName.indexOf('_'));
				//check if elementName is exist in strSpcParams[] collection
				if (strSpcParams[strElementName])
				{
					//date fields
					if (strElementPostfix.slice(0,1)=='d')
					{
						var strDateString=strSpcParams[strElementName].split('/');
						document.getElementById(strElementName+'_dy').value=strDateString[0];
						document.getElementById(strElementName+'_dm').value=strDateString[1];
						if (strDateString[2].indexOf(':')==-1)				//has no time
						{
							document.getElementById(strElementName+'_dd').value=strDateString[2];
						}
						else
						{
							document.getElementById(strElementName+'_dd').value=strDateString[2].slice(0,strDateString[2].indexOf(' '));
							strDateString=(strDateString[2].slice(strDateString[2].indexOf(' ')+1,strDateString[2].length)).slice(':');
							if (document.getElementById(strElementName+'_dh'))
							{
								document.getElementById(strElementName+'_dh').value=strDateString[0];
								document.getElementById(strElementName+'_dn').value=strDateString[1];
								if (strDateString.length>2 && document.getElementById(strElementName+'_ds')) document.getElementById(strElementName+'_ds').value=strDateString[2];
							}
						}
						strSpcParams[strElementName]='';
					}
					else				//else if is_numeric(strElementPostfix)   now only for checkboxes
					{
						if(strSpcParams[strElementName].indexOf(','+document.frmMain.elements[intC].value+',')!=-1)
						{
							document.frmMain.elements[intC].checked='checked';
						}
						else
						{
							document.frmMain.elements[intC].checked='';
						}
					}
				}
			}
			else
			{
				//todo: process dash-named elements (array elemets)
			}
		}
	}	
}
/*
function calcChkSum(strText)
{
	var intChkSum=0;
	var intC;
	for (intC=0;intC<strText.length;intC++)
	{		
		intChkSum+=(intC & 127) * strText.charCodeAt(intC);
		intChkSum=(intChkSum & 65535);
	}
	return intChkSum;
}
*/


//----------------------------------------------------
//-------NumericTextFilter (SeparateNums) ------------
//----------------------------------------------------
function isNumericKeysPressed(key) {

		if (key >= 48 && key <= 57) { // Numbers
				return true;
		}

		return false;
}

function numbericOnKeypress(e) {

		if (isCopyPressed(e) || isPastePressed(e))
				return;
		var key = getEventKeyCode(e);

		if (key == 45 || key == 44 || key == 46) return true;// ',' '.' '-'
		if (ignoreKeys(key)) return true;
		if (isNumericKeysPressed(key)) { // Numbers
				return true;
		}
		if (window.event) //IE
				window.event.returnValue = false;
		else              //other browser
				e.preventDefault();
}

function sysncMoneyValue(sourceEl) {
		var srcElement = document.getElementById(sourceEl);
		if (srcElement != null )
				discElement.value = replaceString(srcElement.value, ',', '');
}

function placeCurrencyMask(ctrl) {
		var kaonumber = ctrl.value
		for (var i = 0; i < kaonumber.length; i++) {
				while (kaonumber.indexOf(',') != -1) {
						kaonumber = kaonumber.substring(0, kaonumber.indexOf(',')) + kaonumber.substring(kaonumber.indexOf(',') + 1);
				}
		}
		var kaos4 = "";
		var kaos0 = "";
		if (kaonumber.indexOf("-") != -1) {
				kaos0 = "-";
				for (var i = 0; i < kaonumber.length; i++) {
						if (kaonumber.indexOf("-") != -1)
								kaonumber = kaonumber.substring(0, kaonumber.indexOf("-")) + kaonumber.substring(kaonumber.indexOf("-") + 1);
				}
		}

		if (kaonumber.indexOf("0") == 0) {
				kaonumber = kaonumber.substring(1);
				//added by A.B.F.
				if (kaonumber=='') kaonumber=0;
		}
		var kaoa;
		var kaob;

		if ((kaoa = kaonumber.indexOf('/')) != -1) {
				kaos4 = kaonumber.substring(kaoa);

				while (kaos4.indexOf('/') != -1) {
						kaos4 = kaos4.substring(0, kaos4.indexOf('/')) + kaos4.substring(kaos4.indexOf('/') + 1);
				}
				while (kaos4.indexOf(".") != -1) {
						kaos4 = kaos4.substring(0, kaos4.indexOf(".")) + kaos4.substring(kaos4.indexOf(".") + 1);
				}
				kaos4 = '/' + kaos4;
				kaonumber = kaonumber.substring(0, kaoa);
		} else if ((kaob = kaonumber.indexOf(".")) != -1) {
				kaos4 = kaonumber.substring(kaob);
				while (kaos4.indexOf(".") != -1) {
						kaos4 = kaos4.substring(0, kaos4.indexOf(".")) + kaos4.substring(kaos4.indexOf(".") + 1);
				}
				while (kaos4.indexOf('/') != -1) {
						kaos4 = kaos4.substring(0, kaos4.indexOf('/')) + kaos4.substring(kaos4.indexOf('/') + 1);
				}
				kaos4 = "." + kaos4;
				kaonumber = kaonumber.substring(0, kaob);
		}
		if ((kaonumber + kaos4).indexOf(".") == 0) {
				kaonumber = "0" + kaonumber;
		} else if ((kaonumber + kaos4).indexOf('/') == 0) {
				kaonumber = kaonumber + '0';
		}
		if (kaonumber.length <= 3) {
				ctrl.value = kaos0 + kaonumber + kaos4;
		} else {
				var kaos1 = kaonumber.substring(0, (kaonumber.length) % 3);
				var kaos2 = kaonumber.substring((kaonumber.length) % 3);
				var kaos3 = "";
				for (var i = 0; i < kaos2.length; i = i + 3) {
						kaos3 = kaos3 + ',' + kaos2.substring(i, i + 3);
				}
				if (kaonumber.length % 3 == 0) kaos3 = kaos3.substring(1);
				ctrl.value = kaos0 + kaos1 + kaos3 + kaos4;
		}
}

function isCopyPressed(e)
{
		return e.ctrlKey && getEventKeyCode(e) == 99;
}

function isPastePressed(e)
{
		return e.ctrlKey && getEventKeyCode(e) == 118;
}
function getEventKeyCode(e) {
		var key;
		if (window.event)
				key = event.keyCode;
		else
				key = e.which;

		return key;
}
function ignoreKeys(key) {
		if (key == 0) { //function keys and arrow keys
				return true;
		}
		if (key == 13) { //return
				return true;
		}
		if (key == 8) { //backspace
				return true;
		}
		if (key == 9) { // tab
				return true;
		}

		return false;
}

function windowBackOrClose()
{
	//if popup (any parent) close window otherwise back
	if (window.opener || window.history.length==1) window.close(); else window.history.back();
}

function getRadioSelection(strRadioName)
{
	var objRadios=document.getElementsByTagName('input');
	var intC=0,strRes='';
	do
	{
		if(objRadios[intC].type.toLowerCase()=='radio' && objRadios[intC].name==strRadioName)
		{
			if (objRadios[intC].checked)
			{
				return objRadios[intC].value;
			}
		}
		intC++;
	}while(intC<objRadios.length && strRes=='');
	return false;
}

function disableAllButtons(objCaller)
{	
	//on forms: if objCaller is a form, the form is submitted first, then all buttons will be disabled
	/*
	if (objCaller==null) objCaller='';
	if(objCaller.tagName=='FORM')
	{
		setTimeout('disableAllButtons();',100);
		return true;
	}
	else
	{		
		objButtons=document.getElementsByTagName('input');
		for(var intC=0;intC<objButtons.length;intC++)
		{
			var strObjType=objButtons[intC].type.toLowerCase();
			if(strObjType=='button' || strObjType=='submit') objButtons[intC].setAttribute('disabled','disabled');
		}
		return false;
	}
	*/
	return true;
}

function showFloatTextBox(strText,objCaller)
{
	objDivFloat=document.getElementById('divFloatTextBox');
	if (objDivFloat)
	{
		objCaller.appendChild(objDivFloat);
		objTextBox=document.getElementById('txtFloatTextBox');    
		objTextBox.value=strText;    
		objDivFloat.style.display='';
		objDivFloat.style.position='absolute';
		objDivFloat.style.left='30px';
		objDivFloat.style.top='-5px';
		objTextBox.focus();
		objTextBox.select();
	}  
}

function floatTextBoxKeyUp()
{
	objDivFloat=document.getElementById('divFloatTextBox');
	if (objDivFloat)
	{
		objDivFloat.style.display='none';
	}  
}

function showFloatImage(strUrl,objCaller)
{
	objDivFloat=document.getElementById('divFloatImage');
	if (objDivFloat)
	{
		objCaller.appendChild(objDivFloat);
		objImage=document.getElementById('imgFloatImage');    
		objImage.src=strUrl;
		objDivFloat.style.display='';
		objDivFloat.style.position='absolute';
		objDivFloat.style.left='30px';
		objDivFloat.style.top='-5px';
	}  
}

function hideFloatImage()
{
	objDivFloat=document.getElementById('divFloatImage');
	if (objDivFloat)
	{
		objImage=document.getElementById('imgFloatImage');    
		objDivFloat.style.display='none';
		objImage.src='images/loadingBig.gif';    
	}    
}

function doSwitchShow(objCaller,strShowObj,strHideObj)
{
	if (objCaller.innerHTML.indexOf('+')!=-1)
	{
		if (document.getElementById(strShowObj)) document.getElementById(strShowObj).style.display='';
		if (document.getElementById(strHideObj)) document.getElementById(strHideObj).style.display='none';
		objCaller.innerHTML=objCaller.innerHTML.replace('+','-');
	}
	else
	{
		if (document.getElementById(strShowObj)) document.getElementById(strShowObj).style.display='none';
		if (document.getElementById(strHideObj)) document.getElementById(strHideObj).style.display='';
		objCaller.innerHTML=objCaller.innerHTML.replace('-','+');
	}
}

