// contexts for wizard display rules
var context = {
	numberOfEmployees : 0,
	AKATrade : "",
	profession : "",
	insuranceType : [],
	employersLiability : false,
	publicLiability : false,
	professionalIndemnity : false
}


// begin : added by Roz 16/12/2008

var DEPLOY_SITE = "https://secure.coverzones.com/main/"; // DNW F9647 25/03/2009 - Set default, so if the setting fails we go to the live site.

// Plugin
/* DNW F9647 - This has caused problems with IE with strict securty settings. We have removed the need for this XML parser.
jQuery.parseXML = function( xml ) {
        if( window.ActiveXObject && window.GetObject ) {
            var dom = new ActiveXObject( 'Microsoft.XMLDOM' );
            dom.loadXML( xml );
            return dom;
        }
        if( window.DOMParser )
            return new DOMParser().parseFromString( xml, 'text/xml' );
        throw new Error( 'No XML parser available' );
}
*/



$(document).ready(
	function(){
	
	$.ajax({

                 type: "GET",
                 url: "/deploy.txt",
				 processData : false,
                 data: 'xml',
                 error : function() {
                    alert("config failed to load");
                 },
                 success: function(site) {
					DEPLOY_SITE = site;
                 }
             }); //close $.ajax(		
});

// end : added by Roz 16/12/2008

function toggleText()
{
	var sVal = document.getElementById("professionFilter").value;

	if (sVal == "Please type the first few letters of your profession")
	{
		document.getElementById("professionFilter").value = "";
	}
	else
	{
		if (sVal == "")
		{
			document.getElementById("professionFilter").value = "Please type the first few letters of your profession";
		}
	}
}

function getMatches()
{
	var sVal = document.getElementById("professionFilter").value;
	var resultList = document.getElementById("professionResults") ;
	var xmlHttp;
	
	if (sVal.length < 2)
	{
		return false;
	}

	try
	{
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	}
	catch (e)
	{
		// Internet Explorer
		try
		{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try
			{
				xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
			}
 			catch (e)
			{
				alert("Your browser does not support AJAX!");
				return false;
			}
		}
	}

	xmlHttp.onreadystatechange=function()
	{
		if (xmlHttp.readyState == 4)
		{
			var responseArray = xmlHttp.responseText.split("|");
			//Roz 11/12/2008 temporary line of business test data
			//var responseArray= "C0077~IT Consultant/Consultancy|I0010~IT Consultants".split("|");
			var recordArray;
			var tmpString = "";

			if (responseArray.length > 0)
			{
				tmpString += "<select size='8' style='width: 270px;' id='professionResults' onClick='setSelection()'>"
				for (i=0; i<responseArray.length; ++i)
				{
					recordArray = responseArray[i].split("~");
					tmpString += "<option value='"+recordArray[0]+"'>"+recordArray[1]+"</option>";
				}
				tmpString += "</select>"
				
				//alert(tmpString);
					//BOYDE TODO Remove START
					//var divpl = document.getElementById("professionListDiv");
					//var sInnerhtml = divpl.innerHTML;
					//BOYDE TODO Remove END
				
				//alert(document.getElementById("professionListDiv").innerHTML);	
				
				//document.getElementById("professionListDiv").innerHTML = tmpString;
				$("#professionListDiv").replaceWith('<div id="professionListDiv">' + tmpString + '</div>');
			}
		}
	}

	resultList.length = 0;
	
	//BOYDE TODO fix up the /coverzones reference to:
	//xmlHttp.open("GET", "/psadmin/files/match.aspx?match="+sVal, true);
	
	xmlHttp.open("GET", "/psadmin/files/match.aspx?match="+sVal, true);
	xmlHttp.send(null);
}

function setSelection() {
	var sText = document.getElementById("professionResults").options[document.getElementById("professionResults").selectedIndex].text;
	var sValue = document.getElementById("professionResults").options[document.getElementById("professionResults").selectedIndex].value;
	
	// populate context (for Wizard rules)
	context.profession = sValue;
	context.AKATrade = sValue;
	document.getElementById("professionFilter").value = sText;
	getProducts();
	document.getElementById("your_prof1").innerHTML = sText;
}

function doSafiPost()
{
    // if no product found
   
    if (document.getElementById("policy").value != "00000") {  
	    // added by Rozario 16/12/2008
	    window.location.href = DEPLOY_SITE+"prodselector.jsf?AKAProdID="+document.getElementById("policy").value+"&AKATrade="+document.getElementById("professionResults").value;
    }
    else
    {
    errorPopup('No Products Found for the Profession - No Quote available');
    }
    
    return false;
}

function doSafiWizardPost(prd)
{
	// added by Rozario 16/12/2008
    window.location.href = DEPLOY_SITE+"prodselector.jsf?AKAProdID="+prd+"&AKATrade="+context.AKATrade;
}

function getProducts()
{
	var sVal = document.getElementById("professionResults").value;
	var emps = document.getElementById("howManyEmployees").value;
	var xmlHttp;

	if (emps == "1-10") { emps = 10; }
	if (emps == "11+") { emps = 20; }

	// BOYDE 28/1/2009
	// setup the context a little earlier 
    if(document.getElementById("howManyEmployees").value == '0'){
		context.numberOfEmployees = 0;
	}
    else {
        // if employees > 0
        context.numberOfEmployees = emps;
	}

	try
	{
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	}
	catch (e)
	{
		// Internet Explorer
		try
		{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try
			{
				xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
			}
 			catch (e)
			{
				alert("Your browser does not support AJAX!");
				return false;
			}
		}
	}

	xmlHttp.onreadystatechange=function()
	{
		if (xmlHttp.readyState == 4)
		{
			var responseArray = xmlHttp.responseText.split("|");
			// Roz 11/12/2008 temporary product test data
			//var responseArray = "EL001~Employers Liability|CPE01~Public & Employers Liability Combined|PL001~Public Liability".split("|");


			var EL001 = "EL001";
			var ELproductPattern = new RegExp(EL001);
			var CPE01 = "CPE01";
			var CPE01productPattern = new RegExp(CPE01);
			var CPE11="CPE11";
			var CPE11productPattern = new RegExp(CPE11);
			var recordArray;
			var duplicateProductType=false;
			var addRecord=false;
			var iPolicyOptions=0;


			if (responseArray.length > 0)
			{

				if(CPE01productPattern.test(responseArray) && CPE11productPattern.test(responseArray))
					{
			
					// if both CPE01 and CPE11 found flag as duplicates 
					duplicateProductType=true;
					}


				document.getElementById("policy").length = 0;
				for (i=0; i<responseArray.length; ++i)
				{
			
					addRecord=false;
					recordArray = responseArray[i].split("~");
					
					if(context.numberOfEmployees==0)
					{
						if(recordArray[0]!=EL001)
						{
							// if NOT EL.. and employees=0 then add the product to the list
							if(recordArray[0]==CPE01 || recordArray[0]==CPE11 )
							{
								//cant have a combined if no employees
								addRecord=false;
							}
							else
							{
								addRecord=true;
							}
						}
						else
						{
							addRecord=false;
						}
					}
					else
					{
						if(duplicateProductType && (recordArray[0]==CPE01 || recordArray[0]==CPE11 ))
						{
							if(context.numberOfEmployees==10 && recordArray[0]==CPE01)	
							{
								// if 1-10 then add CPE01 record
								addRecord=true;
							} else if(context.numberOfEmployees==20 && recordArray[0]==CPE11)	
							{
								// if >10 then add CPE11 record
								addRecord=true;
							}
						}
						else
						{
							// if no duplicates found just add the record
							addRecord=true;
						}

					}

					if(addRecord)
					{
						// add the record to the drop down
						document.getElementById("policy").options[iPolicyOptions++] = new Option(recordArray[1], recordArray[0]);
					}

					// add insurancetypes to context array
					context.insuranceType.push(recordArray[0]);
				}
			}
			
		}
	}

	//BOYDE TODO fix up the /coverzones reference to:
	//xmlHttp.open("GET", "/psadmin/files/products.aspx?prof="+sVal+"&emps="+emps, true);
	
	xmlHttp.open("GET", "/psadmin/files/products.aspx?prof="+sVal+"&emps="+emps, true);
	xmlHttp.send(null);
}

function left(str, n)
{
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}
