function tryZipBtnAction(frmobj, dpart, dtype){ // обработчик событий на действие человека
	if (typeof(frmobj)!='object') frmobj=(document.getElementById)?document.getElementById(frmobj):findElementById(frmobj);
		
	if (frmobj){
		var OK=true;
		var checkedzip = Trim(frmobj.elements['checkedzip'].value);
		var inZip = Trim(frmobj.elements['Uzip'].value);
		var SessionID = Trim(frmobj.elements['SessionID'].value);
			
		if ((checkedzip!='' && inZip!='' && checkedzip!=inZip) || checkedzip=='' || inZip==''){
			if (inZip!=null && Trim(inZip)!=''){
				inZip = Trim(inZip);
				if (inZip.length!=6) OK=false;
				if (isNaN(inZip)) OK=false;
				if (inZip.charAt(0)=='0') OK=false;
			}else OK=false;
			
			if(OK){
				var res = tryZip(inZip, dpart, dtype, frmobj.id, SessionID, '', 1);
				if (res) return false;
			}else{
				alert('Указанный Вами текст \"' + inZip + '\" не может быть почтовым индексом');
				return false;
	}	}	}
	return true;
}

function tryZip(inZip, dpart, dtype, frm, SessionID, ZakStr, tryNum){ // формируем и отправляем запрос
	var url = 'TryZipCod.asp';
	var data = 'zip='+UrlEncode(inZip) + '&dpart=' + UrlEncode(dpart) + '&dtype=' + UrlEncode(dtype);
	
	if (Trim(SessionID+'')!="") data +='&SessionID=' + UrlEncode(Trim(SessionID+''));
	if (Trim(ZakStr+'')!="") data +='&ZakStr=' + UrlEncode(Trim(ZakStr+''));

	var res;
	if (tryNum<3){
		tryNum += 1;
		return QueryPostXML.AsyncRequest(url, data, 
			'<f>' + frm + '</f><z>' + inZip + '</z><dp>' + dpart + '</dp><dt>' + dtype + '</dt><t>' + tryNum + '</t>', 
			doZip)
	}
	else return false;
}

function doZip(xml, ReqParams){ // выполняет обработку полученных данных
	var tryZipRes, sessionres, sessionID, nodes, node, errDesc, Elements, Element, obj;
	var zip, zipOld, RateZone, Region, Place, dlvinfo;

	if(xml!=null){
		node = $xmlUtils.SelectSingleNode(xml, '/RateZoneInfo');
		if (node){
			tryZipRes = $xmlUtils.getAttribute(node, 'status'); tryZipRes = (tryZipRes == null)?'false':tryZipRes;
			sessionres = $xmlUtils.getAttribute(node, 'session'); sessionres = (sessionres == null)?'false':sessionres;
			dlvinfo = $xmlUtils.getAttribute(node, 'dlvinfo'); dlvinfo = (dlvinfo == null)?'':dlvinfo;
	
			if (tryZipRes!='true' && sessionres!='true'){
				sessionID = $xmlUtils.getAttribute(node, 'SessionID');
	
				(/\<f\>(.*)\<\/f\>/gi).exec(ReqParams);
				var frm = RegExp.$1;
				var frmobj = (document.getElementById)?document.getElementById(frm):findElementById(frm);
				
				(/\<z\>(\d*)\<\/z\>/gi).exec(ReqParams);
				var zip = RegExp.$1;
				
				(/\<dt\>(\d*)\<\/dt\>/gi).exec(ReqParams);
				var dtype = RegExp.$1;
				
				(/\<dp\>(\d*)\<\/dp\>/gi).exec(ReqParams);
				var dpart = RegExp.$1;
	
				(/\<t\>(\d*)\<\/t\>/gi).exec(ReqParams);
				var tryNum = RegExp.$1;
				
				if (Trim(tryNum+'')!='') tryNum = parseInt(tryNum); else tryNum = 2;
	
				var ZakStr = Trim(frmobj.elements['ZakStr'].value);	
				frmobj.elements['SessionID'].value = sessionID;

				tryZip(zip, dpart, dtype, frm, sessionID, ZakStr, tryNum);
				return false;
			}if (tryZipRes=='true'){
				Element = $xmlUtils.SelectSingleNode(node, 'zip');
				zip = (Element!=null) ? $xmlUtils.getAttribute(Element, 'value') : null;
					
				Element = $xmlUtils.SelectSingleNode(node, 'zipOld');
				zipOld = (Element!=null) ? $xmlUtils.getAttribute(Element, 'value') : null;
	
				Element = $xmlUtils.SelectSingleNode(node, 'RateZone');
				RateZone = (Element!=null) ? $xmlUtils.getAttribute(Element, 'value') : null;
	
				Element = $xmlUtils.SelectSingleNode(node, 'Region');
				Region = (Element!=null) ? $xmlUtils.getAttribute(Element, 'value') : null;
	
				Element = $xmlUtils.SelectSingleNode(node, 'Place');
				Place = (Element!=null) ? $xmlUtils.getAttribute(Element, 'value') : null;
	
				Elements = $xmlUtils.SelectNodes(node, 'html');
				printHTML(Elements);
				tryZipRes = true;
				if(!$Agent.Mobile) SetSaveUserDataEvnts('UserDatafrm');
			}else{
				Elements = $xmlUtils.SelectNodes(node, 'html');
				printHTML(Elements);

				errDesc = $xmlUtils.getAttribute(node, 'errdesc');
				tryZipRes = false;
		}	}
		else tryZipRes = false;
	
		if (!tryZipRes) alert('Почтовый индекс не найден.\n' + errDesc);
		else{
			if (dlvinfo!='') alert('Почтовый индекс найден, в соответствии с ним,\nрассчитана стоимость доставки и полная стоимость заказа.\n\nВнимание! ' + dlvinfo);
			else alert('Почтовый индекс найден, в соответствии с ним,\nрассчитана стоимость доставки и полная стоимость заказа.');
	}	}
}

function printHTML(Elements){
	var target, obj, itm;
	if (Elements!=null){
		var Enumerator = $xmlUtils.Enumerator(Elements)
		if(Enumerator){
			while( (itm = Enumerator.Next())!=null ){
				target=$xmlUtils.getAttribute(itm, 'target');
				if (target!=''){
					obj = document.getElementById(target);
					if(obj) obj.innerHTML = $xmlUtils.GetElementValue(itm);
	}	}	}	}
}
