/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//                                                                                                                 //
//                                         ___           ___                                                       //
//                                        /__/\         /  /\         _____                                        //
//                                       _\_ \:\       /  /:/_       /  /::\                                       //
//                                      /__/\ \:\     /  /:/ /\     /  /:/\:\                                      //
//                                     _\_ \:\ \:\   /  /:/ /:/_   /  /:/~/::\                                     //
//                                    /__/\ \:\ \:\ /__/:/ /:/ /\ /__/:/ /:/\:|                                    //
//                                    \  \:\ \:\/:/ \  \:\/:/ /:/ \  \:\/:/~/:/                                    //
//                                     \  \:\ \::/   \  \::/ /:/   \  \::/ /:/                                     //
//                                      \  \:\/:/     \  \:\/:/     \  \:\/:/                                      //
//                                       \  \::/       \  \::/       \  \::/                                       //
//                                        \__\/         \__\/         \__\/                                        //
//        ___           ___                         ___                                   ___           ___        //
//       /  /\         /  /\                       /__/\          ___       ___          /  /\         /__/\       //
//      /  /:/_       /  /::\                      \  \:\        /  /\     /  /\        /  /::\        \  \:\      //
//     /  /:/ /\     /  /:/\:\    ___     ___       \  \:\      /  /:/    /  /:/       /  /:/\:\        \  \:\     //
//    /  /:/ /::\   /  /:/  \:\  /__/\   /  /\  ___  \  \:\    /  /:/    /__/::\      /  /:/  \:\   _____\__\:\    //
//   /__/:/ /:/\:\ /__/:/ \__\:\ \  \:\ /  /:/ /__/\  \__\:\  /  /::\    \__\/\:\__  /__/:/ \__\:\ /__/::::::::\   //
//   \  \:\/:/~/:/ \  \:\ /  /:/  \  \:\  /:/  \  \:\ /  /:/ /__/:/\:\      \  \:\/\ \  \:\ /  /:/ \  \:\~~\~~\/   //
//    \  \::/ /:/   \  \:\  /:/    \  \:\/:/    \  \:\  /:/  \__\/  \:\      \__\::/  \  \:\  /:/   \  \:\  ~~~    //
//     \__\/ /:/     \  \:\/:/      \  \::/      \  \:\/:/        \  \:\     /__/:/    \  \:\/:/     \  \:\        //
//       /__/:/       \  \::/        \__\/        \  \::/          \__\/     \__\/      \  \::/       \  \:\       //
//       \__\/         \__\/                       \__\/                                 \__\/         \__\/       //
//                           ___           ___           ___           ___           ___                           //
//                          /  /\         /__/\         /  /\         /  /\         /__/|                          //
//                         /  /:/_        \  \:\       /  /::\       /  /:/        |  |:|                          //
//                        /  /:/ /\        \__\:\     /  /:/\:\     /  /:/         |  |:|                          //
//                       /  /:/ /::\   ___ /  /::\   /  /:/~/::\   /  /:/  ___   __|  |:|                          //
//                      /__/:/ /:/\:\ /__/\  /:/\:\ /__/:/ /:/\:\ /__/:/  /  /\ /__/\_|:|____                      //
//                      \  \:\/:/~/:/ \  \:\/:/__\/ \  \:\/:/__\/ \  \:\ /  /:/ \  \:\/:::::/                      //
//                       \  \::/ /:/   \  \::/       \  \::/       \  \:\  /:/   \  \::/~~~~                       //
//                        \__\/ /:/     \  \:\        \  \:\        \  \:\/:/     \  \:\                           //
//                          /__/:/       \  \:\        \  \:\        \  \::/       \  \:\                          //
//                          \__\/         \__\/         \__\/         \__\/         \__\/                          //
//                                                                                                                 //
//                                                                                                                 //
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//                                                                                                                 //
//                                       W e b   S o l u t i o n   S h a c k                                       //
//                                                    Matt Rabe                                                    //
//                                                       '09                                                       //
//                                                                                                                 //
//                                             www.websolutionshack.com                                            //
//                                                                                                                 //
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

function initPackageCustomization()
{
	// Increase SO Rooms button
	SOincs = $$(".Rooms_SO_inc");
	for (i = 0; i < SOincs.length; i++)
	{
		Event.observe(SOincs[i], 'click', function() { increaseSORooms(); });
	}

	// Decrease SO Rooms button
	SOdecs = $$(".Rooms_SO_dec");
	for (i = 0; i < SOdecs.length; i++)
	{
		Event.observe(SOdecs[i], 'click', function() { decreaseSORooms(); });
	}

	// Increase Passengers button
	Passincs = $$(".passengers_inc");
	for (i = 0; i < Passincs.length; i++)
	{
		Event.observe(Passincs[i], 'click', function() { increasePassengers(); });
	}

	// Decrease Passengers button
	Passdecs = $$(".passengers_dec");
	for (i = 0; i < Passdecs.length; i++)
	{
		Event.observe(Passdecs[i], 'click', function() { decreasePassengers(); });
	}

	// Increase Registrants button
	Regincs = $$(".customization .registrants_inc");
	for (i = 0; i < Regincs.length; i++)
	{
		Event.observe(Regincs[i], 'click', function() { increaseCustomizationRegistrants(); });
	}

	// Decrease Registrants button
	Regdecs = $$(".customization .registrants_dec");
	for (i = 0; i < Regdecs.length; i++)
	{
		Event.observe(Regdecs[i], 'click', function() { decreaseCustomizationRegistrants(); });
	}

	// Change Hotel Stars
	inp = $$(".hotel_stars");
	for (i = 0; i < inp.length; i++)
	{
		Event.observe(inp[i], 'change', function()
		{
			$('hclass').value = this.value;
			updatePackageCustomizationDisplay();
		});
	}
}

function initRegistration()
{
	// Increase Registrants button
	Regincs = $$(".registration .registrants_inc");
	for (i = 0; i < Regincs.length; i++)
	{
		Event.observe(Regincs[i], 'click', function() { increaseRegistrationRegistrants(); });
	}

	// Decrease Registrants button
	Regdecs = $$(".registration .registrants_dec");
	for (i = 0; i < Regdecs.length; i++)
	{
		Event.observe(Regdecs[i], 'click', function() { decreaseRegistrationRegistrants(); });
	}
}

function increaseSORooms()
{
	if (parseInt($('packagecustomization_numrooms_so').value) < parseInt($('packagecustomization_numpassengers').value))
	{
		$("packagecustomization_numrooms_so").value++;
		$("packagecustomization_numrooms_so").value++;
		$("packagecustomization_numrooms_do").value--;

		updatePackageCustomizationDisplay();
	}
}

function decreaseSORooms()
{
	if ($('packagecustomization_numrooms_so').value >= 2)
	{
		$("packagecustomization_numrooms_so").value--;
		$("packagecustomization_numrooms_so").value--;
		$("packagecustomization_numrooms_do").value++;

		updatePackageCustomizationDisplay();
	}
}

function increasePassengers()
{
	$("packagecustomization_numpassengers").value++;
	$("packagecustomization_numrooms_so").value++;

	updatePackageCustomizationDisplay();
}

function decreasePassengers()
{
	if ($("packagecustomization_numpassengers").value > 1)
	{
		$("packagecustomization_numpassengers").value--;
		if ($("packagecustomization_numrooms_so").value >= 1)
		{
			$("packagecustomization_numrooms_so").value--;
		}else{
			$("packagecustomization_numrooms_do").value--;
			$("packagecustomization_numrooms_so").value++;
		}

		updatePackageCustomizationDisplay();
	}
}

function updatePackageCustomizationDisplay()
{
	// SO Rooms
	solabels = $$("div.numrooms_SO");
	for (i = 0; i < solabels.length; i++)
	{
		solabels[i].innerHTML = "<b>"+$("packagecustomization_numrooms_so").value+"</b> single occupancy room";
		if ($("packagecustomization_numrooms_so").value > 1 || $("packagecustomization_numrooms_so").value == 0)
		{
			solabels[i].innerHTML = solabels[i].innerHTML + "s";
		}
	}

	// DO Rooms
	dolabels = $$("div.numrooms_DO");
	for (i = 0; i < dolabels.length; i++)
	{
		dolabels[i].innerHTML = "<b>"+$("packagecustomization_numrooms_do").value+"</b> double occupancy room";
		if ($("packagecustomization_numrooms_do").value > 1 || $("packagecustomization_numrooms_do").value == 0)
		{
			dolabels[i].innerHTML = dolabels[i].innerHTML + "s";
		}
	}

	// Total Price
	if ($('packagecustomization_numpassengers').value > 1)
	{
		totalprice = parseFloat((($("packagecustomization_price_do_"+$("hclass").value).value * 2 * $("packagecustomization_numrooms_do").value) + ($("packagecustomization_price_so_"+$("hclass").value).value * $("packagecustomization_numrooms_so").value))).toFixed(2);
	}else{
		totalprice = parseFloat($("packagecustomization_price_ss_"+$("hclass").value).value).toFixed(2);
	}
	totalprice = (parseFloat(totalprice) + parseFloat(parseFloat($('packagecustomization_registrationfee').value) * parseInt($('packagecustomization_numregistrants').value))).toFixed(2);
		
	totalpricetext = number_format(totalprice, 0);

	priceper = parseFloat(totalprice / $('packagecustomization_numpassengers').value).toFixed(2);
	pricepertext = number_format(priceper, 2);

	pricelabels = $$(".customization div.price");
	for (i = 0; i < pricelabels.length; i++)
	{
		pricelabels[i].innerHTML = "<b>$"+totalpricetext+"</b> USD";
		if ($('packagecustomization_numpassengers').value > 1)
		{
			pricelabels[i].innerHTML = pricelabels[i].innerHTML+' ';
			pricelabels[i].insert(new Element('span', {'style':'font-size: .8em;'}).insert('($'+pricepertext+' per person)'));
		}
	}

	// Passengers
	passengerlabels = $$("div.numpassengers");
	for (i = 0; i < passengerlabels.length; i++)
	{
		passengerlabels[i].innerHTML = "<b>"+$('packagecustomization_numpassengers').value+"</b> passenger";
		if ($("packagecustomization_numpassengers").value > 1 || $("packagecustomization_numpassengers").value == 0)
		{
			passengerlabels[i].innerHTML = passengerlabels[i].innerHTML + "s";
		}	
	}

	// Registrants
	registrantlabels = $$(".customization div.numregistrants");
	for (i = 0; i < registrantlabels.length; i++)
	{
		registrantlabels[i].innerHTML = "<b>"+$('packagecustomization_numregistrants').value+"</b> registrant";
		if ($("packagecustomization_numregistrants").value > 1 || $("packagecustomization_numregistrants").value == 0)
		{
			registrantlabels[i].innerHTML = registrantlabels[i].innerHTML + "s";
		}	
	}
	
	// SO Rooms modifiers
	modifiers = $$(".numrooms_SO_modifier");
	inclabels = $$(".Rooms_SO_inc");
	declabels = $$(".Rooms_SO_dec");
	for (i = 0; i < inclabels.length; i++)
	{
		if ($('packagecustomization_numrooms_so').value < 2)
		{
			modifiers[i].addClassName('btn_plusonly');

			modifiers[i].removeClassName('btn_minusonly');
			modifiers[i].removeClassName('btn_noplusminus');
			inclabels[i].removeClassName('disabled');
			declabels[i].addClassName('disabled');
		}else if (parseInt($('packagecustomization_numrooms_so').value) >= parseInt($('packagecustomization_numpassengers').value))
		{
			modifiers[i].addClassName('btn_minusonly');

			modifiers[i].removeClassName('btn_plusonly');
			modifiers[i].removeClassName('btn_noplusminus');
			inclabels[i].addClassName('disabled');
			declabels[i].removeClassName('disabled');
		}else if ($('packagecustomization_numpassengers').value == 1)
		{
			modifiers[i].addClassName('btn_noplusminus');

			modifiers[i].removeClassName('btn_minusonly');
			modifiers[i].removeClassName('btn_plusonly');
			inclabels[i].addClassName('disabled');
			declabels[i].addClassName('disabled');		
		}else{
			modifiers[i].removeClassName('btn_minusonly');
			modifiers[i].removeClassName('btn_plusonly');
			modifiers[i].removeClassName('btn_noplusminus');
			inclabels[i].removeClassName('disabled');
			declabels[i].removeClassName('disabled');		
		}
	}
	
	// Passengers modifiers
	modifiers = $$(".numpassengers_modifier");
	declabels = $$(".passengers_dec");
	for (i = 0; i < declabels.length; i++)
	{
		if ($('packagecustomization_numpassengers').value >= 2)
		{
			modifiers[i].removeClassName('btn_plusonly');
			declabels[i].removeClassName('disabled');
		}else{
			modifiers[i].addClassName('btn_plusonly');
			declabels[i].addClassName('disabled');
		}
	}
	
	// Registrants
	registrantlabels = $$(".customization div.numregistrants");
	for (i = 0; i < registrantlabels.length; i++)
	{
		registrantlabels[i].innerHTML = "<b>"+$('packagecustomization_numregistrants').value+"</b> registrant";
		if ($("packagecustomization_numregistrants").value > 1 || $("packagecustomization_numregistrants").value == 0)
		{
			registrantlabels[i].innerHTML = registrantlabels[i].innerHTML + "s";
		}	
	}

	if ($$(".customization .numregistrants_modifier").length > 0)
	{
		// Registrants modifiers
		modifiers = $$(".customization .numregistrants_modifier");
		declabels = $$(".customization .registrants_dec");
		for (i = 0; i < declabels.length; i++)
		{
			if ($('packagecustomization_numregistrants').value >= 2)
			{
				modifiers[i].removeClassName('btn_plusonly');
				declabels[i].removeClassName('disabled');
			}else{
				modifiers[i].addClassName('btn_plusonly');
				declabels[i].addClassName('disabled');
			}
		}
	}
	
	// Hotel Class Modifiers
	modifiers = $$(".hotel_stars");
	for (i = 0; i < modifiers.length; i++)
	{
		if ($('hclass').value == '3')
		{
			ind = 2;
		}else if ($('hclass').value == '4')
		{
			ind = 1;
		}else{
			ind = 0;
		}

		modifiers[i].options[ind].selected = true;
	}
}

function increaseCustomizationRegistrants()
{
	$("packagecustomization_numregistrants").value++;

	updatePackageCustomizationDisplay();
}

function decreaseCustomizationRegistrants()
{
	if ($("packagecustomization_numregistrants").value > 1)
	{
		$("packagecustomization_numregistrants").value--;

		updatePackageCustomizationDisplay();
	}
}

function increaseRegistrationRegistrants()
{
	$("numregistrants").value++;

	updateRegistrationDisplay();
}

function decreaseRegistrationRegistrants()
{
	if ($("numregistrants").value > 1)
	{
		$("numregistrants").value--;

		updateRegistrationDisplay();
	}
}

function updateRegistrationDisplay()
{
	// Registrants
	registrantlabels = $$(".registration div.numregistrants");
	for (i = 0; i < registrantlabels.length; i++)
	{
		registrantlabels[i].innerHTML = "<b>"+$('numregistrants').value+"</b> registrant";
		if ($("numregistrants").value > 1 || $("numregistrants").value == 0)
		{
			registrantlabels[i].innerHTML = registrantlabels[i].innerHTML + "s";
		}	
	}

	// Registrants modifiers
	modifiers = $$(".registration .numregistrants_modifier");
	declabels = $$(".registration .registrants_dec");
	for (i = 0; i < declabels.length; i++)
	{
		if ($('numregistrants').value >= 2)
		{
			modifiers[i].removeClassName('btn_plusonly');
			declabels[i].removeClassName('disabled');
		}else{
			modifiers[i].addClassName('btn_plusonly');
			declabels[i].addClassName('disabled');
		}
	}

	// Price
	totalprice = parseFloat($('registrationfee').value * $('numregistrants').value).toFixed(2);
	
	totalpricetext = number_format(totalprice, 2);

	priceper = parseFloat(totalprice / $('numregistrants').value).toFixed(2);
	pricepertext = number_format(priceper, 2);

	pricelabels = $$(".registration div.price");
	for (i = 0; i < pricelabels.length; i++)
	{
		pricelabels[i].innerHTML = "<b>$"+totalpricetext+"</b> USD";
		if ($('numregistrants').value > 1)
		{
			pricelabels[i].innerHTML = pricelabels[i].innerHTML+' ';
			pricelabels[i].insert(new Element('span', {'style':'font-size: .8em;'}).insert('($'+pricepertext+' per person)'));
		}
	}
}

function number_format( number, decimals, dec_point, thousands_sep ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +     bugfix by: Michael White (http://getsprink.com)
    // +     bugfix by: Benjamin Lupton
    // +     bugfix by: Allan Jensen (http://www.winternet.no)
    // +    revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +     bugfix by: Howard Yeend
    // +    revised by: Luke Smith (http://lucassmith.name)
    // +     bugfix by: Diogo Resende
    // +     bugfix by: Rival
    // %        note 1: For 1000.55 result with precision 1 in FF/Opera is 1,000.5, but in IE is 1,000.6
    // *     example 1: number_format(1234.56);
    // *     returns 1: '1,235'
    // *     example 2: number_format(1234.56, 2, ',', ' ');
    // *     returns 2: '1 234,56'
    // *     example 3: number_format(1234.5678, 2, '.', '');
    // *     returns 3: '1234.57'
    // *     example 4: number_format(67, 2, ',', '.');
    // *     returns 4: '67,00'
    // *     example 5: number_format(1000);
    // *     returns 5: '1,000'
    // *     example 6: number_format(67.311, 2);
    // *     returns 6: '67.31'
 
    var n = number, prec = decimals;
    n = !isFinite(+n) ? 0 : +n;
    prec = !isFinite(+prec) ? 0 : Math.abs(prec);
    var sep = (typeof thousands_sep == "undefined") ? ',' : thousands_sep;
    var dec = (typeof dec_point == "undefined") ? '.' : dec_point;
 
    var s = (prec > 0) ? n.toFixed(prec) : Math.round(n).toFixed(prec); //fix for IE parseFloat(0.55).toFixed(0) = 0;
 
    var abs = Math.abs(n).toFixed(prec);
    var _, i;
 
    if (abs >= 1000) {
        _ = abs.split(/\D/);
        i = _[0].length % 3 || 3;
 
        _[0] = s.slice(0,i + (n < 0)) +
              _[0].slice(i).replace(/(\d{3})/g, sep+'$1');
 
        s = _.join(dec);
    } else {
        s = s.replace('.', dec);
    }
 
    return s;
}

