Client={version:"1.1"};
Client.Logger = new function()
{
	//debugger;
	var m_oLogTable = null;
	return {
		Log:function(strLog)
		{
			//debugger;
			if (m_oLogTable == null)
			{
				//debugger;
				oLogFrame = Client_GetFrameByName('log', top);
				if (oLogFrame != null && oLogFrame.document != null)
				{
					m_oLogTable = oLogFrame.document.getElementById('tblLog');
				}
			}
			if (m_oLogTable != null)
			{
				myNewRow = m_oLogTable.insertRow();
				myNewCell = myNewRow.insertCell();
				myNewCell.vAlign='top';
				oNow		= new Date();
				myNewCell.innerHTML = (oNow.getHours()<10 ? '0' : '')+oNow.getHours()+':'+(oNow.getMinutes() < 10 ? '0' : '')+oNow.getMinutes()+':'+(oNow.getSeconds() < 10 ? '0' : '')+oNow.getSeconds();
				myNewCell = myNewRow.insertCell();
				myNewCell.vAlign='top';
				myNewCell.innerHTML = strLog;
			}
		}
	};
}
//debugger;

function Client_ContinueToPreReserve(strFormName, nOrgNo, nRefNo, bBuy, strDate, bSiteSecure, strLocation, bSecureRequired){
	var pForm=Client_GetFormByName(strFormName);
	var v_dosubmit=1;

	if ((v_dosubmit==1) && (pForm!=null))
	{
		// first remove the buy parameter
		pForm.action = pForm.action.replace(/buy=(true|false)\&{0,1}/, '');
		if(bBuy == false)
		{
			pForm.refno.value = nRefNo;
			pForm.buy.value = bBuy==true?'true':'false';
			pForm.submit();
		}
		else
		{
			if (bSiteSecure==true)
			{
				pForm.refno.value = nRefNo;
				pForm.buy.value = bBuy==true?'true':'false';
				pForm.submit();
			}
			else
			{
				strLocation = strLocation.replace(/buy=(true|false)\&{0,1}/, '');
				Client_OpenWindow(600, 600, strLocation+'&buy=true&refno='+nRefNo, bSecureRequired);
			}
		}
	}
}
function Client_ContinueToLocation(strLocation, bSecureRequired){
//	if (bSiteSecure==true)
//	{
//		pForm.action = strLocation;
//		pForm.submit();
//	}
//	else
	{
		Client_OpenWindow(600, 600, strLocation, bSecureRequired);
	}
}

function Client_OpenWindow(nWidth, nHeight, strLocation, bSecure){
	if (strLocation != null && strLocation.indexOf('https://') < 0 && strLocation.indexOf('http://') < 0)
	{
		if (bSecure==true){strLocation = 'https://' + strLocation;}else{strLocation = 'http://' + strLocation;}
	}
	strLocation = strLocation.replace(/\&{2}/,'&');
	window.focus();
	//var oWindow=window.open(strLocation,'ebilletpurchase', 'width='+nWidth+', height='+nHeight+', menubar=no, scrollbars=yes, toolbar=no, status=yes, location=yes, resizable=yes');
	var oWindow=window.open(strLocation,'ebilletpurchase', 'custom=1,width='+nWidth+',height='+nHeight+',menubar=0,scrollbars=1,toolbar=0,directories=1,status=1,location=1,resizable=1');
	try{oWindow.focus();}catch(e){};
	//try{window.open(strLocation,'ebilletpurchase', 'width='+nWidth+', height='+nHeight+', menubar=0, scrollbars=1, toolbar=0, directories=1, status=1, location=1, resizable=1, custom=1').focus();}catch(e){};
}

function Client_Get(el)
{
	var elm;
	if(!el){ return null; }
	if(typeof el == "string")
   {         
		if(!(elm = document.getElementById(el))){
			return null;
		}
	}else{
		elm=el;
	}
	return elm;
}

function Client_GetFormByName(strFormName, d){
	var pForm = null, i, d;
	if(!d) d=document; 
	if(!strFormName && d.forms.length==1)
		pForm=d.forms[0];
	for (i = 0; i < d.forms.length; i++) 
		if (d.forms[i].name == strFormName)
		{
			pForm = d.forms[i];
			break;
		}
	for(i=0;(!pForm)&& (d.layers) && (i<d.layers.length);i++)
		pForm = Client_GetFormByName(strFormName, d.layers[i].document);
	return(pForm);
}

function Client_GetFrameByName(strFrameName, f){
	var pFrame = null, i;
	if(!f) f=top; 
	if(!strFrameName && f.frames.length==1)
		pFrame=f.frames[0];
	for (i = 0; i < f.frames.length; i++) 
		if (f.frames[i].name == strFrameName)
		{
			pFrame = f.frames[i];
			break;
		}
	for(i=0;(!pFrame)&& (f.frames) && (i<f.frames.length);i++)
		pFrame = Client_GetFrameByName(strFrameName, f.frames[i]);
	return(pFrame);
}

function Client_GetFormById(strFormId, d){
	var pForm = null, i, d;
	if(!d) d=document;
	if(!strFormId && d.forms.length==1)
		pForm=d.forms[0];
	for (i = 0; i < d.forms.length; i++) 
		if (d.forms[i].id == strFormId)
		{
			pForm = d.forms[i];	break;
		}
	for(i=0;(!pForm)&& (d.layers) && (i<d.layers.length);i++)
		pForm = Client_GetFormById(strFormId, d.layers[i].document);
	return(pForm);
}
	
function Client_GetOuterForm(caller)
{
	while(caller != null && caller.tagName != "FORM")
		caller = caller.parentElement;
	return(caller);
}
function Client_PostBackOption(strName, strValue) {
	this.Name = strName;
	this.Value = strValue;
}
function Client_PostBackOptions(formElementString) {
	var strElement;
	var nPos, nStart = 0, i = 0;
	this.formElements = new Array()
	//if (formElementString.length > 0 && formElementString[0] != '&')
	//	formElementString = '&' + formElementString;
	nPos = formElementString.indexOf('&')
	if (nPos < 0 && formElementString.length > 0)
		nPos = formElementString.length;
	while (nPos > -1 && nStart < formElementString.length)
	{
		strElement = formElementString.substring(nStart, nPos)
		nStart = nPos + 1;
		nPos = formElementString.indexOf('&', nStart)
		if (nPos < 0 && nStart < formElementString.length)
			nPos = formElementString.length
		if (strElement.length > 0)
		{
			this.formElements[i] = new Client_PostBackOption(strElement.substring(0, strElement.indexOf('=')), strElement.substring(strElement.indexOf('=')+1, strElement.length));
			i++;
		}
	}
	return true;
}

function Client_PostBackOptionsAdd(strFormId, oPostBackOptions)
{
	var oElement;
	var oForm = Client_GetFormById(strFormId, null);
	var i;
	if (oForm != null)
	{
		try
		{
			if (oPostBackOptions)
				for (i = 0; i < oPostBackOptions.formElements.length; i++)
				{
					Client_SetOrAppend(oForm, oPostBackOptions.formElements[i].Name, oPostBackOptions.formElements[i].Value);
				}
		}
		catch(e)
		{
		}
	}
	return true;
}

function Client_SetOrAppend(oForm, strName, strValue){
	oElement = null;
	for (j = 0; j < oForm.elements.length; j++)
		if (oForm.elements[j].id == strName || oForm.elements[j].name == strName)
		{
			oElement = oForm.elements[j];
			break;
		}
	if (oElement == null)
	{
		oElement = document.createElement('INPUT');
		oElement.type='hidden';
		oElement.id=strName;
		oElement.name=strName;
		oForm.appendChild(oElement);
	}
	oElement.value=strValue;
}
function Client_PostBack(caller, strFormId, strLocation, oPostBackOptions){
	var oElement;
	var oForm;
	if (strFormId == null)
	{
		oForm = document.createElement("FORM");
		oForm.method = "post";
		oForm.encoding = "application/x-www-form-urlencoded";
		document.appendChild(oForm);
		oForm.Method = 'GET';
	}
	else
	{
		oForm = Client_GetFormById(strFormId, null);
	}
	var i;
	if (oForm != null)
	{
		try
		{
			if (oPostBackOptions)
				for (i = 0; i < oPostBackOptions.formElements.length; i++)
				{
					Client_SetOrAppend(oForm, oPostBackOptions.formElements[i].Name, oPostBackOptions.formElements[i].Value);
				}
		}
		catch(e)
		{
		}
		if (strLocation != null)
			oForm.action = strLocation;
		oForm.submit();
	}
	return true;
}

function Client_ClearQueryParameter(){
	oForm = Client_GetFormByName(null, null);
	if (oForm != null)
		oForm.action = oForm.action.indexOf('?') >= 0 ? oForm.action.substring(0, oForm.action.indexOf('?')): oForm.action;
}
function Client_CleanPostBack(eventTarget, eventArgument) {
	oForm = Client_GetFormByName(null, null);
	if (!oForm.onsubmit || (oForm.onsubmit() != false)) {
		Client_SetOrAppend(oForm, '__EVENTTARGET', eventTarget);
		Client_SetOrAppend(oForm, '__EVENTARGUMENT', eventArgument);
		oForm.action = oForm.action.indexOf('?') >= 0 ? oForm.action.substring(0, oForm.action.indexOf('?')): oForm.action;
		oForm.submit();
	}
}
function Client_PreUpdate(par)
{
	var oDocument, oDynForm, oControls = null;
	oDocument = document;
	var bNewForm = false;
	Client.Logger.Log("Preupdate...");
	if (oDocument.forms.length == 0)
	{
		Client.Logger.Log("Preupdate. New form added.");
		oDynForm = oDocument.createElement("FORM");
		oDynForm.method = "post";
		oDynForm.encoding = "application/x-www-form-urlencoded";
		oDocument.appendChild(oDynForm);
		bNewForm = true;
	}
	else
	{
		Client.Logger.Log("Preupdate. Exsisting form used.");
		oDynForm = oDocument.forms[0];
		oDynForm.method = "post";
	}
	if (par.inputs && (par.inputs.length > 0))
	{
		for (var j = 0; j < par.inputs.length; j++)
			Client_ApplyPar(oDocument, oDynForm, par.inputs[j][0].toString(), par.inputs[j][0].toString(), par.inputs[j][1].toString());
	}
	if (par.controls && par.controls != null)
		oControls = oDocument.Script[par.controls];
	var strLog = 'Client_PreUpdate. Exsisting TEXTAREA elements: ';
	for (j = 0; j < oDocument.getElementsByTagName('TEXTAREA').length; j++)
		strLog += oDocument.getElementsByTagName('TEXTAREA')[j].id + ', ';
	Client.Logger.Log(strLog);
	for (var i = 0; oControls != null && i < oControls.length; i++)
	{
		if (oControls[i]!=null && oControls[i].name)
		{
			oClientObject = oDocument.getElementById(oControls[i].name);
			if (oClientObject!= null)
			{
				Client.Logger.Log('Client_PreUpdate. Tagname: ' + oClientObject.tagName + ', Control name: ' + oControls[i].name);
				if (oClientObject.tagName == "TEXTAREA" && oClientObject.parentElement != null && oClientObject.parentElement.parentElement != null )
				{
					oElement = oDocument.createElement("INPUT");
					oElement.type='hidden';
					oElement.name=oControls[i].name+"$";
					oElement.value=oClientObject.value;
					oDynForm.appendChild(oElement);

					oElement = oDocument.createElement("INPUT");
					oElement.type='hidden';
					oElement.name=oControls[i].name+"$renderTo";
					oElement.value=oClientObject.parentElement.parentElement.id;
					oDynForm.appendChild(oElement);

					oElement = oDocument.createElement("INPUT");
					oElement.type='hidden';
					oElement.name=oControls[i].name+"$Type";
					oElement.value="html";
					oDynForm.appendChild(oElement);
				}
				else if (oClientObject.tagName == "IMG")
				{
					oElement = oDocument.createElement("INPUT");
					oElement.type='hidden';
					oElement.name=oControls[i].name+"$";
					oElement.value=oClientObject.src;
					oDynForm.appendChild(oElement);
					if (oClientObject.style.type == "poster")
					{
						oElement = oDocument.createElement("INPUT");
						oElement.type='hidden';
						oElement.name=oControls[i].name+"$Type";
						oElement.value="poster";
						oDynForm.appendChild(oElement);
					}
					else if (oClientObject.style.type == "image")
					{
						oElement = oDocument.createElement("INPUT");
						oElement.type='hidden';
						oElement.name=oControls[i].name+"$Type";
						oElement.value="image";
						oDynForm.appendChild(oElement);
					}
				}
				else if (oClientObject.tagName == "INPUT")
				{
					//debugger;
					if (bNewForm == true)
					{
						oElement = oDocument.createElement("INPUT");
						oElement.type='hidden';
						oElement.name=oControls[i].name+"$";
						oElement.value=oClientObject.value;
						oDynForm.appendChild(oElement);
					}
					else
						oClientObject.name = oControls[i].name+"$";

					oElement = oDocument.createElement("INPUT");
					oElement.type='hidden';
					oElement.name=oControls[i].name+"$Type";
					oElement.value=oControls[i].type;
					oDynForm.appendChild(oElement);
				}
			}
			else
			{
				Client.Logger.Log('Client_PreUpdate. oClientObject null, Name: ' + oControls[i].name);
				var strLog = 'Client_PreUpdate. Exsisting elements: ';
				for (j = 0; j < oDocument.getElementsByTagName('TEXTAREA').length; j++)
					strLog += oDocument.getElementsByTagName('TEXTAREA')[j].id + ', ';
				Client.Logger.Log(strLog);
			}
		}
		else
			Client.Logger.Log('Client_PreUpdate. Control null');
	}
	oDynForm.submit();
}
function Client_ApplyPar(doc, form, id, name, value)
{
	var e;
	if (doc){
		//debugger;
		if (doc.getElementById(id)){
			e=doc.getElementById(id);
		}
		else{
			e=doc.createElement("INPUT");
			e.type='hidden';
			e.name=name;
			form.appendChild(e);
		}
		e.value=value;
	}
}
function Client_SubmitForm(par)
{
	Client.Logger.Log('Client_SubmitForm called...');
	var oDocument = null, oDynForm, oControls = null;
	var bNewForm = false;
	if (par.frame && par.frame != null)
	{
		var oFrame = Client_GetFrameByName(par.frame, top);
		//debugger;
		if (oFrame != null)
		{
			oDocument = oFrame.document;
		}
	}
	else
		oDocument = document;
	if (oDocument != null)
	{
		if (oDocument.forms.length == 0)
		{
			oDynForm = oDocument.createElement("FORM");
			oDynForm.method = "post";
			oDynForm.encoding = "application/x-www-form-urlencoded";
			oDocument.appendChild(oDynForm);
			bNewForm = true;
		}
		else
		{
			oDynForm = oDocument.forms[0];
			oDynForm.method = "post";
		}
		
		if (par.action)
			Client_ApplyPar(oDocument, oDynForm, 'command', 'command', par.action);
		if (par.tmpno)
			Client_ApplyPar(oDocument, oDynForm, 'tmpno', 'tmpno', par.tmpno);
		if (par.refno)
			Client_ApplyPar(oDocument, oDynForm, 'refno', 'refno', par.refno);

		if (par.inputs && (par.inputs.length > 0))
		{
			for (var j = 0; j < par.inputs.length; j++)
				Client_ApplyPar(oDocument, oDynForm, par.inputs[j][0].toString(), par.inputs[j][0].toString(), par.inputs[j][1].toString());
		}
		if (par.controls && par.controls != null)
			oControls = oDocument.Script[par.controls];
		for (var i = 0; oControls != null && i < oControls.length; i++)
		{
			if (oControls[i]!=null && oControls[i].name)
			{
				//debugger;
				oClientObject = oDocument.getElementById(oControls[i].name);
				if (oClientObject!= null)
				{
					Client.Logger.Log('Client_SubmitForm. Tagname: ' + oClientObject.tagName + ', Control name: ' + oControls[i].name);
					if (oClientObject.tagName == "TEXTAREA" && oClientObject.parentElement != null && oClientObject.parentElement.parentElement != null )
					{
						oElement = oDocument.createElement("INPUT");
						oElement.type='hidden';
						oElement.name=oControls[i].name+"$";
						oElement.value=oClientObject.value;
						oDynForm.appendChild(oElement);

						oElement = oDocument.createElement("INPUT");
						oElement.type='hidden';
						oElement.name=oControls[i].name+"$renderTo";
						oElement.value=oClientObject.parentElement.parentElement.id;
						oDynForm.appendChild(oElement);

						oElement = oDocument.createElement("INPUT");
						oElement.type='hidden';
						oElement.name=oControls[i].name+"$Type";
						oElement.value="html";
						oDynForm.appendChild(oElement);
					}
					else if (oClientObject.tagName == "IMG")
					{
						oElement = oDocument.createElement("INPUT");
						oElement.type='hidden';
						oElement.name=oControls[i].name+"$";
						oElement.value=oClientObject.src;
						oDynForm.appendChild(oElement);
						if (oClientObject.style.type == "poster")
						{
							oElement = oDocument.createElement("INPUT");
							oElement.type='hidden';
							oElement.name=oControls[i].name+"$Type";
							oElement.value="poster";
							oDynForm.appendChild(oElement);
						}
						else if (oClientObject.style.type == "image")
						{
							oElement = oDocument.createElement("INPUT");
							oElement.type='hidden';
							oElement.name=oControls[i].name+"$Type";
							oElement.value="image";
							oDynForm.appendChild(oElement);
						}
					}
					else if (oClientObject.tagName == "INPUT")
					{
				//		debugger;
						if (bNewForm == true)
						{
							oElement = oDocument.createElement("INPUT");
							oElement.type='hidden';
							oElement.name=oControls[i].name+"$";
							oElement.value=oClientObject.value;
							oDynForm.appendChild(oElement);
						}
						else
							oClientObject.name = oControls[i].name+"$";

						oElement = oDocument.createElement("INPUT");
						oElement.type='hidden';
						oElement.name=oControls[i].name+"$Type";
						oElement.value=oControls[i].type;
						oDynForm.appendChild(oElement);
					}
				}
			}
		}
		oDynForm.submit();
	}
	else
		Client.Logger.Log('Client_SubmitForm. oDocument != null');
}

function Client_UpdateFrame(par)
{
	var strPar = '';
	var aPar = null;
	if (par.frame && par.frame != null)
	{
		var oFrame = Client_GetFrameByName(par.frame, top);
		//debugger;
		if (oFrame != null)
		{
			var strUrl = par.url ? par.url : oFrame.location.href;
			if (strUrl.indexOf('?') >= 0)
			{
				strPar = strUrl.substring(strUrl.indexOf('?')+1);
				aPar = new Client_PostBackOptions(strPar);
				strPar = '';
				strUrl = strUrl.substring(0, strUrl.indexOf('?'));
			}
			if (par.parameters)
			{
				for (var i = 0; i < par.parameters.length; i++)
				{
					strPar += '&' + par.parameters[i].name + '=' + par.parameters[i].value;
				}
			}
			for (var j = 0; aPar != null && j < aPar.formElements.length; j++)
			{
				if (strPar.indexOf('&' + aPar.formElements[j].Name + '=') < 0)
					strPar += '&' + aPar.formElements[j].Name + '=' + aPar.formElements[j].Value;
			}
			strPar = strPar.length > 0 ? strPar.substring(1) : '';
			if (strUrl.indexOf('?') >= 0)
				strUrl += '&' + strPar;
			else
				strUrl += '?' + strPar;
			Client_GetFrameByName(par.frame, top).location = strUrl;
		}
		else
		{
			Client.Logger.Log('Client_UpdateFrame. Frame not found: ' + par.frame);
		}	
	}
}