
function input_validation(strValidation)
{

     //var arrFields, strField, strValidateModule, strClientError, arrField, booError, arrChildren, arrMessage;

     

     booError = false;

     strClientError = "";

     

     arrFields = strValidation.split("|");

     strClientError = "There were the following problems processing your enquiry:<br/><br/>\n\n";

     //document.write(arrFields.length);

     

     for (i = 0 ; i <= arrFields.length-1; i++)

     {

     

     arrField = "";

     arrField = arrFields[i].split(":");

         

     

         

             switch (arrField[1])

             {

         

         case "required":

         

            

            if (document.getElementById(arrField[0]).value.length == 0)

            {

                strNewMessage = "* The " + arrField[2] + " is required<br/>\n";

                if (strClientError.indexOf(strNewMessage) < 0)

                        {

                            strClientError = strClientError + strNewMessage; 

                        }

                

                booError = true;

                //alert("I set to true here" + i);

            }

         break;

         

         case "needs_char"      :

         

         

            

            if (document.getElementById(arrField[0]).value.indexOf(arrField[2]) == -1)

            {

                strNewMessage = "* The " + arrField[3] + " is incorrect<br/>\n";

                if (strClientError.indexOf(strNewMessage) < 0)

                        {

                            strClientError = strClientError + strNewMessage;

                        }

                        

                booError = true;

                //alert("I set to true here" + i);

            }

            break;

         

         

         case "is_selected"      :

         

         

            

            if (document.getElementById(arrField[0]).selectedIndex == -1 || document.getElementById(arrField[0]).selectedIndex == 0)

            {

                strNewMessage = "* The " + arrField[2] + " is incorrect<br/>\n";

                if (strClientError.indexOf(strNewMessage) < 0)

                        {

                            strClientError = strClientError + strNewMessage;   

                        }

                

                booError = true;

                //alert("I set to true here" + i);

            }

            break;

            

            

         

         case "length"      :

         

         

            

            if (document.getElementById(arrField[0]).value.length < arrField[2])

            {

                strNewMessage = "* The " + arrField[3] + " is incorrect<br/>\n";

                if (strClientError.indexOf(strNewMessage) < 0)

                        {

                            strClientError = strClientError + strNewMessage;

                        }

                

                booError = true;

                //alert("I set to true here" + i);

            }

            break;

            

            

         

         case "is_checked"      :

         

         

            

            if (document.getElementById(arrField[0]).checked == false)

            {

                strNewMessage = "* The " + arrField[2] + " has not been selected<br/>\n";

                if (strClientError.indexOf(strNewMessage) < 0)

                        {

                            strClientError = strClientError + strNewMessage;

                        }

                booError = true;

                //alert("I set to true here" + i);

            }

            break;

            

         case "agreed"          :

         

         

            

            if (document.getElementById(arrField[0]).checked == false)

            {

                strNewMessage = "* The " + arrField[2] + " Have not been agreed to<br/>\n";

                if (strClientError.indexOf(strNewMessage) < 0)

                        {

                            strClientError = strClientError + strNewMessage;

                        }

                

                booError = true;

                //alert("I set to true here" + i);

            }

            break;

         

         case "missing_child"   :

                 

            arrChildren    =   arrField[2].split(",");

            arrMessage     =   arrField[3].split(",");

         

                if (document.getElementById(arrField[0]).checked == true)

            {

            

                for ( j = 0; j < arrChildren.length ; j++)

                {

                    if ( document.getElementById(arrChildren[j]).value == 0 )

                    {

                    

                        strNewMessage = "* The " + arrMessage[j] + " is required<br/>\n";

                        if (strClientError.indexOf(strNewMessage) < 0)

                        {

                            strClientError = strClientError + strNewMessage;

                        }

                        

                        

                        booError = true;

                        //alert("I set to true here" + i);

                    }

                }

            

                

            }

            break;

         

         

         case "match"           :

         

         if (document.getElementById(arrField[0]).value != document.getElementById(arrField[2]).value)

         {

         

            strNewMessage = arrField[3] + "* Fields do not match <br/>\n";

            if (strClientError.indexOf(strNewMessage) < 0)

            {

            strClientError = strClientError + strNewMessage;

            }booError = true;

         

         }  

         

         break;

         

         

         case "CreditCheck"    :

         

            strCardResult = CheckCC(arrField[0], arrField[2]);

         

            if (strCardResult != "SUCCESS")

            {

            

                strNewMessage = "* " + strCardResult + "<br/>\n";

                if (strClientError.indexOf(strNewMessage) < 0)

                {

                strClientError = strClientError + strNewMessage;

                

                strClientError += "* If your card is refused and your information is correct please call us on 0870 499 0488<br/>\n";

                

                }booError = true;

            

            }

         

         

         break;
        
        case 'email' :
                
                if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,6})+$/.test(document.getElementById(arrField[0]).value))
                {
                } else {
                        
                        strClientError = strClientError + '* Sorry, your email address appears invalid<br />';
                        
                        booError = true;
                        
                }

         

         

         default:
		break;

             }

     }

     

     if (booError == true)
     {

     document.getElementById('errorPanel').style.display    = 'block';
     document.getElementById('errorContents').innerHTML     = strClientError;

     return false;

     } else {

     document.getElementById('errorPanel').style.display    = 'none';
     

     if (document.getElementById('loadingPanel') != null)
     {

        document.getElementById('loadingPanel').style.display    = 'block';

     }

     //lockButton('confirm_order', 'LOCK');  

     return true;

     } 

}

function close_open()
{
        
        document.getElementById("step_one").style.display = 'none';
        document.getElementById("step_two").style.display = 'none';
        document.getElementById("step_three").style.display = 'none';
        document.getElementById("step_four").style.display = 'none';
        
}

function openTab(open)
{
        div1 = document.getElementById("step_one");
        div2 = document.getElementById("step_two");
        div3 = document.getElementById("step_three");
        div4 = document.getElementById("step_four");
        
        valid1 = document.getElementById("fieldsToValidateOne").value;
        valid2 = document.getElementById("fieldsToValidateTwo").value;
        valid3 = document.getElementById("fieldsToValidateThree").value;
        
        if(open == div1.id)
        {
                
                close_open();
                div1.style.display = 'block';
                document.getElementById("headOne").style.color = '#4F4F4F';
                document.getElementById("headOne").style.background = '#CCCCCC';
                return;
        
        } else if(open == div2.id) {
                
                if(input_validation(valid1) && document.getElementById("eyeexam_booking_1st_date").value!='Click the calendar icon...')
                {
                        close_open();
                        div2.style.display = 'block';
                }
                return;
        
        } else if(open == div3.id){
                
                if(input_validation(valid1) && input_validation(valid2))
                {
                        close_open();
                        div3.style.display = 'block';
                }
                return;
        
        } else if(open == div4.id){
                
                if(input_validation(valid1) && input_validation(valid2) && input_validation(valid3))
                {
                        close_open();
                        div4.style.display = 'block';
                }        
                return;
        
        }
        
}

/*

Simple Image Trail script- By JavaScriptKit.com

Visit http://www.javascriptkit.com for this script and more

This notice must stay intact

*/



var offsetfrommouse=[5,10]; //image x,y offsets from cursor position in pixels. Enter 0,0 for no offset
var displayduration=0; //duration in seconds image should remain visible. 0 for always.
var currentimageheight = 60;	// maximum image size.



if (document.getElementById || document.all){

	document.write('<div id="trailimageid">');

	document.write('</div>');

}



function gettrailobj(){

if (document.getElementById)

return document.getElementById("trailimageid").style

else if (document.all)

return document.all.trailimagid.style

}



function gettrailobjnostyle(){

if (document.getElementById)

return document.getElementById("trailimageid")

else if (document.all)

return document.all.trailimagid

}


function truebody(){

return (!window.opera && document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body

}



function showtrail(imagename){



	document.onmousemove=followmouse;

	newHTML = imagename;



	gettrailobjnostyle().innerHTML = newHTML;

	

	gettrailobj().visibility="visible";



}





function hidetrail(){

	gettrailobj().visibility="hidden"

	document.onmousemove=""

	gettrailobj().left="-500px"



}



function followmouse(e){



	var xcoord=offsetfrommouse[0]

	var ycoord=offsetfrommouse[1]



	var docwidth=document.all? truebody().scrollLeft+truebody().clientWidth : pageXOffset+window.innerWidth-15

	var docheight=document.all? Math.min(truebody().scrollHeight, truebody().clientHeight) : Math.min(window.innerHeight)



	//if (document.all){

	//	gettrailobjnostyle().innerHTML = 'A = ' + truebody().scrollHeight + '<br>B = ' + truebody().clientHeight;

	//} else {

	//	gettrailobjnostyle().innerHTML = 'C = ' + document.body.offsetHeight + '<br>D = ' + window.innerHeight;

	//}



	if (typeof e != "undefined"){

		if (docwidth - e.pageX < 210){ 

			xcoord = e.pageX - xcoord - 250 - offsetfrommouse[0]; // Move to the left side of the cursor

		} else {

			xcoord += e.pageX;

		}

		if (docheight - e.pageY < (currentimageheight + 110)){

			ycoord += e.pageY - Math.max(0,(110 + currentimageheight + e.pageY - docheight - truebody().scrollTop)) + offsetfrommouse[0];

		} else {

			ycoord += e.pageY + offsetfrommouse[1];

		}



	} else if (typeof window.event != "undefined"){

		if (docwidth - event.clientX < 380){

			xcoord = event.clientX + truebody().scrollLeft - xcoord - 250 - offsetfrommouse[0]; // Move to the left side of the cursor

		} else {

			xcoord += truebody().scrollLeft+event.clientX

		}

		if (docheight - event.clientY < (currentimageheight + 110)){

			ycoord += event.clientY + truebody().scrollTop - Math.max(0,(110 + currentimageheight + event.clientY - docheight)) + offsetfrommouse[0];

		} else {

			ycoord += truebody().scrollTop + event.clientY;

		}

	}



	var docwidth=document.all? truebody().scrollLeft+truebody().clientWidth : pageXOffset+window.innerWidth-15

	var docheight=document.all? Math.max(truebody().scrollHeight, truebody().clientHeight) : Math.max(document.body.offsetHeight, window.innerHeight)

		if(ycoord < 0) { ycoord = ycoord*-1; }

	gettrailobj().left=xcoord+"px"

	gettrailobj().top=ycoord+"px"

}



function stepOne()
{
        
        if(input_validation(document.getElementById('fieldsToValidateOne').value))
        {
                
                if(document.getElementById("eyeexam_booking_1st_date").value!='Click the calendar icon...')
                {
                    div2.style.display = 'block';
                    div1.style.display = 'none';
                    document.getElementById("headTwo").style.background = '#CCCCCC';
                    //document.getElementById("headOne").style.background = '#EFEFEF';
                    document.getElementById("headTwo").style.color = '#4F4F4F';
                    //document.getElementById("headOne").style.color = '#CCCCCC';
                    //dsHistory.addFunction(function() { openTab('step_two'); });
                } else {
                    alert('Please make a date selection before proceeding.');
                }
                
        }
        
}

function stepTwo()
{
        
        if(input_validation(document.getElementById('fieldsToValidateTwo').value))
        {
                
                div3.style.display = 'block';
                div2.style.display = 'none';
                document.getElementById("headThree").style.background = '#CCCCCC';
                //document.getElementById("headTwo").style.background = '#EFEFEF';
                document.getElementById("headThree").style.color = '#4F4F4F';
                //document.getElementById("headTwo").style.color = '#CCCCCC';
                //dsHistory.addFunction(function() { openTab('step_three'); });
                
        }
        
}

function stepThree()
{
        if(!$("eyeexam_booking_digital").checked && !$("eyeexam_booking_eyeexam").checked && !$("eyeexam_booking_lensfitting").checked && !$("eyeexam_booking_lenscheckup").checked)
        {
            document.getElementById('errorPanel').style.display    = 'block';
            document.getElementById('errorContents').innerHTML     = '* Please select an appointment type';
        } else {
            if(input_validation(document.getElementById('fieldsToValidateThree').value))
            {
                    
                    div4.style.display = 'block';
                    div3.style.display = 'none';
                    document.getElementById("headFour").style.background = '#CCCCCC';
                    //document.getElementById("headThree").style.background = '#EFEFEF';
                    document.getElementById("headFour").style.color = '#4F4F4F';
                    //document.getElementById("headThree").style.color = '#CCCCCC';
                    //dsHistory.addFunction(function() { openTab('step_four'); });
                    
            }
        }
}

$was_checked = true;
function checkStore($ref)
{
    $enhanced_stores = new Array('40','39','38','37','36','35','34','33','32','31','30','29','28','27','26','25','24','23','22','21','20','19','18','17','16','15','14','13','12','11','10','9','8','7','6','5','4','3','2','1','41','42','43','46','47','48','49','50','51','52','53','54','55','56','57','58','59','60','61','62','63','64','65','66','67','68','69','70','71','72','73','74','75','76','77','78','79','80','81','82','83','84','85','86','87','88','89','90','91','92','93','94','95','96','97','98','99','100','101','102','103','104','105','106','107','108','109','210','214','213','184','224','190','221','226','167','227','229','234','233','232','238','305','260','207','245','263','312','196','110','111','112','113','114','115','116','117','118','119','120','121','122','123','125','126','127','128','129','130','131','132','133','134','135','136','137','138','139','140','141','142','143','144','145','146','147','148','149','150','151','152','153','154','155','156','157','158','159','160','162','163','164','165','166','168','169','170','171','172','173','174','175','176','177','178','179','180','181','182','183','185','186','187','189','191','192','193','194','195','197','198','45','208','209','211','216','212','218','215','217','219','220','225','222','223','230','228','240','239','235','237','243','236','244','270','246','249','258','290','251','252','256','291','298','303','299','315','201','203','231','307','124','302','279','317','306');
    if($enhanced_stores.indexOf($ref)==-1)
    {
        if(document.getElementById("eyeexam_booking_digital").checked)
        {
            document.getElementById("eyeexam_booking_digital").checked = false;
            document.getElementById("eyeexam_booking_digital").disabled = true;
            document.getElementById("eyeexam_booking_eyeexam").checked = true;
            document.getElementById("enhanced-option-invalid").style.display = 'block';
            $was_checked = true;
        } else {
            document.getElementById("eyeexam_booking_digital").disabled = true;
            $was_checked = false;
        }
    } else {
        if(document.getElementById("eyeexam_booking_digital").disabled)
        {
            document.getElementById("enhanced-option-invalid").style.display = 'none';
            document.getElementById("eyeexam_booking_digital").disabled = false;
            if($was_checked)
            {
                document.getElementById("eyeexam_booking_digital").checked = true;
                document.getElementById("eyeexam_booking_eyeexam").checked = false;
            }
        }
    }
    
}

var list_postcode = function (postcode)
{
    ajaxbox.open ('/checkout/ajax/address_select.php?postcode=' + postcode);
}

var set_address = function (postkey)
{
   // Look up details from postkey
    new Ajax.Request
    (
        '/checkout/ajax/get_address.php',
        {
            method: 'get',
            parameters: { postkey : postkey },
            onSuccess: function (transport)
            {	
                // Show the fields
                $('addressfields').show ();
                
                // Check for errors
                if (transport.responseXML.getElementsByTagName ('error')[0])
                {
                    alert (transport.responseXML.getElementsByTagName ('error')[0].firstChild.nodeValue);
                }
                else
                {                    
                    if(transport.responseXML.getElementsByTagName ('property')[0].firstChild)
                    {
                        if(transport.responseXML.getElementsByTagName ('property')[0].firstChild.nodeValue!=' ')
                        {
                            $('address1').value     =    transport.responseXML.getElementsByTagName ('property')[0].firstChild.nodeValue;
                            if(transport.responseXML.getElementsByTagName ('street')[0].firstChild)
                            {
                                $('address2').value     =    transport.responseXML.getElementsByTagName ('street')[0].firstChild.nodeValue;
                            }
                        } else {
                            $('address1').value     =    transport.responseXML.getElementsByTagName ('street')[0].firstChild.nodeValue;
                        }
                    } else if(transport.responseXML.getElementsByTagName ('street')[0].firstChild) {
                        $('address1').value     =    transport.responseXML.getElementsByTagName ('street')[0].firstChild.nodeValue;
                    }
                    if(transport.responseXML.getElementsByTagName ('town')[0].firstChild.nodeValue!='')
                    {
                        $('city').value         =     transport.responseXML.getElementsByTagName ('town')[0].firstChild.nodeValue;
                    }
                    if(transport.responseXML.getElementsByTagName ('postcode')[0].firstChild.nodeValue!='')
                    {
                        $('postcode').value     =     transport.responseXML.getElementsByTagName ('postcode')[0].firstChild.nodeValue;
                    }
                }
                
                // Close the AJAXBox popup
                ajaxbox.end ();
            }
        }
    );
    
}