Event.observe(window, 'load', init, false);

function init() {

	for(var i = 0; i < 5; ++i) {
	  var editable_id = 'os'+i;                      
      if (document.getElementById(editable_id)) {
			makeEditable(editable_id);
	  }
	}
	
	var multiplier = document.product_form.base.value;
	
	if (document.getElementById('base_price')) {
		document.getElementById('base_price').innerHTML=number_format(multiplier,2,'.',',');
	}
	// alert("initialized!");
}

function makeEditable(id){

	//Event.observe(id, 'onMouseOver', function(){edit($(id))}, false);
	Event.observe(id, 'change', function(){edit($(id))}, false);
	//Event.observe(id, 'mouseover', function(){showAsEditable($(id))}, false);
	//Event.observe(id, 'mouseout', function(){showAsEditable($(id), true)}, false);

}

function edit(obj) {

	//alert("edit function");

	//Element.hide(obj);

	// need to get the current product id so we can verify price changes
	var current_product_id = null;
	var current_product_id = document.product_form.product_id.value;

	// need to get the selected value of the choice made		
	var selected_val = null;

	switch (obj.id){
		case 'os0': var selected_val = document.product_form.os0.options[document.product_form.os0.selectedIndex].value; break;
		case 'os1': var selected_val = document.product_form.os1.options[document.product_form.os1.selectedIndex].value; break;
		case 'os2': var selected_val = document.product_form.os2.options[document.product_form.os2.selectedIndex].value; break;
		case 'os3': var selected_val = document.product_form.os3.options[document.product_form.os3.selectedIndex].value; break;
		case 'os4': var selected_val = document.product_form.os4.options[document.product_form.os4.selectedIndex].value; break;
	}

	// and now we need to get the values of the price adjustments that have been made

	if (document.product_form.os0_adjust.value) { var os0_adjust = document.product_form.os0_adjust.value; }
	if (document.product_form.os1_adjust.value) { var os1_adjust = document.product_form.os1_adjust.value; }
	if (document.product_form.os2_adjust.value) { var os2_adjust = document.product_form.os2_adjust.value; }
	if (document.product_form.os3_adjust.value) { var os3_adjust = document.product_form.os3_adjust.value; }
	if (document.product_form.os4_adjust.value) { var os4_adjust = document.product_form.os4_adjust.value; }

	var current_final_price = document.product_form.final_price.value;

	var success = function(t){editComplete(t, obj);}
	var failure = function(t){editFailed(t, obj);}

	var url = '../includes/ajax/updateprice/return_new_price.php';

	var pars = 'id='+obj.id+'&selected_val='+selected_val+'&product_id='+current_product_id+'&os0_adjust='+os0_adjust+'&os1_adjust='+os1_adjust+'&os2_adjust='+os2_adjust+'&os3_adjust='+os3_adjust+'&os4_adjust='+os4_adjust+'&current_final_price='+current_final_price;

	var target = obj.id+"_prices";
	var myAjax = new Ajax.Updater(target, url, {method:'post', postBody:pars, onSuccess:success, onFailure:failure});

}

function showAsEditable(obj, clear) {
	if (!clear) {
		Element.addClassName(obj, 'editable');
	} else {
		Element.removeClassName(obj, 'editable');
	}
}

function editComplete(t, obj) {

	// response will follow this pattern:
	// new_os0_price|new_os1_price|new_os2_price|new_os3_price|new_os4_price

	var response = t.responseText
	//alert(response);
	var parts = response.split("|");

	// set hidden price adjustment history values

	//alert(parts[0]);
	//alert(parts[1]);
	//alert(parts[2]);
	//alert(parts[3]);
	//alert(parts[4]);
	
	
	
	
	
	document.product_form.os0_adjust.value = parts[0];		
	document.product_form.os1_adjust.value = parts[1];
	document.product_form.os2_adjust.value = parts[2];
	document.product_form.os3_adjust.value = parts[3];
	document.product_form.os4_adjust.value = parts[4];

	// set the final price for this item

	var starting_price = parseFloat(document.product_form.starting_price.value);
	var parts_zero = parseFloat(eval(parts[0]));
	var parts_one = parseFloat(eval(parts[1]));
	var parts_two = parseFloat(eval(parts[2]));
	var parts_three = parseFloat(eval(parts[3]));
	var parts_four = parseFloat(eval(parts[4]));

	var final_price_calculated = Math.round((starting_price + parts_zero + parts_one + parts_two + parts_three + parts_four)*100)/100;

	document.product_form.final_price.value=final_price_calculated;

	if(parts_zero!=0) { document.getElementById('os0_price').innerHTML = "$" + number_format(parts_zero,2,'.',','); }
	if(parts_one!=0) { document.getElementById('os1_price').innerHTML = "$" + number_format(parts_one,2,'.',','); }
	if(parts_two!=0) { document.getElementById('os2_price').innerHTML = "$" + number_format(parts_two,2,'.',','); }
	if(parts_three!=0) { document.getElementById('os3_price').innerHTML = "$" + number_format(parts_three,2,'.',','); }
	if(parts_four!=0) { document.getElementById('os4_price').innerHTML = "$" + number_format(parts_four,2,'.',','); }

	//document.getElementById('os0_price').innerHTML = "$" + number_format(parts_zero,2,'.',',');
	//document.getElementById('os1_price').innerHTML = "$" + number_format(parts_one,2,'.',',');
	//document.getElementById('os2_price').innerHTML = "$" + number_format(parts_two,2,'.',',');
	//document.getElementById('os3_price').innerHTML = "$" + number_format(parts_three,2,'.',',');
	//document.getElementById('os4_price').innerHTML = "$" + number_format(parts_four,2,'.',',');

	//if(parts_zero==0) { document.getElementById('os0_price').innerHTML = ""; }
	//if(parts_one==0) { document.getElementById('os1_price').innerHTML = ""; }
	//if(parts_two==0) { document.getElementById('os2_price').innerHTML = ""; }
	//if(parts_three==0) { document.getElementById('os3_price').innerHTML = ""; }
	//if(parts_four==0) { document.getElementById('os4_price').innerHTML = ""; }

	document.getElementById('price_with_options').innerHTML = "$" + number_format(final_price_calculated,2,'.',',');

	new Effect.Highlight(obj.id + "_price");
	new Effect.Highlight('price_with_options');

}

function editFailed(t, obj) {
	alert('Dang, the updater gizmo failed');
	//obj.innerHTML = 'Sorry, the update failed for some reason.';
}

function number_format(a, b, c, d) {
	// number_format(number, decimals, comma, formatSeparator)
	a = Math.round(a * Math.pow(10, b)) / Math.pow(10, b);
	e = a + '';
	f = e.split('.');
	if(!f[0]) f[0] = '0';
	if(!f[1]) f[1] = '';
	if(f[1].length < b){
		g = f[1];
		for(i = f[1].length + 1; i <= b; i++) {
			g += '0';
		}
		f[1] = g;
	}
	if(d != '' && f[0].length > 3) {
		h = f[0];
		f[0] = '';
		for(j = 3; j < h.length; j += 3) {
			i = h.slice(h.length - j, h.length - j + 3);
			f[0] = d + i +  f[0] + '';
		}
		j = h.substr(0, (h.length % 3 == 0) ? 3 : (h.length % 3));
		f[0] = j + f[0];
	}
	c = (b <= 0) ? '': c;
	return f[0] + c + f[1];
}

function update_prices_based_on_count(name) {
	var multiplier = document.product_form.base.value;
	var name_wo_spaces = removeSpaces(name);
	var count_times_multiplier = (multiplier * name_wo_spaces.length);
	document.getElementById('customize_count').innerHTML=name_wo_spaces.length;
	document.getElementById('customize_count_price').innerHTML=number_format(count_times_multiplier,2,'.',',');
	document.product_form.starting_price.value = count_times_multiplier;		
	document.getElementById('price_with_options').innerHTML="$" + number_format(count_times_multiplier,2,'.',',');
}

function removeSpaces(string) {
	var tstring = "";
	string = '' + string;
	splitstring = string.split(" ");
	for(i = 0; i < splitstring.length; i++)
	tstring += splitstring[i];
	return tstring;
}
