
/*Javascript class handles the front-end page printing pricer widget*/

function SPP()
{
	this.init();
}//SPP

//class init
SPP.prototype.init = function()
{
	this.form_name = "forms_spp";
	this.unit_price_ranges = unit_price_ranges; //a global var set by server-side js hardcoding in singe_page_pricer module
	this.finish_ranges = finish_ranges;
	this.li_opt_cover				= 0.00;
	this.li_opt_coverpaper			= 0.00;
	this.li_opt_frontcovertype		= 0.00;
	this.li_opt_frontcovercolor		= 0.00;
	this.li_opt_backcovertype		= 0.00;
	this.li_opt_backcovercolor		= 0.00;
	
	this.li_opt_papersize			= 0.00;
	this.li_opt_colortype			= 0.00;
	this.li_opt_paper 				= 0.00;
	this.li_opt_folding 			= 0.00;	
	this.li_opt_binding				= 0.00; //checkbox

	
	
	this.li_opt_productionSpeed 	= 0.00;

	this.li_num_pages				= parseInt(document.forms['forms_spp'].li_num_pages.value);
	this.li_quantity 				= parseInt(document.forms['forms_spp'].el_li_quantity.value);
	this.li_orderTotal 				= 0.00;
	this.li_basePrintingPrice_price = 0.00;
	this.li_paperUpgrade_price 		= 0.00;

	this.li_folding_price 			= 0.00;
	this.li_printingSubtotal_price 	= 0.00;
	this.li_printingCostEach_price 	= 0.00;
	this.li_productionSpeed_price 	= 0.00;
	this.li_shippingHandling_price 	= 0.00;
	//this.li_mailingServices_price 	= 0.00;
	this.li_orderTotal_price 		= 0.00;
	this.li_unitCost_price 			= 0.00;
}//function()

//meth handles setting class variable members
SPP.prototype.member_var_set = function(p_member, p_value, p_updateGUI)
{
	eval("this." + p_member + " = \"" + p_value + "\"");
	
	//dbg
	//alert("set: " + p_member + " =-  " + eval("this." + p_member));
	
	if(p_updateGUI)
	{
		this.calculate_all();
	}
}//member_var_set()
/*
25 page books 65¢ per book
50 page books 80¢ **per book*
*75 page books 95¢ **per book*
*100 sheets 1.75  **per book*
*150 sheets 2.50  **per book* 

*/

SPP.prototype.fetchFinishingPrice = function(bkqty){
	if(bkqty < 26){
		return .65*bkqty;
	}else if(bkqty < 51){
		return .80*bkqty;
	} else if (bkqty < 76){
		return .95*bkqty;
	}else if (bkqty < 100){
		return 1.75*bkqty;
	} else {
		return 2.50*bkqty;
	}	
}
//meth handles setting class variable members
SPP.prototype.member_var_get = function(p_member)
{
	 return eval("this." + p_member);
}//member_var_get()

SPP.prototype.calculate_all = function()
{
	//set all the price line items
	//this.member_var_set("li_paperUpgrade_price", parseInt((this.li_opt_back * this.li_quantity)+(this.li_opt_front * this.li_quantity)).toFixed(2), 0);
	/*
	if(document.forms[this.form_name].el_li_quantity.value < 100){
		document.forms[this.form_name].el_li_quantity.value = 100;		
	}
	*/
	
	if(!document.getElementById('opt_Binding').checked){this.li_opt_binding =0;}
	this.member_var_set("li_colortype", 				parseFloat((this.li_opt_colortype)).toFixed(2), 0);
	this.member_var_set("li_base_cost",					this.unit_price_current_get() ,0);
	this.member_var_set("li_base_price", 				parseFloat(this.unit_price_current_get()).toFixed(2), 0);
	this.member_var_set("li_cover", 					parseFloat(this.li_opt_cover));
	this.member_var_set("li_coverTotal", 				parseFloat(this.li_opt_cover * this.li_quantity));
	this.member_var_set("li_covercost", 				(parseFloat(this.li_opt_coverpaper) + parseFloat(this.li_opt_frontcovertype) + parseFloat(this.li_opt_frontcovercolor) + parseFloat(this.li_opt_backcovertype) + parseFloat(this.li_opt_backcovercolor) ).toFixed(2), 0);
	this.member_var_set("li_quantity", 					parseInt(document.forms[this.form_name].el_li_quantity.value*document.forms[this.form_name].li_num_pages.value), 0);
	this.member_var_set("li_basePrintingPrice_price", 	parseFloat((this.li_quantity * this.unit_price_current_get())).toFixed(2), 0);
	this.member_var_set("li_paperUpgrade_price", 		parseFloat((this.li_opt_binding * this.li_quantity)+(this.li_opt_paper * this.li_quantity)+(this.li_opt_colortype * this.li_quantity)+(this.li_opt_papersize * this.li_quantity)).toFixed(2), 0);	
	this.member_var_set("li_finish",					this.finish_current_get() ,0);
	
	this.member_var_set("li_binding_price", 			parseFloat((this.li_opt_binding * this.li_quantity)).toFixed(2), 0);
	this.member_var_set("li_printingSubtotal_price", 	(parseFloat(this.li_basePrintingPrice_price) + parseFloat(this.li_paperUpgrade_price)  ).toFixed(2), 0); 
	this.member_var_set("li_printingCostEach_price", 	parseFloat((parseFloat(this.li_printingSubtotal_price) / parseInt(this.li_quantity)).toFixed(2)), 0);
	this.member_var_set("li_productionSpeed_price", 	parseFloat((this.li_opt_productionSpeed)).toFixed(2), 0);
	this.member_var_set("li_orderTotal_price", 			(parseFloat(this.li_covercost) + parseFloat(this.li_printingSubtotal_price) + parseFloat(this.li_productionSpeed_price) + parseFloat(this.li_shippingHandling_price) ).toFixed(2), 0);
	this.member_var_set("li_unitCost_price", 			(parseFloat(this.li_productionSpeed_price) * parseInt(this.li_quantity) + parseFloat(this.li_orderTotal_price)).toFixed(2) ,0);
	//now that calcs are done, set the gui elements to reflect all updated prices
	this.form_elements_price_set();
}//calcaluate_all()

SPP.prototype.form_elements_price_set = function()
{
	//var finish = this.fetchFinishingPrice(document.forms[this.form_name].el_li_quantity.value);
	
	document.forms[this.form_name].el_li_basePrintingPrice_price.value 		= this.li_basePrintingPrice_price;
	document.forms[this.form_name].el_li_paperUpgrade_price.value 			= this.li_paperUpgrade_price;
	document.forms[this.form_name].el_li_binding_price.value 				= this.li_binding_price;
	document.getElementById('add-pages').value								= document.forms[this.form_name].li_num_pages.value;
	document.getElementById('add-copies').value								= document.forms[this.form_name].el_li_quantity.value;
	
	document.forms[this.form_name].el_li_printingSubtotal_price.value 		= this.li_printingSubtotal_price;
	document.forms[this.form_name].el_li_printingCostEach_price.value 		= (parseFloat(this.li_printingCostEach_price)).toFixed(2);
	document.forms[this.form_name].el_li_productionSpeed_price.value 		= (this.li_productionSpeed_price * parseInt(this.li_quantity)).toFixed(2); // total for shipping cost
	//document.forms[this.form_name].el_li_shippingHandling_price.value 		= this.li_shippingHandling_price;
	//document.forms[this.form_name].el_li_mailingServices_price.value 		= this.li_mailingServices_price;
	
	document.forms[this.form_name].el_li_covercost_price.value				= (parseFloat(this.li_covercost) + parseFloat(this.li_cover)).toFixed(2);
	document.forms[this.form_name].el_li_orderTotal_price.value 			= (parseFloat(this.li_unitCost_price)  + parseFloat(this.li_coverTotal)  + parseFloat(this.li_finish)  ).toFixed(2);
	document.forms[this.form_name].addtocart.value 							= ((parseFloat(this.li_unitCost_price)  + parseFloat(this.li_coverTotal) + parseFloat(this.li_finish) )/document.forms[this.form_name].el_li_quantity.value).toFixed(2);
	document.forms[this.form_name].el_li_finishing_price.value				= (parseFloat(this.li_finish)).toFixed(2);//

	document.getElementById('config-base').value 	= ((parseFloat(this.li_unitCost_price)  + parseFloat(this.li_coverTotal) )/document.forms[this.form_name].el_li_quantity.value) - this.li_base_cost;
	document.getElementById('qty-box').value = document.forms[this.form_name].el_li_quantity.value;	
	document.getElementById('config-aggre').value 	= this.li_finish;
	
	//document.getElementById('qty-box').value = document.forms[this.form_name].el_li_quantity.value*document.forms[this.form_name].li_num_pages.value;
	
	
	//document.forms[this.form_name].el_li_unitCost_price.value = this.li_unitCost_price;
}

SPP.prototype.unit_price_current_get = function()
{

		
	rtn_var = null;
	
	for(lcvl=0; lcvl<this.unit_price_ranges.length; lcvl++)
  {
		if(this.li_quantity <= this.unit_price_ranges[lcvl][0])
		{
			rtn_var = this.unit_price_ranges[lcvl][1];
			break;
		}//if
	}//for
	
	//in case it went over last price quantity range
	if(rtn_var == null)
	{
		rtn_var = this.unit_price_ranges[(this.unit_price_ranges.length - 1)][1];
	}
	
	return rtn_var;
}//unit_price_current_get()
SPP.prototype.finish_current_get = function()
{

		
	rtn_var = null;
	
	for(lcvl=0; lcvl<this.finish_ranges.length; lcvl++)
  {
		if(document.forms['forms_spp'].el_li_quantity.value <= this.finish_ranges[lcvl][0])
		{
			rtn_var = this.finish_ranges[lcvl][1];
			break;
		}//if
	}//for
	
	//in case it went over last price quantity range
	if(rtn_var == null)
	{
		rtn_var = this.finish_ranges[(this.finish_ranges.length - 1)][1];
	}
	
	//return rtn_var;
	return document.forms['forms_spp'].el_li_quantity.value * rtn_var;
}//unit_price_current_get()

//create instance of class within its own file
var spp = new SPP();



