var callbackPoint;



function ChangeEvent_Click(formId, callBackFn, sessionId)
{
	callbackPoint = callBackFn;
	var valToPost = GetFormValue(document.getElementById(formId));
	if(valToPost == null)
	{
		return;
	}
	
	PostSavedValue(sessionId, valToPost);
		
	
}

function ChangeTeam_Click(formId, callBackFn, sessionId)
{
	callbackPoint = callBackFn;
	var valToPost = GetFormValue(document.getElementById(formId));
	if(valToPost == null)
	{
		return;
	}
	
	PostSavedValue(sessionId, valToPost);
}


function GetFormValue(form)
{
	if(form == null)
	{
		alert ('Form reference is missing');
		return null;
	}
	return '{"items":[' + GetElementChildrenInputs(form).join() + ']}';
}

function GetElementChildrenInputs(elem)
{
	var result = new Array();
	var child;
	var resCount = 0;
	var childArr;
	
	for (var key = 0; key < elem.childNodes.length; key++)
	{ 
		child = elem.childNodes[key];
		
		if(child.nodeName == 'INPUT' || child.nodeName == 'SELECT')
		{
			result[resCount++] = ParseElemToStr(child);
		}
		else
		{
			childArr = GetElementChildrenInputs(child);
			for (var chkey = 0; chkey < childArr.length; chkey++)
			{
				result[resCount++] = childArr[chkey];
			}
		}
	}
	
	return result;
}

function ParseElemToStr(elem)
{
	var result = '{"name":"' + elem.name + '"';
	if(elem.nodeName == 'SELECT')
	{
		result += ',"type":"select"';
		var selValue = '';
		for(var key = 0; key < elem.options.length; key++)
		{
			if(elem.options[key].selected)
			{
				selValue = elem.options[key].value;
				break;
			}
		}
		result += ',"value":"' + selValue + '"';
	}
	else 
	{
			 result += ',"type":"' + elem.type + '"';
			 result += ',"value":"' + elem.value + '"';
			 
			if(elem.type.toLowerCase() == 'radio' || elem.type.toLowerCase() == 'checkbox')
			{
				if(elem.checked)
				{
					 result += ',"checked":"checked"'
				}
			}
	}
	result += '}';
	return result;
}


function PostSavedValue(si, valToSave)
{
	
	
	//To Cookie
	if(1 == 1)
	{
		var today = new Date(); 
		var cookie_expire_date = new Date(today.getTime() + (20 * 60 * 1000));
		Set_Cookie('SavedUserDataInTheSession',valToSave,cookie_expire_date); 
		
		if(typeof(callbackPoint) == "function")
		{
			callbackPoint();
		}

	}
	//To Ajax Call
	else
	{
		var req = null;
		if (window.XMLHttpRequest) 
		{
			req = new XMLHttpRequest();
		// branch for IE/Windows ActiveX version
		} else if (window.ActiveXObject) 
		{
			req = new ActiveXObject("Microsoft.XMLHTTP");
		}
		
		if(!req)
		{
			return;
		}
		var params = "SavedUserDataInTheSession=" + escape(valToSave);
		params += "&si=" + si;
		req.open("POST", "StoreUserInfo/StoreUserData.asp", true);
		req.onreadystatechange = function()
		{
			if (req.readyState == 4) 
			{
				if (req.status == 200)
				{
					if(typeof(callbackPoint) == "function")
					{
						callbackPoint();
						//document.write(req.responseText); //DEBUG
					}
				}
				/*else //DEBUG
				{
					document.write(req.responseText);
				}*/

			}
		};
		req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		req.setRequestHeader("Content-length", params.length);

		req.send(params);
	}
}


function ForceSavedUserData()
{
	if(!SavedUserDataInTheSession || SavedUserDataInTheSession == '')
	{
		return;
	}
	var data = eval('(' + SavedUserDataInTheSession + ')');
	
	if(typeof(data) != "object")
	{
		return;
	}
	
	var tagName;
	for (var key = 0; key < data.items.length; key++)
	{
		ParseUDItem(data.items[key]);
	}
}



function ParseUDItem(item)
{
	if(item.type.toLowerCase() == "select")
	{
		ParseSelection(item, getElementsByNameTag("SELECT", item.name));
	}
	else
	{
		ParseInput(item, getElementsByNameTag("INPUT", item.name))
	}
}

function ParseSelection(item, elems)
{
	var sel;
	for (var key = 0; key < elems.length; key++)
	{
		sel = elems[key];
		for (var selkey = 0; selkey < sel.options.length; selkey++)
		{
			if(sel.options[selkey].value == item.value)
			{
				sel.options[selkey].selected = true;
				break;
			}
		}
	}
}

function ParseRadioChackBox(item, elems)
{
	if(!item.checked)
	{
		return;
	}
	
	for (var key = 0; key < elems.length; key++)
	{
		if(elems[key].value == item.value)
		{
			elems[key].checked = true;
		}
		
	}
}

function ParseInput(item, elems)
{
	if(item.type.toLowerCase() == 'radio' || item.type.toLowerCase() == 'checkbox')
	{
		ParseRadioChackBox(item, elems);
		return;
	}
	
	for (var key = 0; key < elems.length; key++)
	{
		elems[key].value = item.value;
	}
}


function getElementsByNameTag(tag, name) {
     
     var elem = document.getElementsByTagName(tag);
     var arr = new Array();
     for(i = 0,iarr = 0; i < elem.length; i++)
	 {
          att = elem[i].getAttribute("name");
          if(att == name)
		  {
               arr[iarr] = elem[i];
               iarr++;
          }
     }
     return arr;
}

function Get_Cookie(name) { 
   var start = document.cookie.indexOf(name+"="); 
   var len = start+name.length+1; 
   if ((!start) && (name != document.cookie.substring(0,name.length))) return null; 
   if (start == -1) return null; 
   var end = document.cookie.indexOf(";",len); 
   if (end == -1) end = document.cookie.length; 
   return document.cookie.substring(len,end); 
} 

function Set_Cookie(name,value,expires,path,domain,secure) { 
    var cookieString = name + "=" + value + 
       ( (expires) ? ";expires=" + expires : "") + 
       ( (path) ? ";path=" + path : "/") + 
       ( (domain) ? ";domain=" + domain : "") + 
       ( (secure) ? ";secure" : ""); 
    document.cookie = cookieString; 
} 









