$(document).ready(function() {

// REUSABLE FUNCTIONS //
	// deselect/select all checkboxes - text is case sensitive!
		function toggleSelect(selector,container,text) {
				if (text == "Deselect all") {
					$('.' + selector).text('Select all');
					$(container + ' input').removeAttr('checked');
				} else {
					$('.' + selector).text('Deselect all');
					$(container + ' input').attr('checked','checked');
				}
			};
			
	
	// Generic shareBox - for all divs with class="shareBox" - must follow HTML code found in 'announcements' notice details template
		if ($('.shareBox').length > 0) {
			$('.shareBox').addClass('popBox');
			var shareBoxContent = $('.shareBox').removeAttr('id').wrap('<div></div>').parent().html();
			$('.shareBox').parent().remove();
		}
		
		function shareBox() {
			var checkBoxExists = $(this).next('div').html();
			if (!checkBoxExists) {
				$(this).parent().append(shareBoxContent);
				toggleShareBox();
			} else {
				$(this).next('div').toggle();
				toggleShareBox();
			}
		}
		function toggleShareBox() { 
			$('.shareBox span').click(function() {
				$(this).parent().toggle();
			});
		};
		
		
	// Generic search field clearing on focus
		$.fn.clearsearch = function() {
			return this.focus(function() {
				if( $(this).val().indexOf("e.g.") > -1 ) { // previously if( this.value == this.defaultValue ) {
					this.value = "";
				}
			}); /*.blur(function() {
				if( !this.value.length ) {
					this.value = this.defaultValue;
				}
			}); */
		};
	
	/**
	 * jQuery Cookie plugin
	 *
	 * Copyright (c) 2010 Klaus Hartl (stilbuero.de)
	 * Dual licensed under the MIT and GPL licenses:
	 * http://www.opensource.org/licenses/mit-license.php
	 * http://www.gnu.org/licenses/gpl.html
	 *
	 */	
	jQuery.cookie = function (key, value, options) {
		// key and value given, set cookie...
		if (arguments.length > 1 && (value === null || typeof value !== "object")) {
			options = jQuery.extend({}, options);
			if (value === null) {
				options.expires = -1;
			}
	
			if (typeof options.expires === 'number') {
				var days = options.expires, t = options.expires = new Date();
				t.setDate(t.getDate() + days);
			}
	
			return (document.cookie = [
				encodeURIComponent(key), '=',
				options.raw ? String(value) : encodeURIComponent(String(value)),
				options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
				options.path ? '; path=' + options.path : '',
				options.domain ? '; domain=' + options.domain : '',
				options.secure ? '; secure' : ''
			].join(''));
		}
	
		// key and possibly options given, get cookie...
		options = value || {};
		var result, decode = options.raw ? function (s) { return s; } : decodeURIComponent;
		return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? decode(result[1]) : null;
	};
	
	// Supersleight plugin - IE6 png fix
	jQuery.fn.supersleight = function(settings) {
		settings = jQuery.extend({
			imgs: true,
			backgrounds: true,
			shim: 'blank.gif',
			apply_positioning: true
		}, settings);
		
		return this.each(function(){
			if (jQuery.browser.msie && parseInt(jQuery.browser.version, 10) < 7 && parseInt(jQuery.browser.version, 10) > 4) {
				jQuery(this).find('*').andSelf().each(function(i,obj) {
					var self = jQuery(obj);
					// background pngs
					if (settings.backgrounds && self.css('background-image').match(/\.png/i) !== null) {
						var bg = self.css('background-image');
						var src = bg.substring(5,bg.length-2);
						var mode = (self.css('background-repeat') == 'no-repeat' ? 'crop' : 'scale');
						var styles = {
							'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='" + mode + "')",
							'background-image': 'url('+settings.shim+')'
						};
						self.css(styles);
					};
					// image elements
					if (settings.imgs && self.is('img[src$=png]')){
						var styles = {
							'width': self.width() + 'px',
							'height': self.height() + 'px',
							'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + self.attr('src') + "', sizingMethod='scale')"
						};
						self.css(styles).attr('src', settings.shim);
					};
					// apply position to 'active' elements
					if (settings.apply_positioning && self.is('a, input') && (self.css('position') === '' || self.css('position') == 'static')){
						self.css('position', 'relative');
					};
				});
			};
		});
	};
	
// END REUSABLE FUNCTIONS //	

// START BMDs scripts //
		if ($('ul.accordion #date').length > 0) {
			$('ul.accordion #date').daterangepicker({arrows:false}); 
		}
		
		//$('ul.accordion .leftnavSub:not(:first)').hide();
	
		$('ul.accordion li a.nav_head').click(
			function() {
				
				var checkElement = $(this).next();
				if(!checkElement.is(':visible')) {
					$('.accordion .leftnavSub:not(.alwayson):visible').slideUp('slow').parent().removeClass("lhnOpen");
					checkElement.slideDown('slow').parent().addClass("lhnOpen");
					return false;
				}
			}
		);
		
		
		if ($('.latestDeaths').length > 0) {
			$('.latestDeaths').jcarousel({
				buttonNextHTML: '<div class="btnDeathsNext"></div>',
				buttonPrevHTML: '<div class="btnDeathsPrev"></div>'
			});
                }
                if ($('.latestBirthdays').length > 0) { 
			$('.latestBirthdays').jcarousel({
				buttonNextHTML: '<div class="btnBirthdaysNext"></div>',
				buttonPrevHTML: '<div class="btnBirthdaysPrev"></div>'
			});
                }
                if ($('.latestWeddings').length > 0) {
			$('.latestWeddings').jcarousel({
				buttonNextHTML: '<div class="btnWeddingsNext"></div>',
				buttonPrevHTML: '<div class="btnWeddingsPrev"></div>'
			});
                }
                if ($('.latestAnniversaries').length > 0) {
			$('.latestAnniversaries').jcarousel({
				buttonNextHTML: '<div class="btnAnniversariesNext"></div>',
				buttonPrevHTML: '<div class="btnAnniversariesPrev"></div>'
			});
                }
                if ($('.latestOther').length > 0) {
			$('.latestOther').jcarousel({
				buttonNextHTML: '<div class="btnOtherNext"></div>',
				buttonPrevHTML: '<div class="btnOtherPrev"></div>'
			});
                }
                if ($('.latestPublic').length > 0) {

			$('.latestPublic').jcarousel({
				buttonNextHTML: '<div class="btnPublicNext"></div>',
				buttonPrevHTML: '<div class="btnPublicPrev"></div>'
			});
		}
		if ($('.latestSeasonal').length > 0) {
			$('.latestSeasonal').jcarousel({
				buttonNextHTML: '<div class="btnSeasonalNext"></div>',
				buttonPrevHTML: '<div class="btnSeasonalPrev"></div>'
			});
		}
		
		
		$('.refineSearchHead').click(
			function() {
				$(this).next().slideToggle('slow').prev().toggleClass("refineOpen");
			}
		);
		
		
		
		
		var charLenAs = 0;
		var refineSearchCats = $('.refineSearch li span').size(); // Count number of top categories displayed
		if (refineSearchCats > 4) { // If more than 4 categories, shorten list to fit on single line
			$('.refineSearch li span').each(function(){ 
					
					$(this).find('a').each(function(i){ 
						var charLenA = $(this).text().length; // Get anchor length
						charLenAs = charLenAs + charLenA; // Add to previous value of all anchors' length
						
						if (charLenAs > 70) { // If total length longer than 70
							$(this).prev().nextAll().wrapAll('<span class="refineAll"></span>').parent().after(' ').hide(); // Hide all subsequent anchors by wrapping them inside a span
							$(this).parent().parent().append('<span class="refineMore">more&hellip;</span>'); // Append 'more' text
							var innerHtml =  $(this).parent().parent().html(); // Get inner HTML for entire top category
							innerHtml = innerHtml.replace(/\s\,/g,''); // and remove useless commas / a bit flaky but it works
							$(this).parent().parent().html(innerHtml); // Replace inner HTML with comma less HTML
							return false;
						}
						
					});
				
				charLenAs = 0;
			});
		}
		
		$('.refineMore').click(
			function() {
				var refineExtra = $(this).prev().html();
				refineExtra = refineExtra.replace(/></g,'>, <');
				$(this).before(refineExtra).parent().find('span').remove();
			}
		);
		
		$('.noticePhoto ul li a').click(
			function() {
				var currentPic = $(this).attr('href');
				$('.noticeMainPhoto').attr('src', currentPic);
				return false;
			}
		);

		// Call shareBox function
		if ($('#bmdContent .noticeUtilShare').length > 0) {
			$('#bmdContent .noticeUtilShare a').removeAttr('href').click(shareBox);
		}
		
		function toggleGift () {
			$(this).find('input').attr('checked', 'checked');
			$('.noticeGiftsAdd form ul li').removeClass('giftAddChecked').find(':checked').parent().addClass('giftAddChecked');
			var bigImgSrc = $('.noticeGiftsAdd form ul li input:checked').attr('id');
			bigImgSrc = '/resources/static/bmd_gifts/' + bigImgSrc;
			if ($('.giftAddBigImg').length > 0) {
				$('.giftAddBigImg img').attr('src', bigImgSrc);
			} else {
				$('.noticeGiftsAdd form ul').prepend('<li class="giftAddBigImg"><img src="' + bigImgSrc + '" width="100" height="100" /></li>');
			}
		}
		if ($('.noticeGiftsAdd').length > 0) {
			$('.noticeGiftsAdd form ul li').addClass('giftAddHideRadio');
			toggleGift();
		}
		
		$('.noticeGiftsAdd form ul li').click(toggleGift);
		
// END BMDs SCRIPTS //

// START FAMILY SCRIPTS //		
		// Call shareBox function
		if ($('#familyContent .noticeUtilShare').length > 0) {
			$('#familyContent .noticeUtilShare a').removeAttr('href').click(shareBox);
		}
		
		// Families (old NetMums) pages - FaceBox initialize
		if ($('#familyContent a[rel*=facebox]').length > 0)
		{
		   $('#familyContent a[rel*=facebox]').facebox();
		}	
// END FAMILY SCRIPTS //		

// START JOBS SCRIPTS //		
		// Clear search inputs default values
		$(".jobSearchBox input:text").clearsearch();
		
		// Clear search form
		/* This would properly reset the form using the browser's built in function
		$('.jobSearchClear a').click(function(){
			$('.jobSearchBox')[0].reset();
			if ($('.jobSearchRefine').length > 0) {
				$('.jobSearchRefine')[0].reset();
			}
			return false;
		
		}); */
		$('.jobSearchClear a').click(function(){
			$(':input','.jobSearchBox')
			.not(':button, :submit, :reset, [type=hidden], :checkbox, :radio')
			.val('');
			
			$('select option','.jobSearchBox').removeAttr('selected');
			$('#job_distance option:last, #job_date option:last').attr('selected','selected');
			$('#job_salary_from option:first, #job_salary_to option:first').attr('selected','selected');
			
			$(':radio, :checkbox','.jobSearchBox').removeAttr('checked');
			
			if ($('.jobSearchRefine').length > 0) {
				$(':input','.jobSearchRefine')
				.not(':button, :submit, :reset, [type=hidden], :checkbox, :radio')
				.val('');
				
				$('select option','.jobSearchRefine').removeAttr('selected');
				$('#job_ref_date option:last').attr('selected','selected');
				$('#job_ref_salary_from option:first, #job_ref_salary_to option:first').attr('selected','selected');
			
				$(':radio, :checkbox','.jobSearchRefine').removeAttr('checked');
			}
			return false;
		
		});
		
		// Search box more options toggle
		$('.jobSearchMoreToggle').toggle(
			function() {
				$(this).toggleClass('jobSearchMoreToggleOn');
				$(this).text('Basic Search');
				$('.jobSearchAdvanced').slideToggle('slow');
			},
			function() {
				$(this).toggleClass('jobSearchMoreToggleOn');
				$(this).text('Advanced Search');
				$('.jobSearchAdvanced').slideToggle('slow');
			}
		);
		
		// Check state of industries checkboxes on load to determine initial 'Select all' text
		if ($('.jobSearchToggle').length > 0) {
			var i = 0;
			$('.jobSearchIndustries input:checked').each(function (){
				i = i+1;
			});
			if (i == 0) {
					$('.jobSearchToggle').text('Select all');
					$('.jobRefineSelectToggle').text('Select all');
				}
		};
		
		// Search box deselect/select all industries
		$('.jobSearchToggle').click(
			function() {
				var selector = $(this).attr('class');
				var container = '.jobSearchIndustries';
				var text = $(this).text();
				toggleSelect(selector,container,text);
				if ($('.jobRefineSelectToggle').length > 0) {
					var selector2 = 'jobRefineSelectToggle';
					var container2 = '.jobRefineIndustries';
					var text2 = $('.jobRefineSelectToggle').text();
					toggleSelect(selector2,container2,text2);
				};
			}
		);
		
		// Replicate search criteria from advanced to facets and vice versa
		function replicateCheckbox(element) {
			var item = $(element).attr('name');
			var value = $(element).attr('value');
			var state = $(element).attr('checked');
			if (state == true) {
				var checked = 'checked';
			} else { 
				var checked = '';
			}
			$('input[name="'+item+'"][value="'+value+'"]').attr('checked', checked);
		};
		function replicateSelect(element) {
			var item = $(element).attr('name');
			var value = $(element).children(':selected').attr('value');
			$('select[name="'+item+'"] option[value="'+value+'"]').attr('selected', 'selected');
			/* $('select[name="'+item+'"]').each(function () { // check which options are now selected
                alert($(this).children(':selected').attr('value'));
              });*/
		};
		
		$('.jobSearchAdvanced input').click(function() {
			replicateCheckbox($(this));
		});
		$('.jobSearchAdvanced select').change(function() {
			replicateSelect($(this))
		});
		$('.jobSearchRefine input').click(function() {
			replicateCheckbox($(this));
		});
		$('.jobSearchRefine select').change(function() {
			replicateSelect($(this))
		});
		
		// Refine search expand/collapse facets
		function refineToggle() {
			$(this).toggleClass('jobRefineToggle').nextAll().toggle();
		}
		$('.jobSearchRefine legend').click(refineToggle);
		$('.jobSearchRefine label:first').click(refineToggle);
		
		// Refine search view all industries
		$('.jobRefineIndToggle').click(function() {
			$(this).remove();
			$('.jobRefineIndustries ul li:not(".jobRefineTopInd")').show();
		});
		
		// Refine search deselect/select all industries
		$('.jobRefineSelectToggle').click(
			function() {
				var selector = $(this).attr('class');
				var container = '.jobRefineIndustries';
				var text = $(this).text();
				toggleSelect(selector,container,text);
				var selector2 = 'jobSearchToggle';
				var container2 = '.jobSearchIndustries';
				var text2 = $('.jobSearchToggle').text();
				toggleSelect(selector2,container2,text2);
			}
		);
		
		// Expand/collapse all results 
		$('.jobViewSummary').click( 
			function() { 
				$.cookie('jobsView', null, { path: '/' });
				$('.jobViewSummary').removeClass('jobViewOff'); 
				$('.jobViewSingle').addClass('jobViewOff'); 
				$('.jobListSlide').show().parent().addClass('jobResultsOpen'); 
				return false;
			}
		);
		$('.jobViewSingle').click( 
			function() { 
				$.cookie('jobsView', 'contract', { path: '/' });
				$('.jobViewSingle').removeClass('jobViewOff'); 
				$('.jobViewSummary').addClass('jobViewOff'); 
				$('.jobListSlide').hide().parent().removeClass('jobResultsOpen'); 
				return false;
			}
		);
		function jobResultsSlide() { 
			$(this).parents('li').find('.jobListSlide').slideToggle().parent().toggleClass('jobResultsOpen'); 
			return false;
		}

		// Retain results view preference during session
		if ($.cookie('jobsView')) {
			$('.jobViewSummary').addClass('jobViewOff'); 
			$('.jobViewSingle').removeClass('jobViewOff'); 
			$('.jobListSlide').show().parent().addClass('jobResultsOpen');
            $('.jobViewSingle').click();
		}
        else
        {
            $('.jobViewSummary').click();
        };
		
		// Expand/collapse search results
		$('#jobContent.jobResults .jobResultsList h3 a').click( jobResultsSlide );
		$('#jobContent.jobResults .jobListLoc').click( jobResultsSlide );
		$('#jobContent.jobResults .jobListSalary').click( jobResultsSlide );
		
		
		//Job search results toggle share box (works differently from other share boxes) - hides all but one
		$('.jobListUtils a').click(
			function() {
				var index = $('.jobListUtils a').index(this);
				$('.utilBox').not(':eq('+index+')').hide().parent().removeClass('jobShowShareFixIE');			   
				$('.utilBox:eq('+index+')').toggle().parent().toggleClass('jobShowShareFixIE');
				jobResultsClose();
			}
		);
		
		function jobResultsClose() { 
			$('.utilBox').find(':contains("Close")').click(function() {
				$(this).parent().hide().parent().removeClass('jobShowShareFixIE');
			});
		};
		
		//Save this job facebox log in/register prompt
		if ($('.saveJob').length > 0) {
			$('.saveJob a[rel*=userunknown]').click(passJobID).facebox();
			$('.jobApplySignIn a').attr('href','#jobSaveLogin').click(removeJobRegTabs).facebox();
			$('#facebox').addClass('jobFacebox');
			$('#facebox').bgiframe(); 
		}
		if ($('.jobContactSignIn').length > 0) {
			$('.jobContactSignIn a').attr('href','#jobSaveLogin').facebox();
			$('#facebox').addClass('jobFacebox');
			$('#facebox').bgiframe(); 
		}
		//This one is temporary for 'email this job'
		/*if ($('.emailJob').length > 0) {
			$('.emailJob a').attr('href','#jobEmailFriend').facebox();
			$('#facebox').addClass('jobFacebox');
			$('#facebox').bgiframe(); 
		}*/
		
		//Pass selected job ID to log in/register prompt
		function passJobID() {
			var jobID = $(this).attr('class');
			$('.jobSaveExist input[type=hidden]').attr('value',jobID);
			$('.jobSaveNew input[type=hidden]').attr('value',jobID);
			$('ul.jobSaveLogin').show();
			if ($('li.jobSaveExist').hasClass('jobSaveOff')) {
				$('form.jobSaveExist').removeClass('jobSaveUnique').hide(); 
					$('form.jobSaveNew').show(); 
			} else {
				$('form.jobSaveExist').removeClass('jobSaveUnique').show(); 
					$('form.jobSaveNew').hide(); 
			}
			//alert(jobFormID);
		};
		//Remove tabs for log in only
		function removeJobRegTabs() {
			$('ul.jobSaveLogin').hide();
			$('form.jobSaveExist').addClass('jobSaveUnique').show(); 
			$('form.jobSaveNew').hide(); 
		};
		// switch between facebox log in/register 
		if ($('#facebox').length > 0) {
			$(document).bind('reveal.facebox', function() {
				$('li.jobSaveExist').click( 
					function() { 
						$('li.jobSaveExist').removeClass('jobSaveOff'); 
						$('li.jobSaveNew').addClass('jobSaveOff'); 
						$('form.jobSaveExist').show(); 
						$('form.jobSaveNew').hide(); 
					}
				);
	
				$('li.jobSaveNew').click( 
					function() { 
						$('li.jobSaveNew').removeClass('jobSaveOff'); 
						$('li.jobSaveExist').addClass('jobSaveOff'); 
						$('form.jobSaveExist').hide(); 
						$('form.jobSaveNew').show(); 
					}
				);
	
			  }) 
		}
		
		// Call shareBox function
		if ($('.shareJob').length > 0) {
			$('.shareJob a').removeAttr('href').click(shareBox);
		}
		
		// Application form highlight current field
		if ($("#jobContent form.jobApplyForm").length > 0 ) focusHighlight();
        function focusHighlight() {
            $("input[type=text],textarea,select").focus(function() {
                $(this).parent().addClass("formFocus");
            });
            $("input[type=text],textarea,select").blur(function() {
                $(this).parent().removeClass("formFocus");
            });
            
			$("input[type=radio],input[type=file]").focus(function() {
                $(this).parent().parent().addClass("formFocus");
            });
            $("input[type=radio],input[type=file]").blur(function() {
                $(this).parent().parent().removeClass("formFocus");
            });
        }
		
		// Application form 'note' textarea counter
		if ($('.jobApplyForm ').length > 0) {
			$('#jobContent #message').countable({ 
				tagName: "p",
				className: "jobApplyCounter",
				maxClassName: "jobApplyCounterMaxed",
				threshold: 0,
				startOpacity: 0.5,
				appendMethod: "insertBefore",
				defaultText: "Enter message",
				maxLength: 500
			});
		}
		
		// Job forms validation
			// Application form
		if ($('.jobApplyForm ').length > 0) {
				$('.jobApplyForm').prepend('<div class="validateError" style="display: none;"><h4>Sorry, it appears some details are missing or incorrect.</h4><ul></ul></div>');
		
			$('.jobApplyForm ').validate({
				ignoreTitle: true,
				errorContainer: ".validateError",
				errorLabelContainer: ".validateError ul",
				wrapper: "li",
				errorClass: "jobApplyInvalid",
				highlight: function(element, errorClass) {
					$(element).addClass(errorClass);
					$(element.form).find("label[for=" + element.id + "]").parent()
							.addClass(errorClass);
				},
				unhighlight: function(element, errorClass) {
					$(element).removeClass(errorClass);
					$(element.form).find("label[for=" + element.id + "]").parent()
							.removeClass(errorClass);
				},
				
				rules: {
					firstname: {
						required: true,
						minlength: 2
					},
					surname: {
						required: true,
						minlength: 2
					},
					from: {
						required: true,
						email: true
					},
					confirmemail: {
						required: true,
						equalTo: "#from"
					},
					telephone: {
						required: true,
						phoneUK: true
					}
	
				},
				
				messages: {
					firstname: {
						required: "Please specify your <strong>first name</strong>",
						minlength: jQuery.format("Your <strong>first name</strong> should have at least {0} characters")
					},
					surname: {
						required: "Please specify your <strong>last name</strong>",
						minlength: jQuery.format("Your <strong>last name</strong> should have at least {0} characters")
					},
					from: {
						required: "Please specify your <strong>email address</strong>",
						email: "Your <strong>email address</strong> must be in the format of name@domain.com"
					},
					confirmemail: {
						required: "Please <strong>confirm your email address</strong>",
						equalTo: "The <strong>confirm email</strong> field does not match the 'email' field"
					},
					telephone: {
						required: "Please specify a <strong>telephone</strong> or mobile number",
						phoneUK: "Please enter a valid UK <strong>telephone</strong> number"
					}
				}
	
			});
		
		}
		
		// START Save jobs shortlist - COOKIE BASED //
		if ($('#jobContent').length > 0) {
			var valueSeparator 		= '^';
			var itemSeparator 		= '|';
			var jobListCookie 		= 'jobList';
			var jobShortlist = $('<h3 class="jobHead jobShortlist" id="jobShortlistHead">My saved jobs</h3> \n' +
			'<div class="jobPanel jobMySaved jobShortlist"> \n' +
				'<ul> \n' +
				'</ul> \n' +
				'<!--<p class="genericRead jobShortlist"><a href="">View all saved jobs</a></p>--> \n' +
			'</div>');
			redrawShortlist();
		}
		
		function toArr(str){
			arr = []
				if(str == null ) { return arr }
			tmp = str.split(itemSeparator);
			for(i=0;i<tmp.length;i++){
				itemstr = tmp[i]
				arr[i] = itemstr.split(valueSeparator) 
			}
			//alert(arr)
			return arr;
		}
		
		function toStr(arr){
			//alert(arr)
			str=''
			tmparr=[]
			for(i=0;i<arr.length;i++){
			   tmparr[i] = arr[i].join(valueSeparator) 
			}
			str = tmparr.join(itemSeparator)
			//alert(str)
			return str
		}
		
		function redrawShortlist() {
			//read shortlist data from cookie
			var jobCurrentCookieVal 		= $.cookie(jobListCookie);
			var jobCurrentCookieArr 		= toArr(jobCurrentCookieVal);
			$('.saveJob a').text('Save this job');
			
			if(jobCurrentCookieArr.length == 0) {
				$("[class~='jobShortlist']").fadeOut('slow', function() {
					$(this).remove();
				});

			} else {
				if ($('.jobShortlist').length == 0) {
					$('#jobContent > .grid_2:last').prepend(jobShortlist);
				}
				$(".jobMySaved ul").empty()
				for(i=0;i<jobCurrentCookieArr.length;i++) {
					var foo = $('<li class="clearfix"><p><a href="/jobs/advert/'+jobCurrentCookieArr[i][0]+'/">'+jobCurrentCookieArr[i][1]+'</a></p><p>'+jobCurrentCookieArr[i][2]+'</p><p class="jobMySavedRemove"><a href="#jobShortlistHead" class="jobId_'+jobCurrentCookieArr[i][0]+'">Remove job</a></p></li>')
					$(".jobMySaved ul").append(foo);
					if ($('.saveJob').length > 0) {
						var currentArrId = "jobId_"+jobCurrentCookieArr[i][0];
						var objArr = $('.saveJob a').toArray();
						var idArr = [];
						$.each(objArr, function() {
								//idArr.push(this.id);
							    if (this.id == currentArrId) {
									$(this).text('Job saved');
								} 
						});
						
					}
				}
				$("[class~='jobShortlist']").show();
				//$("#shortlist").show('highlight')
			}
		} 
		
		// Results list save event
		$(".jobResultsList .saveJob a").click(function() {
			var jobIDValSplit		= (this.id).split("_");
			var jobIDVal			= jobIDValSplit[1];
			var jobTitleVal 		= $(this).parents('li.clearfix').children('h3').text();
			var jobLocVal 			= $(this).parents('li.clearfix').children('.jobListLoc').text();
			var jobCookieVal 		= $.cookie(jobListCookie);
			var jobCookieArr 		= toArr(jobCookieVal);
			
			// animation params
			var jobX 		= $(this).parents('li.clearfix').children('h3').offset().left;
			var jobY 		= $(this).parents('li.clearfix').children('h3').offset().top;
			var listX 		= $('#jobContent > .grid_2:last').offset().left;
			var listY 		= $('#jobContent > .grid_2:last').offset().top;
			var gotoX 			= listX - jobX;
			var gotoY 			= listY - jobY;
			// animate clone of job title h3
			$(this).animate({opacity: 0}, 300 ).animate({opacity: 1}, 300 ).parents('li.clearfix').children('h3')
			.clone()
			.prependTo($(this).parents('li.clearfix'))
			.css({'position' : 'absolute', 'background' : '#D4D47D', 'width' : '200px', 'padding' : '0'})
			.animate({opacity: 1}, 100 )
			.animate({opacity: 0.1, marginLeft: gotoX, marginTop: gotoY, width: 140}, 1200, function() {
				$(this).remove();
			}).parents("html:not(:animated),body:not(:animated)").animate({scrollTop: listY}, 1200);

		// avoid duplicates
			isNew = true;
			for(i=0;i<jobCookieArr.length;i++) {
				if (jobCookieArr[i][0] == jobIDVal) {
					isNew = false;
				}
			}
			if(isNew) {
				jobCookieArr[jobCookieArr.length] = [jobIDVal,jobTitleVal,jobLocVal];
				jobCookieVal = toStr(jobCookieArr);
				$.cookie(jobListCookie, null, { path: '/' });
				$.cookie(jobListCookie, jobCookieVal, { path: '/' });
			}
			redrawShortlist();
			return false;
		});
		
		// Ad details save event
		$(".jobDetailsUtils .saveJob a").click(function() {
			var jobIDValSplit		= (this.id).split("_");
			var jobIDVal			= jobIDValSplit[1];
			var jobTitleVal 		= $(this).parents('.grid_10').children('.jobDetailsTitle').text();
			var jobLocValSplit		= $(this).parents('.grid_10').children('.jobDetailsInfo li:first').text().split(":");
			var jobLocVal			= jobLocValSplit[1];
			var jobCookieVal 		= $.cookie(jobListCookie);
			var jobCookieArr 		= toArr(jobCookieVal);
			
			/*/ animate anchor
			var listY 		= $('#jobContent > .grid_2:last').offset().top;
			$(this).animate({opacity: 0}, 300 ).animate({opacity: 1}, 300 ).parents("html:not(:animated),body:not(:animated)").animate({scrollTop: listY}, 1200);
			*/
			// animation params
			var jobX 		= $(this).offset().left;
			var jobY 		= $(this).offset().top;
			var listX 		= $('#jobContent > .grid_2:last').offset().left;
			var listY 		= $('#jobContent > .grid_2:last').offset().top;
			var gotoX 			= listX - jobX;
			var gotoY 			= listY - jobY;
			// animate clone of job title h3
			$(this).animate({opacity: 0}, 300 ).animate({opacity: 1}, 300 )
			.clone()
			.prependTo($(this).parent())
			.css({'position' : 'absolute', 'background' : '#D4D47D', 'width' : '140px', 'padding' : '0'})
			.animate({opacity: 1}, 100 )
			.animate({opacity: 0.1, marginLeft: gotoX, marginTop: gotoY, width: 140}, 1200, function() {
				$(this).remove();
			}).parents("html:not(:animated),body:not(:animated)").animate({scrollTop: listY}, 1200);

		// avoid duplicates
			isNew = true;
			for(i=0;i<jobCookieArr.length;i++) {
				if (jobCookieArr[i][0] == jobIDVal) {
					isNew = false;
				}
			}
			if(isNew) {
				jobCookieArr[jobCookieArr.length] = [jobIDVal,jobTitleVal,jobLocVal];
				jobCookieVal = toStr(jobCookieArr);
				$.cookie(jobListCookie, null, { path: '/' });
				$.cookie(jobListCookie, jobCookieVal, { path: '/' });
			}
			redrawShortlist();
			return false;
		});
		
		$(".jobMySavedRemove a").live('click', function() {
			var jobIDValSplit 		= $(this).attr('class').split("_");
			var jobIDVal			= jobIDValSplit[1];
			//alert(jobIDVal);
			var jobCookieVal 		= $.cookie(jobListCookie);
			var jobCookieArr 		= toArr(jobCookieVal);
			
			tmpArr = [];
			for(i=0;i<jobCookieArr.length;i++) {
				if (jobCookieArr[i][0] != jobIDVal) {
					tmpArr[tmpArr.length] = jobCookieArr[i];
				}
			}
			jobCookieArr = tmpArr;
			jobCookieVal = toStr(jobCookieArr);
			
			$.cookie(jobListCookie, null, { path: '/' });
			if(jobCookieArr.length !=0) {
				$.cookie(jobListCookie, jobCookieVal, { path: '/' });
			}
			redrawShortlist();
			return false;
		
		});
		// END Save jobs shortlist - COOKIE BASED //
		
// END JOBS SCRIPTS //
		
	});

