
	optionalInputs= new Array();
	minLengthInputs= new Array();
    function GetXmlHttpObject()
    {    
        if (window.XMLHttpRequest)
        {
            return new XMLHttpRequest();
        }
        if (window.ActiveXObject)
        {
            return new ActiveXObject("Microsoft.XMLHTTP");
        }
        return null;
    }
	function confirmMSG(msg) {
	var answer = confirm(msg)
	if (answer){
		return true;
	}
	else{
			return false;
	}
    }
	function clearInputState(field)
	{
		if (window[field.name+'_ERROR_DIV']==undefined)
			var Node1 = field.parentNode; 
		else
			var Node1 = document.getElementById(window[field.name+'_ERROR_DIV']); 
		var len = Node1.childNodes.length;
		for(var i = 0; i < len; i++)
		{
			
			if(Node1.childNodes[i].id == 'inputState' ||Node1.childNodes[i].id == 'inputStatement' )
			{
				Node1.removeChild(Node1.childNodes[i]);
				clearInputState(field);
				break;
			}
		}
	}
	function inputError(field, text)
	{
		if (window[field.name+'_ERROR_DIV']==undefined)
		{
			var a = document.createElement('IMG');
			a.src = root+'images/inputError.png';
			a.id = 'inputState';
			if (field.parentNode.childNodes[1]==undefined)
				field.parentNode.appendChild(a);
			else
				field.parentNode.insertBefore(a, field.parentNode.childNodes[1]);
		}
		if (text!=undefined)
		{
			var a = document.createElement('DIV');
			a.id = 'inputStatement';
			a.innerHTML = text;
			a.className = 'inputWarning';
			if (window[field.name+'_ERROR_DIV']==undefined)
				field.parentNode.appendChild(a);		
			else
				document.getElementById(window[field.name+'_ERROR_DIV']).appendChild(a);
		}
	}
	function inputOk(field, text)
	{
		if (text!=undefined)
		{
			var a = document.createElement('DIV');
			a.id = 'inputStatement';
			a.innerHTML = text+'ff';
			a.className = 'inputOk';
			field.parentNode.appendChild(a);		
		}
	}
	function englishTest (obj)
	{
		if( document.selection ){
			var range = document.selection.createRange();
			var stored_range = range.duplicate();
			stored_range.moveToElementText( obj );
			stored_range.setEndPoint( 'EndToEnd', range );
			obj.selectionStart = stored_range.text.length - range.text.length;
			obj.selectionEnd = obj.selectionStart + range.text.length;
		}

			var start = obj.selectionStart;
			if ((obj.value.charCodeAt(start-1)>1550) && (obj.value.charCodeAt(start-1)<1650))
			{
				obj.value = obj.value.substr(0, start-1) +obj.value.substr(start, obj.value.length);
				clearInputState(obj);
				inputError(obj, _DEFAULT_IF_NOT_ENGLISH);
			}
	}
	function englishTestPaste (obj)
	{
			var objLength = obj.value.length;
			for (var istart=0, start = 0; start < obj.value.length; istart++, start++)
			{
				if ((obj.value.charCodeAt(start)>1550) && (obj.value.charCodeAt(start)<1650))
				{
					obj.value = obj.value.substr(0, start) +obj.value.substr(start+1, obj.value.length);
					start--;
				}
			}			

	}
	function arabicTest (obj)
	{
		
		if( document.selection ){

			var range = document.selection.createRange();
			var stored_range = range.duplicate();
			stored_range.moveToElementText( obj );
			stored_range.setEndPoint( 'EndToEnd', range );
			obj.selectionStart = stored_range.text.length - range.text.length;
			obj.selectionEnd = obj.selectionStart + range.text.length;
			
			
		}
			var start = obj.selectionStart;
			
			if ((obj.value.charCodeAt(start-1)>64) && (obj.value.charCodeAt(start-1)<123))
			{				
				obj.value = obj.value.substr(0, start-1) +obj.value.substr(start, obj.value.length);
				clearInputState(obj);
				inputError(obj, _DEFAULT_IF_NOT_ARABIC);
			}


	}
	function arabicTestPaste (obj)
	{
			var objLength = obj.value.length;
			for (var istart=0, start = 0; start < obj.value.length; istart++, start++)
			{
				if ((obj.value.charCodeAt(start)>64) && (obj.value.charCodeAt(start)<123))
				{
					obj.value = obj.value.substr(0, start) +obj.value.substr(start+1, obj.value.length);
					start--;
				}
			}
	}

	function destroyNotes()
	{
		document.getElementById('detroyNote').style.display ='none';
	}

	function viewNote(obj, x, leftOffset, topOffset)
	{
		
		destroyNotes();
		if (isEmpty(x))
			return;
		var curleft = curtop = 0;

            if (obj.offsetParent) 

            {

                curleft = obj.offsetLeft

                curtop = obj.offsetTop

                while (obj = obj.offsetParent) {

                    curleft += obj.offsetLeft

                    curtop += obj.offsetTop

                }
				
				document.getElementById('detroyNote').style.display ='block';
                document.getElementById('detroyNote').innerHTML=x;
				if (topOffset !=undefined)
					curtop+=topOffset;
                document.getElementById('detroyNote').style.top=curtop+'px';
				
				if (leftOffset==undefined)
				{
					if (lang=='en')
						curleft+=300;
					else
						curleft-=340;
				}
				else
					curleft+=leftOffset;

                document.getElementById('detroyNote').style.left=curleft+'px';
		}

	}
	function isEmpty(text)
	{
		
		if ((text==null||text.replace(/^\s+|\s+$/g,'')==''))
		{
			return(true);
		}
		else
		{
			return(false);			
		}
	}
	function isThereData(field)
	{
		
		clearInputState(field);
		with (field)
		{
			if (type!='checkbox')
				return !isEmpty(value);
			else
				return checked;
		}
	}
	function validateForm(thisform)
	{
	
		for(i=0; i < thisform.elements.length; i++)
		{
			elem = thisform.elements[i];
			var optional=false;
			for(var j in optionalInputs[thisform.name])
				if(j==elem.name&& optionalInputs[thisform.name][j]==true)
				{
					optional=true;
				}
			var minLength=0;
			for(var j in minLengthInputs[thisform.name])
				if(j==elem.name)
					minLength=minLengthInputs[thisform.name][j];
			if (elem.name != '' && elem.type!='submit' && (elem.type!='checkbox' || elem.id=='obligateCHK') && elem.disabled!=true && (window[elem.name+'_With_Editor']==undefined) && elem.type!='hidden')
			{
				if ((window[elem.name.substr(0, elem.name.length-2)+'MultipleTransfer']!=undefined)|| (elem.id=='selectMeAll'))
				{
					for(zzz=0; zzz<elem.options.length; zzz++){elem.options[zzz].selected = true;}
				}
				
				if (!isThereData(elem)&& !optional)
				{
					elem.focus();					
					if (window[elem.name+'_EMPTY_MSG']==undefined)
						inputError(elem, _DEFALUT_EMPTY_MSG);
					else
						inputError(elem, window[elem.name+'_EMPTY_MSG']);
					
					return (false);
				}
				else
				if (isThereData(elem))
				{
					if (window[thisform.name+elem.name+'_Not_Unique']!=undefined && window[thisform.name+elem.name+'_Not_Unique']==true)
					{
						elem.focus();						
						return (false);
					}
					if (elem.id=='integerCHK')
					{
						var integerRe = /^\d+$/
						if (!integerRe.test(elem.value))
						{
							elem.focus();
							if (window[elem.name+'_NOT_VALID_MSG']==undefined)
								inputError(elem, _DEFAULT_NOT_VALID_NUMBER);
							else
								inputError(elem, window[elem.name+'_NOT_VALID_MSG']);
							return (false);
						}
						if (window[elem.name+'_MORE_THAN']!=undefined && window[elem.name+'_MORE_THAN']>=elem.value)
						{
							inputError(elem, _YOU_MUST_ENTER_MORE_THAN + ' ' + window[elem.name+'_MORE_THAN']);
							return false;
						}
						if (window[elem.name+'_LESS_THAN']!=undefined && window[elem.name+'_LESS_THAN']<=elem.value)
						{
							inputError(elem, _YOU_MUST_ENTER_LESS_THAN + ' ' + window[elem.name+'_LESS_THAN']);
							return false;
						}
					}
					else
					if (elem.id=='floatCHK')
					{
						var floatRe = /^\d+(\.\d+)?$/
						if (!floatRe.test(elem.value))
						{
							elem.focus();
							if (window[elem.name+'_NOT_VALID_MSG']==undefined)
								inputError(elem, _DEFAULT_NOT_VALID_FLOAT);
							else
								inputError(elem, window[elem.name+'_NOT_VALID_MSG']);
							return (false);
						}
					}
					else
					if (elem.id=='mailCHK')
					{
						var mailRe = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*\.(\w{2}|(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum))$/
						if (!mailRe.test(elem.value))
						{
							elem.focus();
							if (window[elem.name+'_NOT_VALID_MSG']==undefined)
								inputError(elem, _DEFAULT_NOT_VALID_MAIL);
							else
								inputError(elem, window[elem.name+'_NOT_VALID_MSG']);
							
							return (false);
						}
					}
					else
					if (elem.id=='dateCHK')
					{
						if (!isDate(elem.value))
						{
							elem.focus();
							if (window[elem.name+'_NOT_VALID_MSG']==undefined)
								inputError(elem, _DEFAULT_NOT_VALID_DATE);
							else
								inputError(elem, window[elem.name+'_NOT_VALID_MSG']);
							return (false);
						}
					}
					else
					if (elem.id=='expressionCHK')
					{
						if (window[elem.name+'_EXPRESSION']==undefined)
							alert('Expression Not Set');
						else
							var dateRe = window[elem.name+'_EXPRESSION'];
						if (!dateRe.test(elem.value))
						{
							elem.focus();
							if (window[elem.name+'_NOT_VALID_MSG']==undefined)
								inputError(elem, _DEFAULT_NOT_VALID_EXPRESSION);
							else
								inputError(elem, window[elem.name+'_NOT_VALID_MSG']);
							return (false);
						}
					}
					else
					if (elem.id=='urlCHK'||elem.id=='urlCHKSmall')
					{
						//var urlRe = /^(http|https|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i
						if (elem.id=='urlCHK')
							var urlRe = /^(http|https|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i
						else
							var urlRe = /^(((http|https|ftp):\/\/)|())([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i
						if (!urlRe.test(elem.value))
						{
							elem.focus();
							if (window[elem.name+'_NOT_VALID_MSG']==undefined)
								inputError(elem, _DEFAULT_NOT_VALID_URL);
							else
								inputError(elem, window[elem.name+'_NOT_VALID_MSG']);
							return (false);
						}
					}				
					if (minLength>elem.value.length)
					{
						elem.focus();
						if (window[elem.name+'_MIN_CHARS_MSG']==undefined)
							inputError(elem, _YOU_MUST_ENTER+' '+minLength+' '+_CHARS_AT_LEAST);
						else
							inputError(elem, window[elem.name+'_MIN_CHARS_MSG']);
						return (false);
					}
				}
			}

		}
		return true;
	
	}
    function ajaxChanged(gets, sidis, byId)
    {
        var xmlhttp=GetXmlHttpObject();
        var a = document.createElement('IMG');
		a.src = root+'images/loader.gif';
		document.getElementById(byId).innerHTML='';
		document.getElementById(byId).appendChild(a);
		
        var url2=root+"ajax/childOfValues.php";
		var url= "sidis="+sidis;

		if (gets['field']!=undefined)
			for(zzz=0; zzz<document.forms[gets['form']][gets['field']+'[]'].options.length; zzz++)
			{
				url=url+"&options[]="+document.forms[gets['form']][gets['field']+'[]'].options[zzz].value;
			}
        
		for (j in gets)
			url=url+"&"+j+"="+gets[j];
        
        url=url+"&sid="+Math.random();
        xmlhttp.onreadystatechange=  function ()
		{
			if (xmlhttp.readyState==4)
			{
				document.getElementById(byId).innerHTML = xmlhttp.responseText;
			}
		};
		xmlhttp.open('POST', url2, true);
		xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xmlhttp.setRequestHeader("Content-length", url.length);
		xmlhttp.setRequestHeader("Connection", "close");
        xmlhttp.send(url);
    }
    function ajaxSuggest(elem, sidis)
    {
		var x = new ajaxObject("ajax/suggestValues.php");

        var a = document.createElement('IMG');
		a.src = root+'images/loader.gif';
		document.getElementById(elem.name+'Suggest').innerHTML='';
		
		if (isEmpty(elem.value))
		{
			return;
		}

		document.getElementById(elem.name+'Suggest').appendChild(a);
		
        var url2=root+"ajax/suggestValues.php";
		x.addParam('sidis', sidis);
		x.addParam('value', elem.value);
		x.addParam('fld', elem.name);

        x.onSuccess	(
			function(reponse)
			{
				document.getElementById(elem.name+'Suggest').innerHTML = reponse;
			}
					);
		x.send('post');
    }
	function maxLengthCHK(elem, maxLength)
	{
		elemLength = elem.value.length;
		if (maxLength > elemLength)
			return true;
		else
		{
			elem.value = elem.value.substr(0, maxLength);
			clearInputState(elem);
			if (window[elem.name+'_MAX_CHARS_MSG']==undefined)
				inputError(elem, _MAX_LENGTH+': '+maxLength+' '+_CHAR);
			else
				inputError(elem, window[elem.name+'_MAX_CHARS_MSG']);
			return false;
		}
	}
    function checkUnique(elem, sidis, formName)
    {
			
		if (isEmpty(elem.value))
		{
			document.getElementById(elem.name+'Unique').innerHTML = '';
			document.getElementById(elem.name+'Unique').className='';
			return;
		}
        var x = new ajaxObject("ajax/checkUnique.php");
        var a = document.createElement('IMG');
		a.src = root+'images/loader.gif';
		a.id = 'inputState';
		
		document.getElementById(elem.name+'Unique').innerHTML='';
		document.getElementById(elem.name+'Unique').className='';
		document.getElementById(elem.name+'Unique').appendChild(a);
		x.addParam('sidis', sidis);
		x.addParam('val', elem.value);
		x.onSuccess	(
			function (response, arr)
			{			
			
				if (response>0)
				{
					if (window[elem.name+'_IF_NOT_UNIQUE']==undefined)
					{
						document.getElementById(elem.name+'Unique').innerHTML = _DEFAULT_IF_NOT_UNIQUE;
						//inputError(elem, _DEFAULT_IF_NOT_UNIQUE);
					}
					else
					{
						//inputError(elem, _DEFAULT_IF_NOT_UNIQUE);
						document.getElementById(elem.name+'Unique').innerHTML = window[elem.name+'_IF_NOT_UNIQUE'];
					}
					window[formName+elem.name+'_Not_Unique'] = true;
					document.getElementById(elem.name+'Unique').className='inputWarning';
				}
				else if (response<0)
				{
				
					if (window[elem.name+'_IF_UNIQUE']==undefined)
					{
					
						//inputOk(elem, _DEFAULT_IF_UNIQUE);
						document.getElementById(elem.name+'Unique').innerHTML = _DEFAULT_IF_UNIQUE;
						
					}
					else
					{
						//inputOk(elem, _DEFAULT_IF_UNIQUE);
						document.getElementById(elem.name+'Unique').innerHTML = window[elem.name+'_IF_UNIQUE'];
					}
					
					window[formName+elem.name+'_Not_Unique'] = false;
					document.getElementById(elem.name+'Unique').className='inputOk';
				}
			}
					);
		x.send('get');
    }
	function byId(id)
	{
		return document.getElementById(id);
	}
    function remove(elem)
    {
		if(elem==null)
			return;
        var Node1 = elem.parentNode; 
		
		var len = Node1.childNodes.length;
      
		for(var i = 0; i < len; i++)
		{           
			if(Node1.childNodes[i] == elem)
			{
				Node1.removeChild(Node1.childNodes[i]);
			}
		}
    }
	function removeById(id)
	{
		elem = document.getElementById(id);
		remove(elem);
	}
	function hide (elem)
	{
		elem.style.display='none';
	}	
	function show (elem)
	{
		elem.style.display='block';
	}
	function flip (elem)
	{
		if (elem.style.display=='none')
			elem.style.display='block';
		else
			elem.style.display='none';
	}
	function flipById (elem)
	{
		elem = document.getElementById(elem);
		flip(elem)
	}
	function moveSelectedMultiple(form, name, dir, max, childOf)
	{
		
		if (dir==1)
		{
			if(max>0)
			{
				clearInputState(document.forms[form][name+"Temp"]);
				if(document.forms[form][name+"[]"].options.length>=max)
				{
					inputError(document.forms[form][name+"Temp"], _MAX_CHOICES+max);
					return;
				}
					
			}
			var myText = document.forms[form][name+"Temp"].options[document.forms[form][name+"Temp"].selectedIndex].text;
			if (childOf!=undefined)
				myText = document.forms[form][childOf].options[document.forms[form][childOf].selectedIndex].text + ' - ' + myText;
			document.forms[form][name+"[]"].options[document.forms[form][name+"[]"].length]=new Option(myText, document.forms[form][name+"Temp"].options[document.forms[form][name+"Temp"].selectedIndex].value); 
			document.forms[form][name+"Temp"].remove(document.forms[form][name+"Temp"].selectedIndex);
			if (document.forms[form][name+"Temp"].selectedIndex!=-1)
				moveSelectedMultiple(form, name, dir, max, childOf);
		}
		else
		{
			var noBack = false;
			var myText = document.forms[form][name+"[]"].options[document.forms[form][name+"[]"].selectedIndex].text;
			if (childOf!=undefined)
			{
				var childOfText = document.forms[form][childOf].options[document.forms[form][childOf].selectedIndex].text;
				if (myText.substr(0, myText.length - myText.replace(/^(.*?)\s\-\s/,'').length - 3, myText)!=childOfText)
					noBack = true;
				myText = myText.replace(/^(.*?)\s\-\s/,'');
			}
			if (!noBack)
				document.forms[form][name+"Temp"].options[document.forms[form][name+"Temp"].length]=new Option(myText, document.forms[form][name+"[]"].options[document.forms[form][name+"[]"].selectedIndex].value); 
			document.forms[form][name+"[]"].remove(document.forms[form][name+"[]"].selectedIndex);
			if (document.forms[form][name+"[]"].selectedIndex!=-1)
				moveSelectedMultiple(form, name, dir, max, childOf);
		}
	}
	function selectAllOptions(form, name)
	{
		for(zzz=0; zzz<document.forms[form][name].options.length; zzz++){document.forms[form][name].options[zzz].selected = true;}
	}
	function selectNoOptions(form, name)
	{
		for(zzz=0; zzz<document.forms[form][name].options.length; zzz++){document.forms[form][name].options[zzz].selected = false;}
	}
	function ajaxCallUrl(url, gets)
	{
		var ajaxTemp = new ajaxObject(url);
		if (gets!=undefined)
		{
			for (j in gets)
				ajaxTemp.addParam(j, gets[j]);
		}
		
		ajaxTemp.send('get');
		
	}
	function ajaxObject (url)
	{
		this.xmlHttp = new GetXmlHttpObject();
		
		if (url==undefined)
			this.url = '';
		else
			this.setUrl(url);
			
		this.params = new Array();
		this.rePassArr = new Array();
		
		this.addParam('sid', Math.random());
		
	}
	ajaxObject.prototype.setUrl = function(url)
	{
		this.url = root+url;

	}
	ajaxObject.prototype.onSuccess = function(func)
	{
		this.onSuccessFunction = func;
	}
	ajaxObject.prototype.onError = function(func)
	{
		this.onErrorFunction = func;
	}
	ajaxObject.prototype.send = function(type)
	{
		type=type.toUpperCase();
		var toPass = '';

		for(j in this.params)
			toPass += j+'='+this.params[j]+'&';
		toPass = toPass.substr(0, toPass.length-1);
		if (this.onSuccessFunction!=undefined || this.onErrorFunction!=undefined)
		{
			
			var toCallOnSuccess  = this.onSuccessFunction;
			var toCallOnError  = this.onErrorFunction;
			var rePassArr = this.rePassArr;
			this.xmlHttp.onreadystatechange = function(){
				if (this.readyState==4)
				{
					
					if(this.status!=200)
					{
						if (toCallOnError != undefined)
							(toCallOnError)(this.status, rePassArr);
					}
					else
					if (toCallOnSuccess != undefined)
						(toCallOnSuccess)(this.responseText, rePassArr);
				}
			}
		}
		
		if (type=='GET')
		{
			toPass = this.url+'?'+toPass;
			this.xmlHttp.open("GET", toPass, true);
			this.xmlHttp.send(null);
		}
		else
		if(type=='POST')
		{
			this.xmlHttp.open('POST', this.url, true);
			this.xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			this.xmlHttp.setRequestHeader("Content-length", toPass);
			this.xmlHttp.setRequestHeader("Connection", "close");
			this.xmlHttp.send(toPass);
		}
		
	}
	ajaxObject.prototype.addParam = function(key, value, rePass)
	{
		if (!key)
			return;
		this.params[key] = urlencode(value);
		if(rePass==true)
			this.rePass(key, urlencode(value));
		
	}
	ajaxObject.prototype.rePass = function(key, value)
	{
		if (!key)
			return;
		this.rePassArr[key] = value;
	}
	function urlencode(s) 
	{
		s = encodeURIComponent(s);
		return s.replace(/~/g,'%7E').replace(/%20/g,'+');
	}
	function isDate(text)
	{
	//	var dateRe = /(19|20)[0-9]{2}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])/
		var dateRe = /^[12][90][0-9][0-9](\-[01]?[0-9]\-[0-3]?[0-9])?$/
		if (!dateRe.test(text))
		{
			return (false);
		}
		else
			return true;
	}
