function popup(url,name,w,h) {
  newWindow = window.open (url, name, 'resizable=yes,scrollbars=yes,width='+w+',height='+h);
  newWindow.focus();
}

function formatCurrency(num) {
    num = num.toString().replace(/\$|\,/g,'');
    if(isNaN(num))
	num = "0";
    sign = (num == (num = Math.abs(num)));
    num = Math.floor(num*100+0.50000000001);
    cents = num%100;
    num = Math.floor(num/100).toString();
    if(cents<10)
	cents = "0" + cents;
    for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
	num = num.substring(0,num.length-(4*i+3))+','+
	    num.substring(num.length-(4*i+3));
    return (((sign)?'':'-') + num + '.' + cents);
}

function getElementsById(sId)
{
    var outArray = new Array();
    if(typeof(sId)!='string' || !sId)
        {
	    return outArray;
        };
    
    if(document.evaluate)
        {
	    var xpathString = "//*[@id='" + sId.toString() + "']"
                var xpathResult = document.evaluate(xpathString, document, null, 0, null);
	    while ((outArray[outArray.length] = xpathResult.iterateNext())) { }
	    outArray.pop();
        }
    else if(document.all)
        {
	    
	    for(var i=0,j=document.all[sId].length;i<j;i+=1){
                outArray[i] =  document.all[sId][i];}
	    
        }else if(document.getElementsByTagName)
        {
	    
	    var aEl = document.getElementsByTagName( '*' );
	    for(var i=0,j=aEl.length;i<j;i+=1){
		
		if(aEl[i].id == sId )
		    {
			outArray.push(aEl[i]);
		    };
	    };
	    
        };
    
    return outArray;
}

function newImage(arg) {
    if (document.images) {
	rslt = new Image();
	rslt.src = arg;
	return rslt;
    }
}

function changeImages() {
    if (document.images && (preloadFlag == true)) {
	for (var i=0; i<changeImages.arguments.length; i+=2) {
	    document[changeImages.arguments[i]].src = changeImages.arguments[i+1];
	}
    }
}

var preloadFlag = false;
function preloadImages() {
    if (document.images) {
	move_a_piano_04_move_a_piano_11_over = newImage("images/move-a-piano_04-move-a-pian.gif");
	move_a_piano_04_move_a_piano_10_over = newImage("images/move-a-piano_04-move-a-p-07.gif");
	move_a_piano_04_move_a_piano_08_over = newImage("images/move-a-piano_04-move-a-p-08.gif");
	move_a_piano_04_move_a_piano_06_over = newImage("images/move-a-piano_04-move-a-p-09.gif");
	move_a_piano_04_move_a_piano_03_over = newImage("images/move-a-piano_04-move-a-p-10.gif");
	preloadFlag = true;
    }
}

function copycontact(source, dest) {
    var sourcefields = getElementsById(source);
    var destfields = getElementsById(dest);
    
    for (var i=0; i<sourcefields.length; i++) {
	destfields[i].value = sourcefields[i].value;
    }
    
    updatecustomers();
}

function displaysize() {
    var type = document.getElementById('piano_type_id').value;
    if (type == '1') {
	if (document.getElementById('short_haul').value == '1') {
	    document.getElementById('piano_prep').style.display = "none";
	} else {
	    document.getElementById('piano_prep').style.display = "";
	}
	document.getElementById('piano_size').style.display = "";
    } else {
	document.getElementById('piano_prep').style.display = "none";
	document.getElementById('piano_size').style.display = "none";
    }
}

function calculatebaseprice() {
    var piano_type = document.getElementById('piano_type_id').value;
    var piano_prep_price = 0;
    var piano_price = 0;

    if (document.getElementById('short_haul').value == '1') {
	var base_price = parseFloat(document.getElementById('short_base').value);
	var grand_1 = parseFloat(document.getElementById('grand_1').value);
	var grand_2 = parseFloat(document.getElementById('grand_2').value);
	var grand_3 = parseFloat(document.getElementById('grand_3').value);
	var per_mile = parseFloat(document.getElementById('per_mile').value);
	var distance_price = parseFloat(document.getElementById('distance').value) * per_mile;
	var price = Math.round((parseFloat(document.getElementById('price['+piano_type+']').value) + distance_price)*100)/100;
	price += base_price;
    } else {
	var base_price = parseFloat(document.getElementById('long_base').value);
	var grand_1 = parseFloat(document.getElementById('grand_1_long').value);
	var grand_2 = parseFloat(document.getElementById('grand_2_long').value);
	var grand_3 = parseFloat(document.getElementById('grand_3_long').value);
	var price = parseFloat(document.getElementById('price_long['+piano_type+']').value);
	price += base_price;
    }

    piano_price = price;
    
    if (piano_type == '1') {
	var feet = document.getElementById('piano_feet').value * 12;
	var inches = document.getElementById('piano_inches').value * 1;
	var size = feet + inches;
	if (size <= 72) {
	    price = price + grand_1;
	} else if (size <= 89) {
	    price = price + grand_2;
	} else {
	    price = price + grand_3;
	}
	piano_price = price;
	var prepped = document.getElementById('piano_crated').value;
	if (prepped == 0 && document.getElementById('short_haul').value == '0') {
	    price = price + 120;
	    piano_prep_price = 120;
	}
    }
    if (piano_type == '2') {
	document.getElementById('scroll_player_row').style.display = '';
	if (document.getElementById('scroll_player').value == '1') {
	    if (document.getElementById('short_haul').value == '1') {
		price = price + 150;
		document.getElementById('scroll_price_line').innerHTML = '<i>$ 150.00</i>';
	    } else {
		price += 300;
		document.getElementById('scroll_price_line').innerHTML = '<i>$ 300.00</i>';		
	    }
	} else {
	    document.getElementById('scroll_price_line').innerHTML = '<i>$ 0.00</i>';
	}
    } else {
	document.getElementById('scroll_player_row').style.display = 'none';
    }
    document.getElementById('piano_type_line').innerHTML = '<i>$ '+formatCurrency(piano_price)+'</i>';
    document.getElementById('piano_prep_line').innerHTML = '<i>$ '+piano_prep_price+'.00</i>';

    price += parseFloat(document.getElementById('fuel_surcharge').value);
    
    document.getElementById('base_price').value = price;

    var price_text = '<b>$ '+formatCurrency(price)+'</b>';
    document.getElementById('base_price_text').innerHTML = price_text;
    calculatetotal();
}

function calculatesteps() {
    var steps_cost = 0;

    var step_cost = document.getElementById('step_cost').value;
    var turn_cost = document.getElementById('turn_cost').value;
    var min_steps = document.getElementById('min_steps').value;

    // Strip out non-numeric characters from the steps
    document.getElementById('pickup_steps').value = document.getElementById('pickup_steps').value.replace(/[^0-9]*/g, '');
    document.getElementById('delivery_steps').value = document.getElementById('delivery_steps').value.replace(/[^0-9]*/g, '');

    var pickup_steps = document.getElementById('pickup_steps').value * 1;
    if (pickup_steps >= 1) {
	document.getElementById('pickup_turns_row').style.display = "";
	document.getElementById('pickup_turns_line').innerHTML = '<i>$ '+document.getElementById('pickup_turns').value * turn_cost+'.00</i>';
	steps_cost += document.getElementById('pickup_turns').value * turn_cost;
	if (pickup_steps >= min_steps) {
	    steps_cost += pickup_steps * step_cost;
	    document.getElementById('pickup_steps_line').innerHTML = '<i>$ '+(pickup_steps*step_cost)+'.00</i>';	    
	} else {
	    document.getElementById('pickup_steps_line').innerHTML = '<i>$ 0.00</i>';
	}    
    } else {
	document.getElementById('pickup_turns_row').style.display = 'none';
	document.getElementById('pickup_steps_line').innerHTML = '<i>$ 0.00</i>';
    }
    var delivery_steps = document.getElementById('delivery_steps').value * 1;
    if (delivery_steps >= 1) {
	document.getElementById('delivery_turns_row').style.display = "";
	document.getElementById('delivery_turns_line').innerHTML = '<i>$ '+document.getElementById('delivery_turns').value * turn_cost+'.00</i>';
	steps_cost += document.getElementById('delivery_turns').value * turn_cost;
	if (delivery_steps >= min_steps) {
	    steps_cost += delivery_steps * step_cost;
	    document.getElementById('delivery_steps_line').innerHTML = '<i>$ '+(delivery_steps*step_cost)+'.00</i>';	    
	} else {
	    document.getElementById('delivery_steps_line').innerHTML = '<i>$ 0.00</i>';
	}    
    } else {
	document.getElementById('delivery_turns_row').style.display = 'none';
	document.getElementById('delivery_steps_line').innerHTML = '<i>$ 0.00</i>';
    }
    document.getElementById('steps_price').value = steps_cost;
    document.getElementById('steps_price_text').innerHTML = '<b>$ '+steps_cost+'.00</b>';
    calculatetotal();
}

function calculateinsurance() {
    document.getElementById('insurance_value').value = document.getElementById('insurance_value').value.replace(/[^0-9]*/g, '');
    if (document.getElementById('short_haul').value == '1') {
	var rate = 10;
    } else {
	var rate = 15;
    }
    if (document.getElementById('insurance_value').value > 5000) {
	var insurance_amount = parseInt(Math.ceil((document.getElementById('insurance_value').value - 4999)/1000)) * rate;
	document.getElementById('insurance_price').value = insurance_amount;
	document.getElementById('insurance_price_text').innerHTML = '<b>$ '+insurance_amount+'.00</b>';
    } else {
	document.getElementById('insurance_price').value = '0.00';
	document.getElementById('insurance_price_text').innerHTML = '<b>$ 0.00</b>';
    }
    calculatetotal();
}

function calculateoptions() {
    var option_price = 0;
    if (document.getElementById('short_haul').value == '0' && document.getElementById('climate_controlled').value == '1') {
	option_price += 1000;
	document.getElementById('climate_controlled_line').innerHTML = '<i>$ 1000.00</i>';
    } else {
	document.getElementById('climate_controlled_line').innerHTML = '<i>$ 0.00</i>';
    }
    if (document.getElementById('short_haul').value == '1' && document.getElementById('pickup_schedule').value != '') {
	option_price += 200;
	document.getElementById('pickup_schedule_line').innerHTML = '<i>$ 200.00</i>';
    } else {
	document.getElementById('pickup_schedule_line').innerHTML = '<i>$ 0.00</i>';
    }
    if (document.getElementById('rush').value == '1') {
	if (document.getElementById('short_haul').value == '1') {
	    option_price += 300;
	    document.getElementById('rush_line').innerHTML = '<i>$ 300.00</i>';
	} else {
	    var piano_type = document.getElementById('piano_type_id').value;
	    if (piano_type == '1') {
		var feet = document.getElementById('piano_feet').value * 12;
		var inches = document.getElementById('piano_inches').value * 1;
		var size = feet + inches;
		if (size >= 90) {
		    option_price += 700;
		    document.getElementById('rush_line').innerHTML = '<i>$ 700.00</i>';
		} else {
		    option_price += 400;
		    document.getElementById('rush_line').innerHTML = '<i>$ 400.00</i>';
		}
	    } else {
		option_price += 400;
		document.getElementById('rush_line').innerHTML = '<i>$ 400.00</i>';
	    }
	}
    } else {
	document.getElementById('rush_line').innerHTML = '<i>$ 0.00</i>';
    }
    if (document.getElementById('pickup_hardships').value == '1') {
	document.getElementById('pickup_hardships_line').innerHTML = '<i>$ 200.00</i>';
	option_price += 200;
	document.getElementById('pickup_hardship_list').style.display = '';
    } else {
	document.getElementById('pickup_hardships_line').innerHTML = '<i>$ 0.00</i>';
	document.getElementById('pickup_hardship_list').style.display = 'none';
    }	

    if (document.getElementById('delivery_hardships').value == '1') {
	document.getElementById('delivery_hardships_line').innerHTML = '<i>$ 200.00</i>';
	option_price += 200;
	document.getElementById('delivery_hardship_list').style.display = '';
    } else {
	document.getElementById('delivery_hardships_line').innerHTML = '<i>$ 0.00</i>';
	document.getElementById('delivery_hardship_list').style.display = 'none';
    }	

    document.getElementById('options_price').value = option_price;
    document.getElementById('options_price_text').innerHTML = '<b>$ '+option_price + '.00</b>';
    calculatetotal();
}

function calculatetotal() {
    document.getElementById('total_estimate_text').innerHTML = '<b> $'+ formatCurrency(
	parseFloat(document.getElementById('base_price').value) +
	parseFloat(document.getElementById('steps_price').value) +
	parseFloat(document.getElementById('insurance_price').value) +
	parseFloat(document.getElementById('options_price').value)) +
	'</b>';
}

function createRequestObject() {
    var ro;
    var browser = navigator.appName;
    if(browser == "Microsoft Internet Explorer"){
        ro = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
        ro = new XMLHttpRequest();
    }
    return ro;
}

var http = createRequestObject();

function updatecustomers() {
    var url = 'update_customers.php?';
    var billing = getElementsById('billing');
    var pickup = getElementsById('pickup');
    var delivery = getElementsById('delivery');
    for (var i=0; i<billing.length; i++) {
	url = url+escape(billing[i].name)+"="+escape(billing[i].value)+'&';
	url = url+escape(pickup[i].name)+"="+escape(pickup[i].value)+'&';
	url = url+escape(delivery[i].name)+"="+escape(delivery[i].value)+'&';
    }
    http.open('get', url);
    http.onreadystatechange = handleResponse;
    http.send(null);
}

function handleResponse() {
    if (http.readyState == 4) {
	var reply = http.responseText.split("|");
	response = reply[0];
	short_base = reply[1];

	// Apply any changes to the short_base value
	document.getElementById('short_base').value = short_base;
	
	if (response > 300 || response == -1) {
	    // Long haul move
	    document.getElementById('short_haul').value=0;
	    document.getElementById('long_text').style.display = 'inline';
	    document.getElementById('long_rush').style.display = 'inline';
	    document.getElementById('local_rush').style.display = 'none';
	    document.getElementById('short_text').style.display = 'none';
	    document.getElementById('climate_row').style.display = '';
	    document.getElementById('sched_pickup').style.display = 'none';
	    if (response < 1000) {
		document.getElementById('fuel_surcharge_row').style.display = '';
		document.getElementById('fuel_surcharge').value = '75';
		document.getElementById('fuel_surcharge_line').innerHTML = '<i>$ 75.00</i>';
	    } else {
		document.getElementById('fuel_surcharge_row').style.display = '';
		document.getElementById('fuel_surcharge').value = '100';
		document.getElementById('fuel_surcharge_line').innerHTML = '<i>$ 100.00</i>';
	    }
	    document.getElementById('mileage_disclaimer').style.display = 'none';
	    if (document.getElementById('piano_type_id').value == '1') {
		document.getElementById('piano_prep').style.display = '';
	    }
	} else {
	    // Short haul move
	    document.getElementById('fuel_surcharge_row').style.display = 'none';
	    document.getElementById('fuel_surcharge').value = '0';
	    document.getElementById('distance').value = response;
	    document.getElementById('long_rush').style.display = 'none';
	    document.getElementById('local_rush').style.display = 'inline';
	    document.getElementById('short_haul').value=1;
	    document.getElementById('long_text').style.display = 'none';
	    document.getElementById('short_text').style.display = 'inline';
	    document.getElementById('climate_row').style.display = 'none';
	    document.getElementById('piano_prep').style.display = 'none';
	    document.getElementById('mileage_disclaimer').style.display = '';
	    document.getElementById('sched_pickup').style.display = '';
	}

	if (response == -1) {
	    document.getElementById('nonstate_warning').style.display = 'inline';
	} else {
	    document.getElementById('nonstate_warning').style.display = 'none';
	}
	calculatebaseprice();
	calculatesteps();
	calculateinsurance();
	calculateoptions();
    }
}

function choose_piano_type(piano_type_id) {
    document.getElementById('piano_type_id').value = piano_type_id;
    displaysize();
    calculatebaseprice();
}

function show_calendar() {
    document.getElementById('calendar').style.display = 'inline';
}

function click_calendar(value) {
    document.getElementById('pickup_schedule').value = value;
    document.getElementById('calendar').style.display = 'none';

    calculateoptions();
}

function load_month(direction) {
    var url="calendar.php?month="+direction;
    http.open('get', url);
    http.onreadystatechange = loadCalendar;
    http.send(null);
}

function loadCalendar() {
    if (http.readyState == 4) {
	var response = http.responseText;

	document.getElementById('calendar').innerHTML = response;
    }
}

function show_credit_card_form() {
    document.getElementById('credit_card_row').style.display = '';
    document.getElementById('paypal_row').style.display = 'none';
}

function show_paypal_form() {
    document.getElementById('credit_card_row').style.display = 'none';
    document.getElementById('paypal_row').style.display = '';
}
