// jQuery...
	
jQuery(document).ready(function(){
						
	jQuery(document).keyup(function(event){
	    if (event.keyCode == 27) {
				jQuery("#query").val('Search for an offer or store ...');
				jQuery("#query").removeClass('changed');
				jQuery('#search_finder').hide();
	    }
	});
	

	jQuery.loading = '<img src="/images/ajax-loader.gif" />';
	jQuery('input.search_form_query').attr('autocomplete','off');
	
	// Distance buttons
	jQuery('a.d').click(function()
			{
				jQuery('a.d_on').addClass('d');
				jQuery('a.d_on').removeClass('d_on');
				jQuery(this).addClass('d_on');
				jQuery('#query_distance').val(parseInt(jQuery(this).html() ));
				
				if(jQuery("#query_postcode").val() != "" )
				{
					jQuery(this).attr('href',generateLink("#query_last"));
					return true;
				}else{
					return false;
				}
	});

	switch(view_mode){
		case 'printable':
			setQueryType('PRINTABLE VOUCHERS');
		break;
		case 'codes':
			setQueryType('VOUCHER CODES');
			break;
		case 'mobile':
			setQueryType('MOBILE VOUCHERS');
			break;
		case 'printable':
			setQueryType('PRINTABLE VOUCHERS');
			break;
		default:
			setQueryType('ALL OFFERS');
			break;
	}
	
	/* Drop Down */
	
	jQuery('div.dropdown').click(
	function()
	{
		jQuery('div.dropdown').find('ul').show();
	}
	);
	
	jQuery('div.dropdown > ul > li > a').click(function(){
		jQuery('div.dropdown').find('ul').hide();
		setQueryType(jQuery(this).html());
		searchVenue(jQuery("#query").val());
		return false;
	});
	
	
	/* Execute Search */
	jQuery('input.search_form_query').focus(function(){

		if(!jQuery(this).hasClass('changed')){
			jQuery(this).val('');
			jQuery(this).addClass('changed');
		}
		
		cleanUpSearch();
		
		jQuery(this).addClass("search_form_query_active");
	});

	jQuery('a.search_form_submit').click(function(){
		jQuery(this).attr('href',generateLink("#query"));
	});
	
	jQuery('a.update').click(function(){
		
		if(jQuery("#postcode").val()== "" || jQuery("#postcode").val()== "Postcode")
		{
			alert('Please enter postcode or city name first');
			return false;
		}else{
		jQuery(this).attr('href',generateLink("#query_last"));
		return true;
		}
	});
	
	
	jQuery('#search_form').submit(function() { return false; });

	
	
		jQuery('#postcode').keyup(applypostcode);
		jQuery('#spostcode').keyup(applypostcode);



	 jQuery("#query").keyup(function (e) {
		 
		 	if (e.keyCode == 13) {
			 	submitSearch();
			 	return; 
		    }
		 	
		 /*	if (e.keyCode == 8) {
			 	cleanUpSearch();
		    } 
			*/

			jQuery('#search_link').attr('href',generateLink("#query"));
			
			if(parseInt(jQuery('#search_finder').height()) < 800 )
			{
				jQuery('#search_finder').show();
				
					searchVenue(jQuery("#query").val());
					//searchCategory(k);
					//searchOffer(k);
			}
	 });
	 
	 

	jQuery('a.generate_voucher').click(function(){

		var href = $(this).attr("href");
		$('#print_dialog').load(href).modal({
			minHeight : 400,
			maxHeight : 400
		});
		
		
		return false;
	});


	jQuery('#print_gen_form').submit(function(){
		var email = jQuery('#print_gen_email').val();
		//alert(email);
		if ((email == '') || (!isValidEmail(email)))
		{
			alert('Please enter a valid Email Address');
			return false;
		}
		else
		{
			
				//alert('valid');
				
			if (jQuery('#print_gen_remember_me').attr('checked'))
			{
				//alert('ticked');
				var expires_days = 30;
				jQuery.cookie('email', email, { expires: expires_days, path: '/' });
				jQuery.cookie('first_name', jQuery('#print_gen_first_name').val(), { expires: expires_days, path: '/' });
				jQuery.cookie('last_name', jQuery('#print_gen_last_name').val(), { expires: expires_days, path: '/' });
				var has_iphone = 0;
				if (jQuery('#print_gen_has_iphone').attr('checked')) has_iphone = 1;
				jQuery.cookie('has_iphone', has_iphone, { expires: expires_days, path: '/' });
			}
			else
			{
				alert('not ticked');
				jQuery.cookie('email', null);
				jQuery.cookie('first_name', null);
				jQuery.cookie('last_name', null);
				jQuery.cookie('has_iphone', null);	
			}
			//else alert('not ticked');
		}
	});



});



function searchVenue(k)
{
	if(jQuery("#top5venue").length == 0){
		
		venue_dd = document.createElement('dd');
		jQuery(venue_dd).html(jQuery.loading);
		jQuery(venue_dd).attr('id','top5venue');
		
		venue_dt = document.createElement('dt');
		jQuery(venue_dt).attr('id','top5venue_results');
		
		jQuery('#search_finder').find('dl').prepend(venue_dt);
		jQuery('#search_finder').find('dl').prepend(venue_dd);
	}

	jQuery.ajax({
		  type: "GET",
		  url: "/ajax/predictive?s=top5&mode="+escape(jQuery("#query_type").val())+"&q="+escape(k),
		  dataType: "json",
		  beforeSend: function()
		  {
			jQuery("#top5venue").html(jQuery.loading);
			jQuery("#top5venue_results").empty();
		  },
		  success: function(data){
		
				jQuery("#top5venue").text("Top 5 Venues");
				jQuery("#top5venue_results").empty();
				jQuery.each(data.results, function(i,item){
					a =  document.createElement('a');
					jQuery(a).html(item.title);
		            jQuery(a).attr("href", item.url).appendTo("#top5venue_results");
		            if ( i == 4 ) return false;
		          });

		}
		})

}


function applypostcode(e) {
	jQuery('#query_postcode').val(jQuery(this).val());
 	if (e.keyCode == 13) {
	 	submitSearch();
	 	return; 
    }
	}


function generateLink(mode)
{
	if(jQuery("#query_type").val()=="homepage"){
		jQuery("#query_type").val('codes');
		return false;
	}
	
	if(jQuery('#query_postcode').val() != '')
	{
		distance = escape(jQuery('#query_distance').val());
		
		if(distance == 0 ) 
		{
			distance = 50;
		}
		
	
	if(jQuery("#current_category").val() != '' &&  jQuery("#current_category").val() != undefined) 
	{
		return jQuery("#current_category").val()+'/near/'+escape(jQuery('#query_postcode').val())+'/within/'+distance+'/miles';
	}else{
		if( jQuery(mode).val() == 'Search for an offer or store ...' || jQuery(mode).val()== '')
		{
			
			return '/vouchers/'+escape(jQuery('#query_type').val())+'/near/'+escape(jQuery('#query_postcode').val())+'/within/'+distance+'/miles';
		}else{
			
			return '/vouchers/'+escape(jQuery('#query_type').val())+'/search/'+escape(jQuery(mode).val())+'/near/'+escape(jQuery('#query_postcode').val())+'/within/'+distance+'/miles';
		}
	}
	
	
	}else{
	
		return '/vouchers/'+escape(jQuery('#query_type').val())+'/search/'+escape(jQuery(mode).val());
	}
}

function submitSearch()
{
	jQuery("#search_finder").hide();
	top.document.location.href= generateLink("#query");
	return false;
}
	
function cleanUpSearch()
{
	jQuery('#search_finder').find('dl').empty();
	jQuery('#search_finder').find('dl').append('<dd>&nbsp;</dd><dt class="show_all"><br /><a href="#" id="search_link">SHOW ALL RESULTS...</a></dt>');
	setQueryType(jQuery('div.dropdown > span').html());
}

function setQueryType(type)
{
	jQuery('div.dropdown > span').html(type);

	
	switch(type)
	{
	case 'VOUCHER CODES':
		jQuery('#search_finder').find('div.distance').hide();
		jQuery('#search_finder').find('dl').css('minHeight','20px');
		jQuery('#query_type').val('codes');
	break;
	
	case 'PRINTABLE VOUCHERS':
		jQuery('#search_finder').find('div.distance').show();
		jQuery('#query_type').val('printable');
	break;
	
	case 'MOBILE VOUCHERS':
		jQuery('#search_finder').find('div.distance').show();
		jQuery('#query_type').val('mobile');
	break;
			
	default:
		jQuery('#query_type').val('all');
	break;
		
	}
		
}

function isValidEmail(email)
{
	var atpos = email.indexOf('@', 1); // not first char
	//alert(atpos);
	if (atpos > -1)
	{
		
		var dotpos = email.indexOf('.', atpos+1);
		//alert(dotpos);
		if (dotpos > -1) return true;
	}
	return false;
	//var pattern = new RegExp(^([^.@]+)(\.[^.@]+)*@([^.@]+\.)+([^.@]+)$);
	//return pattern.test(email);
}

/* Reveal More Code */
jQuery(document).ready(function(){
	jQuery('a.hide').hide();

	jQuery('span.reveal > a.show').click(function(){
		
		jQuery(this).parent().next('ul.more').show();
		jQuery(this).parent().next('ul.more').find('li.merchant:first-child').find('ul.offers').css('border','none');
		jQuery(this).parent().next('ul.more').find('li.merchant:first-child').find('div.left').css('border','none');
		jQuery(this).hide();
		jQuery(this).parent().find('a.hide').show();
		jQuery(this).parent().addClass('active');
		return false;
	});
	
	jQuery('span.reveal > a.hide').click(function(){
		jQuery(this).parent().next('ul.more').hide();
		jQuery(this).hide();
		jQuery(this).parent().find('a.show').show();
		jQuery(this).parent().removeClass('active');
		return false;
	});
	
	

	
});


// @todo remove me to category.js

jQuery(document).ready(function(){
	jQuery('#mobile_tab').click(function(){
		jQuery('ul.codes_tab').hide();
		jQuery('ul.mobile_and_printable').show();
		jQuery(this).removeClass('off');
		jQuery(this).addClass('on');

		jQuery('#codes_tab').removeClass('on');
		jQuery('#codes_tab').addClass('off');
		
	});
	
	jQuery('#codes_tab').click(function(){
		jQuery(this).removeClass('off');
		jQuery(this).addClass('on')
		
		jQuery('#mobile_tab').removeClass('on');
		jQuery('#mobile_tab').addClass('off');
		
		jQuery('ul.mobile_and_printable').hide();
		jQuery('ul.codes_tab').show();
	});
	
	if(jQuery('#postcode').val() == 'Postcode' || jQuery('#postcode').val() == '')
	{
		jQuery('#postcode').val('Postcode');
		jQuery('#postcode').addClass('inactive');
	}
	
	jQuery('#postcode').click(function() {
		if(jQuery('#postcode').val() == 'Postcode')
		{
			jQuery(this).val('');
			jQuery('#postcode').removeClass('inactive');
		}
	});
	
	jQuery("a.readmore").click(
	function()
	{
		jQuery(this).hide();
		jQuery(this).parent().find('span.more').slideDown(350);
		
		return false;
	}
	);
	
	
	jQuery("a.hidemore").click(
			function()
			{
				
				jQuery(this).parent().slideUp(350,function callback(){jQuery("a.readmore").show();});
				
				return false;
			}
			);

});