var dtCh= "/";
var minYear=1900;
var maxYear=2100;
var digits = "0123456789";

var phoneNumberDelimiters = "()- ";
var validWorldPhoneChars = phoneNumberDelimiters + "+";
//var ValidHowMuchCoverChars = ",.";
var ValidHowMuchCoverChars = ",";
var minDigitsInIPhoneNumber = 8;

var singlejointquote = "single";

function changeVal(b) {
	if (b == 0){
		document.form.DOB.value = ""
   	}
   	else if (b == 1){
   		document.form.PartnerDOB.value = ""
   	}
} 

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function isDate(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)

	if (pos1==-1){
		dtCh=".";
		pos1=dtStr.indexOf(dtCh);
	}

	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strDay=dtStr.substring(0,pos1)
	var strMonth=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		alert("The date format should be : dd/mm/yyyy")
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		alert("Please select a valid month")
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		alert("Please select a valid day")
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		alert("Please select a valid year")
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		alert("Please enter a valid date")
		return false
	}

	/* 26/09/2005 - SP - to make sure that dates after NOW are not entered for DOB */
	var right_now = new Date();
	var input_date = new Date(strYear, strMonth, strDay);

	if (input_date > right_now)
	{
		alert("Please enter a valid date");
		return false
	}

	return true
}


function checkInternationalPhone(strPhone){
s=stripCharsInBag(strPhone,validWorldPhoneChars);
return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}

function CheckHowMuchCover(strHowMuch){
s=stripCharsInBag(strHowMuch,ValidHowMuchCoverChars);
return (isInteger(s));
}

function isFilled(elm) {
    if (elm.value == "" || elm.value == null) 
    return false;
    else return true;
}


function isPostCode(elm){
	// TODO: Need to complete this
	return true;
}

function isEmail(elm) {
    if (elm.value.indexOf("@") + "" != "-1" &&
        elm.value.indexOf(".") + "" != "-1" &&
        elm.value != "") 
    return true;
    else return false;
}

function isReady(form)
{

// Disabling Submit Button - so that the user does not submit the form more than once
var myButton = document.getElementById("submit1");
myButton.disabled = true;

// Personal Information ==========================================================================
// Name

    var myTitle = document.getElementById("Title");
    if (myTitle.value == "") {
    alert("Please enter your Title.");
    myButton.disabled = false;
    return false;
    }

    var myForeName = document.getElementById("ForeName")
    if (isFilled(myForeName) == false) {
    alert("Please enter your forename.");
    myForeName.focus();
    myButton.disabled = false;
    return false;
    }

    var mySurName  = document.getElementById("SurName")
    if (isFilled(mySurName) == false) {
    alert("Please enter your surname.");
    mySurName.focus();
    myButton.disabled = false;
    return false;
    }


// Tel - checking tel no

    var myPhone = document.getElementById("Phone")
    if (isFilled(myPhone) == false) {
    alert("Please enter your contact phone number.");
    myPhone.focus();
    myButton.disabled = false;
    return false;
    }

    if (checkInternationalPhone(myPhone.value)==false){
    alert("Please Enter a Valid Phone Number\n Valid characters are as follows:\n0-9\n()\n- +")
    myPhone.focus()
    myButton.disabled = false;
    return false
    }


//    var myPhone = document.getElementById("Phone2")
//    if (isFilled(myPhone) == false) {
//    alert("Please enter your alternative contact phone number.");
//    myPhone.focus();
//    myButton.disabled = false;
//    return false;
//    }
    
    var myPhone2 = document.getElementById("Phone2");
    if (isFilled(myPhone2) == true) {

	    if (checkInternationalPhone(myPhone2.value)==false){
		alert("Please Enter a Valid Alternative Phone Number\n Valid characters are as follows:\n0-9\n()\n- +")
		myPhone2.focus()
		myButton.disabled = false;
		return false
    	    }
    }

    
//////    if (isFilled(form.Phone3) == true) {

//////	    if (checkInternationalPhone(form.Phone3.value)==false){
//////		alert("Please Enter a Valid Phone Number\n Valid characters are as follows:\n0-9\n()\n- +")
//////		form.Phone3.focus()
//////		myButton.disabled = false;
//////		return false
//////    	    }
//////    }


// Email - no point checking e-mail if request is for tel

    var myEmail = document.getElementById("Email");
    if (isEmail(myEmail) == false) { 
    alert("Sorry but your quotation cannot be sent until you have given us a valid e-mail address to which we can respond. Please provide these details and then resubmit your request. Thank you.");
    myEmail.focus();
    myButton.disabled = false;
    return false;
    }

// Postcode

    var myHouseNumber = document.getElementById("HouseNumber");
    if (isFilled(myHouseNumber) == false) {
    alert("Please enter your House Number/ House Name.");
    myHouseNumber.focus();
    myButton.disabled = false;
    return false;
    }

    var myPostcode = document.getElementById("Postcode");
    if (isFilled(myPostcode) == false) {
    alert("Please enter your Postcode.");
    myPostcode.focus();
    myButton.disabled = false;
    return false;
    }

// Personal Gender

    var myGenderM = document.getElementById("GenderM");
    var myGenderF = document.getElementById("GenderF");
    if((!myGenderM.checked) && (!myGenderF.checked)){
    alert("Please enter your gender.");
    myButton.disabled = false;
    return false;
    }

// Date

    var myDOBd = document.getElementById("DOBd");
    var myDOBm = document.getElementById("DOBm");
    var myDOBy = document.getElementById("DOBy");
   // var myDOB = myDOBd.value + "/" + myDOBm.value + "/" myDOBy.value;
    if (isFilled(myDOBd) == false && isFilled(myDOBm) == false && isFilled(myDOBy) == false) {
    alert("Please enter your Date Of Birth.");
    myDOBd.focus();
    myDOBm.focus();
    myDOBy.focus();
    myButton.disabled = false;
    return false;
    }

    var dt=myDOBd.value + "/" + myDOBm.value + "/" + myDOBy.value;
    if (isDate(dt)==false){
    myDOBd.focus();
    myDOBm.focus();
    myDOBy.focus();
    //dt.focus();
    myButton.disabled = false;
    return false;
    }
    else
    {
    document.getElementById("DOB").value = dt;
    }

// Personal Smoking

    var mySmokerY = document.getElementById("SmokerY");
    var mySmokerN = document.getElementById("SmokerN");
    if((!mySmokerY.checked) && (!mySmokerN.checked)){
    alert("Please enter if you have smoked a tobacco product in the last 12 months.");
    myButton.disabled = false;
    return false;
    }

//Leszek commented out 03/07/2008
// For the quotes we only need to check against the "Cover Amount" and the Years as the radio 
// buttons already have default values.
// Quote One =====================================================================================
    
//    var myCoverTypeLI = document.getElementById("CoverType_Quote_1a");
//    var myCoverTypeMLI = document.getElementById("CoverType_Quote_1b");
//    if(myCoverTypeLI != null){
//        if((!myCoverTypeLI.checked) && (!myCoverTypeMLI.checked)){
//        alert("Please select the type of Life Insurance you require.");
//        myButton.disabled = false;
//        return false;
//        }
//    }

    var myQuote_1_CoverAmont = document.getElementById("Quote_1_CoverAmount");
    if (isFilled(myQuote_1_CoverAmont) == false) {
    alert("Please enter your amount of cover for Quote 1.");
    myQuote_1_CoverAmont.focus();
    myButton.disabled = false;
    return false;
    }

    if (CheckHowMuchCover(myQuote_1_CoverAmont.value) == false){
    //alert("The cover amount for Quote 1 must be numerical.");
    alert("The cover amount for Quote 1 must be numerical and have no decimal places.");
    myQuote_1_CoverAmont.value = "";
    myQuote_1_CoverAmont.focus();
    myButton.disabled = false;
    return false;
    }

    
    var myQuote_1_YearsOfCover = document.getElementById("Quote_1_YearsOfCover");
    if (isFilled(myQuote_1_YearsOfCover) == false) {
    alert("Please enter the number of years you want to be covered for in Quote 1.");
    myQuote_1_YearsOfCover.focus();
    myButton.disabled = false;
    return false;
    }

    if (myQuote_1_YearsOfCover.value > 99){
    alert("The years of cover for Quote 1 must be less than 100.");
    myQuote_1_YearsOfCover.value = "";
    myQuote_1_YearsOfCover.focus();
    myButton.disabled = false;
    return false;
    }

    if (isInteger(myQuote_1_YearsOfCover.value) == false){
    alert("The years of cover for Quote 1 must be numerical.");
    myQuote_1_YearsOfCover.value = "";
    myQuote_1_YearsOfCover.focus();
    myButton.disabled = false;
    return false;
    }	


//// Partner Information ===========================================================================
//    var singlejointquoteS = document.getElementById("singlejoint_1a");
//    var singlejointquoteJ = document.getElementById("singlejoint_1b");
//    
//    if (singlejointquoteJ.checked == false && singlejointquoteS.checked == false){
//        alert("Please state whether the quote is for you or you and your partner");
//        singlejointquoteS.focus();
//        singlejointquoteJ.focus();
//        myButton.disabled = false;
//        return false;
//    }
//    else{  
//	    if (singlejointquoteJ.checked  == true ){
//		    // Name
//		    var mypTitle = document.getElementById("PartnerTitle");
//		    if (mypTitle.value == "") {
//		        alert("Please enter your partner's title.");
//		        myButton.disabled = false;
//		        return false;
//		    }

//            var myPartnerForeName = document.getElementById("PartnerForeName");
//    	    if (isFilled(myPartnerForeName) == false) {
//    		    alert("Please enter your partner's forename.");
//    		    myPartnerForeName.focus();
//		        myButton.disabled = false;
//	    	    return false;
//		    }

//            var myPartnerSurName = document.getElementById("PartnerSurName");
//    	    if (isFilled(myPartnerSurName) == false) {
//    		    alert("Please enter your partner's surname.");
//    		    myPartnerSurName.focus();
//		        myButton.disabled = false;
//    		    return false;
//    	    }	

//		    // Partner Gender
//	        var myPartnerGenderM = document.getElementById("PartnerGenderM");
//	        var myPartnerGenderF = document.getElementById("PartnerGenderF");
//		    if((!myPartnerGenderM.checked) && (!myPartnerGenderF.checked)){
//    		    alert("Please enter your partner's gender.");
//		        myButton.disabled = false;
//    		    return false;
//    	    }	

//		    // Date
//    		


//            var myPartnerDOBd = document.getElementById("PartnerDOBd");
//            var myPartnerDOBm = document.getElementById("PartnerDOBm");
//            var myPartnerDOBy = document.getElementById("PartnerDOBy");
//            
//		    if (isFilled(myPartnerDOBd) == false && isFilled(myPartnerDOBm) == false && isFilled(myPartnerDOBy) == false) {
//		        alert("Please enter your partner's Date Of Birth.");
//	            myPartnerDOBd.focus();
//	            myPartnerDOBm.focus();
//	            myPartnerDOBy.focus();
//		        myButton.disabled = false;
//	            return false;
//		    }

//            var pdt=myPartnerDOBd.value + "/" + myPartnerDOBm.value + "/" + myPartnerDOBy.value;
//            if (isDate(pdt)==false){
//                myPartnerDOBd.focus();
//                myPartnerDOBm.focus();
//                myPartnerDOBy.focus();
//                myButton.disabled = false;
//       	        return false;
//            }

//		    // Partner Smoking
//		    var myPartnerSmokerY = document.getElementById("PartnerSmokerY");
//		    var myPartnerSmokerN = document.getElementById("PartnerSmokerN");
//    	    if((!myPartnerSmokerY.checked) && (!myPartnerSmokerN.checked)){
//    		    alert("Please enter if youre partner has smoked any tobacco in the last 12 months.");
//	            myButton.disabled = false;
//    		    return false;
//    	    }
//	    }
//	}

    	    
// How Did You Hear About Us

    var HowDidYouHear = document.getElementById("ddlHowDidYouHear");
    
    if (HowDidYouHear != null){
        if (HowDidYouHear.value == "-- Please Select --") {
        alert("Please select how you heard about us.");
        myButton.disabled = false;
        return false;
        }
        else
        {
        document.getElementById("HowDidYouHear").value = HowDidYouHear.value;
        }
    }
    myButton.disabled = false;  
}

//// This is to hide the partner details from the user of the sight
//function goSingle(i)
//{
//	for( i = 0; i <document.form.elements.length; i++)
//		if(document.form.elements[i].type == "radio"){
//			if(document.form.elements[i].checked){
//				if (document.form.elements[i].value == "Joint")
//					return true;
//			}
//		}
//	Hide_SingleJoint();
//}


//function Hide_SingleJoint()
//{
//	var myElement = document.getElementById("pTitle");
//	myElement.style.display = "none"; 
//	var myElement = document.getElementById("pName");
//	myElement.style.display = "none"; 
//	var myElement = document.getElementById("pGender");
//	myElement.style.display = "none"; 
//	var myElement = document.getElementById("pSmoking");
//	myElement.style.display = "none"; 
//	singlejointquote  = "single";
//}


//function goJoint()
//{
//	var myElement = document.getElementById("pTitle");
//	myElement.style.display = ""; 
//	var myElement = document.getElementById("pName");
//	myElement.style.display = ""; 
//	var myElement = document.getElementById("pGender");
//	myElement.style.display = ""; 
//	var myElement = document.getElementById("pSmoking");
//	myElement.style.display = ""; 
//	singlejointquote  = "joint";
//}

//function ShowQuote()

//{
//	var myElement = document.getElementById("ShowNewQuote");
//	var statusTwo = document.getElementById("qTwo");
//	var statusThree = document.getElementById("qThree");
//	var statusFour = document.getElementById("qFour");

//	if (statusTwo.style.display == "none")
//	{
//		statusTwo.style.display = "";
//		if ((statusThree.style.display == "") && (statusFour.style.display == ""))
//		{
//		myElement.style.display = "none"; // hides the layer                                 
//		}
//	return;
//	}

//	if (statusThree.style.display == "none")
//	{
//		statusThree.style.display = "";
//		if ((statusTwo.style.display == "") && (statusFour.style.display == ""))
//		{
//		myElement.style.display = "none"; // hides the layer                                 
//		}
//	return;
//	}


//	if (statusFour.style.display == "none")
//	{
//		statusFour.style.display = "";
//		if ((statusTwo.style.display == "") && (statusThree.style.display == ""))
//		{
//		myElement.style.display = "none"; // hides the layer                                 
//		}
//	return;
//	}
//}

//function CloseQuote(i)
//{
//	if(i == 2)
//	{
//	var myElement = document.getElementById("qTwo");
//	myElement.style.display = "none"; // hides the layer
//	form.Quote_2_CoverAmount.value = "";
//	form.Quote_2_YearsOfCover.value = "";
//	form.singlejoint_2(0).checked=true;
//	goSingle(2);
//	}
//	
//	if(i == 3)
//	{
//	var myElement = document.getElementById("qThree");
//	myElement.style.display = "none"; // hides the layer
//	form.Quote_3_CoverAmount.value = "";
//	form.Quote_3_YearsOfCover.value = "";
//	form.singlejoint_3(0).checked=true;
//	goSingle(3);
//	}

//	if(i == 4)
//	{
//	var myElement = document.getElementById("qFour");
//	myElement.style.display = "none"; // hides the layer
//	form.Quote_4_CoverAmount.value = "";
//	form.Quote_4_YearsOfCover.value = "";
//	form.singlejoint_4(0).checked=true;
//	goSingle(4);
//	}
//	var myShowNew = document.getElementById("ShowNewQuote");
//	myShowNew.style.display = ""; // hides the layer
//} 
