﻿//<![CDATA[
$(document).ready(function(){
	
	//Handler for the 'add to basket' link			   
	$('a.basketLink').click(basketLink);
	
	$('a.applyURLLink').click(externalLinkHandler);
	
	$('#jobBasketArea').loadBasket();
	
	initBasketLinks();
});	
	
//Function to add/edit jobs to the basket
jQuery.fn.editBasket = function(url, containerID){
	//call the basket script to add/edit jobs
	$.ajax({
		type: "GET",
		url: url,
		cache: false,
		error: function() {$('#' + containerID).text('Error loading Job Basket...')},
		success: function(r) { 
			$('#' + containerID).loadBasket();
		}
	});
};

jQuery.fn.loadBasket = function(){
		
	var loadingMsg = '<div id="loadingMsg"><img src="images/loading_sm.gif" alt="loading..."  /></div>'
	//Show loading image
	$(this).html(loadingMsg);
	//call the basket script to add/edit jobs
	$.ajax({
		type: "GET",
		url: 'includes/doJobBasket.asp',
		cache: false,
		error: function() {$('#jobBasketArea').text('Error loading Job Basket...')},
		success: function(r) {
			aryData = r.split('|||')
			if(aryData.length>=0){
				$('#jobBasketArea').html(aryData[0]);
				basketTotal(aryData[1]);
			}
			$("a.applyURLLink").unbind('click', externalLinkHandler)
			$('a.applyURLLink').click(externalLinkHandler);
			$("a.basketLink").unbind('click', basketLink)
			$('a.basketLink').click(basketLink);
			$("a.deleteLink").unbind('click', deleteLink)
			$('a.deleteLink').click(deleteLink);
		}
	});
};

function externalLinkHandler(){
	return true;
	$('#jobBasketArea').loadBasket();
};
function deleteLink(){
	if(this.href!=null){
		var strFullURL = this.href;
		var url = strFullURL.substring(strFullURL.lastIndexOf("/")+1,strFullURL.length);
		
		$(this).editBasket(url, "jobBasketArea")
	}
	return false;
};

function basketLink(){
	if(this.href!=null){
		var strFullURL = this.href;
		var url = strFullURL.substring(strFullURL.lastIndexOf("/")+1,strFullURL.length);

		//Change the html within the li so that it toggles the add/remove links
		if($(this).text() == 'Add to Job Basket'){
			$(this).parent('li').addClass('none');
			$(this).parent('li').siblings('li.remove').removeClass('none');
		} else {
			$(this).parent('li').addClass('none');
			$(this).parent('li').siblings('li.add').removeClass('none');
		}
		
		$(this).editBasket(url, "jobBasketArea")
	}
	return false;
}

function basketTotal(num) {
	$('.JobBasketTotal').text((num>=0) ? num : 0);
}


/*
Function to set add/remove links if they're in the basket. Called onload.
*/
function initBasketLinks(){
	var params = parseCookie('Cactusoft+Parodia');
	var numJobIDs = trim(params['JobString']).split(' ')
	
	for(i=0; i < numJobIDs.length; i++){
		//alert(numJobIDs[i])
		$('#links_' + numJobIDs[i] + ' li.remove').removeClass('none');
		$('#links_' + numJobIDs[i] + ' li.add').addClass('none');
	}
	
}

//Trim spaces from beginning and end of a string. Same as trim() in vbscript.
function trim(str){
	if (!str) {return '';}
	return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}

/*
Parses a Cookie and breaks values into key/pairs
*/
function parseCookie(cookieName) {
   var Params = {};
   if ( ! $.cookie(cookieName) ) {return Params;}// return empty object
   var Pairs = $.cookie(cookieName).split(/[;&]/);
   for ( var i = 0; i < Pairs.length; i++ ) {
      var KeyVal = Pairs[i].split('=');
      if ( ! KeyVal || KeyVal.length != 2 ) {continue;}
      var key = unescape( KeyVal[0] );
      var val = unescape( KeyVal[1] );
      val = val.replace(/\+/g, ' ');
      Params[key] = val;
   }
   return Params;
}

//alert($.cookie('Cactusoft+Parodia'));
//]]>