// JavaScript Document
var pc_dsc = 0.00;
var price = 0.00;
var dsc = 0.00;


var pmap = {"1":{"1":9,"2":10,"3":11},"2":{"1":9,"2":10,"3":11},"3":{"1":9,"2":10,"3":11},"4":{"1":9,"2":10,"3":11},"5":{"1":9,"2":10,"3":11},"6":{"1":9,"2":10,"3":11},"7":{"1":9,"2":10,"3":11},"8":{"1":16,"2":50,"3":51},"9":{"1":14,"2":47,"3":48},"10":{"1":13,"2":15,"3":49},"11":{"1":17,"2":32,"3":33},"12":{"1":18,"2":34,"3":35},"13":{"1":44,"2":45,"3":46},"14":{"1":19,"2":36,"3":37},"15":{"1":54,"2":55,"3":56},"16":{"1":57,"2":58,"3":59},"17":{"1":60,"2":61,"3":62},"18":{"1":63,"2":64,"3":65},"19":{"1":66,"2":67,"3":68},"20":{"1":69,"2":70,"3":71}};


function clearChildNodes(sl)
{
	while (sl.childNodes[0]) {
		sl.removeChild(sl.childNodes[0]);
	}
}

function priceNumber(amount)
{
	var ret;
	amount -= 0;
	amount = (Math.round(amount*100))/100;
	ret = (amount == Math.floor(amount)) ? amount + '.00' : (  (amount*10 == Math.floor(amount*10)) ? amount + '0' : amount);
	if (isNaN(ret)) {
		return 0;
	} else {
		return ret;
	}
}

function nAutoSelect(id)
{
	var f = document.forms['quoteForm'][id + 'c'];

	if (f.selectedIndex < 1) {
		f.options[1].selected = true;
	}
	updatePrice(0);
	//myupdatePrice(id);
}

function myupdatePrice(id)
{
	price = dsc;
	
	if (sl) {
		clearChildNodes(sl);
	}
	
	var n = document.getElementsByName(id + 't');
	var e = document.getElementsByTagName('select');
	var types = ["Basic Cleaning","Clean & Protect","Healthy Home Package"];
	var sl = document.getElementById('servicesList'); 
	var c;
	
	for ( i=0; i<n.length; i++ )
	{
		if ( n[i].checked )
		{
			price = price + n[i].value;
			
			var cnt = parseInt(e[i].options[e[i].selectedIndex].value);
			var name = document.getElementById('n'+id).childNodes[0].nodeValue.toUpperCase();
			
			c = document.createElement('li');
			c.appendChild(document.createTextNode(cnt + ' ' + name.replace(/<div.*<\/div>/, "") + ': ' + types[i]));
			if (sl) {
				sl.appendChild(c);
			}
		}
	}
	
	if (price < min_price) {
		price = min_price;
	}
}

function updatePrice(reset)
{
	price = dsc;
	var e = document.getElementsByTagName('select');
	var f = document.forms['quoteForm'];
	var sl = document.getElementById('servicesList'); 
	var c;
	var types = ["Basic Cleaning","Clean & Protect","Healthy Home Package"];

	if (sl) {
		clearChildNodes(sl);
	}
	if (!f) {
		f = document.forms['set_sold'];
	}

	for (var i = 0; i < e.length; i++) {
		var id;
		var l = e[i].name.length;

		if (document.forms['info']) {
			id = parseInt(e[i].name);
		} else {
			id = parseInt(e[i].name.substring(3, l-1));
		}		

		if (id < 0 || !pmap[id] || e[i].name.substring(l-1, l) != 'c') {
			continue;
		}

		if (e[i].selectedIndex > -1 && e[i].options[e[i].selectedIndex].value > 0) {
			var rad = document.forms['info'] ? f[id + 't'] : f['s_'+id+'t'];
			var chk = 0;

			for (var j = 0; j < rad.length; j++) {
				if (rad[j].checked) {
					chk = 1;
					break;
				}
			}

			if (!chk) {
				rad[0].checked = 1;
			}

			for (var j = 0; j < rad.length; j++) {
				if (rad[j].checked && pmap[id][rad[j].value]) {
					var cnt = parseInt(e[i].options[e[i].selectedIndex].value);
					var name = document.getElementById('n'+id).childNodes[0].nodeValue.toUpperCase();
					//price += cnt * prices [ pmap[id][ rad[j].value ] ]; // Original Function to get prices
					new_id = j + 1;
										
					price += cnt * document.getElementById("my"+id+"t"+new_id).value;
					//alert(price);
					c = document.createElement('li');
					c.appendChild(document.createTextNode(cnt + ' ' + name.replace(/<div.*<\/div>/, "") + ': ' + types[j]));
					if (sl) {
						sl.appendChild(c);
					}
					break;
				}
			}
		} else if (reset) {
			var rad = document.forms['info'] ? f[id + 't'] : f['s_'+id+'t'];
			for (var j = 0; j < rad.length; j++) {
				rad[j].checked = false;
			}
		}
	}

	price *= 1 - pc_dsc; // apply % discounts

	if (price < min_price) {
		price = min_price;
	}

	if (document.forms['info']) {
		document.forms['info'].__price_show.value = '$' + priceNumber(price);
	} else {
		document.forms['set_sold'].__price_show.value = '$' + priceNumber(price);
	}
}

function validate_Submit_Form()
{
	var f = document.forms['quoteForm'];
	var e = f.elements;

	var err = '';
	
	for (var i = 0; i < e.length; i++)
	{
		var id = parseInt(e[i].name);
		var l = e[i].name.length;
		var type = e[i].name.substring(l-1, l);

		if (id < 0 || !pmap[id] || (type != 'c' && type != 't')) {
			continue;
		}
		
		if (type == 'c') 
		{
			if (e[i].selectedIndex > -1 && e[i].options[e[i].selectedIndex].value > 0) 
			{
				var rad = f[id + 't'];
				var ok = 0;
				
				for (var j = 0; j < rad.length; j++) 
				{
					if (rad[j].checked)
					{
						ok = 1;
						break;
					}
				}
				if (ok == 0) {
					err += 'Please indicate service type for ' + document.getElementById('n'+id).innerHTML + ' cleaning.\n';
				}
			}
		}
	}
	
	if ( document.getElementById('servicesList').innerHTML == '<li style="display: none;">&nbsp;</li>' ) {
		alert("Please indicate service type");
		return false;
	}
	else
	{
		document.getElementById('services').value = document.getElementById('servicesList').innerHTML;
		document.getElementById('price').value = document.getElementById('__price_show').value;
	}
	if (err.length > 0) {
		alert(err);
		return false;
	} else {
		return true;
	}
}

var responseFailure = function(o) { alert('XMLHTTPRequest Failure: ' + o.statusText + ' ' + o.responseText); }

function clearPromo(calc)
{
	dsc = pc_dsc = 0.00;
	if (document.forms['info']) {
		clearChildNodes(document.getElementById('promoList'));
		document.forms['info'].__code_show.value = '';
		document.forms['quoteForm'].pc.value = '';
	} else {
		document.forms['set_sold'].pc.value = '';
		document.getElementById('promoList').innerHTML = '';
	}
	document.getElementById('promoWarn').style.display = 'none';

	if (calc) {
		updatePrice();
	}
}

function promoCodeValidate(base)
{
	if (typeof base == 'string') {
		base_url = base;
	}	

	var val = null;
	if (!document.forms['promoForm']) {
		val = document.forms['set_sold'].promocode;
	} else {
		val = document.forms['promoForm'].promocode;
	}

	var promoCode = function (o) {
		if (o.responseText && o.responseText.length > 0) {
			document.getElementById('promoError').innerHTML = '';

			eval(o.responseText);
			var id = document.getElementById('promoList');
	
			clearChildNodes(id);

			var ch = document.createElement('li');
			ch.appendChild(document.createTextNode(promo[0]));
			id.appendChild(ch);

			if (promo[1] < 0) { //%
				pc_dsc = parseFloat(promo[1]) * -1;
				dsc = 0.00;
				document.getElementById('promoWarn').style.display = 'none';
			} else {
				dsc = parseFloat(promo[1]);
				pc_dsc = 0.00;
				document.getElementById('promoWarn').style.display = '';
			}
			if (document.forms['promoForm']) {
				document.forms['info'].__code_show.value = promo[2];
				document.forms['quoteForm'].pc.value = promo[2];
			} else {
				document.forms['set_sold'].pc.value = promo[2];
			}
		} else {
			document.getElementById('promoError').innerHTML = 'The code you have entered is invalid or no longer available. Please verify your promotion code and offer details.';
			 document.getElementById('promoWarn').style.display = 'none';
			clearPromo(0);
		}
		updatePrice();
	}
	
	if (val.value.length < 1) {
		document.getElementById('promoError').innerHTML = 'The code you have entered is invalid or no longer available. Please verify your promotion code.';
		if (dsc || pc_dsc) {
			clearPromo(1);
		}
		return false;
	}
	
	var callback =
	{
		success:promoCode,
		failure:responseFailure
	}
	YAHOO.util.Connect.asyncRequest('GET', base_url + '/pvalidate.php?non_web='+(document.forms['promoForm'] ? 0 : 1)+'&c='+escape(val.value), callback);

	return false;
}
