 // JavaScript Document

//Hide Wizard Pages first
document.write('<style type="text/css">');
document.write(".wizard_page {display: none;} .hide {display: none}");
document.write("#wizard_noscript {display: none;}");
document.write('</style>');

var w_pages;
var w_current_page;
var w_current_page_id;

var w_next_btn;
var w_back_btn;
var tickets;

function initWizard(){
	
	w_noscript = document.getElementById("wizard_noscript");
	w_noscript.style.display = "none";
	
	//Find all the wizard pages
	w_pages = getElementsBySelector(".wizard_page");
	
	//Set up next and back buttons
	w_next_btn = document.getElementById("wizard_next_button");
	w_back_btn = document.getElementById("wizard_back_button");
	
	w_next_btn.disabled = w_back_btn.disabled = true;
	
	w_next_btn.onclick = wizard_next;
	w_back_btn.onclick = wizard_back;
	
	wizard_show_page(0);
	
	
	//NZC Specific
	var region_field = document.getElementById("nzc_region");	
	var tickettype_field = document.getElementById("nzc_ticket_type");
	var weight_field = document.getElementById("nzc_weight");
	var length_field = document.getElementById("nzc_length");
	var height_field = document.getElementById("nzc_height");
	var width_field = document.getElementById("nzc_width");
	
	var rural = document.getElementById("rural_delivery");
	var saturday = document.getElementById("saturday_delivery");
	


	EventUtils.addEventListener(region_field,'change', check_region);
	EventUtils.addEventListener(tickettype_field,'change', validate_type);
	EventUtils.addEventListener(weight_field,'change', calculate_tickets);
	EventUtils.addEventListener(length_field,'change', calculate_tickets);
	EventUtils.addEventListener(height_field,'change', calculate_tickets);
	EventUtils.addEventListener(width_field,'change', calculate_tickets);

	EventUtils.addEventListener(rural,'click', special_services);
	EventUtils.addEventListener(saturday,'click', special_services);	
	
	}

function wizard_next(){
	// validation before going to last step

	if(w_current_page_id==1 ){
		 zeroValidation=true;
		if(!calculate_tickets()){
			return
		}
	}
	wizard_show_page(w_current_page_id + 1);
}

function wizard_back(){
	wizard_show_page(w_current_page_id - 1);
}

function wizard_show_page(page){
	
	if(page==0){
		document.getElementById("instructions").style.display="block"	
	}else{
		document.getElementById("instructions").style.display="none"	
	}
	/*** Maximum Tickets - Modified 14-01-2010 ***/
	if(tickets>5){
		alert("Your item dimensions appear to exceed our maximum limits.  Please contact our Customer Services team on 0800 800 841")
		
		return;
	}
	/*** end  ***/
	
	
	//Bounds check
	if(page >= w_pages.length || page < 0)
		return
		
	//Hide current page
	if(w_current_page != undefined)
		w_current_page.style.display = "none";
	
	//Show specified page
	w_current_page = w_pages[page];
	w_current_page_id = page;
	w_pages[page].style.display = "block";
	
	
	//Show/hide next/back buttons
	if(page == 0)
		w_back_btn.disabled = true;
	else
		w_back_btn.disabled = false;
		
	if(page == w_pages.length - 1)
		w_next_btn.disabled = true;
	else
		w_next_btn.disabled = false;
		
	var init_attribute = w_current_page.attributes["init"];
	
	if(w_current_page.init != undefined)
		eval(w_current_page.init);
	else if(init_attribute != undefined)
		eval(init_attribute.nodeValue);
}




//Wizard Page Init Functions
function page_1_init(){
	
	
	var pdf_btn = document.getElementById("nzc_show_region_pdf");
	var region = document.getElementById("nzc_region");	

	if(region.value < 0)
		pdf_btn.disabled = true;
	else
		pdf_btn.disabled = false;
		
		
	var ticketType = document.getElementById("nzc_ticket_type");
	if(ticketType.value < 0)
		w_next_btn.disabled = true;
		
}

function page_2_init(){
		showError=false;
		calculate_tickets();
		
}

function page_3_init(){
	calculate_tickets();		
}

// NZC Functions
function validate_type(){
	var type_field = 	document.getElementById("nzc_ticket_type");
	if(type_field.value < 0)
		w_next_btn.disabled = true;
	else
		w_next_btn.disabled = false;
}

function check_region(){

	var pdf_btn = document.getElementById("nzc_show_region_pdf");	
	var region = document.getElementById("nzc_region");
	if(region.value < 0){
		pdf_btn.disabled = true;
	}else{
		pdf_btn.disabled = false;
	}
		
}

function open_region_pdf(){
	var region_path = "/html/"	
	var region = document.getElementById("nzc_region");
	if(region.value .length > 3)
		window.open(region_path + region.value);
		
}

function special_services(){
	var el;
	if(window.event){
		el = window.event.srcElement;
	}
	else
		el = this;
		
	var rural = document.getElementById("rural_delivery");
	var saturday = document.getElementById("saturday_delivery");
	
	if(el == rural && el.checked)
		saturday.checked = false;
		
	if(el == saturday && el.checked)
		rural.checked = false;
	
}
var showError=true;
var zeroValidation=false;
function calculate_tickets(){
	
	
	var msg = "";
	
	var type_table_weight = new Array(	25, 15, 15, 5, 5, 5 ); //Kilograms per ticket
	var type_table_volume = new Array(	0.1, 0.025, 0.025, 0.025, 0.025, 0.025 ); //m3 per ticket
	var type_table_name = new Array( "Local Area", "Outer Area", "Shorthaul", "Longhaul", "Inter-Island", "Capital Link");
	
	//NZC Specific
	
	var type_field = 	document.getElementById("nzc_ticket_type");
	var type_display = 	document.getElementById("nzc_ticket_type_display");	
	var weight_field = 	document.getElementById("nzc_weight");
	var length_field = 	document.getElementById("nzc_length");
	var height_field = 	document.getElementById("nzc_height");
	var width_field = 	document.getElementById("nzc_width");
	
	var sat_del = document.getElementById("saturday_delivery");
	var rural_del = document.getElementById("rural_delivery");
	
	
	if(type_field.value == -1){
		w_next_btn.disabled = true;
		return;
	}
	
	var type = type_field.value;
	
	//Weight
	var weight = parse_number(weight_field.value);
	if(weight > 25){
		weight = 25;
		msg += "Maximum weight allowed is 25kg\n";
	}
	weight_field.value = weight + " kg";
	
	//Length
	var length = parse_number(length_field.value);
	if(length > 180){
		//length = 180;
		msg += "Maximum length allowed is 180cm\n";
	}
	length_field.value = length + " cm";
	
	//Height
	var height = parse_number(height_field.value);
	if(height > 180){
		//height = 180;
		msg += "Maximum height allowed is 180cm\n";
	}
	height_field.value = height + " cm";
	
	//Width
	var width = parse_number(width_field.value);
	
	
	if(width > 180){
		//width = 180;
		msg += "Maximum width allowed is 180cm\n";
	}
	
	if(zeroValidation){
		if(weight==0){
				msg += "Weight is required\n";
		}
		if(width==0){
				msg += "Width is required\n";
		}
		if(height==0){
				msg += "Height is required\n";
		}
		if(length==0){
				msg += "Length is required\n";
		}	
		if((length/100) * (height/100) * (width/100) >0.1){
			msg += "Your item exceeds our maximum volume of 0.1m3. Please contact your local branch on 0800 800 841";
		}
	zeroValidation=false;
	}
	
	width_field.value = width + " cm";
	
	
	var wt = type_table_weight[type];
	var vt = type_table_volume[type];
	var nt = type_table_name[type];
	
	type_display.innerHTML = nt;
	
	var l = length / 100;
	var h = height / 100;
	var w = width / 100;
	
	var volume = l * h * w;//Assumes values are in cms

	/*** modified by Yaron 4-7-2010 ***/
	
	volume=Math.ceil(volume*1000)/1000

	var weight_tickets = Math.ceil(weight / wt);
	var volume_tickets = Math.ceil(volume / vt);
	
	/*** modified by Yaron 14-01-2010 ***/
	//var tic...
	 tickets = Math.max(weight_tickets, volume_tickets);
	/*** end ***/
	
	
	//  if(!(tickets > 0 && tickets <100) ){
	//	w_next_btn.disabled = true;
	//	return;
	//	} 
	
	var add_services = document.getElementById("nzc_additional_services");

	var add_services_message = "n/a";
	var add_services_results_message = "";
	
	if(sat_del.checked){
		//tickets++;
		add_services_message = "Saturday Delivery = <strong>1 ticket</strong><br />";
		add_services_results_message = "<br /><strong>+ 1 Saturday Delivery Ticket</strong>";
	}
		
	if(rural_del.checked){
		//tickets++;
		add_services_message = "Rural Delivery = <strong>1 ticket</strong>";
		add_services_results_message = "<br /><strong>+ 1 Rural Delivery Ticket</strong>";		
	}

	add_services.innerHTML = add_services_message;
	
	var results = document.getElementById("nzc_results");
	var price_total= document.getElementById("nzc_price");
	var ticketType=document.getElementById("nzc_ticket_type").value;
	var weight_calculation = document.getElementById("nzc_weight_calculation");
	var volume_calculation = document.getElementById("nzc_volume_calculation");
	

	
	var weight_html = "<strong>" + weight + "kg</strong> @ " +  wt + "kg per ticket  = <strong>" + weight_tickets +" "+  (weight_tickets==1?"ticket":"tickets") +"</strong> ";
	weight_calculation.innerHTML = weight_html;
	
	var volume_html = 	length + "cm(l) x " +
	 					height + "cm(h) x " + 
						width + "cm(w) = <strong>" + 
						Math.round(volume*1000)/1000 + 
						"m<sup>3</sup></strong> <br />@ " + 
						vt + "m<sup>3</sup> per ticket =  <strong>" + 
						volume_tickets + " "+(volume_tickets==1?"ticket":"tickets")  + "</strong> ";
	volume_calculation.innerHTML = volume_html;
	
	
	var result_html = "<strong>" + tickets + " " + nt;
	if(tickets > 1)
		result_html += " Tickets</strong>";
	else
		result_html += " Ticket</strong>";
		
	results.innerHTML = result_html + add_services_results_message;
	


	totalPrice = getTicket(ticketType)*tickets;

	

	if(tickets==1){
			price_total.innerHTML=tickets+" ticket x  <strong>$</strong>"
	}else{
			price_total.innerHTML=tickets +" tickets  x   <strong>$</strong>"
	}
	
	price_total.innerHTML+="<b>"+setDecimal(getTicket(ticketType)+"") +"</b>"
	
	if(rural_del.checked){
				price_total.innerHTML+=" +<br />Rural Delivery Ticket: <b> $"+setDecimal(tickets_price.rural+"")+"</b>";
				totalPrice+=tickets_price.rural
	}
	if(sat_del.checked){
		price_total.innerHTML+=" +<br />Saturday Delivery Ticket: <b> $"+setDecimal(tickets_price.saturday+"")+"</b>";
		totalPrice+=tickets_price.saturday
	}
	price_total.innerHTML+="<br />Total Price = <b> $"+setDecimal(totalPrice+"")+"</b>";
	
	
	if(msg != "" && showError)
	{
		alert(msg);
		return false
	}
	showError=true;

	
	if(w_current_page_id == 2)
		return true;
	w_next_btn.disabled = false;
	
	// set price
	return true;

		
}

function setDecimal(str){
	/* updated 29-06-2010 */

	roundedNumnber=Math.round(str*10)/10
	newstr=roundedNumnber+"";
	
	if(newstr.indexOf(".")==-1){
		newstr = str+".00";
		return newstr;
	}
	var  dec=newstr.length-newstr.indexOf(".")-1
	if(dec==1){
		newstr = newstr+"0";
		return newstr;
	}
	
	return newstr;

}
function parse_number(v){
	var s = v.replace(/[^(0-9|\.)]/ig, '');
	if(s.length == 0)
		s = 0;
	return s;
}
	

EventUtils.addEventListener(window,'load',initWizard);
