// JavaScript Document

var strAjaxElementID,strAjaxLoadingText,strAjaxLoadingTextDots,intAjaxIntervalID,intAjaxInProgress=0;
var strAjaxChkSum,intAjaxRetries,strAjaxUrl,strAjaxPostData;

var bodyKeyDownCode;
function onBodyKeyDown(e)
{
	if(window.event) // IE
	{
		bodyKeyDownCode = e.keyCode;
	}
	else if(e.which) // Netscape/Firefox/Opera
	{
		bodyKeyDownCode = e.which;
	}
	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)
			{
				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;
	}
	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='';				
			}
		}
	}
	bodyKeyDownCode=0;
}
function onBodyFocus()
{
	bodyKeyDownCode=0;
}
function runOnBodyLoad()
{
	//try to focus on first TEXT or COMBO element in first FORM
	//setFocusToFirstControl();
	try
	{
		onBodyLoad();
	}
	catch(err)
	{
		//alert(err);
	}
}

function runOnBodyUnload()
{
	try
	{
		onBodyUnload();
	}
	catch(err)
	{
		//alert(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(er) {
          }
        }
      }
      //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);
		}
	}	
}*/

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('?')>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);
	}
	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(intIntervalID);
		}
	}
	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);
			initialBody();
		}
		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)
{
  if (s==1)
	{
		var winpops=window.open(popurl,"","scrollbars=2,width=" + w + ",height=" + h + ",left=" + (screen.width-w)/2 + ",top=" + (screen.height-h)/2)
	}
	else
	{
		var winpops=window.open(popurl,"","width=" + w + ",height=" + h + ",left=" + (screen.width-w)/2 + ",top=" + (screen.height-h)/2)
	}
}

//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 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='';
}


////////////////////////////////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{strC='y';}
    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 initialBody()
{
	initialRadioGroups();
}

/////////////////////////////////RadioBox: disable and enable related objects
//var radioClickEnabledObjects=new Array();
var radioClickEnabledObjects=new Array();
function radioClick(objRadio,strSign)
{
	var radioClickEnabledObjectsNew=new Array();
	objParent=getMainParent(objRadio);
	intEC=0;
//	if (objRadio.checked==true)
	{
		//disable objects recently enabled by this radio group
		if (radioClickEnabledObjects[objRadio.name]!=undefined)
		{
			for (intC=0; intC<radioClickEnabledObjects[objRadio.name].length; intC++)
			{
				radioClickEnabledObjects[objRadio.name][intC].disabled=true;
			}
		}
		//enable related objects
		for (intC=0; intC<objParent.length; intC++)
		{
			if (getStrParam(objParent[intC].lang,'radioGroup')==strSign)
			{
				objParent[intC].disabled=false;
				radioClickEnabledObjectsNew[intEC]=objParent[intC];
				intEC++;
			}
		}
		radioClickEnabledObjects[objRadio.name]=radioClickEnabledObjectsNew;
	}
/*
	else
	{
		//only disable related objects (used in body initializing)
		for (intC=0; intC<objParent.length; intC++)
		{
			if (objParent[intC].title==strSign)
			{
				objParent[intC].disabled=false;
			}
		}
	}
*/
}

function initialRadioGroups()
{
	//set radio related objects Disabled or Enabled
	strRelObjectsEn=',';
	strRelObjectsDi=',';
	strRelObjectsRa=',';
	//search for radio elements
	objRadios=document.getElementsByTagName('input');
	for(intOC=0; intOC<objRadios.length; intOC++)
	{
		if (objRadios[intOC].getAttribute('type')=='radio')
		{
			strFunc=''+objRadios[intOC].getAttribute('onclick');
			if (strFunc!='null')
			{
				if (strFunc.indexOf('{')>0)
				{
					strFunc=strFunc.slice(strFunc.indexOf('{')+2,strFunc.indexOf('}')-1);
				}
				if (strFunc.indexOf('radioClick')==0)
				{
					strFunc=strFunc.slice(strFunc.indexOf(',\'')+2,strFunc.length);
					if (objRadios[intOC].disabled==false)
					{
						if (objRadios[intOC].checked==true)
						{
							strRelObjectsEn=strRelObjectsEn+strFunc.slice(0,strFunc.indexOf('\''))+',';
							strRelObjectsRa=strRelObjectsRa+objRadios[intOC].name+',';
						}
						else
						{
							strRelObjectsDi=strRelObjectsDi+strFunc.slice(0,strFunc.indexOf('\''))+',';
						}
					}
				}
			}
		}
	}
	//if anything to be Disabled or Enabled
	if (strRelObjectsDi!=',' || strRelObjectsEn!=',')
	{
		strElementTypes='input,select,button,textarea'.split(',');
		for (intEC=0;intEC<strElementTypes.length;intEC++)
		{
			objRadios=document.getElementsByTagName(strElementTypes[intEC]);
			//disable related elements
			for(intOC=0; intOC<objRadios.length; intOC++)
			{
				strObjTitle=objRadios[intOC].getAttribute('lang');
				if (strObjTitle!=undefined && strObjTitle!='')
				{
					strObjTitle=getStrParam(strObjTitle,'radioGroup');
					if (strRelObjectsDi.indexOf(','+strObjTitle+',')!=-1)
					{
						objRadios[intOC].disabled=true;
					}
					if (strRelObjectsEn.indexOf(','+strObjTitle+',')!=-1)
					{
						objRadios[intOC].disabled=false;
						//also add to the ENABLED array, to be disabled after proper radio onclick() event.
						strTempList=strRelObjectsRa.split(',');
						intTempCCount=charCount(strRelObjectsEn.slice(0,strRelObjectsEn.indexOf(','+strObjTitle+',')),',');
						strRadioName=strTempList[intTempCCount+1];
						if (radioClickEnabledObjects[strRadioName]!=undefined)
						{
							intAIndex=radioClickEnabledObjects[strRadioName].length;
						}
						else
						{
							radioClickEnabledObjects[strRadioName]=new Array();
							intAIndex=0;
						}
						radioClickEnabledObjects[strRadioName][intAIndex]=objRadios[intOC];
					}
				}					
			}
		}			
	}
}

function getMainParent(objObject)
{
	objParent=objObject;
	do
	{
		objParent=objParent.parentNode;
	}while (objParent.length==undefined);
	return objParent;
}

function textFilter(strFilters,e)
{
	strFilters+=',functionKeys';
	if (window.event)
	{
		e = window.event;
		obj = e.srcElement;
		key = e.keyCode;
	}
	else
	{
		obj = e.target;
		key = e.charCode;
	}
	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==strParam)
		{
			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 fireEvent(element,event){
	if (document.createEventObject)
	{
		var evt = document.createEventObject();
		return element.fireEvent('on'+event,evt)
	}
	else
	{
		var evt = document.createEvent("HTMLEvents");
		evt.initEvent(event, true, true ); // event type,bubbling,cancelable
		return !element.dispatchEvent(evt);
	}
}

function separateNums(strNum)
{
	var strRes='';
	var intT=0;
	strNum=strNum+'';
  for (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 setParentObjectValue(strObjName,strValue,intMode)
{
	if (intMode==1)
	{
		window.opener.document.getElementById(strObjName).value+=strValue;
	}
	else
	{
		window.opener.document.getElementById(strObjName).value=strValue;
	}
	return;
}

/*
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;
}
*/

