﻿if (!window.Spark) window.Spark=new Object();
window.Spark.__namespace=true;
if (!window.Spark.Modules) window.Spark.Modules=new Object();
window.Spark.Modules.__namespace=true;
if (!window.Spark.Modules.LeadManagementForms) window.Spark.Modules.LeadManagementForms=new Object();
window.Spark.Modules.LeadManagementForms.__namespace=true;
if (!window.Spark.Modules.LeadManagementForms.UserControls) window.Spark.Modules.LeadManagementForms.UserControls=new Object();
window.Spark.Modules.LeadManagementForms.UserControls.__namespace=true;
if (!window.Spark.Modules.LeadManagementForms.UserControls.AddressControl) window.Spark.Modules.LeadManagementForms.UserControls.AddressControl=new Object();

Spark.Modules.LeadManagementForms.UserControls.AddressControl.OnTitleValidate=function(sender,e)
{
	var Container=sender;
	while (Container.nodeName.toLowerCase()!="tr")
		Container=Container.parentNode;
	var TitleList=Container.getElementsByTagName("select")[0];
	var OtherTitleInput=Container.getElementsByTagName("input")[0];
	if (TitleList.selectedIndex>=0)
	{
		if (TitleList.options[TitleList.selectedIndex].value=="0")
			e.IsValid=(OtherTitleInput.value!="");
		else
			e.IsValid=true;
	}
	else
		e.IsValid=false;
}

Spark.Modules.LeadManagementForms.UserControls.AddressControl.OnPostcodeValidate=function(sender,e)
{
	e.IsValid=(e.Value.replace(/\s/gi,"").match(/(GIR0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKS-UW])[0-9][ABD-HJLNP-UW-Z]{2})/gi)!=null);
}

Spark.Modules.LeadManagementForms.UserControls.AddressControl.OnEmailValidate=function(sender,e)
{
	e.IsValid=(e.Value.match(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/gi)!=null);
}

Spark.Modules.LeadManagementForms.UserControls.AddressControl.BeginRequest=function(sender,e)
{
	var Source=e.get_postBackElement();
	if ((Source.id==null)||(Source.id.lastIndexOf("PostcodeLookupButton")==-1))
		return;
	var Target=Source;
	while (Target.nodeName.toLowerCase()!="td")
	{
		Target=Target.parentNode;
		if (Target==null)
			return;
	}
	var UpdatePanel=document.getElementById(sender._postBackSettings.panelID.substr(0,Math.min(sender._postBackSettings.panelID.lastIndexOf("|"),sender._postBackSettings.panelID.length)).replace(/\$/gi,"_"));
	var BaseID=UpdatePanel.id.substr(0,UpdatePanel.id.lastIndexOf("_"));
	while (Source.id.substr(0,BaseID.length)!=UpdatePanel.id.substr(0,BaseID.length))
	{
		BaseID=BaseID.substr(0,BaseID.lastIndexOf("_"));
	}
	var UpdateProgress=document.getElementById(BaseID+"_UpdateProgress");
	UpdateProgress=UpdateProgress.getElementsByTagName("table")[0].cloneNode(true);
	UpdateProgress.style.display="";
	UpdateProgress.style.position="";
	while (Target.childNodes.length>0)
		Target.removeChild(Target.childNodes[0]);
	Target.appendChild(UpdateProgress);
}

Spark.Modules.LeadManagementForms.UserControls.AddressControl.EndRequest=function(sender,e)
{
}

Spark.Modules.LeadManagementForms.UserControls.AddressControl.OnTitleListChanged=function(evt)
{
	if (!evt) evt=window.event;
	var Source=(evt.srcElement?evt.srcElement:evt.target);
	var Container=Source;
	while (Container.nodeName.toLowerCase()!="tr")
		Container=Container.parentNode;
	var OtherTitleInput=Container.getElementsByTagName("input");
	for (var Index=0; Index<OtherTitleInput.length; Index++)
	{
		if ((OtherTitleInput[Index].id!=null)&&(OtherTitleInput[Index].id.lastIndexOf("OtherTitleInput")!=-1))
		{
			OtherTitleInput=OtherTitleInput[Index];
			break;
		}
	}
	var OtherTitleLabel=Container.getElementsByTagName("span");
	for (var Index=0; Index<OtherTitleLabel.length; Index++)
	{
		if ((OtherTitleLabel[Index].id!=null)&&(OtherTitleLabel[Index].id.lastIndexOf("OtherTitleLabel")!=-1))
		{
			OtherTitleLabel=OtherTitleLabel[Index];
			break;
		}
	}
	if (Source.options[Source.selectedIndex].value=="0")
	{
		OtherTitleInput.style.display="";
		OtherTitleLabel.style.visibility="";
	}
	else
	{
		OtherTitleInput.style.display="none";
		OtherTitleLabel.style.visibility="hidden";
	}
}

Spark.Modules.LeadManagementForms.UserControls.AddressControl.GetEmailAddress=function(ControlID)
{
	var EmailInput=$get(ControlID+'_EmailInput');
	return EmailInput.value.trim();
}

Spark.Modules.LeadManagementForms.UserControls.AddressControl.OnPostcodeLookupButtonClick=function(evt)
{
	if (!evt) evt=window.event;
	var Source=(evt.srcElement?evt.srcElement:evt.target);
	var PostcodeInput=$get(Source.id.substr(0,Source.id.lastIndexOf("_PostcodeLookupButton"))+'_PostcodeInput');
	Source.style.display="none";
	var UpdateProgress=document.getElementById(Source.getAttribute("updateProgress"));
	if (UpdateProgress!=null)
	{
		UpdateProgress=UpdateProgress.cloneNode(true);
		UpdateProgress.style.display="";
		UpdateProgress.id=Source.id.substr(0,Source.id.lastIndexOf("_PostcodeLookupButton"))+"_UpdateProgressCopy";
		Source.parentNode.appendChild(UpdateProgress);
	}
	Renault.Modules.CommonControls.AddressWebService.PostCodeLookup(PostcodeInput.value,
		Renault.Modules.CommonControls.Address.OnPostcodeLookup,null,
		Source.id.substr(0,Source.id.lastIndexOf("_PostcodeLookupButton")));
	return false;
}

Spark.Modules.LeadManagementForms.UserControls.AddressControl.OnPostcodeLookup=function(Result)
{
	var Source=document.getElementById(arguments[1]+'_PostcodeLookupButton');
	var UpdateProgress=document.getElementById(arguments[1]+'_UpdateProgressCopy');
	if (UpdateProgress!=null)
		UpdateProgress.parentNode.removeChild(UpdateProgress);
	Source.style.display="";
	if ((Result.PostCode==undefined)||(Result.PostCode==null)||(Result.PostCode==""))
		alert("We couldn't look up your post code.\nPlease try again.");
	else
	{
		if (document.getElementById(arguments[1]+'_PostcodeInput')!=null)
			document.getElementById(arguments[1]+'_PostcodeInput').value=Result.PostCode;
		if (document.getElementById(arguments[1]+'_StreetInput')!=null)
			document.getElementById(arguments[1]+'_StreetInput').value=Result.Street;
		if (document.getElementById(arguments[1]+'_CityInput')!=null)
			document.getElementById(arguments[1]+'_CityInput').value=Result.City;
		if (document.getElementById(arguments[1]+'_CompanyContainer')!=null)
			document.getElementById(arguments[1]+'_CompanyContainer').style.display="";
		if (document.getElementById(arguments[1]+'_HouseContainer')!=null)
			document.getElementById(arguments[1]+'_HouseContainer').style.display="";
		if (document.getElementById(arguments[1]+'_StreetContainer')!=null)
			document.getElementById(arguments[1]+'_StreetContainer').style.display="";
		if (document.getElementById(arguments[1]+'_CityContainer')!=null)
			document.getElementById(arguments[1]+'_CityContainer').style.display="";
		if (document.getElementById(arguments[1]+'_CountyContainer')!=null)
			document.getElementById(arguments[1]+'_CountyContainer').style.display="";
		var Events=Source.getAttribute("events").split(",");
		var Dealers="[";
		for (var Index=0; Index<Result.Dealers.length; Index++)
			Dealers+="{DealerName:\""+Result.Dealers[Index].DealerName+"\","+
				"ExternalDealerCode:\""+Result.Dealers[Index].ExternalDealerCode+"\","+
				(Result.Dealers[Index].DealerID<0?"Selected:true":"Selected:false")+"},";
		if (Dealers.charAt(Dealers.length-1)==",")
			Dealers=Dealers.substr(0,Dealers.length-1);
		Dealers+="]";
		var Data="{PostCode:\""+Result.PostCode+"\",Street:\""+Result.Street+"\",City:\""+Result.City+"\","+
			"County:\""+Result.County+"\",House:\""+Result.House+"\",MatchingAddressCount:"+Result.MatchingAddressCount+","+
			"Dealers:"+Dealers+"}";
		for (var Index=0; Index<Events.length; Index++)
		{
			try
			{
				eval(Events[Index]+"(document.getElementById(\""+arguments[1]+"_PostcodeLookupButton\"),"+Data+");");
			}
			catch (Exception)
			{
			}
		}
	}
}