/* Behaviors and UI enhancements for Johnny Boards Quote App */



// code to run on document ready (ie, "onload" but better)
 $(document).ready(function() {
		add_toggle_behavior();
		add_contact_form_behavior();
 });
 
 function  add_contact_form_behavior() {
	// $("#update-contact-info").attr("disabled","disabled");
	// $("#contact_info input").change( function() {$("#update-contact-info").attr("disabled",false);  });
    // contact_form_hide();

 }
 
 
function add_toggle_behavior()  {
	var clicky_link = " <a href='#' class='sel_all' onclick='return false;' >select / deselect all</a>"

	$("#filter_venues legend").append(clicky_link);
	$("#filter_venues legend a").click( function() { toggle_venue_cats(); } );

	$("#board_list th.venue_name").append(clicky_link);
	$("#board_list th.venue_name a").click( function() { toggle_allboards_box(); } );
	$("#boards_toggle_all").click( function() { toggle_boards(); } );

	$(".quote_table th.venue_name").append(clicky_link);
	$(".quote_table th.venue_name a.sel_all").click( function() { toggle_rem_all_box(); });
	$(".quote_table .toggle_all").click( function() { toggle_rem_venues(); });
	
}
 
 
 var contact_form_html;
 
 function contact_form_hide() {
	 var contact_form = document.getElementById('frm_contact_info');
	 var myFields = new Array('contact_name','company','email','phone','phone2','fax','address','city','state','postcode');
	 var fieldData = new Array();
	 
	 var bigString = '';
	 var dataHTML = '';
	 
	 for (i in myFields) {
		key = myFields[i];
		value = contact_form[key].value;
		fieldData[key] = value;
		bigString += key + ": " + value + "<br />";
	 }

	 dataHTML += fieldData['contact_name'] + "<br />"
		 + fieldData['company'] + "<br />"
		 + fieldData['email'] + "<br />"
		 + "Phone: " + fieldData['phone'] + "<br />"
		 + fieldData['phone2'] + "<br />"
		 + "Fax: " + fieldData['phone'] + "<br />"
		 + "<br />"
		 + fieldData['address'] + "<br />"
		 + fieldData['city'] + ", " + fieldData['state'] + "  " + fieldData['postcode'] + "<br />";

	$("#contact_info legend a").remove();
	var replacement_html = 
		"<div class='data_summary'> " + dataHTML + "</div>";

	contact_form_html = $("#contact_info fieldset .wrapper").html();
	$("#contact_info fieldset .wrapper").html(replacement_html);

	var original_style = {'width': '18em'};
	$("#contact_info").css(original_style);

	$("#contact_info fieldset legend").append(" <a href='#' onclick='return false;'>Edit</a>");
	$("#contact_info legend a").click( function() { contact_form_show(); } );

 }

 
 
 
 
 function contact_form_show() {
    $("#contact_info legend a").remove();
    $("#contact_info fieldset .wrapper").html(contact_form_html); 
    $("#contact_info").css('width','50em');
    $("#contact_info .column").css( {'width' : '15em', 'float' : 'left', 'margin-right':'1em' });
    $("#contact_info legend").append(" <a href='#' onclick='return false;'>Hide</a>");
    $("#contact_info legend a").click( function() { contact_form_hide(); } );
 }
 

 
 
// find ratio of checkboxes checked, given a parent container
 function boxes_checked_ratio(selector)  {
	var boxes_array = $(selector).get();
	var nbr_of_boxes = boxes_array.length;
	var nbr_of_boxes_checked = 0;
	for  (i in boxes_array)
	{
		if (true == boxes_array[i].checked)
		{
			nbr_of_boxes_checked ++;
		}
	}
	var ratio = nbr_of_boxes_checked / nbr_of_boxes;
	// console.log("Boxes checked ratio: " + ratio);
	return ratio;
 }
 
 
 
 
 function toggle_allboards_box() {
	$("#boards_toggle_all").get(0).click();
 }

 
 
 
 
function toggle_boards() {
	if  ( $("#boards_toggle_all").get(0).checked ) {
		$("#board_list input").each( 
			function (i) {
				this.checked = true;
			}
		)

	}
	else 	{
		$("#board_list input").each( 
			function (i) {
				this.checked = false;
			}
		)
	}

}




function toggle_rem_venues() {
	if  ( $(".quote_table .toggle_all").get(0).checked ) {
		$(".quote_table .remove input").each( 
			function (i) {
				this.checked = true;
			}
		)

	} else {
		$(".quote_table .remove input").each( 
			function (i) {
				this.checked = false;
			}
		)
	}

}





 function toggle_rem_all_box() {
	$(".quote_table .toggle_all").get(0).click();
 }
 




 // if more than half of checkboxes are checked, deselect all; otherwise, select all
 function toggle_venue_cats() {
	var ratio = boxes_checked_ratio("#filter_venues input");
	if ( ratio < 0.5 )	{
		$("#filter_venues input").each(
			function(i) {
				this.checked = true;
			}
		)
	}
	else	{
		$("#filter_venues input").each(
			function(i) {
				this.checked = false;
			}
		)
	}
 }