window.addEvent('domready', function() {
    
	Cufon.replace('#content h1, #content h2, #content h3');
    Cufon.replace('.topslogan h4, legend, .likeLegend');
    Cufon.replace('a.button_gray, a.button_blue, a.buttonBig_gray, a.buttonBig_blue', {hover: true, textShadow: '1px 1px #222222'});
    //Cufon.replace('.topmenu li:not(.active) a', {hover: true, textShadow: '1px 1px #222222'});
    //Cufon.replace('.topmenu li.active a', {textShadow: '1px 1px #eeeeee'});	
	
    $$('input.DatePicker').DatePicker({
    	yearRange: 1
		});
    $$('input.overtext').each( function(e){ new OverText(e) } );
    
    bodySpinner = new Spinner();
    clearUser();
});

var _base = 'assets/snippets/qcar/';
var user = '';

function clearUser(){
  user = new Hash({
			username:'',
			fullname:'',
			email:'',
			id:'',
			mobilephone:'',
			phone:'',
			zip:'',
			state:'',
			firstname:'',
			surname:'',
			title:'',
			company:'',
			address1:'',
			address2:'',
			suburb:'',
			payment:'',
			traveller_title:'',
		 	traveller_firstname: '',
			traveller_surname: '',
			traveller_mobilephone: 	''
	});
}

function toggleMemberNotMember(){	
	if(user.id) $$('.onlyNotMember').each( function(e){ e.hide(); } );
	else $$('.onlyMember').each( function(e){ e.hide(); } );	
}

function CreateBookmarkLink() { 
	var title = document.title;
	var url = location.href;  
	if (window.sidebar) { 
		// Mozilla Firefox Bookmark		
		window.sidebar.addPanel(title, url,"");	
		} 
	else if( window.external ) { 
		// IE Favorite		
		window.external.AddFavorite(url, title); 
	}	
	else if(window.opera && window.print) { 
		// Opera Hotlist		
		return true; 
	} 
}


/*  Processing login/logout on booking page
 *
 */
var pw;
var un;
function doLogin(loginaction) {

    var spinnerMessage = 'Wait please....';
    
    if(loginaction == 'login' || loginaction == 'loginhp') {
        pw = $('login_password').value;
        un = $('login_username').value;
        spinnerMessage = 'Login in progress...';
        var pars = Hash.toQueryString({
            q: _base + 'ajaxLogin.php',
            loginaction: loginaction,
            password: $('login_password').value,
            username: $('login_username').value
            //rememberme: ... not used
        });
    }
    else if(loginaction == 'loginapp') //login straight after application
    {
        spinnerMessage = 'Login in progress...';
        var pars = Hash.toQueryString({
            q: _base + 'ajaxLogin.php',
            loginaction: loginaction,
            password: $('app_password').value,
            username: $('app_username').value
        });
    }
    else if(loginaction == 'logout') 
    {
        spinnerMessage = 'Logout in progress... You will be redirected to the home page.';
        var pars = Hash.toQueryString({
            q: _base + 'ajaxLogin.php',
            loginaction: loginaction
        });
    }
    else if (loginaction == 'forgotpsswd')
    {
        spinnerMessage = 'Password reset in progress...';
        var pars = Hash.toQueryString({
            q: _base + 'ajaxLogin.php',
            loginaction: loginaction,
            txtwebemail: $('login_txtwebemail').value
        });        
    }
    else 
    {
        alert('Not allowed login action.');
        return false;
    }
    
    //clear message box
    clearMessageBox('login_message');

    new Request.JSON({
        url: 'index-ajax.php',
        method: 'post',
        noCache: true,
        data: pars,
        useSpinner: true,
        spinnerTarget: 'body',
        spinnerOptions: { message: spinnerMessage },
        onComplete: function (re, text) {

            if ($type(re) != 'object') {
                alert('Ajax Error: ' + text);
            }
            else if (re.error) {
                if ($('login_message')) {
                    $('login_message').set('html', re.error); //show instructions what to do
                    $('login_message').set('class', 'message-error');

                }
                else alert(re.error);
            }
            else {
                if (re.loginaction == 'login') {

                    //global users data
                    user = re.user;

                    $('topuser').set('html', re.topuser_html);
                    $('loginBox').hide();
                    $('bk_section_contact').hide();
                    //$('bk_traveller_radio').show();
                    $('account_payment_authorised').show();

                    if (re.user.auth) {
                        //$('bk_payment_account').removeProperty('disabled');
                        $('account_payment_authorised').set('class', 'auth1');
                        $('account_payment_authorised').set('html', re.user.authLabel);
                    }
                    else {
                        //$('bk_payment_account').addProperty('disabled');	
                    }

                    //hide menu Account Application id=3
                    //$('doc_3').hide();				

                    //populate passenger details
                    changeTraveller('main');

                    //set details in booking form
                    if (!$('bk_contactemail').value) {
                        setContactDetailsSection();
                    }

                    //as this is happening in step 3 update Summary 
                    doBooking('step3');

                }
                else if (re.loginaction == 'loginhp') {
                
                 function getCookie(c_name) {
                        var i, x, y, ARRcookies = document.cookie.split(";");
                        for (i = 0; i < ARRcookies.length; i++) {
                            x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
                            y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
                            x = x.replace(/^\s+|\s+$/g, "");
                            if (x == c_name) {
                                return unescape(y);
                            }
                        }
                    }

                    function setCookie(c_name, value, exdays) {
                        var exdate = new Date();
                        exdate.setDate(exdate.getDate() + exdays);
                        var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString());
                        document.cookie = c_name + "=" + c_value;
                    }
                  
                    (function () {
                    	var ckb = document.getElementById('rememberCookie').checked;
                    	if(ckb == true){
                        var autoLoggin = getCookie("autoLoggin");
                        if (autoLoggin != null && autoLoggin != "") {
                            // cookie exsists
                            //console.log('create exsists');
                        }
                        else {
                           autoLoggin = pw+"|"+un; 
                            if (autoLoggin != null && autoLoggin != "") {
                                setCookie("autoLoggin", autoLoggin, 60);
                                //cookie does not exsist
                                //console.log('create cookie');
                            }
                        }
                       }else{
					   
					   function clearCookie(name){
							document.cookie = name + "=; expires=" + new Date;
						};

						clearCookie("autoLoggin");
					   }
                    })();



                    //NEW: lets refresh homepage
                    location.href = "index.html";

                    //global users data
                    /*
                    user = re.user;
					
                    $('topuser').set('html', re.topuser_html);
                    $('logout_html').set('html', re.logout_html);
                    $('WebLoginLayer3').show();
                    $('loginBox').dispose();            
                    */

                    //hide menu Account Application id=3
                    //$('doc_3').hide();			

                }
                else if (re.loginaction == 'loginapp') {

                    //NEW: coming directly after account application
                    location.href = "member.html?app=1";

                }
                else if (re.loginaction == 'logout') {
                    //Mediabox.open('#mb_logout', '', '300 50');
                    //setTimeout( function() { window.location = "index.html" }, 3000 );
                    clearUser();
                    location.href = "index.html";
                }
                else if (re.loginaction == 'forgotpsswd') {
                    webLoginShowForm(1); //back to login from
                    $('login_message').set('html', re.resetinfo_html); //show instructions what to do
                    $('login_message').set('class', 'message-notice');
                }
            }
        }
    }).send();

}

function changeTraveller(trType){
     if(trType == 'main')
     {
     	$('bk_traveller_main').checked = true;
     	$('bk_traveller_new').checked = false;
     	
        $('bk_passengerfirstname').value = user.traveller_firstname;
        $('bk_passengerfirstname').setProperty('disabled','disabled');
        $('bk_passengersurname').value = user.traveller_surname;
        $('bk_passengersurname').setProperty('disabled','disabled');
        $('bk_passengermobile').value = user.traveller_mobilephone;
        $('bk_passengermobile').setProperty('disabled','disabled');         
        
        for(var i = 0; i < $('bk_passengertitle').options.length; i++){        
      
            if( $('bk_passengertitle').options[i].value == user.traveller_title ){                
                $('bk_passengertitle').selectedIndex = i;
            }            
        }
        $('bk_passengertitle').setProperty('disabled','disabled');
               
     }
     else
     {
   		$('bk_traveller_main').checked = false;
     	$('bk_traveller_new').checked = true;
     	
        $('bk_passengerfirstname').removeProperty('disabled');
        $('bk_passengersurname').removeProperty('disabled');
        $('bk_passengermobile').removeProperty('disabled');
        $('bk_passengertitle').removeProperty('disabled'); 
     }
}


function clearMessageBox(boxId){    
    if($(boxId)){
        $(boxId).set('html', '').set('class', '');
    }
}

function getElementById(id){
    var o, d=document;
    if (d.layers) {o=d.layers[id];if(o) o.style=o};
    if (!o && d.getElementById) o=d.getElementById(id);
    if (!o && d.all) o = d.all[id];
    return o;
}

function webLoginShowForm(i){
    var a = getElementById('WebLoginLayer0');
    var b = getElementById('WebLoginLayer2');
    if(i==1 && a && b) {
        a.style.display="block";
        b.style.display="none";
        //document.forms['loginreminder'].txtpwdrem.value = 0;
    }
    else if(i==2 && a && b) {
        a.style.display="none";
        b.style.display="block";    
        //document.forms['loginreminder'].txtpwdrem.value = 1;
    }
    clearMessageBox('login_message');
}
      
function webLoginCheckRemember () {
    if(document.loginfrm.rememberme.value==1) {
        document.loginfrm.rememberme.value=0;    
    } else {
        document.loginfrm.rememberme.value=1;
    }
}


/*
* Booking form functions
*/

//Delete parent of this object
function deleteStopsSuburb(el){
     
     if ( $('stops_container').getChildren().length <= 2) return;     
	 
	 //for IE use $(el) although el is already object and FF works as supposed to
     $(el).getParent().dispose();
     //renumber
     $('stops_container').getChildren().each( function(e,i){
        if(i>0){
            e.setProperty('title', i);
            e.getFirst().getFirst('span.num').set('html',i);           
        }        
     }); 
     
     OverText.update(); //update overtext 
}

//Add suburb section take from hidden template and append to container
function addStopsSuburb(){   
    var lastNum = $('stops_container').getLast().getProperty('title');
    var lastSuburb = $('stops_container').getLast().getFirst('input').value;
    if(!lastSuburb) return;
    
    lastNum++;
    var newsuburb = $('stops_suburb_tpl').clone().inject('stops_container').setProperty('title', lastNum).setStyle('display','');
    newsuburb.getFirst().getFirst('span.num').set('html',lastNum);
    
    OverText.update(); //update overtext       
}

function paymentSwitch(){
	
	var payType = getRadioCheckedValue( document.id('bkForm'), 'bk_payment');
	if(payType == 'account' && !user.id)
	{ 
		document.id('loginBox').show(); //show login form
		//uncheck this radio
		document.id('bkForm').bk_payment[0].checked = false;
		
	}
	else
	{
		document.id('loginBox').hide();
		if(user.auth != 1) document.id('bkForm').bk_payment[0].checked = false;
		
	}
	
	if(payType == 'credit card') document.id('cc_message').show();
	else document.id('cc_message').hide();
	
	if(payType == 'account' && user.id){
		document.id('account_payment_authorised').show();
	}
	if(payType !== 'account'){
		document.id('account_payment_authorised').hide();
	}
	OverText.update(); //update overtext   
}


//Change form on service type change
function changeServiceType(sType){       
    
    
    switch(sType)
    {
    case '1': //airport
    case '2': //general
	$$('label.booking .required').show('inline');
		$('mand').show('inline');
        $('desttime_toggle').hide();
        $('bk_section_stops').show();
        $('bk_section_booking_default').show();
        $('bk_section_booking_other').hide();
        
        $('bk_section_pickuppoint').show();
        $('bk_section_dest').show();
        $('bk_submit_default').show();
        $('bk_submit_other').hide();
        //$('bk_section_passenger').show();
		$('bk_section_contact').hide();     

		
        break;
        
    case '3': //hourly
	$$('label.booking .required').show('inline');
		$('mand').show('inline');
        $('bk_section_stops').show();
        $('bk_section_booking_default').show();    
        $('bk_section_pickuppoint').show();
        $('bk_section_dest').show();
        $('bk_submit_default').show();
        
        $('desttime_toggle').show();        //dropp-off time
        $('bk_section_stops').hide(); //no stops
        $('bk_section_booking_other').hide();
        $('bk_submit_other').hide();
        //$('bk_section_passenger').hide();
		$('bk_section_contact').hide();

        
        break;
    case '4': //tour
	$$('label.booking .required').hide();
		$('mand').hide();
        $('bk_section_booking_default').hide();
        $('bk_section_booking_other').show();
        $('other-text').hide();				
        $('tour-text').show();				
        //$('bk_section_passenger').hide();
        $('bk_section_contact').show();
        
        
        $('bk_section_pickuppoint').hide();
        $('bk_section_stops').hide();
        $('bk_section_dest').hide();
        $('bk_submit_default').hide();
        $('bk_submit_other').show();
        
        //fill in contact details if member
        if(user.id && !$('bk_contactemail').value){				
			setContactDetailsSection();						
		} 
		
		break;
	
    case '5': //other
	$$('label.booking .required').hide();
	
		$('mand').hide();
        $('bk_section_booking_default').hide();
        $('bk_section_booking_other').show();
        $('tour-text').hide();				
        $('other-text').show();				
        //$('bk_section_passenger').hide();
        $('bk_section_contact').show();
        
        
        $('bk_section_pickuppoint').hide();
        $('bk_section_stops').hide();
        $('bk_section_dest').hide();
        $('bk_submit_default').hide();
        $('bk_submit_other').show();
        
        //fill in contact details if member
        if(user.id && !$('bk_contactemail').value){				
			setContactDetailsSection();						
		} 

        break;

    default: //error
        alert('Not supported type of service - '+sType+'!');
    }
    
    OverText.update(); //update overtext
   
}


function changePickUpFrom(from){   
    if(from == 'airport'){
        $('bk_pickupfrom_other').hide();
        $('bk_pickupfrom_airport').show();
		
		//and auto select arrival time from pickup time
		var hr = document.id('bkForm').bk_pickuphr.value;
		var mi = document.id('bkForm').bk_pickupmin.value;
		
		for(var i = 0; i < $('bk_pickupairport_arrivaltime_hr').options.length; i++){ 			      
			if( $('bk_pickupairport_arrivaltime_hr').options[i].value == hr ) $('bk_pickupairport_arrivaltime_hr').selectedIndex = i;
		}
		for(var i = 0; i < $('bk_pickupairport_arrivaltime_min').options.length; i++){ 			      
			if( $('bk_pickupairport_arrivaltime_min').options[i].value == mi ) $('bk_pickupairport_arrivaltime_min').selectedIndex = i;
		}
		var ampm = getRadioCheckedValue( document.id('bkForm'), 'bk_pickupampm');
		if(ampm == 'PM') {
			$('bk_pickupairport_arrivaltime_pm').checked = true;
			$('bk_pickupairport_arrivaltime_am').checked = false;
		}
		else{
			$('bk_pickupairport_arrivaltime_pm').checked = false;
			$('bk_pickupairport_arrivaltime_am').checked = true;			
		}
		
    }
    else{
        $('bk_pickupfrom_other').show();
        $('bk_pickupfrom_airport').hide();       
    }
    OverText.update(); //update overtext
}

function changeDestFrom(from){   
    if(from == 'airport'){
        $('bk_destfrom_other').hide();
        $('bk_destfrom_airport').show();       
    }
    else{
        $('bk_destfrom_other').show();
        $('bk_destfrom_airport').hide();       
    }
    OverText.update(); //update overtext
}

function customCheckContactPhone(el){		
	
	if ( !$('bk_contactphone').value && !$('bk_contactmobile').value ) {

		el.errors.push("Provide either Phone or Mobile number please."); 
		return false;
	} else {
		
		return true;
	}	
}
function customCheckContactMobile(el){	

	if ( !$('bk_contactphone').value && !$('bk_contactmobile').value ) {
		el.errors.push("Provide Phone or Mobile number please."); 
		return false;
	} else {
		return true;
	}	
}


//process form bkForm
function doBooking(step) {
    var bkForm = $('bkForm');
    var bk_servicetype = bkForm.bk_servicetype.value;
    var isValidForm = false;
    var isValid = false;

    //set step in form
    bkForm.step.value = step; 
    
    //lert('Validated = '+isValid);
    switch(bk_servicetype)
    {
			case '1': //airport
			case '2': //general
			case '3': //Hourly rate
        //go to step2 - payment + summary
        if(step == 'step2'  || step == 'quote' ) {
        	//validation
					isValidForm = true;
					isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_pickupdate);

					/*bkFormCheck.Validator.add('bk_stopssuburb', {
						errorMsg: function(element, props) {
							return 'This field is required';
						},
						test: function(element,props) {
							if( getRadioCheckedValue(bkForm, 'bk_stops') == 'yes' && element.value.length == 0) {
								alert('validation false');
								return false;
							}
							return true;
						}
					});*/

					//additional stops
					if( getRadioCheckedValue(bkForm, 'bk_stops') == 'yes' ) {
						// validate all suburb fields of class bk_stopssuburb
						var stops_list = $$('.bk_stopssuburb');
						for  (i=1; i < stops_list.length; i++) {
							if (isValidForm && (stops_list[i].value.length == 0 || stops_list[i].value == 'Suburb only')) {
								isValidForm = false;
								stops_list[i].style.borderColor = '#FF0000';
							}
							else {
								stops_list[i].style.borderColor = '#DDDDDD';
							}
						}
					}

					//pickup
					if( getRadioCheckedValue(bkForm, 'bk_pickupfrom') == 'airport' ) {
						//isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_pickupairport_arrivaltime);
						isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_pickupairport_flightnum);
					}
					else {
						if( !bkForm.bk_pickupdesc.value )
						{
							isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_pickupstreetnum);
						}
						isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_pickupstreetname);
						isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_pickupsuburb);
					}
					//drpo off destination
					if( getRadioCheckedValue(bkForm, 'bk_destto') == 'other' ){
						//isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_deststreetnum);
						//isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_deststreetname);
						isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_destsuburb);
					}

					$('agree_container').hide();

					if(isValidForm)
					{
						$('loginBox').hide();
						$('bk_section_payment').hide();
						$('bk_step_2_h').show();
						$('bk_step_3_h').hide();
						$('bk_section_contact').show();
						$('bk_section_booking').hide();
						$('bk_section_pickuppoint').hide();
						//$('bk_section_payment').show();
						$('booking_summary2_wrap').hide();

						if(!user.id) {
							$('hear_container').show();
						}

						$('bk_step2_booking_next').show();
						$('bk_step3_booking_submit').hide();

						$('bk_step_1').hide();
						$('bk_step_2').show();

						$('bk_step1_step').hide();
	          $('bk_step2_step').show();
	          $('bk_step3_step').hide();
	            
	          if(!user.id) {
	          	$('bk_traveller_radio').hide();
							$('bk_passengerfirstname').removeAttribute('disabled');
							$('bk_passengersurname').removeAttribute('disabled');
							$('bk_passengermobile').removeAttribute('disabled');
							$('bk_passengertitle').removeAttribute('disabled');
						}
						else {
   					//set contact details section but just once - lets check email
							if( !$('bk_contactemail').value ){
								setContactDetailsSection();
							}
						}
	          if(step == 'quote')
						{
	            	$('bk_step2_quote_submit').show();
	            	$('bk_step2_booking_next').hide();
								$('bk_section_passenger').hide();
								$('bk_traveller_radio').hide()

								if(!user.id) {
									$('agree_container').show();
								}
						}
						else
						{
	            	$('bk_step2_quote_submit').hide();
	            	$('bk_step2_booking_next').show();
								$('bk_section_passenger').show();
								if(user.id) {
									$('bk_traveller_radio').show();
								}
						}
      	 } // end if (isValidForm)
       } // end step 2
       else if(step == 'step3') {
					isValidForm = true;
					if(!user.id) {
						isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_contactperson);
						//isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_contactemail);
						isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_contactmobile);
						//isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_contactphone);
						//isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_contactstreet);
						//isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_contactsuburb);
						//isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_contacpostcode);
					}
					else
					{
						//set payment by account as default if it is authorised -
						// changed - no selected as default
						//var payType = getRadioCheckedValue( document.id('bkForm'), 'bk_payment');
						//if(!payType && user.auth == 1) document.id('bkForm').bk_payment[0].checked = true;
						//if(user.auth != 1) document.id('bkForm').bk_payment[0].checked = false;
					}
			
					//check passenger data
					isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_passengerfirstname);
					isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_passengersurname);
					isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_passengermobile);

					if(isValidForm) {
						$('agree_container').show();
						$('bk_section_contact').hide();
						$('bk_section_passenger').hide();
						$('bk_traveller_radio').hide()
						$('bk_step1_step').hide();
						$('bk_step2_step').hide();
						$('bk_step3_step').show();
						$('bk_step_2_h').hide();
						$('bk_step_3_h').show();
						$('booking_summary2_wrap').show();
						$('bk_section_payment').show();
						$('bk_step2_booking_next').hide();
						$('bk_step3_booking_submit').show();
						$('hear_container').hide();

						if(!user.id){
							//$('login_or_details').hide();
							//$('loginBox').show();
							//$('login_or_payment').show();
							//$('account_payment_authorised').hide();
							//$('bk_payment_account').setProperty('disabled', 'disabled');
						}
						else {
								//$('account_payment_authorised').show();
								if(user.auth == 1){
										//$('bk_payment_account').removeProperty('disabled');
										$('account_payment_authorised').set('class', 'auth1');
										$('account_payment_authorised').set('html', user.authLabel);
								}
						}
				 } // end if (isValidForm)
  		}
			else if(step == 'step1') {
				//$('loginBox').hide();
				$('bk_step_2').hide();
				$('bk_step1_step').show();
				$('bk_step2_step').hide();
				$('bk_step3_step').hide();
				$('bk_step_1').show();
				$('bk_section_payment').hide();
				$('bk_section_contact').hide();
				$('bk_section_passenger').hide();
				$('bk_traveller_radio').hide();
				$('bk_section_booking').show();
				$('bk_section_pickuppoint').show();
				$('hear_container').hide();
				$('agree_container').hide();

				//scroll to top of page
				new Fx.Scroll($(document.body)).toTop();

				return;
			}
			else if(step == 'submit') {
				isValidForm = true;
				//only payment & conditions
				isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_payment_cc);
				isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_agree);
			}
			else if(step == 'quotesubmit') {
					isValidForm = true;
					if(!user.id) {
						isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_contactperson);
						//isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_contactemail);
						isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_contactmobile);
						//isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_contactphone);
						//isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_contactstreet);
						//isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_contactsuburb);
						//isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_contacpostcode);
						//isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_agree);
					}
			}
  		break;
	  case '4': //tour
  	case '5': //other
			//validate fileds:
			isValidForm = true;

			//isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_pickupdate);
			isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_detailsother);
			//if not logged in:
			if(!user.id){
					isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_contactperson);
					//isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_contactemail);
					isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_contactmobile);
		//isValidForm = (!isValidForm) ? false : bkFormCheck.manageError(bkForm.bk_contactphone);
			}
			break;
    default: //error
        alert('Not supported type of service - '+bk_servicetype+'!');
    }
    
    
    ///////////////////////////////////////////////////////////
    if(!isValidForm) {
        //scroll to error field
        bkFormCheck.focusOnError(bkFormCheck.firstError);
    } 
    else {
        //process booking
        var spinnerMessage = 'Request in progress....';
        
        new Request.JSON({
            url: 'index-ajax.php', 
            method: 'post',
            noCache: true, 
            data: bkForm,
            useSpinner: true,
            spinnerTarget: 'body', 
    				spinnerOptions: { message: spinnerMessage },
            onComplete: function(re, text) { 
                if ($type(re) != 'object') {
                	alert('Ajax Error: '+text);
                }
                else if(re.error) {
                    alert(re.error);
                }
                else if ( re.bk_servicetype == '1' || re.bk_servicetype == '2' || re.bk_servicetype == '3' ){
									//show summary in step 2 & quote
									if( step == 'step2' || step == 'quote') {
										$('booking_summary').set('html', re.summary_html);
									}
									//show summary in step3 - 2 summaries
									else if( step == 'step3') {
										$('booking_summary').set('html', re.summary_html);
										$('booking_summary2').set('html', re.summary2_html);
									}
               		//show last step is ok go to thank you page
               		else if(step == 'submit' || step == 'quotesubmit'){
               			location.href = re.success_url;               			
  								}
               }
               else if (re.bk_servicetype == '4' || re.bk_servicetype == '5') {
                  //all good - redirect                  
                  location.href = re.success_url;                  
               }
               else alert('Error service type');
            }
        }).send();
    } // end if else
    
    OverText.update(); //update overtext    
}

function setContactDetailsSection(){
	$('bk_contactcompany').value = user.company;
	$('bk_contactperson').value = user.titlename;
	$('bk_contactemail').value = user.email;
	$('bk_contactphone').value = user.phone;
	$('bk_contactmobile').value = user.mobilephone;
	$('bk_contactstreet').value = user.address1 + ' ' + user.address2;
	$('bk_contactsuburb').value = user.suburb;
	$('bk_contacpostcode').value = user.zip;
	for(var i = 0; i < $('bk_contactstate').options.length; i++){ 			      
	    if( $('bk_contactstate').options[i].value == user.state ){                
	        $('bk_contactstate').selectedIndex = i;
	    }            
	}
}

function contactusFormSubmit(){
	
	var valid = contactusFormCheck.validate();
	alert(valid);	
	
}

//custom validation for phone and mobile
function checkPhoneOrMobileApp(el){	
	
	if(el.value == '' && $('app_phone').value == '' && $('app_mobilephone').value == ''){
		el.errors.push("Provide either Phone or Mobile number please."); 
		return false;	
	}
	else if (el.value == ''){
		el.isOk = true;
		return true;	
	}
	
}

//custom validation for phone and mobile
function checkUsernameApp(el){	
	
	return true;	
}

//process Application Form
function doApplication(step) {

    var appForm = $('appForm');
    var isValidForm = false;
    var isValid = false;

    //set step in form
    appForm.step.value = step;     
    
    //lert('Validated = '+isValid);
    switch(step)
    {
   	case 'step1':
		$$('.app_step2').each( function(el){ el.hide(); });
		$$('.app_step1').each( function(el){ el.show(); });
		$('application_head').show();
		new Fx.Scroll($(document.body)).toTop();
		return;
   	break;
    case 'step2':       
	
    	//Validation
		isValidForm = true;
		
		//isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_title);
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_firstname); 		
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_surname);
		//isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_company);
		//isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_email);
		//isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_phone);
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_mobilephone);       
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_address1); 
		//isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_address2);
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_suburb);
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_zip);
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_state); 
		
		if(isValidForm)
		{
			//hide step1 / show step 2
			$$('.app_step1').each( function(el){ el.hide(); });
			$$('.app_step2').each( function(el){ el.show(); });
			$('application_head').hide();
			
			//fill summary
			$('appsum_titlename').set('html', appForm.app_title.value+'. '+appForm.app_firstname.value+' '+appForm.app_surname.value);
			$('appsum_company').set('html', appForm.app_company.value);
			//$('appsum_email').set('html', appForm.app_email.value);
			$('appsum_phone').set('html', appForm.app_phone.value);
			$('appsum_mobilephone').set('html', appForm.app_mobilephone.value);
			$('appsum_address').set('html', appForm.app_address1.value+' '+appForm.app_address2.value+' '+appForm.app_suburb.value+' '+appForm.app_state.value+' '+appForm.app_zip.value);
			
			//prepopulate traveller
			if(appForm.app_traveller_firstname.value == '' && appForm.app_traveller_surname.value == '' && appForm.app_traveller_mobilephone.value == ''){
				appForm.app_traveller_firstname.value = user.traveller_firstname;
				appForm.app_traveller_surname.value = user.traveller_surname;
				appForm.app_traveller_mobilephone.value = user.traveller_mobilephone;		
			}
			
            new Fx.Scroll($(document.body)).toTop();
			OverText.update(); //update overtext   
            return;
        } 
	break;
	case 'submit':       
	
		//NEW username = email
		appForm.app_username.value = appForm.app_email.value;
	
    	//Validation
		isValidForm = true;
		
		//isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_traveller_title); 		
		//isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_traveller_firstname);
		//isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_traveller_surname);
		//isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_traveller_mobilephone);
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_payment_cc);
		
		
		//isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_username); //we use only email now
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_email);
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_password);
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_password_confirm);
		
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_agree);
		
		if(isValidForm)
		{
			new Fx.Scroll($(document.body)).toTop();
			
	        var spinnerMessage = 'Application in progress....';
	        
	        new Request.JSON({
	            url: 'index-ajax.php', 
	            method: 'post',
	            noCache: true, 
	            data: appForm,
	            useSpinner: true,
	            spinnerTarget: 'body', 
	    		spinnerOptions: { message: spinnerMessage },         
	            onComplete: function(re, text) { 
	                
	                if ($type(re) != 'object') {
	                	alert('Ajax Error: '+text);
	                }
	                else if(re.error) {
	                    alert(re.error);
	                }
	                else if (re.user.id){
	                    //all good - redirect 
	                    //location.href = re.success_url;
	                    
	                    //login the user instead
	                    doLogin('loginapp');
	                    
						return;                  
	                }
	                else alert('Error');	 
	            }
	        }).send();
        } 
	break;	

	case 'update':       
		
		//NEW username = email
		appForm.app_username.value = appForm.app_email.value;
		
    	//Validation
		isValidForm = true;
		
		//isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_traveller_title); 		
		//isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_traveller_firstname);
		//isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_traveller_surname);
		//isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_traveller_mobilephone);
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_payment_cc);
		
		//isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_username);//it is the same as email now
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_email);
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_password);
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_password_confirm);
		
		//isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_title);
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_firstname); 		
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_surname);
		//isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_company);
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_phone);
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_mobilephone);       
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_address1); 
		//isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_address2);
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_suburb);
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_zip);
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_state); 				
		
		if(isValidForm)
		{
			new Fx.Scroll($(document.body)).toTop();
			
	        var spinnerMessage = 'Details update in progress....';
	        
	        new Request.JSON({
	            url: 'index-ajax.php', 
	            method: 'post',
	            noCache: true, 
	            data: appForm,
	            useSpinner: true,
	            spinnerTarget: 'body', 
	    		spinnerOptions: { message: spinnerMessage },         
	            onComplete: function(re, text) { 
	                
	                if ($type(re) != 'object') {
	                	alert('Ajax Error: '+text);
	                }
	                else if(re.error) {
	                    alert(re.error);
	                }
	                else if (re.user.id){
	                    //all good - redirect 
						//alert('ok');          
	                    location.href = re.success_url;
						return;                  
	                }
	                else alert('Error');	 
	            }
	        }).send();
        } 
	break;


    default: //error
        alert('Wrong step - '+step+'!');
        return;
    }
    
    
    ///////////////////////////////////////////////////////////    
    if(!isValidForm) {
        //scroll to error field
        appFormCheck.focusOnError(appFormCheck.firstError);
    }

}

//process Application Form
function doDriver(step) {

    var appForm = $('appForm');
    var isValidForm = false;
    var isValid = false;

    //set step in form
    appForm.step.value = step;     
    
    //lert('Validated = '+isValid);
    switch(step)
    {
   	case 'step1':
		$$('.app_step2').each( function(el){ el.hide(); });
		$$('.app_step1').each( function(el){ el.show(); });
		
		new Fx.Scroll($(document.body)).toTop();
		return;
   	break;
    case 'step2':       
	
    	//Validation
		isValidForm = true;
		
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_firstname); 		
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_surname);
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_email);
		//isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_phone);
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_mobilephone);       
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_address1); 
		//isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_address2);
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_suburb);
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_zip);
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_state); 
		
		if(isValidForm)
		{
			//hide step1 / show step 2
			$$('.app_step1').each( function(el){ el.hide(); });
			$$('.app_step2').each( function(el){ el.show(); });
			
            new Fx.Scroll($(document.body)).toTop();
            return;
        } 
	break;
	case 'submit':       
	
    	//Validation
		isValidForm = true;
		
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_license_number);
		isValidForm = (!isValidForm) ? false : appFormCheck.manageError(appForm.app_license_expiry);
		
		if(isValidForm)
		{
			new Fx.Scroll($(document.body)).toTop();
			
	        var spinnerMessage = 'Application in progress....';
	        
	        new Request.JSON({
	            url: 'index-ajax.php', 
	            method: 'post',
	            noCache: true, 
	            data: appForm,
	            useSpinner: true,
	            spinnerTarget: 'body', 
	    		spinnerOptions: { message: spinnerMessage },         
	            onComplete: function(re, text) { 
	                
	                if ($type(re) != 'object') {
	                	alert('Ajax Error: '+text);
	                }
	                else if(re.error) {
	                    alert(re.error);
	                }
	                else{
	                    //all good - redirect 
						//alert('ok');          
	                    location.href = re.success_url;
						return;                  
	                }

	            }
	        }).send();
        } 
	break;	

    default: //error
        alert('Wrong step - '+step+'!');
        return;
    }
    
    
    ///////////////////////////////////////////////////////////    
    if(!isValidForm) {
        //scroll to error field
        appFormCheck.focusOnError(appFormCheck.firstError);
    }
        
}


function printButton(btnText){
	if (window.print) { 
    	document.write('<div ><a href="#" class="button_gray"  style="float:right;" onclick="javascript:window.print(); return false;"><strong>'+btnText+'</strong></a></div>'); 
    }
}

function getRadioCheckedValue(docForm, radio_name) {
	
	var oRadio = docForm.elements[radio_name];	
	for(var i = 0; i < oRadio.length; i++) {	
		if(oRadio[i].checked) return (oRadio[i].value);
	}
	return '';
}

function removeFadeText(el, fadeText, classname){	
	if($(el).value == fadeText) $(el).value = '';
	$(el).removeClass(classname);	
}


