var isIE4=(navigator.appName.indexOf("Microsoft")==0);
if (navigator.userAgent.indexOf("Opera")>-1)
	var isOpera=true;
	String.prototype.trim=new Function("return this.replace(/^\\s+|\\s+$/g,'')");

String.prototype.trimPhone=new Function("return this.replace(/[0-9]*[()]{0,1}[-]*[+]{0,1}[ \t]*/g,'')");
String.prototype.trimDec=new Function("return this.replace(/[0-9]*/g,'')");

inhtObject=function (name,value)
	{
	this.name=name;
	this.value=value;
	}

colorObject=function ()
	{
	this.color1='#ff0000';
	this.color2='#737379';
	}
var colobj=new colorObject();
propObject = function(minvalue,requred,ajax,defaultValue,linked,defaultFill,testetTogether,beginload,testedTogetherJs,testedTogetherJsMet)
{
this.minvalue=minvalue;
this.requred=requred;
this.ajax=ajax;
this.defaultValue=defaultValue;
this.linked=linked;
this.defaultFill=defaultFill;
this.testetTogether=testetTogether;
this.testedTogetherJs=testedTogetherJs;
this.testedTogetherJsMet=testedTogetherJsMet;
this.beginload=beginload;
}


var Properties=new Array();

ContentLoader=function (url,method,params,component)
	{
	this.head=false;
	this.component=component;
	this.url=mainurl+url;
	this.method=method;
	this.params=params;
	this.par='';
	}

ContentLoader.prototype.getTransport=function()
	{
	var transport=null;
	try
		{
       	transport=new ActiveXObject('Msxml2.XMLHTTP');
    	}
	catch (e)
		{
		try
			{
	        transport=new ActiveXObject('Microsoft.XMLHTTP');
    	    }
		catch (e)
			{
			if(window.XMLHttpRequest)
				{
				transport=new XMLHttpRequest();
            	}
        	}
		}
    return transport;	
	}


ContentLoader.prototype.setParams=function()
	{
	if (!this.method) this.method="GET";
	if (this.method=="POST")
		{
		this.head='application/x-www-form-urlencoded';
		var parL=this.params.length;
		if (parL>0)
			{
			this.par= this.params[0].name +'=' + encodeURIComponent(this.params[0].value);
			for (i=1;i<parL;i++)
				{
				this.par+='&' + this.params[i].name +'=' + encodeURIComponent( this.params[i].value);
				}
			}
		}

	}

	
ContentLoader.prototype.loadXMLDoc=function ()
		{
		var request=this.getTransport();
		if (request)
			{
			this.setParams();
			if (request.overrideMimeType)
				{
        		request.overrideMimeType('text/html');
        		}
			var loader=this;
			request.onreadystatechange=function ()
				{
				loader.onReadyState(request);
				}
			request.open (this.method,this.url,true);
			if (this.head)
				{
				request.setRequestHeader("Content-Type",this.head);
				request.setRequestHeader("Content-length", this.params.length);
      			request.setRequestHeader("Connection", "close");
				}
			request.send (this.par);
			}
		}
		
ContentLoader.prototype.onReadyState=function (request){
		var ready=request.readyState;	
		if (ready==4)
			{
			var httpStatus=request.status;
			if (httpStatus==200||httpStatus==0)
				{
				if (this.component.ajaxUpdate) this.component.ajaxUpdate(request);
				else
					{
					this.component=new chekf(this.component,this.component.id)
					this.component.ajaxUpdate(request);
					}
				}
			}
		}

chekf=function (domEl,name){
	this.name=name;
	this.id=domEl.id;
	this.url='?action=check&what='+this.id;
	this.domEl=domEl;
	this.childs=this.domEl.elements;
	this.elemNumb=this.childs.length;
	this.divid=this.domEl.parentNode.id;
	this.diverr=this.id+'err';
	this.childobjs=new Array();
	this.childNumb=this.childobjs.length;
	this.beginload=false;
	this.domEl.inpuObj=this;
	this.domEl.onsubmit=this.sendForm;
	this.error=false;
	this.wait=false;
	this.timeout_id;
	this.sending=false;
}

chekf.prototype.ajaxUpdate=function(request){
	var div=document.getElementById(this.diverr);
	var data=request.responseText;
	var arr = data.split("myperfectdevidehtml");
	var unchange=false;
	if (arr.length>1)
		{
		if (arr[1]=="myperfectsamehtml")
			{
			var testinner=new String(div.innerHTML);
			var testar=testinner.split("<script>");
			if (testar.length==1)testar=testinner.split("<SCRIPT>");
			arr[1]=testar[0];
			unchange=true;
			}
		div.innerHTML=arr[1];
		}
	arr = data.split("myperfectdevidejavascript");
	if (arr.length>1)
		{
		var theScript;
		if (unchange){
			if (testar.length>1&&testar[1].length>0){
				testinner=testar[1].split("</script>");
				if (testinner.length==1)testinner=testar[1].split("</SCRIPT>");
				theScript= document.createElement('script');
				theScript.text=testinner[0];
				div.appendChild(theScript);
				} 
			}
		if (arr[1].length>0) {
			theScript= document.createElement('script');
			theScript.text = arr[1];
			div.appendChild(theScript);
			}
		}          	
	}         	
	
chekf.prototype.checkError=function(){
		this.error=false;
		document.getElementById(this.diverr).innerHTML='';
		if (this.beginload)
			{
			var inner='';
			for (var i=0;i<this.childNumb;i++)
				if (this.childobjs[i].error==true)
					{
					this.error=true;
					}
				else
					{
					if (!this.childobjs[i].beginload&&this.childobjs[i].requred)
						{
						if (this.childobjs[i].diverr)this.childobjs[i].diverr.innerHTML='<br>Вы не заполнили обязательное поле ' + this.childobjs[i].defaultValue;	
						else inner=inner + '<br>Вы не заполнили обязательное поле ' + this.childobjs[i].defaultValue;						
						this.error=true;
						}
					}
			if (inner.length>0) document.getElementById(this.diverr).innerHTML=inner;
			}
		else
			{
			this.error=true;
			document.getElementById(this.diverr).innerHTML='Вы не заполнили форму';
			}
		}

chekf.prototype.checkWait=function(){
		this.wait=false;
		for (var i=0;i<this.childNumb;i++)
			if (this.childobjs[i].wait)
				{
				this.wait=true;
				break;
				}
		}

	
chekf.prototype.prepareForm=function(){
	for (var i=0;i<this.elemNumb;i++)
		{
		if (this.childs[i].value==this.childs[i].defaultValue)this.childs[i].value='';
		}
}

chekf.prototype.createForm=function(){
	var prl=Properties.length;
	for (var i=0;i<this.elemNumb;i++){
		if (this.domEl.elements[i].type!='radio'&&this.domEl.elements[i].type!='checkbox'&&this.domEl.elements[i].type!='button')this.childs[i].value='';
		else if (this.domEl.elements[i].type=='checkbox')this.domEl.elements[i].checked=false;
		this.childobjs[i]=new chekEl(this.childs[i]);
			

		if (Properties[this.childobjs[i].id]){
			this.childobjs[i].minvalue=Properties[this.childobjs[i].id].minvalue;
			this.childobjs[i].requred=Properties[this.childobjs[i].id].requred;
			this.childobjs[i].ajax=Properties[this.childobjs[i].id].ajax;
			this.childobjs[i].defaultValue=Properties[this.childobjs[i].id].defaultValue;
			this.childobjs[i].linked=Properties[this.childobjs[i].id].linked;
			this.childobjs[i].defaultFill=Properties[this.childobjs[i].id].defaultFill;
			this.childobjs[i].testetTogether=Properties[this.childobjs[i].id].testetTogether;
			this.childobjs[i].beginload=Properties[this.childobjs[i].id].beginload;
			this.childobjs[i].testedTogetherJs=Properties[this.childobjs[i].id].testedTogetherJs;
			this.childobjs[i].testedTogetherJsMet=Properties[this.childobjs[i].id].testedTogetherJsMet;
			}
		}
	this.childNumb=this.childobjs.length;
	}
	
chekf.prototype.clearForm=function()
	{
	for (var i=0;i<this.elemNumb;i++)
		{
		this.childs[i].value=this.childs[i].clearMe();
		}
	}

chekf.prototype.checkForm=function()
	{
	for (var i=0;i<this.elemNumb;i++)
		{
		this.childs[i].CheckMe();
		}
	}

chekf.prototype.sendForm=function(){
	if (!this.id){
		var inpuObj=this.inpuObj.formEl.inpuObj;
	}else{
		var inpuObj=this;
	}
	var cmd=inpuObj.name+'.sendForm()';
	inpuObj.sending=true;
	inpuObj.checkWait();
	if (!inpuObj.wait){
		if (inpuObj.timeout_id)clearTimeout(inpuObj.timeout_id);
		inpuObj.checkError();
		if (!inpuObj.error){
			var name;
			var name1;
			var name2;
			var arrmypar=''
			for (var i=0;i<inpuObj.elemNumb;i++){
				if ((inpuObj.domEl.elements[i].type!='radio'&&inpuObj.domEl.elements[i].type!='checkbox')||(inpuObj.domEl.elements[i].checked))
					{
					name='var par'+i;
					name2='par'+i;
					name1=name+'= new inhtObject(inpuObj.domEl.elements[i].name,inpuObj.domEl.elements[i].value);';
					eval(name1);
					arrmypar=arrmypar+','+name2;
					}
				}
			arrmyparL=arrmypar.length;
			arrmyparF='new Array('+arrmypar.substring(1,arrmyparL)+');';
			pars=eval(arrmyparF);	
			var sender=new ContentLoader(inpuObj.url,'POST',pars,inpuObj);
			sender.loadXMLDoc();
			}
	}else{
		inpuObj.timeout_id=setTimeout (cmd,50);
		}
}
		
chekEl=function (domEl){
	this.domEl=domEl;
	this.defaultFill=true;
	this.linked=false;
	this.id=domEl.id;
	this.testetTogether=false;
	this.requred=false;
	this.formEl=this.domEl.form;
	this.divid=this.id+'err';
	this.beginload=false;
	this.name=this.domEl.name;
	this.testedTogetherJs=false;
	this.testedTogetherJsMet=false;
	if (document.getElementById(this.divid))
	this.diverr=document.getElementById(this.divid);
	else this.diverr=null;
	this.value=this.domEl.value;
	this.defaultValue=this.domEl.defaultValue;
	this.color=colobj.color2;
	this.errorcolor=colobj.color1;
	this.minvalue=0;
	this.methodset=false;
	this.error=false;	
	this.wait=false;
	this.nodeid=false;
	this.domEl.inpuObj=this;
	this.domEl.onfocus=this.prepareMe;
	this.domEl.onblur=this.tryMe;
	if (this.domEl.type=='button'&&!this.methodset)
		{
		this.domEl.onclick=this.formEl.inpuObj.sendForm;
		this.domEl.onfocus=null;
		this.domEl.onblur=null;
		this.methodset=true;
		this.beginload=true;
		}
	}

chekEl.prototype.ajaxUpdate=function(request){
//	alert (this)
	var div=this.diverr;
	var data=request.responseText;
	var arr = data.split("myperfectdevidehtml");
	var unchange=false;
	if (arr.length>1){
		if (arr[1]=="myperfectsamehtml"){
			var testinner=new String(div.innerHTML);
			var testar=testinner.split("<script>");
			if (testar.length==1)testar=testinner.split("<SCRIPT>");
			arr[1]=testar[0];
			unchange=true;
			div.innerHTML=arr[1];
		}else{
			if (arr[1].length==0){
				this.error=false;
				this.domEl.color=this.color;
				div.innerHTML='';
			}else{
				this.error=true;
				this.domEl.color=this.errorcolor;
				div.innerHTML=arr[1];
				}
			}
		}
	arr = data.split("myperfectdevidejavascript");
	if (arr.length>1)
		{
		var theScript;
		if (unchange){
			if (testar.length>1&&testar[1].length>0){
				testinner=testar[1].split("</script>");
				if (testinner.length==1)testinner=testar[1].split("</SCRIPT>");
				theScript= document.createElement('script');
				theScript.text=testinner[0];
				div.appendChild(theScript);
				} 
			}
		if (arr[1].length>0)
			{
			theScript= document.createElement('script');
			theScript.text = arr[1];
			div.appendChild(theScript);
			}
		}
	this.wait=false;
	}

chekEl.prototype.prepareMe=function(){
var inpuObj;
if (this.parentNode)inpuObj=this.inpuObj;
else inpuObj=this;
if (!inpuObj.beginload){
	inpuObj.formEl.inpuObj.beginload=true;
	if (inpuObj.domEl.type!='radio'&&inpuObj.domEl.type!='checkbox'){
		inpuObj.value='';
		inpuObj.domEl.value='';
		}
	inpuObj.beginload=true;
	}
}

chekEl.prototype.tryMe=function()
{
var inpuObj=this.inpuObj;
if (inpuObj.beginload)
	{
	inpuObj.value=this.value;
	inpuObj.checkMe();	
	}
}
          
function testphone(){
var str='';
var val=this.value.trimPhone();
if (val.length>0)
	{
	str='Вы неправильно заполнили обязательное поле "'+this.defaultValue+'"';
	this.error=true;
	this.domEl.style.color=this.errorcolor;
	}
else
	{
	this.error=false;
	this.domEl.style.color=this.color;
	}
if (this.diverr)this.diverr.innerHTML=str;
}


function testpdec()
{
var str='';
var val=this.value.trimDec();
if (val.length>0)
	{
	str='Вы неправильно заполнили обязательное поле "'+this.defaultValue+'"';
	this.error=true;
	this.domEl.style.color=this.errorcolor;
	}
else
	{
	this.error=false;
	this.domEl.style.color=this.color;
	}
if (this.diverr)this.diverr.innerHTML=str;
}

function testakkr(){
    if (this.testedTogetherJs){
        var l=this.testedTogetherJs.length;
	      var tested;
	      var err=true;
	for (var i=0;i<l;i++){
    //
    //alert('517: '+this.testedTogetherJs+'----'+i);
    try{
        tested=document.getElementById(this.testedTogetherJs[i]).inpuObj;
    		tested.beginload=true;
    		if (tested.domEl.checked) err=false;
    		if (tested.diverr)tested.diverr.innerHTML='';
    }catch(e){}   		
	}
	if (err){
		for (var i=0;i<l;i++){
			tested=document.getElementById(this.testedTogetherJs[i]).inpuObj;
			tested.error=true;
		}
		str='Вы не заполнили обязательное поле "'+this.defaultValue+'"';
	}else{
		str='';
		for (var i=0;i<l;i++){
			tested=document.getElementById(this.testedTogetherJs[i]).inpuObj;
			tested.error=false;
		}
	}
	if (document.getElementById(this.testedTogetherJs[0]).inpuObj.diverr)document.getElementById(this.testedTogetherJs[0]).inpuObj.diverr.innerHTML=str;
	}
}
function testras()
{
var i;
var l=this.testedTogetherJs.length;
var err=false;
var val;
if (document.getElementById('raschet1').checked)
	{
	for (i=0;i<l;i++)
		{
		tested=document.getElementById(this.testedTogetherJs[i]).inpuObj;
		tested.beginload=true;
		tested.error=false;
		tested.value='';
		tested.domElvalue='';
		tested.domEl.style.color=tested.color;
		if (tested.diverr)tested.diverr.innerHTML='';
		}
	}
else
	{	
	for (i=0;i<l;i++)
		{
		tested=document.getElementById(this.testedTogetherJs[i]).inpuObj;
		tested.error=false;
		if (tested.domEl.value.length==0&&tested.beginload)
			{
			err=true;
			tested.beginload=true;
			tested.error=true;
			tested.domEl.style.color=tested.errorcolor;
			if (tested.diverr)tested.diverr.innerHTML='Вы не заполнили обязательное поле "'+tested.defaultValue+'"';
			}
		else
			{
			//alert (this);
			if (i<3)
				{
				val=tested.domEl.value.trimDec();
				if (val.length>0)
					{	
					if (tested.diverr)tested.diverr.innerHTML='Вы неправильно заполнили обязательное поле "'+tested.defaultValue+'"';
					tested.error=true;
					tested.domEl.style.color=tested.errorcolor;
					}
				else
					{
					tested.error=false;
					}
				}
			if (!tested.error)
				{
				if (tested.diverr)tested.diverr.innerHTML='';
				tested.error=false;
				tested.domEl.style.color=tested.color;
				}
			}
		}
	}
}

chekEl.prototype.checkMe=function()
	{
	var inpuObj=this;
	var mess;
	if (inpuObj.requred)
		{
		if (inpuObj.ajax)inpuObj.wait=true;
		var str=new String(inpuObj.value);
		inpuObj.value=str.trim();
		if (inpuObj.value.length<=inpuObj.minvalue)
			{
			inpuObj.error=true;
			if (inpuObj.minvalue==0)
				{
				mess='Вы не заполнили обязательное поле "'+inpuObj.defaultValue+ '"';
				inpuObj.clearMe();
				}
			else mess='Длина обязательного поля "'+inpuObj.defaultValue+ '" меньше '+inpuObj.minvalue;
			if (inpuObj.diverr)inpuObj.diverr.innerHTML=mess;
			inpuObj.domEl.style.color=inpuObj.errorcolor;				 
			}
		else
			{
			if (inpuObj.testedTogetherJsMet) inpuObj.testedTogetherJsMet.call(inpuObj);
			else inpuObj.error=false;
			if (!inpuObj.error)	
				{
				if (inpuObj.ajax)
					{
					var pars;
					inpuObj.wait=true;
					if (inpuObj.testetTogether)
						{
						var formob=inpuObj.formEl.inpuObj;
						var name;
						var name1;
						var name2;
						var arrmypar=''
						for (var k=0;k<formob.childNumb;k++)
							{
							if (formob.childobjs[k].beginload)
								{
								name='var par'+k;
								name2='par'+k;
								name1=name+'= new inhtObject(formob.childobjs[k].name,formob.childobjs[k].value);';
								eval(name1);
								arrmypar=arrmypar+','+name2;
								}
							}
						arrmyparL=arrmypar.length;
						arrmyparF='new Array('+arrmypar.substring(1,arrmyparL)+');';
						pars=eval(arrmyparF);
						}
					else
						{
						var par=new inhtObject(inpuObj.name,inpuObj.value);
						pars=new Array(par);
						}
					var url='?action=check&what='+inpuObj.id;
					var sender= new ContentLoader(url,'POST',pars,inpuObj);
					sender.loadXMLDoc();
					}
				else
					{
					inpuObj.error=false;
					if (inpuObj.diverr&&inpuObj.diverr.innerHTML.length>0)inpuObj.diverr.innerHTML='';
					inpuObj.domEl.style.color=inpuObj.color;				 
					}	
				}
			}
		}
	}
		
chekEl.prototype.clearMe=function()
{
if (this.diverr) this.diverr.innerHTML='';
this.domEl.style.color=this.color;
if (this.defaultFill)
	{
	this.value=this.defaultValue;
	this.domEl.value=this.defaultValue;
	}
this.beginload=false;
}

	var myd;
	var mov;
function parseSelect(object)
	{
	var opts = object.options;
	var opt=object.selectedIndex;
	if (object.value.length>0)
		{
		myd='cit';
		mov=0;
		doLoad('',object.value,'GET','');
		}
	}	

function cl(object) {
object.style.visibility='hidden';
object.style.zIndex='-1';

}

