//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
// Written by: Kolik Mark
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
var oForm		= null;
var oType		= null;
var KSFormName	= "KSForm";
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
function initKSForm() 
{
	try
	{
		oForm	= new IFormInterface(KSFormName);
		
		loadForm();
	}
	catch(e){alert("KSForm.init() "+e.description);}
	
	try{
		var oradio = document.getElementById("cimatroncust_1")
		if(oradio) oradio.checked=true
	}
	catch(e){}
}
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
function changeInput(current)
{
	window.event.cancelBubble	= true;
	
	var dv		= new dataValidator(current);
		dv.getValue();
		dv.checkField();

	if(window.onChangeKSFormField)	onChangeKSFormField(window.document.forms[0].name, current, dv.data);
}
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
function blurInput(current)
{
	window.event.cancelBubble	= true;
/*
		var dv					= new dataValidator(current);
			dv.getValue();

		if(window.onBlurKSFormField)	onBlurKSFormField(window.document.forms[0].name, current, dv.data);
*/
}
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
function formsSend(o)
{
	var form		= window.document.forms[0];

	saveForm(form.id);
}
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
function formsReset(o)
{
		var form		= window.document.forms[0];
			form.reset();
}
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
function formsPrint(o)
{
		window.print();
}
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
function saveForm(formid)
{
	try
	{
		var currentpath	= window.location.href.toLowerCase();
		var form = window.document.forms[0];
		// the following 3 lines belongs to old url pattern ks form
		//var vpath = currentpath.split(form.name.toLowerCase() + ".aspx")[0];
		//var query = currentpath.split(form.name.toLowerCase() + ".aspx")[1];
		//var url	= vpath + "Templates/KSForm/SendMessage.aspx" + query + "&form=" + form.name;
		
		var url	= getHostAddress() + "/Templates/KSForm/SendMessage.aspx?" + getQueryFields() + "&form=" + form.name;
		// get ksform data
		var oData = oForm.save();
		//getObj(oData)
		
		if(window.onSaveKSForm)
		{
			if(onSaveKSForm(window.document.forms[0].name))	// check errors
			{
				
				return false;
			}
		}
		var xmldom		= obj2xmldom(oData,formid);
		//alert sended xml
		//alert(xmldom.xml);
		//document.write(xmldom.xml)
		
		// saving ksform data
		
		ksFormPostXMLData(url, xmldom);

	}
	catch(e){alert("KSForm.saveForm() "+e.description)}
}
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
function loadForm()
{
	try
	{
		// load site dictionary
		lang			= document.all.ContactUsTemplate_currentlang.value;
		loadForm.sd		= new SiteDictionary("../../Shared/ClientScripts/KSForm/validation.dictionary."+lang+".xml");
		
/*
		// load data for filling ksform
		//postXMLData(url, xmldom);
		
		//alert(window.result);
		
		// convert xml data 2 object
		if(window.result)
		{
			oData		=	xmldom2obj(window.result);
			//getObj(oData);
			
			// convert xml datatype 2 object
			oType		=	xmldom2objType(window.result);
			//getObj(oType);
			
			transformData2Show();
			
			oForm.load(oData);
		}
*/	
	}
	catch(e)
	{
		alert("loadForm() "+e.description)
	}
}
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
/*
function initForm()
{
	oForm.init();
}
*/
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
function ksFormPostXMLData(xmlpath, xmldoc)
{
	var isProcessSuccess = true;
	try
	{
		xmlhttp	= new ActiveXObject("Microsoft.XMLHTTP");
		//xmlhttp	= new ActiveXObject("Msxml2.XMLHTTP");
		
		xmlhttp.onreadystatechange	= HandleStateChange;
		xmlhttp.Open("POST", xmlpath, false);
		xmlhttp.setRequestHeader("Content-Type", "text/xml; charset='utf-8' ");
		xmlhttp.Send(xmldoc);

		var xmlRes = new ActiveXObject("Microsoft.XMLDOM");
		xmlRes.async = false;
		xmlRes.loadXML(xmlhttp.responseText);

		var nodes = xmlRes.selectNodes("//ROWSET/ROW");
		if (node = nodes.nextNode()) 
		{
			isProcessSuccess = node.getAttribute("id");
		}
		else
		{
			isProcessSuccess = false;
		}	
	}
	catch (e)
	{
		//"postXMLData() "+ws("postXMLData() "+e.description);
		isProcessSuccess = false;
	}

	xmlhttp = null;
	document.ContactUs.ContactUsTemplate_txtResult.value = isProcessSuccess;
	document.ContactUs.ContactUsTemplate_btnSend.click();
	
	return;

//'''''''''''''''''''''''''
	function HandleStateChange()
	{
		
		if(xmlhttp.readyState==4)
		{
			
			try{
				if(xmlhttp.responseText)
				{
			
					var wda	= window.document.all;
					
					if(wda.ksformPlace)
					{
						if(wda.formDescription)		wda.formDescription.innerHTML	= "";	
						if(wda.ksformPlace)	
						{
							wda.ksformPlace.innerHTML		= xmlhttp.responseText;	
							wda.ksformPlace.height			= "100%";
							wda.ksformPlace.style.padding	= "20 50 20 50";	
							wda.ksformPlace.className		= "B C3 S12 bgGeneralTbl";	
						}
						
						try{
							wda.formsFooter_lblReq.innerHTML = "";
							wda.formsFooter_imgStar.style.display = "none";
						}catch(e){}	
						
						if(wda.formComments)		wda.formComments.innerHTML		= "";	
						if(wda.formFooterButtons)	wda.formFooterButtons.innerHTML	= "";
						
						if(wda.basketTD)			wda.basketTD.innerHTML			= "";
						
						if(wda.otherFields)		
						{
							for(var j=0; j<wda.otherFields.length; j++)
							{
								wda.otherFields[j].innerHTML						= "";
							}
							alert( wda.tformsFooter_lblReq.innerHTML)
							
						}
					}
					else	
					{
			
					/*	document.all.MainDiv.style.display="none";
						document.all.SubDiv.innerHTML = xmlhttp.responseText;
						document.all.SubDiv.style.display="block";*/
					}
				}
			}
			catch(e){
				alert("err ; " + e.description)
			}
			window.status	= "Done";
		}
	}
}
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
function xmldom2obj(xmlstring)
{
	var fields				= {};
	var	elem;
	var attr;
	var xpath				= "CONTENT/fields/field";
	var xpath2Attr			= "@name";
	
	try
	{	
		var xmlDoc			= new ActiveXObject("Microsoft.XMLDOM");
			xmlDoc.async	= false;
			xmlDoc.loadXML(xmlstring);
		
		var elems			= xmlDoc.selectNodes(xpath);

		for (var i=0; i<elems.length; i++)
		{
			elem			= elems.nextNode();
			attr			= elem.selectSingleNode(xpath2Attr).value;

			fields[attr]	= elem.text;
		}
	}
	catch(e){alert("xmldom2obj() "+e.description)}
	
	return fields;
}
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
function obj2simplexmldom(oData)
{
	try
	{	
		var xmlDoc	= new ActiveXObject("Microsoft.XMLDOM");
		var	root	= xmlDoc.createElement("content"); 
		var element;
			
			xmlDoc.appendChild(root);
			
		for(var e in oData)
		{
			element	= xmlDoc.createElement(e);
					  element.text	= toSave(oData[e]);
					  root.appendChild(element);
		}
		return xmlDoc;
	}
	catch(e){alert("KSForm.obj2simplexmldom() "+e.description); return null;}
}
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
function obj2xmldom(oData,formid)
{
	try
	{	
		var xmlDoc	= new ActiveXObject("Microsoft.XMLDOM");
		var row, attr, dtype, fvalue, flabel, fieldid, fcode, labelid, selectedIndex;
		var datatype, modifier, lnameid;
		var root, subroot;
		var data	= "";
			
			root	= xmlDoc.createElement("content"); 
			attr	= root.setAttribute("name",formid);
			xmlDoc.appendChild(root);
			
			subroot	= xmlDoc.createElement("ksform"); 
			root.appendChild(subroot);
			
		for(var e in oData)
		{
			fieldid		= "_form_"+KSFormName+"_field_"+e;		  
			labelid		= "_form_"+KSFormName+"_label_"+e;		  
			
			row			= xmlDoc.createElement("row");
			attr		= row.setAttribute("name",e);
						subroot.appendChild(row);
					  
			// field type
			dtype		= xmlDoc.createElement("datatype");
						row.appendChild(dtype);
			data		= window.document.all[fieldid].datatype;		  
			txt			= xmlDoc.createTextNode(data);
						dtype.appendChild(txt);
			
			// field label		  
			flabel		= xmlDoc.createElement("fieldlabel");
						row.appendChild(flabel);
			if(window.document.all[labelid])
			{			
				data	= window.document.all[labelid].innerText;		  
				txt		= xmlDoc.createTextNode(data);
						flabel.appendChild(txt);
			}		  
			datatype	= window.document.all[fieldid].datatype.toLowerCase();		  
			modifier	= window.document.all[fieldid].modifier.toLowerCase();		  

			switch(datatype)
			{
				case "code":
						
						switch(modifier)
						{
							case "radio":
								
								fcode			= xmlDoc.createElement("modifier");
												row.appendChild(fcode);
								txt				= xmlDoc.createTextNode(modifier);
												fcode.appendChild(txt);
										
								fcode			= xmlDoc.createElement("code");
												row.appendChild(fcode);
								txt				= xmlDoc.createTextNode(trim(oData[e]));
												fcode.appendChild(txt);
							
								if(trim(oData[e])!="")				// if checked
								{
									lnameid		= e+"_"+oData[e];	// radiobutton label id

									data		= window.document.all[lnameid].innerText;
								}
							break;
							default:
							
								selectedIndex	= window.document.all[fieldid].selectedIndex;
								
								// lookup code
								fcode			= xmlDoc.createElement("code");
												row.appendChild(fcode);
								data			= trim(window.document.all[fieldid][selectedIndex].value);		  
								txt				= xmlDoc.createTextNode(data);
												fcode.appendChild(txt);
										
								data			= trim(window.document.all[fieldid][selectedIndex].text);	
							break;
						}
				break;
				default:

						data	= trim(oData[e]);
				break;
			}

			// value		  
			fvalue	= xmlDoc.createElement("value");
					  row.appendChild(fvalue);
			txt		= xmlDoc.createTextNode(data);
					  fvalue.appendChild(txt);
					  
		}
		var fieldscoll			= window.document.all["__additionalfields__"];
		var addfields			= fieldscoll.children;

			subroot	= xmlDoc.createElement("additional"); 
			root.appendChild(subroot);

		for(var j=0; j<addfields.length; j++)
		{
			row		=	xmlDoc.createElement("row");
			attr	=	row.setAttribute("name",addfields[j].id);
						subroot.appendChild(row);

			// field label		  
			flabel	=	xmlDoc.createElement("fieldlabel");
						row.appendChild(flabel);
			txt		=	xmlDoc.createTextNode(addfields[j].id);
						flabel.appendChild(txt);

			// field value		  
			fvalue	=	xmlDoc.createElement("value");
						row.appendChild(fvalue);
			data	=	trim(addfields[j].value);
			
			if(data.indexOf(">")>0 || data.indexOf("&gt;")>0)
			{
				txt	=	xmlDoc.createCDATASection(data);
			}
			else
			{
				txt	=	xmlDoc.createTextNode(data);
			}
			fvalue.appendChild(txt);
					  
			// field type
			dtype	=	xmlDoc.createElement("datatype");
						row.appendChild(dtype);
			data	=	"additionalfields";		  
			txt		=	xmlDoc.createTextNode(data);
						dtype.appendChild(txt);
		}		
		
		return xmlDoc;
	}
	catch(e){alert("KSForm.obj2xmldom('"+fieldid+"','"+labelid+"') \n"+e.description); return null;}
}
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
function xmldom2objType(xmlstring)
{
	var fields				= {};
	var	elem;
	var name;
	var type;
	var xpath				= "CONTENT/fields/field";
	var xpath2Name			= "@name";
	var xpath2DataType		= "@type";
	
	try
	{	
		var xmlDoc			= new ActiveXObject("Microsoft.XMLDOM");
			xmlDoc.async	= false;
			xmlDoc.loadXML(xmlstring);
		
		var elems			= xmlDoc.selectNodes(xpath);

		for (var i=0; i<elems.length; i++)
		{
			elem			= elems.nextNode();
			
			name			= elem.selectSingleNode(xpath2Name).value;
			type			= elem.selectSingleNode(xpath2DataType).value;

			fields[name]	= type;
		}
	}
	catch(e){alert("xmldom2obj() "+e.description)}
	
	return fields;
}
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
function dbg(O)
{
	if(typeof(O)=="string"||typeof(O)=="number"){	alert(O);	return;	}
	
	var arr	=	[];
	
	for(var o in O)	{arr.push(o); }	arr.sort();	alert(arr.join("; "));
}
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
function getObj(oData)
{
	try
	{	
		var arr		= [];
		
		for(var element in oData)	{arr.push("<",element,">",oData[element],"</",element,">");	}	alert(arr.join(""));
	}
	catch(e){alert("getObj() "+e.description); return "";}
}
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
function toSave(str)
{
	if(str=="")		return str;

	var forbidchars	= "&><'";

	if(inStr(forbidchars,str))
	{
					return escape("<![CDATA["+str+"]]>");
	}	
					return str;
}
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
function inStr(forbidchars,instr)
{
	var arr	= forbidchars.split("");
	
	for(var j in arr)
	{
		if(instr.indexOf(arr[j])>=0)	return true;
	}
										return false;
}
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
function CInt(vle,dflt)
{
    var str		= trim(vle);
    var strd	= trim(dflt);
    
	var intg	= parseInt(str,10);
	var intd	= parseInt(strd,10);
	
		intd	= (isNaN(intd)?0:intd);
    
	return (isNaN(intg)?intd:intg);
}
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
function CStr(vle,dflt)
{
       dflt += "";
    if(dflt=="undefined") dflt = "";
    if(dflt=="null")      dflt = "";

       vle += "";
    if(vle=="undefined") return dflt;
    if(vle=="null")      return dflt;
    
    return vle;
}
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
function trim(vle)
{
        var trm = CStr(vle);
    return  trm.replace(/(^\s*)|(\s*$)/g, "");
}
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
// Function only for HOT
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
function hideOrShowCreditGroup(bFlag)
{
	document.all['ContactUsTemplate_form_KSForm_tab_1'].style.display	= (bFlag) ? "none" : "inline";
}
