jQuery("html").addClass("has-js");
		
		jQuery.fn.filterListings = function() {
			jQuery('.filter_checkbox').change(function() {
				
				var filename = jQuery('#filename').val();
			
				if(filename == 'merchants'){
				
					/*
					 * gets the paths parts, checks to see if there is a page number or a-z letter, removes it and attaches the correct get string
					 */
					
					var changed = jQuery(this).val();
					
					var path = jQuery('#path').val();
					var base_url = jQuery('#base_url').val();
					var filter = jQuery('#merchant_filter').val();
	
					var parts = path.split('/');
					
					var number = (parts.length) - 1;
					
					if((parts[number] == parseInt(parts[number])) || (parts[number].match(/^[a-z]$/))){
						
						var number = number - 1;
					}	
					var url = base_url;
					var i = 0;
					while (i<=number){
						
						url = url + parts[i] + "/"; 
						i++;
					}	
								
					if(filter == 'all'){
						if(changed == 'voucher'){
							var getstring = '?cb=cashback';
						}
						if(changed == 'cashback'){
							var getstring = '?vc=voucher';
						}
					} else {
						var getstring = '';
					}	
					
					url = url + getstring;				
					window.location = url;
				}
				else if(filename == 'search'){
					
					/*
					 * gets the full url and uses regex to search and remove the page number and filter type if necessary
					 */
					
					var full_url = jQuery('#full_url').val();
								
					full_url = full_url.replace(/\&page=[0-9]+/,'');				
					
					var filter = jQuery('#merchant_filter').val();
					
					var changed = jQuery(this).val();
					
					if(filter == 'all'){
						if(changed == 'voucher'){
							var getstring = '&cb=cashback';
						}
						if(changed == 'cashback'){
							var getstring = '&vc=voucher';
						}
					} else {
						
						var getstring = '';
						
						full_url = full_url.replace(/\&cb=cashback/,'');		
						full_url = full_url.replace(/\&vc=voucher/,'');
						
					}	
					var url = full_url + getstring;				
					window.location = url;
					
				}	
								
			});
		}

		jQuery.fn.referSearch = function(options) {
			
			var camp_id = '';
			
			 jQuery(".create-deep-link").click(function() {
				 camp_id = jQuery(this).parents(".refer-methods").attr("id");
				 createDeepLink(jQuery("#" + camp_id).find(".retailer-text-box").val(), true);
			});
			
			var settings = jQuery.extend({
				defaultText : 'Type retailer name here',
				autoSuggest : 'false'
			},options||{});	

			if (jQuery(".retailer-text-box").val() == '') {

				jQuery(".retailer-text-box").val(settings.defaultText);
			}
			jQuery(".retailer-text-box").click(function() {				
				if (jQuery(this).val() == settings.defaultText) {
					jQuery(this).val('');
				}
			});
			
			jQuery(".retailer-text-box").blur(function() {
				if (jQuery(this).val().length === 0 ){
					jQuery(this).val(settings.defaultText);
				}
			});

			if (settings.autoSuggest == "true"){
				var searchID = "";
				
				jQuery(".retailer-text-box").one("click",function() {
					camp_id = jQuery(this).parents(".refer-methods").attr("id");
					$.getScript("/merchant_qsearch.php", function(){ 
						autosearch_refer();
					});
						
				function autosearch_refer(){
					jQuery("input#" + searchID).autocomplete(merchants, {
						minChars: 2,
						width: 252,
						selectFirst: false,
						scrollHeight : "auto",
						matchContains: "s",
						autoFill: false,
						max : "5",
						formatItem: function(row, i, max) {
							var returned_string;									
							returned_string = "<span class='store'>" + row.s + "</span>";							
								return returned_string;
						},
						formatMatch: function(row, i, max) {
								return row.s;
						},
						formatResult: function(row) {								
								return row.s;
						}	
												
						}).result(function(event, item) {
							var url_name = item.u;
							camp_id = jQuery(this).parents(".refer-methods").attr("id");
							createDeepLink(url_name, false);
						//location.href = "/" + item.u + "/?ac";
						});
						
					}
				});// end autosearch_refer
				
			}	//end if	
			
			function createDeepLink(url_name, is_button) {
				// do nothing if null, else write referral link and return to populate div
				if (typeof(url_name) == "undefined") {
					// replace with some kind of 'try again' message
					return false;
				}
				else {
					//
					// call script to generate URL and write to DB
					jQuery.ajax({ 
						type: "GET", 
						url: "/ajax/referrals", 
						dataType: "HTML", 
						data: "action=generate_referral_link&url_name="+url_name+"&is_button="+is_button+"&cid="+camp_id, 
						error: function() {
							jQuery("#" + camp_id).find('.deep-link-text-box').val("");
							jQuery("#" + camp_id).find('.response').html("<span></span>Retailer name not found. Please try again.");
							jQuery("#" + camp_id).find('.response span').addClass("show-error");
							jQuery("#" + camp_id).find('.response').show();
							jQuery("#" + camp_id).find('.retailer-link-wrapper').hide();
						},
						success: function(html) {
							var returned_url = html;
					
							if(returned_url.length > 1) {
								jQuery("#" + camp_id).find('.deep-link-text-box').val(returned_url);
								jQuery("#" + camp_id).find('.response').html("<span></span>Retailer link successfully created.");
								jQuery("#" + camp_id).find('.retailer-link-wrapper').show();
							} else {
								jQuery("#" + camp_id).find('.deep-link-text-box').val("");
								jQuery("#" + camp_id).find('.response').html("<span></span>Retailer name not found. Please try again.");
								jQuery("#" + camp_id).find('.response span').addClass("show-error");
								jQuery("#" + camp_id).find('.retailer-link-wrapper').hide();
								
							}
							jQuery("#" + camp_id).find('.response').show();
						}		
					});
					
					return false;
				}
			}
			
		}
		
		

		jQuery.fn.carousel = function(options) {
			var slideNumber = 1;
			var hoverState = "false";
			var easingSpeed = 800;
			var delayTime = 5000;
			var rollOutDelay = 2000;
			var playCarousel = "";
			var pauseStart = "false";
			var timeout1 = "";
			var timeout2 = "";
			var timeout3 = "";
			jQuery(".controls .play").addClass("pause");
			function setFadeOut1(){
				jQuery("#slide1").fadeOut(easingSpeed, function () {
					jQuery(".controls #control1").removeClass("on");
					jQuery(".controls #control1").addClass("off");		
					cycle(3);
				});//.fadeOut
			}
			function setFadeOut2(){
				jQuery("#slide2").fadeOut(easingSpeed, function () {
					jQuery(".controls #control2").removeClass("on");
					jQuery(".controls #control2").addClass("off");		
					cycle(1);
				});//.fadeOut
			}
			function setFadeOut3(){
				jQuery("#slide3").fadeOut(easingSpeed, function () {
					jQuery(".controls #control3").removeClass("on");
					jQuery(".controls #control3").addClass("off");
					cycle(1);
				});//.fadeOut
			}
			function cycle(slide){
				jQuery(".controls .control").addClass("off");
				if(slide == 1){
					slideNumber = 1;
					jQuery("#slide1").fadeIn(easingSpeed, function () {
						jQuery(".controls #control1").removeClass("off");
						jQuery(".controls #control1").addClass("on");
						if(pauseStart == "true"){
							if(playCarousel == "started"){
								timeout1 = setTimeout(setFadeOut1,delayTime);
							}
						}
						else{
							if(hoverState == "false"){
								timeout1 = setTimeout(setFadeOut1,delayTime);
							}
						}
					});//.fadeIn
				}
				if(slide == 2){
					slideNumber = 2;
					jQuery("#slide2").fadeIn(easingSpeed, function () {
						jQuery(".controls #control2").removeClass("off");
						jQuery(".controls #control2").addClass("on");
						if(pauseStart == "true"){
							if(playCarousel == "started"){
								timeout2 = setTimeout(setFadeOut2,delayTime);
							}
						}
						else{
							if(hoverState == "false"){
								timeout2 = setTimeout(setFadeOut2,delayTime);
							}
						}
					});//.fadeIn
				}
				if(slide == 3){
					slideNumber = 3;
					jQuery("#slide3").fadeIn(easingSpeed, function () {
						jQuery(".controls #control3").removeClass("off");
						jQuery(".controls #control3").addClass("on");
						if(pauseStart == "true"){
							if(playCarousel == "started"){
								timeout3 = setTimeout(setFadeOut3,delayTime);
							}
						}
						else{
							if(hoverState == "false"){
								timeout3 = setTimeout(setFadeOut3,delayTime);
							}
						}
					});//.fadeIn
				}
			}
			cycle(1);
			function slideOver() {
				if(pauseStart == "false"){
					hoverState = "true";
					if(slideNumber == 1){
						clearTimeout(timeout1);
					}
					if(slideNumber == 2){
						clearTimeout(timeout2);
					}
					if(slideNumber == 3){
						clearTimeout(timeout3);
					}
				}
			}
			function slideOut() {
				if(pauseStart == "false"){
					hoverState = "false";
					if(slideNumber == 1){
						timeout1 = setTimeout(setFadeOut1,rollOutDelay);
					}
					if(slideNumber == 2){
						timeout2 = setTimeout(setFadeOut2,rollOutDelay);
					}
					if(slideNumber == 3){
						timeout3 = setTimeout(setFadeOut3,rollOutDelay);
					}
				}
			}
			var slideConfig = {interval: 100, sensitivity: 7, over: slideOver, timeout: 100, out: slideOut};
			jQuery(".panel").hoverIntent(slideConfig);
			jQuery(".play").click(function(){
				pauseStart = "true";
				if(jQuery(this).hasClass("start")){
					playCarousel = "started";
					jQuery(".controls .play").removeClass("start");
					jQuery(".controls .play").addClass("pause");
					if(slideNumber == 1){
						timeout1 = setTimeout(setFadeOut1,rollOutDelay);
					}
					if(slideNumber == 2){
						timeout2 = setTimeout(setFadeOut2,rollOutDelay);
					}
					if(slideNumber == 3){
						timeout3 = setTimeout(setFadeOut3,rollOutDelay);
					}
				}
				else{
					playCarousel = "paused";
					jQuery(".controls .play").removeClass("pause");
					jQuery(".controls .play").addClass("start");
					if(slideNumber == 1){
						clearTimeout(timeout1);
					}
					if(slideNumber == 2){
						clearTimeout(timeout2);
					}
					if(slideNumber == 3){
						clearTimeout(timeout3);
					}
				}
			});
			jQuery(".control").click(function(){
				pauseStart = "true";
				playCarousel = "paused";
				jQuery(".controls .play").removeClass("start");
				jQuery(".controls .play").removeClass("pause");
				jQuery(".controls .play").addClass("start");
				jQuery(".panel .slides .slide").hide();
				jQuery(".controls .control").removeClass("on");
				jQuery(".controls .control").removeClass("off");
				jQuery(".controls .control").addClass("off");
				currentControlID = jQuery(this).attr("id");
				if(slideNumber == 1){
					clearTimeout(timeout1);
				}
				if(slideNumber == 2){
					clearTimeout(timeout2);
				}
				if(slideNumber == 3){
					clearTimeout(timeout3);
				}
				if(currentControlID == "control1"){
					slideNumber = 1;
					jQuery("#slide1").show();
					jQuery("#control1").addClass("on");
				}
				if(currentControlID == "control2"){
					slideNumber = 2;
					jQuery("#slide2").show();
					jQuery("#control2").addClass("on");
				}
				if(currentControlID == "control3"){
					slideNumber = 3;
					jQuery("#slide3").show();
					jQuery("#control3").addClass("on");
				}
			});
		} // end plugin

		jQuery.fn.qsearch = function(options) {
			jQuery(this).each(function() {					   
				var settings = jQuery.extend({
					defaultText : 'Type in a store, e.g. Apple, Tesco, Amazon',
					autoSuggest : 'false'
				},options||{});						
								
				if (jQuery("#store-qsearch").val() == '') {
					jQuery("#store-qsearch").val(settings.defaultText);
				}
				jQuery("#store-qsearch").click(function() {				
					if (jQuery(this).val() == settings.defaultText) {
						jQuery(this).val('');
					}
				});
				
				jQuery("#store-qsearch").blur(function() {
					if (jQuery(this).val().length === 0 ){
						jQuery(this).val(settings.defaultText);
					}
				});
				
				jQuery(this).find(".sq-submit").click(function() {
					jQuery(this).submit();
				});
				
				jQuery(this).submit(function(ev) {
					var curVal = jQuery(this).find("#store-qsearch").val();
					if (curVal == settings.defaultText || curVal == '') {
						jQuery("#store-qsearch").val('');
						jQuery("#store-qsearch").focus();
						return false;
					}
				});
				
				if (settings.autoSuggest == "true"){
					var searchID = "";
					
					jQuery("#store-qsearch").one("click",function() {
						$.getScript("/merchant_qsearch.php", function(){autosearch()});
						searchID = jQuery(this).attr("id");
						
						function log(event, data, formatted) {
							jQuery("<li>").html( !data ? "No match!" : "Selected: " + formatted).appendTo("#result");
						}// end function				
						function formatItem(row) {
							return row[0] + " (<strong>id: " + row[1] + "</strong>)";
						}// end function
						function formatResult(row) {
							return row[0].replace(/(<.+?>)/gi, '');
						}// end function			 
						function autosearch(){
							jQuery("input#" + searchID).autocomplete(merchants, {
								minChars: 2,
								width: 391,
								selectFirst: false,
								scrollHeight : "auto",
								matchContains: "s",
								autoFill: false,
								max : "5",
								formatItem: function(row, i, max) {
										
									var returned_string;									
									returned_string = "<span class='store'>" + row.s + "</span><span class='rate'>";
								
									var cashback = 'no';
									var voucher_codes = 'no';
									var printable_vouchers = 'no';
									
									//if has_cashback									
									if(row.r != 'no'){									
										returned_string = returned_string + row.r + " cashback";
										cashback = 'yes';
									}	
									
									//if has_voucher_code
									if((row.vc != 0) && (row.vc != undefined)){
										
										var word = "";										
										if(row.vc == 1){
											word = " voucher code";
										}	
										if(row.vc > 1){
											word = " voucher codes";
										}
										
										if(cashback == 'yes'){
											returned_string = returned_string + " / ";
										} 										
										returned_string = returned_string + row.vc + word;										
										voucher_codes = 'yes';
									}
									
									//if has_printable_vouchers
									if((row.pv != 0) && (row.pv != undefined)){
										
										var word = "";										
										if(row.pv == 1){
											word = " printable voucher";
										}	
										if(row.pv > 1){
											word = " printable vouchers";
										}
										
										if((cashback == 'yes') || (voucher_codes == 'yes')){
											returned_string = returned_string + " / ";
										}
										returned_string = returned_string + row.pv + word;										
										printable_vouchers = 'yes';
									}
									
									//if no_codes_or_printables, show offers
									if((row.vc == 0) && (row.pv == 0) && (row.o != 0) && (row.o != undefined)){
										
										var word = "";										
										if(row.o == 1){
											word = " offer";
										}	
										if(row.o > 1){
											word = " offers";
										}
										if(cashback == 'yes'){
											returned_string = returned_string + " / ";
										}										
										returned_string = returned_string + row.o + word;										
									}	
								
									returned_string = returned_string + "</span>";									
									return returned_string;
								},
								formatMatch: function(row, i, max) {
									return row.s;
								},
								formatResult: function(row) {								
									return row.s;
								}								
							}).result(function(event, item) {
							location.href = "/" + item.u + "/?ac";
							});  
						}
						jQuery("input#" + searchID).keyup(function() {
							jQuery("div.ac_results h2").remove();
							jQuery("div.ac_results").append("<h2>Store Results</h2>");
							if (jQuery("div.ac_results").css("display") == "block"){
								jQuery(this).parent().parent().parent().addClass("open");
								
							}else{
								jQuery(this).parent().parent().parent().removeClass("open");
								
							} //if	
	
						});	//keyup
						jQuery("input#" + searchID).blur(function() {
							jQuery(this).parent().parent().parent().removeClass("open");
						});						
					}); // end click	
					
				}//if
			}); // end each
		} // end plugin	
		
		jQuery.fn.nav = function(options) {
			jQuery(this).each(function() {				
				function showSubNav(){
					jQuery(jQuery(this).find("div")).addClass("hover");
					jQuery(jQuery(this).find("ul.sub-menu")).show();
					jQuery(this).addClass("hover");
				}
				function hideShowNav(){
					jQuery(jQuery(this).find("div")).removeClass("hover");
					jQuery(jQuery(this).find("ul.sub-menu")).hide();
					jQuery(this).removeClass("hover");
				}	
				var megaConfig = {interval: 30, sensitivity: 4, over: showSubNav, timeout: 100, out: hideShowNav};	
				jQuery("#nav td").hoverIntent(megaConfig);
				
				/*
				The following code is to dynamically set the width of the nav drop-down menus.
				This is necessary for IE6 and also to refactorize columns and avoid unnecessary white-space
				*/
				
				var nav_total = 10 //Number of nav tabs
				var cat_width = 178; //li.category width (inc padding)
				var new_col_width = 178; //li.new-column width (inc padding)
				var browse_width = 177; //li.browse width (inc padding)

				//Loop through nav tabs (ignoring first Browse tab)
				for (i=2;i<(nav_total+1);i++){
					var nav_li = "pos-" + i;
					var new_cols = jQuery("#nav td." + nav_li + " ul.sub-menu li.new-column").length; //number of .new-column elements
					var dd_cols = new_cols + 2; //total number of columns
					//If drop-down has more than standard two columns i.e. back-end wrapping
					if(dd_cols > 2){
						//Find position of final li.new-column 
						var final_new_col = dd_cols - 1;
						//Number of items in li.category
						var cat_length = jQuery("#nav td." + nav_li + " ul.sub-menu li.category ul li").length;
						//Number of items in final li.new-column
						var final_new_col_length = jQuery("#nav td." + nav_li + " ul.sub-menu").children("li:eq(" + final_new_col + ")").find("ul li").length;
						//Set the width of the drop-down menus
						//If length of final .new-column is less than half the length of li.category then move Browse column under final li.category via smaller set width
						if((cat_length/2) > final_new_col_length){
							var sub_menu_width = (((dd_cols - 2) * new_col_width) + cat_width + browse_width) - browse_width;
							jQuery("#nav td." + nav_li + " ul.sub-menu").width(sub_menu_width);
						}
						//Otherwise set the width of the drop-down menu as normal
						else{
							var sub_menu_width = ((dd_cols - 2) * new_col_width) + cat_width + browse_width;
							jQuery("#nav td." + nav_li + " ul.sub-menu").width(sub_menu_width);
						}
					}
					//No back-end wrapping necessary
					else{
						var sub_menu_width = cat_width + browse_width;
						jQuery("#nav td." + nav_li + " ul.sub-menu").width(sub_menu_width);
					}
				}
			}); // end each
		} // end plugin	
		
		jQuery.fn.share = function(options) {		} // end plugin	
		jQuery.fn.loginSignUp = function(options) {		} // end plugin
		
		
		
		jQuery.fn.splashHeader = function(options) {		} // end plugin	
		
		jQuery.fn.inputFocus = function(options) {		} // end plugin			
	
	
		
		jQuery.fn.editPledge = function(options) {		} // end plugin	
		
		jQuery.fn.itemTicker = function(options) {		} // end plugin	
		
		
		jQuery.fn.itemHover = function(options) {		} // end plugin	
		
		jQuery.fn.expandList = function(options) {		} // end plugin	
		
		jQuery.fn.supportReply = function(options) {		} // end plugin		
		
		jQuery.fn.createClan = function(options) {		} // end plugin		

		jQuery.fn.showFundraisers = function(options) {		} // end plugin	
		
	
		jQuery.fn.paymentDetails = function(options) {		} // end plugin	
		
		jQuery.fn.transactionDetails = function(options) {		} // end plugin	
		
		jQuery.fn.showDetails = function(options) {		}//end plugin
		
		jQuery.fn.merchantListInfo = function(options) {		} // end plugin
		
		jQuery.fn.fundraisingPledge = function(options) {		} // end plugin
		
		jQuery.fn.reportModal = function(options) {		}//end plugin
		
		// Create a custom campaign modal
		jQuery.fn.customCampaignModal = function(options) {		}//end plugin
		// End of create a custom campaign modal
				
	
		
		
		

		jQuery.fn.itemBoxMore = function(options) { 		}		
		
		jQuery.fn.recentlyVisited = function(options) { 		}
		
		jQuery.fn.favourites = function(options) {		} // end plugin	
		
		jQuery.fn.signupLoad = function() {		} // end plugin	
		
			jQuery.fn.attachTransitMerchant = function(options) { 		}
		/**
		 * refer a friend part 1
		 * 
		 * Hopefully only I will ever have to look at this madness,
		 * but incase you are not me, let the imaginary me
		 * take you by the hand and guide you through it.
		 * 
		 */
		 
		jQuery.fn.cookiesTest = function(options) { 
			jQuery(this).each(function() {	
				if (document.cookie.indexOf("cookies_enabled") == -1) {
					jQuery("div#cookies-enabled").hide();
					jQuery("div.module.cookies div.cookies-disabled").show();
					var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
					
					var show = null;
					if (jQuery.browser.msie && $.browser.version.substring(0, 1) < 7) {
						show = "ie6"; 
					} 
					else if (jQuery.browser.msie && $.browser.version.substring(0, 1) >= 7) {
						show = "ie7";
					}
					else if (jQuery.browser.mozilla) {
						show = "firefox";
					}
					else if (is_chrome) { //needs to come before safari
						show = "chrome";
					}
					else if (jQuery.browser.safari) {
						show = "safari";
					}
					else if (jQuery.browser.opera) {
						show = "opera";
					}
					
					if (show != null) {
						jQuery("#how-to li:not(#how-" + show + ")").hide();
					}
				}
				else {
					jQuery("div#cookies-enabled").show();
					jQuery("div.module.cookies div.cookies-disabled").hide();
				}	
			});
		}
		jQuery.fn.referModal = function(options) {		} // end plugin	

		
		
		jQuery.fn.browseTree = function(options) {		} // end plugin		
		
	
		
		
		/**
		 * Cookie plugin
		 *
		 * Copyright (c) 2006 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
		 * http://plugins.jQuery.com/files/jQuery.cookie.js.txt
		 */
		jQuery.cookie=function(a,b,c){if(typeof b!='undefined'){c=c||{};if(b===null){b='';c.expires=-1}var d='';if(c.expires&&(typeof c.expires=='number'||c.expires.toUTCString)){var e;if(typeof c.expires=='number'){e=new Date();e.setTime(e.getTime()+(c.expires*24*60*60*1000))}else{e=c.expires}d='; expires='+e.toUTCString()}var f=c.path?'; path='+(c.path):'';var g=c.domain?'; domain='+(c.domain):'';var h=c.secure?'; secure':'';document.cookie=[a,'=',encodeURIComponent(b),d,f,g,h].join('')}else{var j=null;if(document.cookie&&document.cookie!=''){var k=document.cookie.split(';');for(var i=0;i<k.length;i++){var l=jQuery.trim(k[i]);if(l.substring(0,a.length+1)==(a+'=')){j=decodeURIComponent(l.substring(a.length+1));break}}}return j}};

		/**
		* hoverIntent r5 // 2007.03.27 // jQuery 1.1.2+
		* <http://cherne.net/brian/resources/jQuery.hoverIntent.html>
		* 
		* @param  f  onMouseOver function || An object with configuration options
		* @param  g  onMouseOut function  || Nothing (use configuration options object)
		* @author    Brian Cherne <brian@cherne.net>
		*/
		(function($){$.fn.hoverIntent=function(f,g){var cfg={sensitivity:7,interval:100,timeout:0};cfg=$.extend(cfg,g?{over:f,out:g}:f);var cX,cY,pX,pY;var track=function(ev){cX=ev.pageX;cY=ev.pageY;};var compare=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);if((Math.abs(pX-cX)+Math.abs(pY-cY))<cfg.sensitivity){$(ob).unbind("mousemove",track);ob.hoverIntent_s=1;return cfg.over.apply(ob,[ev]);}else{pX=cX;pY=cY;ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}};var delay=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);ob.hoverIntent_s=0;return cfg.out.apply(ob,[ev]);};var handleHover=function(e){var p=(e.type=="mouseover"?e.fromElement:e.toElement)||e.relatedTarget;while(p&&p!=this){try{p=p.parentNode;}catch(e){p=this;}}if(p==this){return false;}var ev=jQuery.extend({},e);var ob=this;if(ob.hoverIntent_t){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);}if(e.type=="mouseover"){pX=ev.pageX;pY=ev.pageY;$(ob).bind("mousemove",track);if(ob.hoverIntent_s!=1){ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}}else{$(ob).unbind("mousemove",track);if(ob.hoverIntent_s==1){ob.hoverIntent_t=setTimeout(function(){delay(ev,ob);},cfg.timeout);}}};return this.mouseover(handleHover).mouseout(handleHover);};})(jQuery);		

		/*
		 * jQuery Autocomplete plugin 1.1
		 *
		 * Copyright (c) 2009 J̦rn Zaefferer
		 *
		 * Dual licensed under the MIT and GPL licenses:
		 *   http://www.opensource.org/licenses/mit-license.php
		 *   http://www.gnu.org/licenses/gpl.html
		 *
		 * Revision: $Id: jQuery.autocomplete.js 14 2009-08-22 10:29:29Z joern.zaefferer $
		 */
		eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}(';(3($){$.2e.1u({19:3(b,d){5 c=W b=="1B";d=$.1u({},$.M.1T,{Y:c?b:P,y:c?P:b,1J:c?$.M.1T.1J:10,X:d&&!d.1D?10:48},d);d.1y=d.1y||3(a){6 a};d.1v=d.1v||d.1R;6 A.I(3(){1M $.M(A,d)})},L:3(a){6 A.11("L",a)},1k:3(a){6 A.14("1k",[a])},2b:3(){6 A.14("2b")},28:3(a){6 A.14("28",[a])},24:3(){6 A.14("24")}});$.M=3(o,r){5 t={2Y:38,2S:40,2N:46,2I:9,2E:13,2B:27,2x:3I,2v:33,2p:34,2n:8};5 u=$(o).3r("19","3o").Q(r.2Q);5 p;5 m="";5 n=$.M.3c(r);5 s=0;5 k;5 h={1F:C};5 l=$.M.32(r,o,1Z,h);5 j;$.1Y.2X&&$(o.2U).11("45.19",3(){4(j){j=C;6 C}});u.11(($.1Y.2X?"43":"42")+".19",3(a){s=1;k=a.2M;3V(a.2M){O t.2Y:a.1d();4(l.N()){l.30()}w{12(0,D)}R;O t.2S:a.1d();4(l.N()){l.2D()}w{12(0,D)}R;O t.2v:a.1d();4(l.N()){l.2C()}w{12(0,D)}R;O t.2p:a.1d();4(l.N()){l.2A()}w{12(0,D)}R;O r.17&&$.1c(r.S)==","&&t.2x:O t.2I:O t.2E:4(1Z()){a.1d();j=D;6 C}R;O t.2B:l.Z();R;3J:1P(p);p=1O(12,r.1J);R}}).2t(3(){s++}).3E(3(){s=0;4(!h.1F){2r()}}).2q(3(){4(s++>1&&!l.N()){12(0,D)}}).11("1k",3(){5 c=(1r.7>1)?1r[1]:P;3 1N(q,a){5 b;4(a&&a.7){16(5 i=0;i<a.7;i++){4(a[i].L.J()==q.J()){b=a[i];R}}}4(W c=="3")c(b);w u.14("L",b&&[b.y,b.F])}$.I(15(u.K()),3(i,a){21(a,1N,1N)})}).11("2b",3(){n.1o()}).11("28",3(){$.1u(r,1r[1]);4("y"2h 1r[1])n.1e()}).11("24",3(){l.1p();u.1p();$(o.2U).1p(".19")});3 1Z(){5 e=l.2g();4(!e)6 C;5 v=e.L;m=v;4(r.17){5 b=15(u.K());4(b.7>1){5 f=r.S.7;5 c=$(o).18().1I;5 d,1H=0;$.I(b,3(i,a){1H+=a.7;4(c<=1H){d=i;6 C}1H+=f});b[d]=v;v=b.3f(r.S)}v+=r.S}u.K(v);1l();u.14("L",[e.y,e.F]);6 D}3 12(b,c){4(k==t.2N){l.Z();6}5 a=u.K();4(!c&&a==m)6;m=a;a=1m(a);4(a.7>=r.29){u.Q(r.26);4(!r.1s)a=a.J();21(a,3a,1l)}w{1q();l.Z()}};3 15(b){4(!b)6[""];4(!r.17)6[$.1c(b)];6 $.4h(b.23(r.S),3(a){6 $.1c(b).7?$.1c(a):P})}3 1m(a){4(!r.17)6 a;5 c=15(a);4(c.7==1)6 c[0];5 b=$(o).18().1I;4(b==a.7){c=15(a)}w{c=15(a.22(a.37(b),""))}6 c[c.7-1]}3 1G(q,a){4(r.1G&&(1m(u.K()).J()==q.J())&&k!=t.2n){u.K(u.K()+a.37(1m(m).7));$(o).18(m.7,m.7+a.7)}};3 2r(){1P(p);p=1O(1l,4g)};3 1l(){5 c=l.N();l.Z();1P(p);1q();4(r.36){u.1k(3(a){4(!a){4(r.17){5 b=15(u.K()).1n(0,-1);u.K(b.3f(r.S)+(b.7?r.S:""))}w{u.K("");u.14("L",P)}}})}};3 3a(q,a){4(a&&a.7&&s){1q();l.35(a,q);1G(q,a[0].F);l.20()}w{1l()}};3 21(f,d,g){4(!r.1s)f=f.J();5 e=n.31(f);4(e&&e.7){d(f,e)}w 4((W r.Y=="1B")&&(r.Y.7>0)){5 c={4f:+1M 4e()};$.I(r.2Z,3(a,b){c[a]=W b=="3"?b():b});$.4d({4c:"4b",4a:"19"+o.49,2V:r.2V,Y:r.Y,y:$.1u({q:1m(f),47:r.X},c),44:3(a){5 b=r.1A&&r.1A(a)||1A(a);n.1i(f,b);d(f,b)}})}w{l.2T();g(f)}};3 1A(c){5 d=[];5 b=c.23("\\n");16(5 i=0;i<b.7;i++){5 a=$.1c(b[i]);4(a){a=a.23("|");d[d.7]={y:a,F:a[0],L:r.1z&&r.1z(a,a[0])||a[0]}}}6 d};3 1q(){u.1h(r.26)}};$.M.1T={2Q:"41",2P:"3Z",26:"3Y",29:1,1J:3W,1s:C,1f:D,1w:C,1g:10,X:3U,36:C,2Z:{},1X:D,1R:3(a){6 a[0]},1v:P,1G:C,E:0,17:C,S:", ",1y:3(b,a){6 b.22(1M 3T("(?![^&;]+;)(?!<[^<>]*)("+a.22(/([\\^\\$\\(\\)\\[\\]\\{\\}\\*\\.\\+\\?\\|\\\\])/2K,"\\\\$1")+")(?![^<>]*>)(?![^&;]+;)","2K"),"<2J>$1</2J>")},1D:D,1E:3S};$.M.3c=3(g){5 h={};5 j=0;3 1f(s,a){4(!g.1s)s=s.J();5 i=s.2H(a);4(g.1w=="3R"){i=s.J().1k("\\\\b"+a.J())}4(i==-1)6 C;6 i==0||g.1w};3 1i(q,a){4(j>g.1g){1o()}4(!h[q]){j++}h[q]=a}3 1e(){4(!g.y)6 C;5 f={},2G=0;4(!g.Y)g.1g=1;f[""]=[];16(5 i=0,2F=g.y.7;i<2F;i++){5 c=g.y[i];c=(W c=="1B")?[c]:c;5 d=g.1v(c,i+1,g.y.7);4(d===C)1V;5 e=d.3Q(0).J();4(!f[e])f[e]=[];5 b={F:d,y:c,L:g.1z&&g.1z(c)||d};f[e].1U(b);4(2G++<g.X){f[""].1U(b)}};$.I(f,3(i,a){g.1g++;1i(i,a)})}1O(1e,25);3 1o(){h={};j=0}6{1o:1o,1i:1i,1e:1e,31:3(q){4(!g.1g||!j)6 P;4(!g.Y&&g.1w){5 a=[];16(5 k 2h h){4(k.7>0){5 c=h[k];$.I(c,3(i,x){4(1f(x.F,q)){a.1U(x)}})}}6 a}w 4(h[q]){6 h[q]}w 4(g.1f){16(5 i=q.7-1;i>=g.29;i--){5 c=h[q.3O(0,i)];4(c){5 a=[];$.I(c,3(i,x){4(1f(x.F,q)){a[a.7]=x}});6 a}}}6 P}}};$.M.32=3(e,g,f,k){5 h={H:"3N"};5 j,z=-1,y,1t="",1S=D,G,B;3 2y(){4(!1S)6;G=$("<3M/>").Z().Q(e.2P).T("3L","3K").1Q(1K.2w);B=$("<3H/>").1Q(G).3G(3(a){4(U(a).2u&&U(a).2u.3F()==\'2s\'){z=$("1L",B).1h(h.H).3D(U(a));$(U(a)).Q(h.H)}}).2q(3(a){$(U(a)).Q(h.H);f();g.2t();6 C}).3C(3(){k.1F=D}).3B(3(){k.1F=C});4(e.E>0)G.T("E",e.E);1S=C}3 U(a){5 b=a.U;3A(b&&b.3z!="2s")b=b.3y;4(!b)6[];6 b}3 V(b){j.1n(z,z+1).1h(h.H);2o(b);5 a=j.1n(z,z+1).Q(h.H);4(e.1D){5 c=0;j.1n(0,z).I(3(){c+=A.1a});4((c+a[0].1a-B.1b())>B[0].3x){B.1b(c+a[0].1a-B.3w())}w 4(c<B.1b()){B.1b(c)}}};3 2o(a){z+=a;4(z<0){z=j.1j()-1}w 4(z>=j.1j()){z=0}}3 2m(a){6 e.X&&e.X<a?e.X:a}3 2l(){B.2z();5 b=2m(y.7);16(5 i=0;i<b;i++){4(!y[i])1V;5 a=e.1R(y[i].y,i+1,b,y[i].F,1t);4(a===C)1V;5 c=$("<1L/>").3v(e.1y(a,1t)).Q(i%2==0?"3u":"3P").1Q(B)[0];$.y(c,"2k",y[i])}j=B.3t("1L");4(e.1X){j.1n(0,1).Q(h.H);z=0}4($.2e.2W)B.2W()}6{35:3(d,q){2y();y=d;1t=q;2l()},2D:3(){V(1)},30:3(){V(-1)},2C:3(){4(z!=0&&z-8<0){V(-z)}w{V(-8)}},2A:3(){4(z!=j.1j()-1&&z+8>j.1j()){V(j.1j()-1-z)}w{V(8)}},Z:3(){G&&G.Z();j&&j.1h(h.H);z=-1},N:3(){6 G&&G.3s(":N")},3q:3(){6 A.N()&&(j.2j("."+h.H)[0]||e.1X&&j[0])},20:3(){5 a=$(g).3p();G.T({E:W e.E=="1B"||e.E>0?e.E:$(g).E(),2i:a.2i+g.1a,1W:a.1W}).20();4(e.1D){B.1b(0);B.T({2L:e.1E,3n:\'3X\'});4($.1Y.3m&&W 1K.2w.3l.2L==="1x"){5 c=0;j.I(3(){c+=A.1a});5 b=c>e.1E;B.T(\'3k\',b?e.1E:c);4(!b){j.E(B.E()-2R(j.T("2O-1W"))-2R(j.T("2O-3j")))}}}},2g:3(){5 a=j&&j.2j("."+h.H).1h(h.H);6 a&&a.7&&$.y(a[0],"2k")},2T:3(){B&&B.2z()},1p:3(){G&&G.3i()}}};$.2e.18=3(b,f){4(b!==1x){6 A.I(3(){4(A.2d){5 a=A.2d();4(f===1x||b==f){a.4n("2c",b);a.3h()}w{a.4m(D);a.4l("2c",b);a.4k("2c",f);a.3h()}}w 4(A.3g){A.3g(b,f)}w 4(A.1C){A.1C=b;A.3e=f}})}5 c=A[0];4(c.2d){5 e=1K.18.4j(),3d=c.F,2a="<->",2f=e.3b.7;e.3b=2a;5 d=c.F.2H(2a);c.F=3d;A.18(d,d+2f);6{1I:d,39:d+2f}}w 4(c.1C!==1x){6{1I:c.1C,39:c.3e}}}})(4i);',62,272,'|||function|if|var|return|length|||||||||||||||||||||||||else||data|active|this|list|false|true|width|value|element|ACTIVE|each|toLowerCase|val|result|Autocompleter|visible|case|null|addClass|break|multipleSeparator|css|target|moveSelect|typeof|max|url|hide||bind|onChange||trigger|trimWords|for|multiple|selection|autocomplete|offsetHeight|scrollTop|trim|preventDefault|populate|matchSubset|cacheLength|removeClass|add|size|search|hideResultsNow|lastWord|slice|flush|unbind|stopLoading|arguments|matchCase|term|extend|formatMatch|matchContains|undefined|highlight|formatResult|parse|string|selectionStart|scroll|scrollHeight|mouseDownOnSelect|autoFill|progress|start|delay|document|li|new|findValueCallback|setTimeout|clearTimeout|appendTo|formatItem|needsInit|defaults|push|continue|left|selectFirst|browser|selectCurrent|show|request|replace|split|unautocomplete||loadingClass||setOptions|minChars|teststring|flushCache|character|createTextRange|fn|textLength|selected|in|top|filter|ac_data|fillList|limitNumberOfItems|BACKSPACE|movePosition|PAGEDOWN|click|hideResults|LI|focus|nodeName|PAGEUP|body|COMMA|init|empty|pageDown|ESC|pageUp|next|RETURN|ol|nullData|indexOf|TAB|strong|gi|maxHeight|keyCode|DEL|padding|resultsClass|inputClass|parseInt|DOWN|emptyList|form|dataType|bgiframe|opera|UP|extraParams|prev|load|Select|||display|mustMatch|substring||end|receiveData|text|Cache|orig|selectionEnd|join|setSelectionRange|select|remove|right|height|style|msie|overflow|off|offset|current|attr|is|find|ac_even|html|innerHeight|clientHeight|parentNode|tagName|while|mouseup|mousedown|index|blur|toUpperCase|mouseover|ul|188|default|absolute|position|div|ac_over|substr|ac_odd|charAt|word|180|RegExp|100|switch|400|auto|ac_loading|ac_results||ac_input|keydown|keypress|success|submit||limit|150|name|port|abort|mode|ajax|Date|timestamp|200|map|jQuery|createRange|moveEnd|moveStart|collapse|move'.split('|'),0,{}))
		
		/**
		 * jQuery Cash It Back Validator Plugin
		 *
		 */
		var FormValidator=function(element,options){element=$(element);var obj=this;var settings=$.extend({onError:function(e,message){},onSuccess:function(e){},rules:{}},options||{});var timeoutBusy=false;var timeout=null;var waitingForResponse=false;var validation={remote:function(e,param){waitingForResponse=true;if(typeof(settings.rules[e.selector].validate.remote.onRun)!="undefined"){settings.rules[e.selector].validate.remote.onRun()}$.ajax($.extend(true,{type:"GET",url:"",dataType:"text",data:"",success:function(data,textStatus){if(typeof(settings.rules[e.selector].validate.remote.onSuccess)!="undefined"){settings.rules[e.selector].valid=settings.rules[e.selector].validate.remote.onSuccess(data,textStatus)}else{settings.rules[e.selector].valid=data=="true"?true:false}waitingForResponse=false},error:function(XMLHttpRequest,textStatus,errorThrown){if(typeof(settings.rules[e.selector].validate.remote.onError)!="undefined"){settings.rules[e.selector].valid=settings.rules[e.selector].validate.remote.onError(XMLHttpRequest,textStatus,errorThrown)}waitingForResponse=false}},param));return"checking"},minLength:function(e,min){return e.val().length>=min},maxLength:function(e,max){return e.val().length<=max},match:function(e,object){return((typeof(object)=="object")&&(object.val()==e.val()))||(e.val()==object)},required:function(e){switch(e[0].tagName.toLowerCase()){case"select":var options=$("option:selected",e);return options.length>0&&options[0].value.length>0;case"input":if(e[0].type=="checkbox"||e[0].type=="radio"){return e.filter(":checked").length>0}default:return $.trim(e.val()).length>0;break}},regex:function(e,regex){regex=RegExp(regex);return regex.test(e.val())},email:function(e){var qtext="[^\x0d\x22\x5c\x80-\xff]";var dtext="[^\x0d\\x5b-\\x5d\x80-\xff]";var atom="[^\x00-\x20\x22\x28\x29\x2c\\x2e\x3a-\x3c\x3e\x40\\x5b-\\x5d\x7f-\xff]+";var quotedPair="\x5c\x00-\x7f";var domainLiteral="\\x5b("+dtext+"|"+quotedPair+")*\\x5d";var quotedString="\x22("+qtext+"|"+quotedPair+")*\x22";var domainRef=atom;var subDomain="("+domainRef+"|"+domainLiteral+")";var word="("+atom+"|"+quotedString+")";var domain=subDomain+"(\\x2e"+subDomain+")*";var localPart=word+"(\\x2e"+word+")*";var addressSpec=localPart+"\x40"+domain;var regex="^"+addressSpec+"$";if(e.val().length < 1){return true;}return this.regex(e,regex)},alpha:function(e){return this.regex(e,"^[a-zA-Z]*$")},alphaNumeric:function(e){return this.regex(e,"^[a-zA-Z0-9]*$")},alphaDash:function(){return this.regex(e,"^[a-zA-Z0-9_-]*$")},numeric:function(e){return this.regex(e,"^[0-9]*$")}};this.reset=function(selector){if(selector=="timeout"){clearTimeout(timeout)}else{settings.rules[selector].valid=null}return true};this.validate=function(e){var completeResult=true;clearTimeout(timeout);jQuery.each(settings.rules,function(selector,actions){if(typeof(settings.rules[selector].valid)=="undefined"){settings.rules[selector].valid=null}if((e[0].tagName.toLowerCase()=="form")||(e[0]==$(selector)[0])){if((e[0].tagName.toLowerCase()=="form"&&settings.rules[selector].valid===null)||e[0].tagName.toLowerCase()!="form"){var errorMessage=false;jQuery.each(actions.validate,function(validationName,arguments){switch(validationName){case"minLength":settings.rules[selector].valid=validation.minLength($(selector),arguments.value);break;case"maxLength":settings.rules[selector].valid=validation.maxLength($(selector),arguments.value);break;case"match":settings.rules[selector].valid=validation.match($(selector),arguments.value);break;case"email":settings.rules[selector].valid=validation.email($(selector));break;case"regex":settings.rules[selector].valid=validation.regex($(selector),arguments.value);break;case"required":settings.rules[selector].valid=validation.required($(selector));break;case"remote":settings.rules[selector].valid=validation.remote($(selector),arguments.value);break;case"custom":if(typeof(arguments.onValidate)!="undefined"){if(typeof(arguments.value)!="undefined"){settings.rules[selector].valid=arguments.onValidate(arguments.value)}else{settings.rules[selector].valid=arguments.onValidate()}}break}if(settings.rules[selector].valid===false){errorMessage=arguments.errorMessage}return settings.rules[selector].valid});if(errorMessage===false&&settings.rules[selector].valid==true){if(typeof(actions.onSuccess)!="undefined"){actions.onSuccess($(selector))}else{if(typeof(settings.onSuccess)!="undefined"){settings.onSuccess($(selector))}}}else{if(settings.rules[selector].valid==false){if(typeof(actions.onError)!="undefined"){actions.onError($(selector),errorMessage)}else{if(typeof(settings.onError)!="undefined"){settings.onError($(selector),errorMessage)}}completeResult=false}}}}});if(e[0].tagName.toLowerCase()=="form"){if(waitingForResponse==true&&timeoutBusy==false){timeoutBusy=true;timeout=setTimeout(function(){timeoutBusy=false;obj.validate(e)},100);return false}jQuery.each(settings.rules,function(selector,values){return completeResult=values.valid==true?true:false})}return completeResult}};
		
		/**
		 * email validator
		 *
		 */
		function isValidEmailAddress(emailAddress) {
			var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
			return pattern.test(emailAddress);
		}
		
