	var modalContent = '<div id="blacy-modal-content"><div id="blacy-modal-title">&nbsp;</div><div class="close"><a href="#" class="simplemodal-close">x</a></div><div id="blacy-modal-data"><br /><div style="width: 300px;" class="loadingBar"></div></div></div>';
	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;
			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(window['recursive_'+elem.name]!=undefined)
				{
					if (window['recursive_'+elem.name+'_onlyLeaves']==undefined)
					{
						if(!isEmpty(window[elem.name+'lastPicked']))
						{
							
							optional=true;
						}
						
					}
					else
					if(optional &&window['recursive_'+elem.name+'_onlyLeaves']!=undefined && window[elem.name+'lastPicked']!=undefined)
					{
						optional = false;
					}
					window[elem.name+'lastPicked'] = elem.value
				}
				
				
					
				
					//window[elem.name+'lastPicked'] = elem.value;
				
				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')
					{
						
						if (!isInteger(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')
					{
						
						if (!isFloat(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')
					{
						
						if (!isMail(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=='colorCHK')
					{
						if (!isColor(elem.value))
						{
							elem.focus();
							if (window[elem.name+'_NOT_VALID_MSG']==undefined)
								inputError(elem, _DEFAULT_NOT_VALID_COLOR);
							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')
					{
						if (elem.id=='urlCHK')
							var urlRe = isURL(elem.value);
						else
							var urlRe = isSmallURL(elem.value);
						if (!urlRe)
						{
							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);
					}
				}
			}
			
		}
	
		
		showProgressingBar();
		if (window['afterValidation_'+thisform.name])
		{
			var fn = window['afterValidation_'+thisform.name];
			if(!window[fn](thisform))
				return false;
		}
		if(window['fastEdit_'+thisform.name]!=undefined)
		{
			fastEditSubmit(thisform);
			return false;
		}
		else
		if(window['fastAdd_'+thisform.name]!=undefined)
		{
			//alert('fastAdd_'+thisform.name);
			fastAddSubmit(thisform);
			return false;
		}
		else
		return true;
	
	}
	function javaChanged(x, value, byId)
	{
		var toPut = '';
		for(j in x)
		{
			if (x[j].parent==value)
				toPut+='<option value="'+j+'">'+(x[j].name)+'</option>';
		}
		if(toPut)
		{
			$('#'+byId).children('select').attr({disabled: false});		
			toPut = '<option value="" style="background:#DDD;">'+_PICK_A_CHOICE+'</option>'+toPut;
			$('#'+byId).children('select').html(toPut);		
		}
		else
		{
			$('#'+byId).children('select').attr({disabled: true});		
			$('#'+byId).children('select').html('');		
		}
	}
	function loadDefaultRecursive(byId, value)
	{
		
		var max = 10;
		var x = window[byId];
		
		var pathToUn = new Array();
		var currentValue = value;
		var counter = 0;
		while(true)
		{
			
			for(j in x)
			{
			
				if (j==currentValue)
				{
					currentValue =x[j].parent;
					if (currentValue==undefined)
						break;
					else
						pathToUn.push({parent: currentValue, value: j});
				}
			}
			if (currentValue==undefined || counter>max)
				break;
			counter++;
		}
		
		pathToUn = pathToUn.reverse();
		
		var level = 0;
		$('#'+byId).children('option[value='+pathToUn[0].parent+']').attr({selected: true});
		for (j in pathToUn)
		{
			recursiveChanged(byId, pathToUn[j].parent, level++, {value: pathToUn[j].value});
		}
		recursiveChanged(byId, pathToUn[pathToUn.length-1].value, level++);
		
		
		
	}
	function recursiveChanged(byId, parent, level, opt)
	{
		
		var x = window[byId];
		
		var toPut = '';
		var idTemp = byId;
		var levelTemp = level;
		var checkedTemp = '';
		while(true)
		{
			if($('#'+idTemp+levelTemp).attr('id')!=undefined)
			{
				$('#'+idTemp+levelTemp).remove();
			}
			else
			
				break;
			levelTemp+=1;
		}
		
		
		for(j in x)
		{
			if (x[j].parent==parent)
			{
				
				if (opt!=undefined&&opt.value!=undefined && j ==opt.value)
					checkedTemp = 'selected';
				else
					checkedTemp = '';
				toPut+='<option '+checkedTemp+' value="'+j+'">'+(x[j].name)+'</option>';
				
			}
		}
		
		if(toPut)
		{
			toPut = ' <select size="'+$('#'+byId).attr('size')+'" name="'+$('#'+byId).attr('name')+'" id="'+byId+level+'" onchange="recursiveChanged(&#39;'+byId+'&#39;, this.value, '+(level+1)+')">'+toPut+'</select>';
			
			$('#'+byId).parents(':first').append(toPut);
		}
		else
		{
		
		}
	}
    function ajaxChanged(gets, sidis, byId, value, func)
    {
        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;
				if (value!=undefined)
					$('#'+byId).find('option[value="'+value+'"]').attr({selected: true});
				if (func!=undefined)
						(func)();
			}
		};
		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;
		}
		showProgressingBar();

		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)
			{
				hideProgressingBar();
				document.getElementById(elem.name+'Suggest').innerHTML = reponse;
			}
					);
		x.send('post');
    }
	function maxLengthCHK(elem, maxLength, viewStat)
	{
		elemLength = elem.value.length;
		if (maxLength > elemLength)
		{
			if(viewStat!=undefined && viewStat=='u')
			{
				clearInputState(elem);
				inputOk(elem, _CHARS_COUNT + ': ' + 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;
					}
					else
					{
						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('post');
    }
	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 = /^[12][90][0-9][0-9](\-[01]?[0-9]\-[0-3]?[0-9])?$/
		if (!dateRe.test(text))
		{
			return (false);
		}
		else
			return true;
	}
	function buildArray(a)
	{
		var o = {};
		for(var i=0;i<a.length;i++)
		{
			o[a[i]]='';
		}
		return o;
	}
	function setRowsPerPage(current, goTo)
	{
		jPrompt(_INSERT_PER_PAGE, current, _PER_PAGE, function(newNum){if (!isInteger(newNum) || newNum<1) return; window.location.href=goTo+'&rowsPerPage='+newNum});
	}
	function isInteger(text)
	{
		var integerRe = /^\d+$/
		if (!integerRe.test(text))
			return false;
		else
			return true;
			
	}
	function isFloat(text)
	{
		var floatRe = /^\d+(\.\d+)?$/
		if (!floatRe.test(text))
			return false;
		else
			return true;
			
	}
	function isMail(text)
	{
		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(text))
			return false;
		else
			return true;
			
	}
	function isURL(text)
	{
		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(text))
			return false;
		else
			return true;
			
	}
	function isSmallURL(text)
	{
		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(text))
			return false;
		else
			return true;
			
	}
	function isArabic(text)
	{
		var containsArabic = false;
		for(i=0; i<text.length; i++)
		{
			if ((text.charCodeAt(i)>1550) && (text.charCodeAt(i)<1650))
			{
				containsArabic = true;
			}
		}
		return (containsArabic);
	}
	function isColor(text)
	{
		var colorReg = /^[0-9a-fA-F]{6}$/
		if (!colorReg.test(text))
			return false;
		else
			return true;
	
	}
	
	
	
	
	
	
	
	
	
	
	function newMultiOption(keyword) {
		if (window['MAX_'+keyword]!=undefined && window['VIEWED_'+keyword]>=window['MAX_'+keyword])
		{
			jAlert(window['_MAX_CHOICES'] + window['MAX_'+keyword]);
			return;
		}
		window['COUNTER_'+keyword]++;
		window['VIEWED_'+keyword]++;
		var toPut= '<div id="tableRow"><div id="tableCell">'+window['ACTUAL_'+keyword] + '</div><div id="tableCell"><span id="CANCEL_'+keyword+'_'+window['COUNTER_'+keyword]+'" onclick="deleteMultiOption(this, \''+keyword+'\')">X</span></div><br class="clear" /></div>';
		
		$('#'+keyword).append(toPut);
		
		
		
	}
	function deleteMultiOption(elem, keyword) {
		if (window['MIN_'+keyword]!=undefined && window['VIEWED_'+keyword]<=window['MIN_'+keyword])
		{
			jAlert(window['_MIN_CHOICES'] + window['MIN_'+keyword]);
			return;
		}
		$("#"+elem.id).parent().parent().hide("slow", function(){$("#"+elem.id).parent().parent().remove()});
		window['VIEWED_'+keyword]--;
	}	
	function fastList(opt, name, newRowToAdd)
	{
		var id =selectorId.substr(selectorId.search('_')+1, selectorId.length-1);
		if (newRowToAdd==undefined)
			$('#'+selectorId).parents('#tableRow:first').html("<div align='center'><div id='temp_"+name+"_"+id+"' style='width: 300px;' class='loadingBar'></div></div>");
		else
			$(opt['selector']).parents('#table:first').append("<div id='tableRow' align='center'><div id='temp_"+name+"_"+newRowToAdd+"' style='width: 300px;' class='loadingBar'></div></div>");		
		var x = new ajaxObject("ajax/fastListElem.php");
		if (newRowToAdd==undefined)
			x.addParam('id', id);			
		else
			x.addParam('id', newRowToAdd);
		x.addParam('root', root);
		
		
		x.addParam('sidis', window['fastList_'+name]);
		x.onSuccess	(
			function(response){
				if (newRowToAdd==undefined)
					$("#temp_"+name+"_"+id).parents('#tableRow:first').replaceWith(response);
				else
					$("#temp_"+name+"_"+newRowToAdd).parents('#tableRow:first').replaceWith(response);
				
				
			}
		);
		x.send('post');
		
	}
	function fastEdit(opt, name)
	{
		callFastList = false;
		opt['afterClose'] = function(){if(callFastList) fastList(opt, name);}
		opt['afterOpen'] = function(){callFastList=false;}
		Blacy({
			selector: opt['selector'], 
			url: "ajax/fastEdit.php", 
			pass: opt['pass'],
			afterClose: opt['afterClose'],
			afterOpen: opt['afterOpen'],
			afterAjax: opt['afterAjax'],
			title: opt['title']
		});
		
	}
	function fastView(opt, name)
	{
		
		Blacy({
			selector: opt['selector'], 
			url: "ajax/fastView.php", 
			pass: opt['pass'],
			afterClose: opt['afterClose'],
			afterOpen: opt['afterOpen'],
			afterAjax: opt['afterAjax'],
			title: opt['title']
		});
		
	}
	function fastAdd(opt, name)
	{
		newRowToAdd = undefined;
		opt['afterClose'] = function(){if (newRowToAdd!=undefined){fastList(opt, name, newRowToAdd); newRowToAdd = undefined;}}
		Blacy({
			selector: opt['selector'], 
			url: "ajax/fastAdd.php", 
			pass: opt['pass'],
			afterClose: opt['afterClose'],
			afterOpen: opt['afterOpen'],
			afterAjax: opt['afterAjax'],
			title: opt['title']
		});
		
	}
	function fastFunc(opt)
	{
		
		Blacy({
			selector: opt['selector'], 
			url: "ajax/fastFunction.php", 
			pass: opt['pass'],
			afterClose: opt['afterClose'],
			afterOpen: opt['afterOpen'],
			afterAjax: opt['afterAjax'],
			title: opt['title']
		});
		
	}
	
	function fastEditSubmit(thisForm)
	{
		var elem, i, submitElem;
		var x = new ajaxObject("ajax/fastEdit.php");
		for(i=0; i < thisForm.elements.length; i++)
		{
			elem = thisForm.elements[i];
			if (elem.type=='checkbox'&&elem.checked)
				x.addParam(elem.name, 1);
			else
			if (elem.type!='checkbox')
				x.addParam(elem.name, elem.value);
			if(elem.type=='submit')
				submitElem = elem;
			
		}
		submitElem.disabled = true
		x.addParam('sidis', window['fastEdit_'+thisForm.name]);
		x.onSuccess	(
				function(response)
				{
					var fastEdit = thisForm.parentNode;
					hideProgressingBar();
					fastEdit.innerHTML = (response);
					callFastList = true;
					//fastEdit({selector: "#blacyEdit_38", pass: {sidis: fastEdit_variablesE, id: 38}, title: "تعديل سريع"}, "variables");
				}
				);
			x.onError(
				function (err)
				{
					submitElem.disabled = false;
					setTimeout(function(){fastEditSubmit(thisForm)}, 1000);
					
				}
			);
		x.send('post');
		
		
		
	}
	function fastAddSubmit(thisForm)
	{
		var elem, i, submitElem;
		var x = new ajaxObject("ajax/fastAdd.php");
		
		for(i=0; i < thisForm.elements.length; i++)
		{
			elem = thisForm.elements[i];
			if (elem.type=='checkbox'&&elem.checked)
				x.addParam(elem.name, 1);
			else
			if (elem.type!='checkbox')
				x.addParam(elem.name, elem.value);
			if(elem.type=='submit')
				submitElem = elem;
			
		}
		
		submitElem.disabled = true
		x.addParam('sidis', window['fastAdd_'+thisForm.name]);
		
		x.onSuccess	(
				function(response)
				{
					
					var fastAdd = thisForm.parentNode;
					hideProgressingBar();
					var newResponse
					newResponse = response.replace(/^\[([0-9])+\]/, '');
					fastAdd.innerHTML = (newResponse);
					if (response.length!=newResponse.length)
						newRowToAdd = parseInt(response.substr(1, response.length-newResponse.length-2));
					
				}
				);
			x.onError(
				function (err)
				{
					submitElem.disabled = false;
					setTimeout(function(){fastAddSubmit(thisForm)}, 1000);
					
				}
			);
		x.send('post');
		
		
		
	}
	function fastDelete(elem, id, confirmed, dontToggle)
	{

		
		var fastDelete_ = elem.parents("#tableRow:first").children(".fastDelete");
		
		var fastDeleteClear = elem.parents("#tableRow:first").children(".fastDeleteClear");
		

		var callAjax;
		callAjax = fastDelete_.css("display")=="none";
		callAjax=true;
		
		if(confirmed==undefined && callAjax)
		{
			jConfirm(_DO_YOU_REALLY_WANNA_DELETE, 'Delete', function(asd){if(asd) fastDelete(elem, id, true)});
			return;
		}
		
		
		if(dontToggle==undefined)
		{
			$(".fastEditClear").hide("fast");
			$(".fastEdit").hide("medium");
			fastDeleteClear.slideToggle("fast");
			fastDelete_.slideToggle("medium");
		}
		
		if (callAjax || dontToggle!=undefined)
		{
			showProgressingBar();
			
			fastDelete_.html('<div align="center"><img src="'+root+'images/loader.gif" /></div>');

			var x = new ajaxObject("ajax/fastDelete.php");
			
			x.addParam('id', id);
			
			x.addParam('sidis', window['fastDelete_'+fastDelete_.attr('id')]);
			x.onSuccess	(
				function(response)
				{
					if (response.search('green')!=-1)
					{
						elem.html('');
						hideProgressingBar();
						elem.parents('#tableRow:first').children('br.clear').fadeOut("fast");
						elem.parents('#tableRow:first').children('#tableCell').fadeOut("medium");
						
					}
					fastDelete_.html(response);
					fastDelete_.addClass('successDelete');
					setTimeout(function(){$('#fastDelete_'+id).parents('#tableRow:first').fadeOut('slow')}, 5000);
				}
				);
			x.onError(
				function (err)
				{
					setTimeout(function(){fastDelete(elem, id, confirm, dontToggle)}, 1000);
				}
			);
			x.send('post');
		}
		else
			fastDelete_.html('');
	}
	function descade_duration(key, func)
	{
		
		var keyVal, second, first, timeLevels, timeLevelsS, secondUnit,firstUnit;
		second='';
		first='';
		secondUnit='';
		firstUnit='';
		keyVal = window[key];
		
		window[key]--;
		
		timeLevels =  new Array('ثانية', 'دقيقة', 'Hour', 'Day', 'Month', 'Year')
		timeLevelsS =  new Array('ثواني', 'دقائق', 'Hours', 'Days', 'Months', 'Years')
	
        
        timePeriods = new Array(60, 60, 24, 30, 12, 100 );
        
		for (i = 0; i<7; i++)
		{
			
			if (Math.floor(keyVal)==0) break;
			second = first;
			secondUnit=firstUnit;
			first = Math.floor(keyVal% timePeriods[i]);
			//first = str_pad(keyVal % timePeriods[i],2,"0", STR_PAD_LEFT);
			
			
			if (keyVal % timePeriods[i]<3 || keyVal % timePeriods[i] > 10)
				firstUnit = " "+timeLevels[i]+" ";
			else
				firstUnit = " "+timeLevelsS[i]+" ";
				
			keyVal/=timePeriods[i];
			
		}
		
		$('#'+key).html(first+firstUnit+(second?' & '+second+secondUnit:''));
		
		if (keyVal>0)
			setTimeout(function(){descade_duration(key, func)}, 1000);
		else
		{
			
			if (func!=undefined)
			{
				$('#'+key).parents(':first').html("<div style='width: 300px;' class='loadingBar'></div>");
				setTimeout(function(){(func)();}, 5000);
			}
			else
			{
				$('#'+key).parents(':first').remove();
			}
		}
		//return first+firstUnit+(second?' & '+second+secondUnit:'');
	
	}
	function showProgressingBar()
	{
		$('body').append("<div class='screenCornerProgress loadingBar'></div>");
		$('.screenCornerProgress').fadeIn("medium");
	}
	function hideProgressingBar()
	{
		$('.screenCornerProgress').fadeOut("medium");
	}
	function callAjaxURL(url, alsoSend, func)
	{
		
		var x = new ajaxObject(url);
		
		if (alsoSend!=undefined)
		{
			for (j in alsoSend)
			{
				x.addParam(j, alsoSend[j]);
			}
		}

		

        x.onSuccess	(
			function(reponse)
			{
				(func)(reponse)
			}
					);
		x.onError(
			function (err)
			{
				setTimeout(function(){callAjaxURL(url, alsoSend, func)}, 1000);
			}
		);
		x.send('post');
    
	}
	function Blacy(opt)
	{
		
		jQuery(function ($) {
			var OSX = {
				container: null,
				alsoSend: opt['pass'],
				init: function () {
				
					OSX.alsoSend['root'] = root;
					$(opt['selector']).click(function (e) {
						
						e.preventDefault();	
						selectorId = $(this).attr('id');
						OSX.alsoSend['selectorId'] = selectorId;
						opt['selectorId'] = selectorId;
						$(modalContent).modal({
								overlayId: 'blacy-overlay',
								containerId: 'blacy-container',
								closeHTML: null,
								minHeight: 100,
								opacity: 65, 
								position: ['0',],
								overlayClose: true,
								onOpen: OSX.open,
								onClose: OSX.close
							});
					});
				},
				close: function (d)
				{
					
					var self = this; // this = SimpleModal object
					
					d.container.animate(
						{top:"-" + (d.container.height() + 20)},
						500,
						function () {
							self.close(); // or $.modal.close();
							
							if (opt['afterClose']!=undefined)
								(opt['afterClose'])(opt, d);
						}
					);
				},
				open: function (d) {
					var self = this;
					self.container = d.container[0];
					d.overlay.fadeIn('slow', function () {
						$("#blacy-modal-content", self.container).show();
						if (opt['title']!=undefined && !isEmpty(opt['title']))
							$("#blacy-modal-title", self.container).html(opt['title']);
						var title = $("#blacy-modal-title", self.container);
						title.show();
						$("div.close", self.container).show();
						d.container.slideDown('slow', function () {
							$("#blacy-modal-data", self.container).show();
							if (opt['afterOpen']!=undefined)
								(opt['afterOpen'])(opt, d);
							setTimeout(function () {
									callAjaxURL(opt['url'], OSX.alsoSend, function(data)
									{
										$("#blacy-modal-data", self.container).html(data);
										var h = $("#blacy-modal-data", self.container).height();
										if(h>500)
										{
											h=500;
											$("#blacy-modal-data", self.container).css({overflow: 'scroll', height: h});
										}
										if (opt['afterAjax']!=undefined)
											(opt['afterAjax'])(opt, d);
										
									
									});
							}, 300);
						});
					})
				}
			};

			OSX.init();

		});
	}
	function removeEntireRow(selector)
	{
		$(selector).parents('#tableRow:first').remove();
	}
