// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults

// get the cursor position
function get_cursor_position(e) {
    e = e || window.event;
    var cursor = {x:0, y:0};
    if (e.pageX || e.pageY) {
        cursor.x = e.pageX;
        cursor.y = e.pageY;
    } 
    else {
        var de = document.documentElement;
        var b = document.body;
        cursor.x = e.clientX + 
            (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0);
        cursor.y = e.clientY + 
            (de.scrollTop || b.scrollTop) - (de.clientTop || 0);
    }
    return cursor;
}

function toggle_popup(dom_id, e) {
	cursor = get_cursor_position(e);
	popup = $(dom_id);
	popup.style.top = (cursor.y - 100) + 'px';
	popup.style.left = (cursor.x - 100) + 'px';
	popup.toggle();
}

function mark_for_delete(element, id, combo_name) {
	$(element).next('.'+combo_name+'_delete').value = id;
	ele = $(element).previous('.'+combo_name+'_select');
	Element.remove(ele);
	$(element).up('.'+combo_name).hide();
}

function add_select(element, combo_name) {
	var clone = $(element).previous('.'+combo_name).cloneNode(true);
	//$(element).insert({after: clone.innerHTML});
	new Insertion.After(element, clone.outerHTML);
}

function show_preview(id, preview_id) {
	$(preview_id).innerHTML = $(id).innerHTML.unescapeHTML();
	$(preview_id).toggle();
}

// Used for registration forms, calculates payment fields
function calc_net_still_due(prefix) {
  multiple_ele = $(prefix+'multiple');
  total_due = $(prefix+'total_due');
	charge_now_ele = $(prefix+'charge_now');
	discount_ele = $(prefix+'early_discount');
	discounted_total_ele = $("discounted_total");	
	min_charge_ele = $(prefix+'min_charge');
  
  if (multiple_ele) {
    multiple = multiple_ele.options[multiple_ele.selectedIndex].value;
    individual_total = parseFloat($(prefix+'individual_total_due').value);
    total = (individual_total * multiple).toFixed(2);;
    
    registration_total_due = $('registration_total_due');
    registration_total_due.innerHTML = "$"+total;
	total_due.value = total;
  } else {
    multiple = 1;
    total = parseFloat(total_due.value);
  }
  
	if (discount_ele) {
		discount = parseFloat(discount_ele.value);
		discount *= multiple;
	  $('discount_amt').innerHTML = "$"+(discount).toFixed(2);
		subtotal = total - discount;
		if (subtotal < 0) discounted_total_ele.innerHTML = "$"+(0).toFixed(2);
		else discounted_total_ele.innerHTML = "$"+(total - discount).toFixed(2);
	}
	else discount = 0;
	if (min_charge_ele) min_charge = parseFloat(min_charge_ele.value) * multiple;
	else min_charge = 0;
	
	if (charge_now_ele) {
		charge_now = parseFloat(charge_now_ele.value);
		if (charge_now < min_charge) {
			charge_now_ele.value = min_charge;
			charge_now = min_charge;
		}
		if (charge_now > (total - discount)) {
			charge_now_ele.value = total - discount;
			charge_now = total - discount;
		}
		
		if (charge_now_ele.value < 0) charge_now_ele.value = min_charge;
		if (charge_now < 0) charge_now = min_charge;

	still_due = (total - discount - charge_now).toFixed(2);
	if (still_due < 0) still_due = 0;
	$(charge_now_ele).up(3).down('.net_still_due').innerHTML = "$"+still_due;
	}
}
