
// total number of course enrolled on
var CourseTotal_G = 0;
//total cost of course enrolled on
var CourseTotalCost_G = 0;
//count of how many participants have been created
var PartCount_G = 2;
// array to hold course information from google spreadsheet feed.
var courses_array = [];

$(document).ready(function() {
 if (courses_array == 0) { alert("course data cannot be loaded at this time .. please reload page");} 
 else {
 make_select_box(2);
 };
 
 $("#pceform").validate();

});

// loads google JSON from spreadsheets
function listEvents(root) {
	var feed = root.feed;
    var entries = feed.entry;
		for (var i = 0; i < entries.length; ++i)
		{
		 var entry = entries[i];
		 var ID = entry.title.$t;
		 var content = entry.content.$t;
		 clean_json(ID, content);
		}
}
  
//cleans up the json data from googlespreadsheet and puts it in another json object: courses_array[]
function clean_json(id, content) {
var course_object = {};
// IE and FF implement split differently
content = content.replace(/^coursetitle:/,'');
var items = content.split(/\w+:\s+/);
		  for (i=0;i < items.length; i++)
		  {
		  // strip any white space or comma at start or end;
		  items[i] = items[i].replace(/^\s+|,\s+$/g, ''); 
		  } 
course_object.courseID = id;
course_object.courseTitle = items[0];
course_object.courseSchedule = items[1];
course_object.courseCost = items[2];
courses_array.push(course_object);	
	
} 



// creates the initial select box and populates it with data
function make_select_box(num) {
	var TitleHash = Object;
	for (var i=0; i<courses_array.length; i++)
		{
			TitleHash[courses_array[i].courseTitle] = courses_array[i].courseTitle;
		}
	for (i=1;i<=num;i++)
		{	
		selectid = "courses_dropdown_" + i;
		$select = $('<select id="' + selectid +'"></select>');
		$select.change(function(){display_details($(this).val(), this.id) });
		$select.append($('<option value="">Please select...</option>'));
			for (key in TitleHash)
			{
			$select.append($('<option value="'+TitleHash[key]+'">'+TitleHash[key]+'</option>'));
			}
		var id = "courses_dropdown_holder_" + i;
		var $JQid = $('#' + id);
		$JQid.append($select);
		}
}


// displays a preview of the course details based on choice from select.
function display_details(val, id) {
	var $display_id = create_id(id, "course_details");
	$display_id.empty();
	for (i=0;i<courses_array.length;i++)
	{
		if (courses_array[i].courseTitle == val)
		{
		var $checkbox = $('<input type="checkbox" />');
		$checkbox.data("Data",{title: courses_array[i].courseTitle, id: courses_array[i].courseID , cost: courses_array[i].courseCost , when: courses_array[i].courseSchedule});

		var $schedule = $('<label>' + courses_array[i].courseSchedule + '  </label></br>');
		var $title = $('<span>' + courses_array[i].courseTitle + '  </span></br>');
		var $cost = $('<span> Cost: $' + courses_array[i].courseCost + ' </span>');
		var $id = $('<span> Course ID: ' + courses_array[i].courseID + '</span></br></br>');
		$display_id.append($checkbox, $schedule,$title, $cost,$id);	
		}
	}			
}

// generic helper fucntion, creates a JQ ID selector
function create_id(tostrip, toappend) {
	var num = tostrip.match(/_\d+/);
	var newid = toappend + num;
	var $JQid = $('#' + newid);
	return $JQid;
}


// adds the checked program to the cart
function add_to_cart(id) {
  var $cart_id = create_id(id, "cart_details");
  var $display_id = create_id(id, "course_details");
  $display_id.children('input:checked').each(function()
			{
	        $this = $(this);
			var objData = $this.data( "Data" );
				if (check_cart($cart_id, objData.id))
				{
					var inputtext = ' Title: ' + objData.title;
					inputtext += ' Date: ' + objData.when;
					inputtext += ' Cost: $' + objData.cost;
					var $input = $('<input type="text" size="70"/>').val(inputtext).data("Data", objData);
					// give each input a unique name
					var participant = $cart_id.parents("div").eq(0).attr('id');
					var inputname = participant + '_courseid:' + objData.id; 
					$input.attr('name',inputname);
					var $checkbox = $('<input type="checkbox" /><br>');
					$cart_id.append($input,$checkbox );
					total_charge(objData.cost,true);
				}		
  			})
}

//checks contents of cart
function check_cart($cartid, courseid){
    var result = true;
    $cartid.children("input[type=text]").each(function()
		{
		var myData = $(this).data( "Data" );
			if (myData.id == courseid)
			{
			alert ("this course already exists in cart");
			result = false;
			} 
		});
	return result;
}


function remove_from_cart(id) {
  var $cart_id = create_id(id, "cart_details");
 	$cart_id.children('input:checked').each(function()
	  {
		$this = $(this);
		var cost = $this.prev().data("Data").cost;
		$this.prev().remove();
		$this.next().remove();
		$this.remove();
		total_charge(cost,false);
	  })
	
}

function total_charge(coursecost,flag){
	coursecost = parseFloat(coursecost);
	if (flag == true)
	{
	  CourseTotalCost_G += coursecost;
	  CourseTotal_G ++;
	}
	  else if (flag == false) {
	  CourseTotalCost_G -= coursecost;
	  CourseTotal_G --;
	}
	your_discount();
	$("#totalnum").empty().append(CourseTotal_G);
}
function discount2(){
	 var discountpercent = $("#discount option:selected").val();
	 console.log(discountpercent);
}


function your_discount(){
	 var discountpercent = $("#discount option:selected").val();
	 var discounttominus = (CourseTotalCost_G/100) * discountpercent;
	 var discounttotal = CourseTotalCost_G - discounttominus;
	 
	 $("#totalcost").empty().append("$" + discounttotal);
}

	 

function participant(add) {
	if (add == true) 
	{ // add participant
		PartCount_G ++;
		var $clone = $("#participant_2").clone(true);
		var newid = "participant_" + PartCount_G;
		var lastPartCount = (PartCount_G - 1)
		var lastid = "participant_" + lastPartCount;
		var $lastid = $('#' + lastid);
		$clone.attr('id', newid);
		$clone.find("h2").eq(0).empty().append("Participant " + (PartCount_G - 1) + " Contact Details");
		
		// change id's for cart to they are unique for new participant
			$clone.find("div , select , input , a").each(function(){ 
				var currentid = $(this).attr('id');
				var new_div_id = currentid.replace(/\d+$/, PartCount_G);
				$(this).attr('id', new_div_id);
			});
		// give new participant input elements unique names for the form submission and clear any values.
			$clone.find("input[type!=button]").each(function(){ 
				$this = $(this);	
				$this.val(""); 
				$this.attr('checked',false);
				var currentname = $this.attr('name');
				var new_name = currentname.replace(/\d+$/, PartCount_G);
				$this.attr('name', new_name);
			});
		$clone.insertAfter($lastid);
		//empty cart and preview divs
		$('#course_details_' + PartCount_G).empty();
		$('#cart_details_' + PartCount_G).empty();
		
	} else if (add == false)
		{ // remove participant
		newid = "participant_" + PartCount_G; 
		var $JQid = $('#' + newid);
		$JQid.remove();
		PartCount_G --;	
	}
}

function copy_address(id) {
	var $from = $("#participant_1");
	var $currentpart = create_id(id, "participant"); 
	var MainAddress = $from.find('input[name=Mailing_address]').val();
	$currentpart.find('input[name^=Mailing_address]').val(MainAddress);
	MainSuburb= $from.find('input[name=Suburb]').val();
	$currentpart.find('input[name^=Suburb]').val(MainSuburb);
	var MainState = $from.find('input[name=State]').val();
	$currentpart.find('input[name^=State]').val(MainState);
	var MainPostcode = $from.find('input[name=Postcode]').val();
	$currentpart.find('input[name^=Postcode]').val(MainPostcode);
}


function copy_org(id) {
	var $from = $("#participant_1");
	var $currentpart = create_id(id, "participant"); 
	var organisation = $from.find('input[name=Organisation]').val();
	$currentpart.find('input[name^=Organisation]').val(organisation);
}

function copy_phone(id) {
	var $from = $("#participant_1");
	var $currentpart = create_id(id, "participant"); 
	var workphone = $from.find('input[name=telephone_work]').val();
	$currentpart.find('input[name^=telephone_work]').val(workphone);
	var fax = $from.find('input[name=telephone_fax]').val();
	$currentpart.find('input[name^=telephone_fax]').val(fax);
}

