function xmlHandlerCreate(){
	var xmlHandler;
	if(window.XMLHttpRequest){
		try{
			xmlHandler = new XMLHttpRequest();
		}catch(er){
			xmlHandler = false;
		}
	}else if(window.ActiveXObject){
		try{
			xmlHandler = new ActiveXObject("Microsoft.XMLHTTP");
		}catch(er){
			xmlHandler = false;
		}
	}
	return xmlHandler;
}
function xmlRequestSend(xmlHandler,xmlHandlerAction,xmlHandlerVars){
	try{
		xmlHandler.open('POST',xmlHandlerAction,true);
		try{
			xmlHandler.setRequestHeader("Cache-Control","no-cache"); 
			xmlHandler.setRequestHeader("X_USERAGENT","CURRENT APPLICATION");
			xmlHandler.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
			xmlHandler.send(xmlHandlerVars);
			return true;
		}catch(er){
			return false;
		}
	}catch(er){
		return false;
	}
}
function xmlRequestGettags(xmlHandler,xmlTagname){
	var xmlRequestContent = xmlHandler.responseXML;
	try{
		var xmlRequestRoot = xmlRequestContent.documentElement;
		if(xmlRequestRoot.getElementsByTagName('error').length){
			xmlRequestTagcontent = xmlRequestRoot.getElementsByTagName('error');
			xmlError(xmlTagcontent(xmlRequestTagcontent.item(0),'error_number'));
			return false;
		}else{
			var xmlRequestTagcontent = xmlRequestRoot.getElementsByTagName(xmlTagname);
			return xmlRequestTagcontent;
		}
	}catch(er){
		return false;
	}
}
function xmlTagcontent(xmlRequestTagcontent,xmlTagname){
	var xmlTagcontentValue = '';
	try{
		xmlTagcontentValue = xmlRequestTagcontent.getElementsByTagName(xmlTagname)[0].firstChild.nodeValue;
		return xmlTagcontentValue;
	}catch(er){
		return xmlTagcontentValue;
	}
}
function xmlFormSubmit(xmlForm,xmlHandler){
	var xmlHandlerVars = xmlPostString(xmlForm);
	xmlHandlerVars = xmlHandlerVars.slice(1);
	xmlRequestSend(xmlHandler,xmlForm.action,xmlHandlerVars);
	return true;
}
function xmlPostString(xmlForm){
	var xmlHandlerVars = '';
	var formInputType = new Array('input','select','select-multiple','select-one','textarea');
	for(t=0; t < formInputType.length; t++){
		formInputElement = xmlForm.getElementsByTagName(formInputType[t]);
		if(formInputElement.length > 0){
			for(i=0; i < formInputElement.length; i++){
				if(formInputElement[i].name){
					xmlHandlerVars += xmlElementValue(formInputElement[i]);
				}
			}
		}
	}
	return xmlHandlerVars;
}
function xmlElementValue(formInputElement){
	var xmlHandlerVarExp  = new RegExp(/\+/g);
	var xmlHandlerVar;
	switch(formInputElement.type){
		case 'radio':
		case 'checkbox':
			if(formInputElement.checked){
				xmlHandlerVarEsc = encodeURI(formInputElement.value);
				xmlHandlerVarEsc = xmlHandlerVarEsc.replace(xmlHandlerVarExp,"%2B");
				xmlHandlerVar = '&'+formInputElement.name+'='+xmlHandlerVarEsc;
			}
			break;
		case 'select-multiple':
			if(formInputElement.options.length > 0){
				for(i=0; i < formInputElement.options.length; i++){
					if(formInputElement.options[i].selected){
						xmlHandlerVarEsc = encodeURI(formInputElement.options[i].value);
						xmlHandlerVarEsc = xmlHandlerVarEsc.replace(xmlHandlerVarExp,"%2B");
						xmlHandlerVar +='&'+formInputElement.name+'['+i+']='+xmlHandlerVarEsc;
					}
				}
			}
			break;
		default:
			xmlHandlerVarEsc = encodeURI(formInputElement.value);
			xmlHandlerVarEsc = xmlHandlerVarEsc.replace(xmlHandlerVarExp,"%2B");
			xmlHandlerVar ='&'+formInputElement.name+'='+xmlHandlerVarEsc;
	}
	return xmlHandlerVar;
}
