var current=1;
var showcount=8;
var rifles;
var s="";
var numresults;
$(document).ready(function(){
	$('.expansion').hide();
	$('.branch').each(function(e){
		$(this).addClass('expand');
	});
	$("#collapse_all").click(function(e){
		$(".menu_sub:visible").slideToggle();
		$(".expand").removeClass("expand").addClass('collapse');
	});
	$("#expand_all").click(function(e){
		$(".menu_sub:hidden").slideToggle();
		$(".menu").children("li").addClass("expanded");
	});
	
	expandcollapse();
	initResets();
});
//var done = false;
//window.onbeforeunload = confirmBrowseAway;
//function confirmBrowseAway(){
//  if (!done) {
//    return "\n\nThis action will clear your results of the Gun Finder!\n\nA link is provided to navigate back to the previous results.\n\n";
//  }
//}
//function updatedone(){
//  done = true;
//}
function expandcollapse(){
	$('.branch').each(function(){
		$(this).click(function(){
			if($(this).hasClass('expand')){
				$(this).removeClass('expand').addClass('collapse');
				$(this).next('div[class="expansion"]').slideToggle();
			}else{
				$(this).removeClass('collapse').addClass('expand');
				$(this).next('div[class="expansion"]').slideToggle();
			}
		});
	});
	$("INPUT[id$='_check']").next('span').each(function(){
		$(this).click(function(){
			blockIt();
			if($(this).prev("INPUT[id$='_check']").attr('checked')==true){
				$(this).prev("INPUT[id$='_check']").attr('checked', false);
			}else{
				$(this).prev("INPUT[id$='_check']").attr('checked', true);
			}
			findIt();
		});
	});
	$("INPUT[id$='_check']").click(function(){
		blockIt();
		findIt();
	});
}
function blockIt(){
	$('#sidebarch').block({ 
		message: "Loading...",
		centerY: false,
        fadeIn: 0, 
        fadeOut: 700,
        overlayCSS:  { 
            background: '#222',
            cursor: 'wait'
        }, 
	    css: { 
	        width: '200px', 
	        top: '100px', 
	        left: '', 
	        right: '10px', 
	        border: 'none', 
	        padding: '5px', 
	        backgroundColor: '#000', 
	        '-webkit-border-radius': '10px', 
	        '-moz-border-radius': '10px', 
	        opacity: .9, 
	        color: '#fff',
	        cursor: 'wait'
	    }
	}); 
}
function findIt(){
	$('#finderbuild').html("");
	$(".findernext, .finderprevious").html("&nbsp;");
	$('#finderheader').html("<p class='strong_branded'>Loading...</a>");
	current=1;
	$.ajax({ 			
		url: "/firearms/find/",
		data: $("#finder").serialize(),
		type: "post",
		cache: false,
		async: false,
		dataType: 'json',
		success: function(data){
			$('.currentloc').html("");
			$(".findernext, .finderprevious").html("&nbsp;");			
			numresults = parseInt(data.results);
			if(numresults!=1){
				s='s';
			}
			var html="";
			if(data.error){
				$('#slider').slider('destroy');
				$('.currentpage').html('');
	       		html=html+"<div>";
	       		html=html+"<div>"+data.error+"</div>";
	       		html=html+"</div>\n";
			}else{
				rifles = data.rifles;
				html=buildTable(1);
			}
			$('#finderheader').html("<p class='strong_branded'>Loading results...</p>");
			$('#sidebarch').unblock({
				onUnblock: function(){
					$('#finderheader').html('<p class="strong_branded">Your search produced '+numresults+' result'+s+'. </p>');
					$('#finderbuild').hide().html(html).fadeIn('slow');
					initHover();
				}
			});
		},
		error: function(data){
			var html="<p>Your query was not understood.</p>";
			$('#sidebarch').unblock({
				onUnblock: function(){
					$('#slider').slider('destroy');
					$('.currentpage').html('');
					$(".findernext, .finderprevious").html("&nbsp;");
					$('#finderheader').html('<p class="strong_branded">Error:</p>');
					$('#finderbuild').hide().html(html).fadeIn('slow');
				}
			});
		}
	});
}
function initHover(){
	$(".finderholder").unbind('hover').unbind('click');
	$(".finderholder").hover(
			function () {
				$(this).addClass("finderhover");
			}, 
			function () {
				$(this).removeClass("finderhover");
			}
	);
	$(".rifleactions").hover(
			function () {
				$(this).addClass("rifleactionshover");
			}, 
			function () {
				$(this).removeClass("rifleactionshover");
			}
	);
	$(".finderholder").click(function(){
		var clickedid=$(this).attr('id');
		$.ajax({ 			
			url: "/firearms/getmodel/",
			data: {id: clickedid},
			type: "post",
			cache: false,
			async: false,
			dataType: 'json',
			success: function(data){
				$('.currentloc').html('');
				$('#finderbuild').html('');
				$('#slider').slider('destroy');
				$('.currentpage').html('');
				$('.findernext, .finderprevious').html('');
				var html="";
				if(data.error){
		       		html=html+"<div>";
		       		html=html+"<div>"+data.error+"</div>";
		       		html=html+"</div>\n";
				}else{
					var navstr="<div style='padding-left: 5px;' >"+
					"&laquo; <a href='#' class='backtoresults rifleactions'>Back to search results</a>&nbsp;&nbsp;"+
					"<a href='#' class='printable rifleactions'>Printable version</a>&nbsp;&nbsp;"+
					"<a href='/dealerlocator/' class='rifleactions'>Dealer locator</a>&nbsp;&nbsp;"+
					"<a href='' onClick='return false;' class='rifleactions' title='"+data.availability+"'>Availability</a></div>";
					var htmlstr=buildDetails(data);
					html=navstr+htmlstr+"<br/><br/>"+navstr;
				}
				$('#finderheader').html("<p class='strong_branded'>Loading rifle...</p>");
				$('#sidebarch').unblock({
					onUnblock: function(){
						$('#finderheader').html('<p class="strong_branded">Model Family Details:</p>');
						$('#finderbuild').html(html).fadeIn('slow');
						$('.thumb250').hover(function(){
							$(this).addClass('thumb250hover');
						},function(){
							$(this).removeClass('thumb250hover');
						}).click(function(){
							$('.thumb250clicked').removeClass('thumb250clicked');
							$(this).addClass('thumb250clicked');
							var filename = $(this).attr('rel');
							$('#medimgdisplay').hide().html('<img src="https://s3.amazonaws.com/savagefiles/firearms/models/610/'+filename+'" />').fadeIn('fast');
						});
						$('button').button();
						$('a[title]').qtip({ 
							style: { 
								name: 'dark',
								tip: true
							},
							position: {
								corner: {
									target: 'topLeft',
									tooltip: 'bottomMiddle'
								}
							}
						});
						$('.backtoresults').unbind('click').click(function(){
							html=buildTable(current);
							$('#finderheader').html('<p class="strong_branded">Your search produced '+numresults+' result'+s+'. </p>');
							$('#finderbuild').hide().html(html).fadeIn('fast');
							initHover();
						});
						$('.printable').unbind('click').click(function(){
							var printwindow=window.open('',"printwindow");
							printwindow.document.write("<html><head>"+
							"<link href=\"/css/gundetails.css\" media=\"all\" rel=\"stylesheet\" type=\"text/css\" />"+
							"<link href=\"/css/global.textstyles.css\" media=\"all\" rel=\"stylesheet\" type=\"text/css\" />"+
							"</head>"+
							"<body onload='window.print()'><button onClick='window.print()'>Print</button><button onClick='window.close()'>Close Window</button><br/><br/><img src='/images/savagearms.logo.bw.print.gif'/><table border=0 width='800px'><tr><td>"+buildDetails(data)+"</tr></table></body></html>");
							printwindow.document.close(); 
						});
					}
				});
			},
			error: function(data){
				var html="<p>Your query was not understood.</p>";
				$('#sidebarch').unblock({
					onUnblock: function(){
						$('.currentloc').html("");
						$(".findernext, .finderprevious").html("&nbsp;");
						$('#finderheader').html('<p class="strong_branded">Error:</p>');
						$('#finderbuild').html(html).fadeIn('slow');
					}
				});
			}
		});
	});
}
function buildTable(){
	$(".findernext, .finderprevious").html("&nbsp;");
	if(current<1){current=1;}
	if(current>numresults){current=numresults;}	
	start=current-1;
	var count=0;
	var i=0;
	var html="<table border='0' cellpadding='0' cellspacing='0' width='100%'><tr>";
	for(key=start;key<rifles.length;key++) {
		i++;
		count++;
		if(rifles[key].i==false){
			rifleimg='missing.png';
		}else{
			rifleimg=rifles[key].i;
		}
		html=html+"<td class='lefttd50'>";
		html=html+"<div class='finderholder' id='"+rifles[key].m+"'>";
		html=html+"<div class='finderdiv' title='Click for details'>";
		html=html+"<div class='finderheader'>"+rifles[key].s+" Series:</div>";
		html=html+"<div class='finderimg'><img src='https://s3.amazonaws.com/savagefiles/firearms/models/250/"+rifleimg+"'></div>";
		var isnew='';
		if(rifles[key].n=="y"){
			isnew=" newproduct";
		}
		html=html+"<div class='finderspecs"+isnew+"'>";
		html=html+"Model: "+rifles[key].d+"<br/>";
		html=html+"Suggested Retail: "+rifles[key].r;
		html=html+"</div>";
		html=html+"</div>";
		html=html+"</div>";
		html=html+"</td>";
		if(!(count % 2)){
			html=html+"</tr><tr>";
		}
   		if(count==showcount){ break; }   		
	}
	if((count % 2)){
		html=html+"<td>&nbsp</td>";
	}
	html=html+"</tr></table>";
	$(".findernext, .finderprevious").unbind('click');
	initBackandForth();
	return html;
}
function animateIt(html){
	$('#finderbuild').fadeOut('fast', function(){$('#finderbuild').html(html).fadeIn('fast');initHover();});
}
function initBackandForth(){
	$("#slider").slider('destroy');
	if(numresults > showcount){
		var dspcurrent=current+1;
		var currentloc = "Displaying: "+dspcurrent+" - ";
		var prevtxt = "&laquo; <span class='navbackandforth'><span class='finderback'>Previous</span></span>";
		var nexttxt = "<span class='navbackandforth'><span class='finderforward'>Next</span></span> &raquo;";
		if(numresults>showcount){
			if(current<numresults){
				$('.findernext').html(nexttxt);
				$('.finderforward').click(function(){
					current=current+showcount;
					html=buildTable(current);
					animateIt(html);
				});
			}
			if(current>1){
				$('.finderprevious').html(prevtxt);
				$('.finderback').click(function(){
					current=current-showcount;
					html=buildTable(current);
					animateIt(html);				
				});
			}			
		}
		createSlider(numresults);
	}else{
		setResults(current,numresults);
	}
}
function createSlider(){
	$("#slider").slider({
		range: "min",
		value: current,
		min: 1,
		max: numresults,
//		step: showcount,
		slide: function(event, ui) {
			maxcount=(parseInt(ui.value)+(showcount-1));
			if(maxcount>numresults){
				maxcount=numresults;
			}
			setResults(parseInt(ui.value),maxcount);
		},
		stop: function(event, ui) {
			var newcurrent=parseInt($("#slider").slider("value"));
			if(newcurrent > numresults){
				current=numresults;
			}else{
				current=newcurrent;
			}
			html=buildTable(current);
			animateIt(html);
		}
	});
	maxcount=(parseInt($("#slider").slider("value"))+(showcount-1));
	if(maxcount>numresults){
		maxcount=numresults;
	}	
	setResults(parseInt($("#slider").slider("value")),maxcount);
}
function setResults(curr,maximum){
	$(".currentpage").html('Guns: ' + curr + '-' + maximum + ' of ' + numresults );
}
function initResets(){
	$("span[id$='_reset']").each(function(){
		var theid=$(this).attr('id');
		var checkname=theid.split("_");
		$(this).click(function(){
			blockIt();
			if(checkname[0]=="all"){
				$("INPUT[id$='_check']").attr('checked', false);
				$('.branch').each(function(){
					if($(this).hasClass('expand')){
					}else{
						$(this).removeClass('collapse').addClass('expand');
						$(this).next('div[class="expansion"]').slideToggle();
					}
				});
			}else{
				$("INPUT[id='" +checkname[0]+"_check']").attr('checked', false);
			}
			findIt();
		});
	});
}
