addPopup();
addEvent(window, 'load', initBooking, false);


var form = null;

var cnt_name = null;
var cnt_number = null;

var pu_street_num = null;
var pu_unit_num = null;

var pu_build_type_uh = null;
var pu_build_type_bus = null;
var pu_bus_name = null;
var pu_bn_holder = null;

var dest_build_type_uh = null;
var dest_build_type_bus = null;
var dest_bus_name = null;
var dest_bn_holder = null;

var pax_no_1_4 = null;
var pax_no_5_11 = null;
var sbmt_btn = null;

var c_type_any = null;
var c_type_wagon = null;
var n_vans_div = null;
var n_vans = null;

var pay_type = null;
var clt_acct_id = null;

var given_name = null;
var first_name = null;

var sbmt_btn = null;
var division_id = null;
var pay_type_holder = null;

var login_url = 'index.php?ca=cabsonline.login';
var timeout_handler = null;

function initBooking()
{
	form = id('booking_form');

	if(form != null) {			
		
		initLocality();
		initPUDateTime();
			
		cnt_name = id('booked_by');
		if (cnt_name == null) {
			cnt_name = id('contact_name');
		}
		cnt_number = id('contact_number');		
		
		pu_build_type_uh = id('pu_building_type_unit_house');
		pu_build_type_bus = id('pu_building_type_business');
		pu_bus_name = id('pu_business_name');
		pu_bn_holder = id('pu_business_name_holder');
		
		dest_build_type_uh = id('dest_building_type_unit_house');
		dest_build_type_bus = id('dest_building_type_business');
		dest_bus_name = id('dest_business_name');
		dest_bn_holder = id('dest_business_name_holder');
		
		i_holder = id('immed_holder');
		d_holder = id('date_holder');
		t_holder = id('time_holder');		
		
		pax_no_1_4 = id('pax_no_one_to_four');
		pax_no_5_11 = id('pax_no_five_to_eleven');
		sbmt_btn = id('submit_btn');
		
		c_type_any = id('car_type_any');
		c_type_wagon = id('car_type_wagon');
		n_vans_div = id('no_vans_div');
		n_vans = id('no_vans');	
		division_id = id('division_id');
		
		if (cnt_name != null){
			addEvent(cnt_name, 'blur' , doValidateNotBlank, false);	
		}
		addEvent(cnt_number, 'blur' , doValidatePhoneNumber, false);		
		addEvent(req_type_immed, 'click' , doRequestTypeChange, false);
		addEvent(req_type_later, 'click' , doRequestTypeChange, false);
		if (pu_street_num != null){
			addEvent(pu_street_num, 'blur' , doValidateNotBlank, false);	
		}
		if(pu_build_type_uh != null){
			addEvent(pu_build_type_uh, 'click' , doBuildingTypeChange, false);
			addEvent(pu_build_type_bus, 'click' , doBuildingTypeChange, false);
		}
		if(dest_build_type_uh != null){
			addEvent(dest_build_type_uh, 'click' , doBuildingTypeChange, false);
			addEvent(dest_build_type_bus, 'click' , doBuildingTypeChange, false);
		}
		if (pax_no_1_4.type != 'hidden'){
			addEvent(pax_no_1_4, 'click' , doPaxNoClicked, false);
			addEvent(pax_no_5_11, 'click' , doPaxNoClicked, false);
		}
		if (c_type_any != null){
			addEvent(c_type_any, 'click' , doCarTypeClicked, false);
			addEvent(c_type_wagon, 'click' , doCarTypeClicked, false);
		}
		if (division_id != null){
			addEvent(division_id, 'change' , doReloadDivision, false);
		}
		
		addEvent(sbmt_btn, 'click' , doSubmit, false);		
	
		if (pax_no_1_4.type != 'hidden'){
			pax_no_1_4.focus();
		}		
	}
}

function doBuildingTypeChange(e)
{
	var field = window.event ? window.event.srcElement : e ? e.target : null;
	if (field == pu_build_type_bus || field == pu_build_type_uh) {
		if (pu_build_type_bus.checked){
			pu_bn_holder.style.display = "block";
		} else {
			pu_bn_holder.style.display = "none";
			pu_bus_name.value = '';
		}
	} else {
		if (dest_build_type_bus.checked){
			dest_bn_holder.style.display = "block";
		} else {
			dest_bn_holder.style.display = "none";
			dest_bus_name.value = '';
		}
	}
	if (divpop != null && divpop.style.visibility == 'visible'){
		resizePopup(30);
	}
}

function formFieldsEnabled(isEnabled)
{
	elts = form.elements;
	for (var i = 0; i < elts.length; i++){
		if (elts[i] != pax_no_1_4 && elts[i] != pax_no_5_11){
			form.elements[i].disabled = isEnabled ? '' : 'disabled';
		}		
	}
}

function doPaxNoClicked()
{
	var pax_no_err_div = id('pax_no_error');
	if (pax_no_1_4.checked){
		sbmt_btn.style.display = 'block';
		pax_no_err_div.style.display = 'none';
		
	} else {
		sbmt_btn.style.display = 'none';
		pax_no_err_div.style.display = 'block';
		
	}
	formFieldsEnabled(pax_no_1_4.checked);
}

function doCarTypeClicked()
{
	if (c_type_any.checked){
		n_vans_div.style.display = 'block';
	} else {
		n_vans.checked = false;
		n_vans_div.style.display = 'none';
	}
}

function callValidatePUDate(e)
{
	ajax_call('ca=ajax.date_is_past&date=' + pu_d.value + '&hrs=' + pu_h.value + '&mins=' + pu_m.value + '&ampm=' + pu_ap.value, 'validatePUDate');
}

function doSubmit()
{
	var pu_rmx = id('pu_remark_id');
	var dest_rmx = id('dest_remark_id');
	var pu_b_name = id('pu_business_name');
	var dest_b_name = id('dest_business_name');
	
	var pu_type_ap = id('pu_type_addr_point');		
	var dest_type_ap = id('dest_type_addr_point');
	var captcha_code = id('captcha_code');
	
	var message = '';
	var is_valid = true;
	if (cnt_name != null && cnt_name.type != 'hidden' && !validateNotBlank(cnt_name)){
		var cnt_name_err_div = id('contact_name_error');
		if (cnt_name_err_div == null){
			cnt_name_err_div = id('docket_number_error');			
		}
		if (cnt_name_err_div == null){
			cnt_name_err_div = id('booked_by_error');			
		}
		message += ("* " + cnt_name_err_div.firstChild.nextSibling.innerHTML + '\n');		
		is_valid = false;	
	} 
	var given_name = id('given_name');
	var last_name = id('last_name');
	if (given_name != null && !validateNotBlank(given_name)){
		var given_name_err_div = id('given_name_error');
		message += ("* " + given_name_err_div.firstChild.nextSibling.innerHTML + '\n');
		is_valid = false;	
	}
	if (last_name != null && !validateNotBlank(last_name)){
		var last_name_err_div = id('last_name_error');
		message += ("* " + last_name_err_div.firstChild.nextSibling.innerHTML + '\n');
		is_valid = false;	
	}
	
	if (given_name != null) {
		cnt_name.value = given_name.value + ' ' + last_name.value;
		var acct_name = id('account_name');		
		if(acct_name.selectedIndex == 0){
			var acct_name_error_div = id('account_name_error');
			message += ("* " + acct_name_error_div.firstChild.nextSibling.innerHTML + '\n');
			is_valid = false;	
		}
	}
	if (!validateNotBlank(cnt_number)){
		var cnt_number_err_div = id('contact_number_error');
		message += ("* " + cnt_number_err_div.firstChild.nextSibling.innerHTML + '\n');
		is_valid = false;
	} 
	if ((pu_type_ap == null || !pu_type_ap.checked)){
		if (pu_sub_id != null && !(parseInt(pu_sub_id.value) > 0)){
			var pu_sub_err_div = id('pu_suburb_id_error');
			pu_sub_err_div.style.display = 'block';
			message += ("* " + pu_sub_err_div.firstChild.nextSibling.innerHTML + '\n');
			is_valid = false;
		} 
		if (pu_street_id != null && pu_street_id.value == 0){
			var pu_street_err_div = id('pu_street_id_error');
			pu_street_err_div.style.display = 'block';
			message += ("* " + pu_street_err_div.firstChild.nextSibling.innerHTML + '\n');
			is_valid = false;	
		} 
		if (pu_unit_num != null && pu_unit_num.value.length){
			if (trim(pu_street_num.value).length == 0){
				var pu_str_number_err_div = id('pu_street_number_error');
				pu_str_number_err_div.style.display = 'block';
				message += ("* " + pu_str_number_err_div.firstChild.nextSibling.innerHTML + '\n');
				is_valid = false;
			}
			if (isNaN(pu_unit_num.value)){
				var pu_unit_number_err_div = id('pu_unit_number_error');
				pu_unit_number_err_div.style.display = 'block';
				message += ("* " + pu_unit_number_err_div.firstChild.nextSibling.innerHTML + '\n');
				is_valid = false;
			}
		}
	} else if (id('pu_address_point_id').value == 0){
		var pu_address_point_id_err_div = id('pu_address_point_id_error');
		pu_address_point_id_err_div.style.display = 'block';
		message += ("* " + pu_address_point_id_err_div.firstChild.nextSibling.innerHTML + '\n');
		is_valid = false;
	}
	
	
	if ((dest_type_ap == null || !dest_type_ap.checked)){
		if (dest_sub_id != null && !(parseInt(dest_sub_id.value) > 0)){
			var dest_sub_err_div = id('dest_suburb_id_error');
			dest_sub_err_div.style.display = 'block';
			message += ("* " + dest_sub_err_div.firstChild.nextSibling.innerHTML + '\n');
			is_valid = false;
		} 
	} else if (id('dest_address_point_id').value == 0){
		var dest_address_point_id_err_div = id('dest_address_point_id_error');
		dest_address_point_id_err_div.style.display = 'block';
		message += ("* " + dest_address_point_id_err_div.firstChild.nextSibling.innerHTML + '\n');
		is_valid = false;
	}
	
	if(pay_type != null && clt_acct_id != null){
		if(clt_acct_id.value == 0 && pay_type.value == 0){
			message += ("* Please select payment type\n");
			is_valid = false;
		}
	}
	
	if(captcha_code != null && captcha_code.value.length == 0){
		message += ("* Please enter security code\n");
		is_valid = false;
	}

	if (!is_valid){		
		message = "Please correct the following errors: \n\n" + message;
		alert(message);
		return false;
	} else {
		//var pu_street_num = id('pu_street_number');
		//var pu_unit_num = id('pu_unit_number');
		
		message = 'Please confirm your booking details as follows:\n\n';
		if (cnt_name != null){
			message += 'Contact Name: ' + cnt_name.value + '\n';
		} else {
			message += ('Contact(s): Multiple' + '\n');
		}
		message += 'Contact Number: ' + cnt_number.value + '\n';
		if (pu_type_ap != null && pu_type_ap.checked){
			var pu_ap_id = id('pu_address_point_id');
			message += ('Pickup: ' + pu_ap_id.options[pu_ap_id.selectedIndex].text + '\n');
		} else {
			if (pu_sub_id != null){
				message += ('Pickup: ' + (pu_unit_num.value.length ? (pu_unit_num.value + ' / ') : '') + (pu_street_num.value.length ? (pu_street_num.value + ' ') : '') + pu_street_name.value + ' ' + pu_sub_id.options[pu_sub_id.selectedIndex].text + '\n');
			} else {
				message += ('Pickup(s): Multiple' + '\n');
			}
			if (pu_build_type_bus != null){
				message += (pu_build_type_bus.checked && pu_b_name.value.length > 0? 'Pickup Business Name: ' + pu_b_name.value + '\n' : '');
			}
		}
		
		if (dest_type_ap != null && dest_type_ap.checked){
			var dest_ap_id = id('dest_address_point_id');
			message += ('Destination: ' + dest_ap_id.options[dest_ap_id.selectedIndex].text + '\n');
		} else {			
			if (dest_sub_id != null){
				message += ('Destination: ' + dest_sub_id.options[dest_sub_id.selectedIndex].text + '\n');
			} else {
				message += ('Destination(s): Multiple' + '\n');
			}
			if (dest_build_type_bus != null){
				message += (dest_build_type_bus.checked && dest_b_name.value.length > 0? 'Destination Business Name: ' + dest_b_name.value + '\n' : '');
			}
		}
		if (c_type_any != null){
			message += (
				('Car Type: ' + (c_type_any.checked ? 'No Preference' : 'Wagon') + '\n') +
				(n_vans.checked ? 'No Vans: Yes\n' : '')
			);
		}
		
		var pu_rmk_txt = id('pu_remark_text');		
		if (pu_rmx != null){
			pu_rmk_txt.value = "";
			pu_rmk_txt.value = pu_rmx.options[pu_rmx.selectedIndex].text;
			message += (pu_rmx.value > 0 ? 'Driver Notes: ' + pu_rmx.options[pu_rmx.selectedIndex].text + '\n' :'');
		}
		var dest_rmk_txt = id('dest_remark_text');		
		if (dest_rmk_txt != null){
			dest_rmk_txt.value = "";
			dest_rmk_txt.value = dest_rmx.options[dest_rmx.selectedIndex].text;
			message += (dest_rmx.value > 0 ? 'Driver Notes: ' + dest_rmx.options[dest_rmx.selectedIndex].text + '\n' :'');
		}
		message += (
			'Date & Time: ' + (req_type_immed.checked ? 'ASAP\n' : pu_d.options[pu_d.selectedIndex].text + ' at ' + pu_h.options[pu_h.selectedIndex].text + ':' + pu_m.options[pu_m.selectedIndex].text + ':' + pu_ap.options[pu_ap.selectedIndex].text)
		);
			
		if (confirm(message)){
			resizePopup(0);
			// Show popup
			showProcessingPopupMessage('Booking your cab, please wait...');	
			form.submit();
		}
	}	
}

function notOnAccountClicked()
{
	var chk_box = id('not_on_account');
	var acc_name_holder = id('account_name_holder');
	var acc_name = id('account_name');
	var invoice_to_holder = id('invoice_to_holder');
	if (chk_box.checked){
		acc_name.value = '';
		acc_name_holder.style.display = 'none';
		if (pay_type_holder != null){
			pay_type_holder.style.display = 'block';
		}
		if (invoice_to_holder != null){
			invoice_to_holder.style.display = 'none';
		}
	} else {
		acc_name_holder.style.display = 'block';
		if (pay_type_holder != null){
			pay_type_holder.style.display = 'none';
		}
		if (invoice_to_holder != null){
			invoice_to_holder.style.display = 'block';
		}
	}
	if (divpop != null && divpop.style.visibility == 'visible'){
		resizePopup(30);
	}
}

function doReloadDivision()
{
	var urlString = location.href.split('?');
	var queryString = urlString[1].split('&');
	var ca = queryString[0].split('=')[1];
	form.action = 'index.php?ca=' + ca;
	form.ca.value = ca;
	form.submit();
}


