/*
 * GOING TO PUT ALL THE FORM VALIDATION IN THIS FILE
 * 
 */
////////////////////////////////////////////////////////////////////////////////////
/* GENERAL TEXT */

var gentext_yourname                = "Your Name";
var gentext_yourphone               = "Your Mobile No.";
var gentext_youremail               = "Your Email Address";
var gentext_yourquestion            = "Your Question";
var gentext_title                   = "Title";
var gentext_forename                = "Forename";
var gentext_surname                 = "Surname";
var gentext_address                 = "Address";
var gentext_town                    = "Town";
var gentext_postcode                = "Postcode";
var gentext_telephone               = "Mobile No.";
var gentext_email                   = "Email";
var gentext_employer                = "Employer";
var gentext_position                = "Position";
var gentext_clinic                  = "Clinic";
var gentext_apptime                 = "Preferred Appointment Time";
var gentext_appdate                 = "Preferred Appointment Date";

var gentext_location                = "Location";
var gentext_wherehearaboutus        = "Where did you hear about us?";
var gentext_whencallyou             = "When would you like us to call you?";
var gentext_enterpostcode           = "Please enter your postcode";
var gentext_enterthefollowing       = "Please enter the following:";
var gentext_entervalidemail         = "Please enter a valid email address";
var gentext_entervalidpostcode      = "Please enter a valid postcode";
var gentext_entervalidphone         = "Please enter a valid phone number";

var gentext_noOptionsEntered        = 'Please enter a town or postcode and select a search option:\n\n - Spectacles & contact lenses\n - Laser eye surgery\n - Intraocular lenses';


// Start of variables for the refer a friend
var gentext_refer_a_friend_referrer_email   = "Your Email";
var gentext_refer_a_friend_friends_email    = "Your friends email";
var gentext_refer_a_friend_comment          = "Message to your friend";
// End of variables for the refer a friend


//Start of variables for question and answer page
var gentext_q_fname     = "Forename";
var gentext_q_sname     = "Surname";
var gentext_q_title     = "Question Title";     
var gentext_q_greeting  = "Email Greeting";
var gentext_q_ending    = "Email Ending";   
var gentext_q_category  = "Question Category";
var gentext_q_type  = "Question Type";      
var gentext_question    = "Question";       
var gentext_answer      = "Answer"; 
var email_confirmation1 = "Do you want to send an email to the person who asked this question?";
var email_confirmation2 = "A reply has already been sent regarding this question. Are you sure you want to send another email?";

//End of variables for question and answer page


////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
//-----------------------------------------------------------------------------
// The modal window for the eye test form
//-----------------------------------------------------------------------------
function initModal( ) {
    if($('#appClinic').val()) {
        $('#store_' + $('#appClinic').val()).addClass('chosenstore');
    }          

    $( ".storeLink" ).live('click',storeClick);
}

function storeClick(event) {
    var storeid = ($(event.target).attr('id'));
    var idbits = storeid.split('_');
    $('#appClinic').val(idbits[1]);
    $('#appClinicLabel').val($(event.target).text());
    $.fancybox.close();
}

function closeModal( ) {
    if($('#appClinicLabel').val() !== '') {
	    $('#appClinicLaunch').text($('#appClinicLabel').val());
    }   
}
//-----------------------------------------------------------------------------
// Utility Functions
//-----------------------------------------------------------------------------

function trim(str) {
    return( (""+str).replace(/^\s*([\s\S]*\S+)\s*$|^\s*$/,'$1') );
}

function checkEmail(str) {
	  var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;  
	  return emailPattern.test(str);  
}

function checkPostcode( p ) {
    
    var postcodeRegEx = /^[A-Z]{1,2}[0-9]{1,2}[A-Z]? ?[0-9][A-Z]{2}$/i;
    return postcodeRegEx.test( p );
    
}

function checkPhoneNumber( p ) {
    
	var phoneRegEx;
    p = p.split(' ').join('');

    // does the number contain 18001 or 18002?
    /*
    if((p.indexOf("18001") === 0) || (p.indexOf("18002") === 0)) {
        phoneRegEx = /^[0-9]{16}$/i;
    } else {
        phoneRegEx = /^[0][0-9]{10}$/i;
    }
    */
    // new validation
    //info:        mobiles        deaf phones           inc. country code
    phoneRegEx = /^[0][0-9]{8,10}|(18001|18002)[0-9]{11}|00353[0-9]{7,9}$/i;
       
    return phoneRegEx.test( p );
    
}
//-----------------------------------------------------------------------------
// Laser Form Etc
//-----------------------------------------------------------------------------
function storeLocatorPuffCheck() {
    
    url =  'http://' + window.location.hostname + '/stores/';
    targ = document.getElementById('clinics');
    if(targ)
    {
      if(targ.options[targ.selectedIndex].value != '') {
          url = url + targ.options[targ.selectedIndex].value + '.html'; 
          window.location = url;
      }
    }
    else
    {
      window.location = '/';        
    }
}


function checkStoreLocatorForm() {
    // lets validate first
    isSpecsContacts = document.getElementById('isSpecsContacts');
    isLaser = document.getElementById('isLaser');
    isIOL = document.getElementById('isIOL');
    targ = document.getElementById('postcodeTown');
    
    if(targ.value == '' || (isSpecsContacts.checked == false && isLaser.checked == false && isIOL.checked == false))
    {
        alert(gentext_noOptionsEntered);
        return false;
    } 
    return true;
}

function enquiryFormCheck(form, formType) {
    with (form) {
        fields = new Array;         
        labels = new Array;
        if (formType == "laser") {          
            fields[0] = Title;          labels[0] = gentext_title;
            fields[1] = Forename;       labels[1] = gentext_forename;
            fields[2] = Surname;        labels[2] = gentext_surname;
            fields[3] = Address1;       labels[3] = gentext_address;
            fields[4] = Town;           labels[4] = gentext_town;
            fields[5] = Telno;          labels[5] = gentext_telephone;  
            fields[6] = Email;          labels[6] = gentext_email;
        }
        else if (formType == "eyeExam") {
            fields[0] = Title;          labels[0] = gentext_title;
            fields[1] = Forename;       labels[1] = gentext_forename;
            fields[2] = Surname;        labels[2] = gentext_surname;
            fields[3] = Address1;       labels[3] = gentext_address;
            fields[4] = Town;           labels[4] = gentext_town;
            fields[5] = UKDivision;     labels[5] = gentext_location;
            fields[6] = Telno;          labels[6] = gentext_telephone;  
            fields[7] = Email;          labels[7] = gentext_email;
        }       
        required = "";
        count = 0;                  
        for (i=0; i<fields.length; i++) {                           
            if (trim(fields[i].value).length < 1) {
                count++;                
                required += "\n- " + labels[i];
                if (count == 1)
                    first = fields[i];
            }
        }
                
        // Take into account the 18001 and 18002 numbers for txt relay service
        
        if (Telno.value.length > 0 && !checkPhoneNumber(Telno.value)) {
            count++;
            required += "\n- " + gentext_entervalidphone;
            if (count == 1) 
                first = Telno;
        }
        
        if (Email.value.length > 0 && !checkEmail(Email.value)) {
            count++;
            required += "\n- " + gentext_entervalidemail;
            if (count == 1) 
                first = Email;
        }   
                
        if (count == 0) {
            return true;
        }
        else {                          
            alert(gentext_enterthefollowing + required);
            first.focus();
        }   
        return false;
    }
}

function appointmentFormCheck(form, formType) {
    with (form) {
        fields = new Array;         
        labels = new Array;
         
        fields[0] = Title;          labels[0] = gentext_title;
        fields[1] = Forename;       labels[1] = gentext_forename;
        fields[2] = Surname;        labels[2] = gentext_surname;
        fields[3] = appClinic;      labels[3] = gentext_clinic;
        fields[4] = appDate;        labels[4] = gentext_appdate;
        fields[5] = appTime;        labels[5] = gentext_apptime;
        fields[6] = Telno;          labels[6] = gentext_telephone;   
        fields[7] = callback_time;  labels[7] = gentext_whencallyou;  
        
        required = "";
        count = 0;                  
        for (i=0; i<fields.length; i++) {                           
            if (trim(fields[i].value).length < 1) {
                count++;                
                required += "\n- " + labels[i];
                if (count == 1)
                    first = fields[i];
            }
        }
        if (Telno.value.length > 0 && !checkPhoneNumber(Telno.value)) {
            count++;
            required += "\n- " + gentext_entervalidphone;
            if (count == 1) 
                first = Telno;
        }       
                
        if (count == 0) {
            return true;
        }
        else {                          
            alert(gentext_enterthefollowing + required);
            first.focus();
        }   
        return false;
    }
}


        
function callBackCheck(form) {
    with (form) {
        fields = new Array;         
        labels = new Array;             
        fields[0] = callback_name;      labels[0] = gentext_yourname;
        fields[1] = callback_phone;     labels[1] = gentext_yourphone;
        fields[2] = callback_time;      labels[2] = gentext_whencallyou;        
        required = "";
        count = 0;                  
        for (i=0; i<fields.length; i++) {                           
            if (trim(fields[i].value).length < 1) {
                count++;                
                required += "\n- " + labels[i];
                if (count == 1)
                    first = fields[i];
            }
        }    
        if (callback_phone.value.length > 0 && !checkPhoneNumber(callback_phone.value)) {
            count++;
            required += "\n- " + gentext_entervalidphone;
        }       
        if (count == 0)             
            return true;
        else {                          
            alert(gentext_enterthefollowing + required);
            first.focus();
        }   
        return false;
    }
}       

function askQuestionCheck(form) {
    with (form) {
        fields = new Array;         
        labels = new Array;             
        fields[0] = question_name;      labels[0] = gentext_yourname;
        fields[1] = question_email;     labels[1] = gentext_youremail;
        fields[2] = question;           labels[2] = gentext_yourquestion;       
        required = "";
        count = 0;                  
        for (i=0; i<fields.length; i++) {                           
            if (trim(fields[i].value).length < 1) {
                count++;                
                required += "\n- " + labels[i];
                if (count == 1)
                    first = fields[i];
            }
        }                       
        if (count == 0) {
            if (checkEmail(question_email.value)) 
                return true;
            else {
                alert(gentext_entervalidemail);
                question_email.focus();
            }
        }
        else {                          
            alert(gentext_enterthefollowing + required);
            first.focus();
        }   
        return false;
    }
}

function contactFormCheck(form) {
    with (form) {
        fields = new Array;         
        labels = new Array;             
        fields[0] = question_name;      labels[0] = gentext_yourname;
        fields[1] = question_email;     labels[1] = gentext_youremail;
        fields[2] = question;           labels[2] = gentext_yourquestion;       
        required = "";
        count = 0;                  
        for (i=0; i<fields.length; i++) {                           
            if (trim(fields[i].value).length < 1) {
                count++;                
                required += "\n- " + labels[i];
                if (count == 1)
                    first = fields[i];
            }
        }                       
        if (count == 0) {
            if (checkEmail(question_email.value)) 
                return true;
            else {
                alert(gentext_entervalidemail);
                question_email.focus();
            }
        }
        else {                          
            alert(gentext_enterthefollowing + required);
            first.focus();
        }   
        return false;
    }
}

function moderatedQandACheck(form) {
    with (form) {
    	
        fields = new Array;         
        labels = new Array;
        fields[0] = question_name;      labels[0] = gentext_yourname;
        fields[1] = question_email;     labels[1] = gentext_youremail;
        fields[2] = question;           labels[2] = gentext_yourquestion; 
       
        required = "";
        count = 0;                  
        for (i=0; i<fields.length; i++) {                           
            if (trim(fields[i].value).length < 1) {
                count++;                
                required += "\n- " + labels[i];
                if (count == 1)
                    first = fields[i];
            }
        }                       
        if (count == 0) {
            if (checkEmail(question_email.value)) 
                return true;
            else {
                alert(gentext_entervalidemail);
                question_email.focus();
            }           
        }
        else {                          
            alert(gentext_enterthefollowing + required);
            first.focus();
        }   
        return false;
    }
}


////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
//-----------------------------------------------------------------------------
//The autocomplete
//-----------------------------------------------------------------------------
/* Autocomplete code for search form at top right on all pages */
$(document).ready(function(){
	
	$(function() {
		var cache = {},
			lastXhr;
		$( "#searchfield" ).autocomplete({
			minLength: 3,
			delay: 450,
			source: function( request, response ) {
				var term = request.term;
				if ( term in cache ) {
					response( cache[ term ] );
					return;
				}

				lastXhr = $.getJSON( "/inc/autocomplete/output.php", request, function( data, status, xhr ) {
					cache[ term ] = data;
					if ( xhr === lastXhr ) {
						response( data );
					}
				});
			}
		});
	});
});

