function getUserData()
{
    var data = {};
	var eForm = document.forms[0];
	var iNumElems = eForm.elements.length;
	for (var i=0;i<iNumElems;i++)
	{
		oElem = eForm.elements[i];
	
		if ("text" == oElem.type || "TEXTAREA" == oElem.tagName || "checkbox" == oElem.type || "radio" == oElem.type || "SELECT" == oElem.tagName)
		{
		    if(!oElem.getAttribute('savekey') || oElem.getAttribute('defvalue') == oElem.value)
		    {
			    continue;
		    }
			data[oElem.getAttribute('savekey')] = oElem.value;
		}
	}
    return data;
}

function setUserData()
{
	var data = {};
	var eForm = document.forms[0];
	var iNumElems = eForm.elements.length;
	for (var i=0;i<iNumElems && window.sideData; i++)
	{
		oElem = eForm.elements[i];
	
		if ("text" == oElem.type || "TEXTAREA" == oElem.tagName || "checkbox" == oElem.type || "radio" == oElem.type || "SELECT" == oElem.tagName)
		{
			var key = oElem.getAttribute('savekey');
		    if(key)
		    {
				var value = window.sideData[key];
				if(value){
					if(value.length < 6 && key.indexOf('telephone') != -1){
						continue;
					}
					
					oElem.value = value;
				}
		    }
		}
	}
}

function CallWebServiceSync(url, postData) {
    var xmlhttp = null;
    if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        if (new ActiveXObject("Microsoft.XMLHTTP")) {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        else {
            xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
        }
    }
        // to be ensure non-cached version of response
    url = url + "?rnd=" + Math.random(); 
    
    xmlhttp.open("POST", url, false);//false means synchronous
    xmlhttp.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    xmlhttp.send(postData);
    var responseText = xmlhttp.responseText;
    return responseText;
}

function handleUnload()
{
    var data = getUserData();
    if(typeof(this.processUserData) != "undefined")
    {   
        var jsonString = JSON.encode(data);
        data = {json: jsonString};
        jsonString = JSON.encode(data);
        
        var result = CallWebServiceSync(wsRef + '/SaveVisitorData', jsonString);
        result = eval('(' + result + ')');
        return;
    }
}

attachEventHandler(window, "load", setUserData);
window.onbeforeunload = handleUnload;

