
/*
 * Script for Goldsboro News-Argus CarFinder
 * Note: Requires jQuery library
 *
 * Purpose: Improve user experience by speeding up processes
 *
 * By Alexis Deveria
 * Created on: March, 2007
 * Last revision: Dec 27, 2007
 *
 */

//Set hidden/displayed styles
document.write('<style type="text/css">#searchwrap div#advcontent, #searchwrap fieldset#emailcontent, #asearch #search, .nonjs {display:none;} #optiontabs, #showsearch { display:block; }</style>');

var gnaCarFinder = function() {

	//Private Methods:
	function showSearch() {
		$("#showsearch").css('display','none');
		$("#search").css('display','block');
	}
	
	function showBasic() {
		$("#baslink").parent().addClass('otcur');
		$("#advlink").parent().removeClass('otcur');
		$("#bascontent .multi select").removeAttr('multiple').attr('size','1');
		$("#bascontent").removeClass('adv');
		$("#bascontent ul li.multi").css('height','3.5em');
		$("#advcontent, #bascontent p").css('display','none');
		return false;
	}
	
	function showAdvanced() {
		$("#advlink").parent().addClass('otcur');
		$("#baslink").parent().removeClass('otcur');
		$("#bascontent").addClass('adv');
		$("#bascontent .multi select").attr('multiple', 'multiple').attr('size','6');
		$("#bascontent ul li.multi").css('height','');
		$("#advcontent,#bascontent p").css('display','block');
		return false;
	}
	
	function showModel(origval) {
	
		var make = $("select[name='make[]']");
		var model = $("#model\\[\\]");
		var any = '<option value="">Any</option>';
	
		model.empty().append(any);
		
		if (make.val() != "") {
			//Show data based on make
			make.find("option:selected").each(function () {
				var makesval = $(this).val();
	
				var mkPos = $.inArray(makesval,Makesindb);
				for (var i=0, d;d = Modelsindb[mkPos][i];i++) {
					opt = document.createElement('option')
					if(d.indexOf('|') != -1) {
						t = d.split('|')[1];
						d = d.split('|')[0];
					} else {
						t = 1;
					}
					
					opt.value = d;
					opt.appendChild(document.createTextNode(d+' ('+t+')'));
					document.search["model[]"].appendChild(opt); 
				}
				
				model.val(origval?modelarr:'');
	
			});
		} else {
			var m=document.search["model[]"];
			var allmodels=[];
	
			for (var i=0, d;d = Modelsindb[i];i++) {
				for (var j=0, e;e = d[j];j++) {
					allmodels.push(e);
				}
			}
			allmodels.sort();
			for (var i=0, d;d = allmodels[i];i++) {
				opt = document.createElement('option');
				if(d.indexOf('|') != -1) {
					t = d.split('|')[1];
					d = d.split('|')[0];
				} else {
					t = 1;
				}
				opt.value = d;
				opt.appendChild(document.createTextNode(d+' ('+t+')'));
				m.appendChild(opt); 
			}
			
			model.val(origval?modelarr:'');
		}
	}
	
	function editSaved(n) {
		if(!$.cookie('faves')) {
			var cPos = -1;
			var cArray = [];
		} else {
			var cArray = $.cookie('faves').split('|');
			var cPos = $.inArray(n,cArray);
		}
		
		var saved = (cPos == -1)?false:true;
		
		if(!saved) {
			cArray.push(n);
		} else {
			cArray = $.grep(cArray, "i != " + cPos);
		}
		$.cookie('faves',cArray.join('|'),{expires: 60});
		
		return !saved;
	}
	
	/* Calculate Payment */
	function showpay() {
		var c = document.calc;
		
		if ((c.vprice.value == null || c.vprice.value.length == 0) ||
			(c.term.value == null || c.term.value.length == 0) ||
			(c.intrate.value == null || c.intrate.value.length == 0)) { 
			c.pay.value = "Incomplete data";
		 } else {
			var vprice = c.vprice.value.replace(/\,/g,'');
			var princ = vprice - c.payment.value - c.tradein.value;
			var salestax = c.salestax.value;
			princ = vprice * (salestax/100) + princ;
			var intr   = c.intrate.value / 1200;
			var term  = c.term.value;
	
			var rawvalue = princ * intr / (1 - (Math.pow(1/(1 + intr), term)));
			c.pay.value = addCommas(Math.round(rawvalue*100)/100);
			c.vprice.value = addCommas(c.vprice.value);
		}
		return false;
	
	// payment = principle * monthly interest/(1 - (1/(1+MonthlyInterest)*Months))
	
	}
	
	return {
		//Public Methods:
		
		init:function() {
		
			// For Search Box:
			if ( $('#bascontent').length ) {
		
				$(".nonjs").remove();
				
				//Remove display:block bit later
				var searchon = '<span id="showsearch" style="display:block"><a href="#">Show search options</a></span>';
				$("#criteria").append(searchon);
				$("#showsearch a").click(function() {
					showSearch();
					return false;
				});
				
				//Fix for Safari 1.x
				$("#advlink").attr('href','#advlink');
				$("#baslink").attr('href','#baslink');
			
				//Show option tabs
				$("#optiontabs").css('display','block');
				$("#advlink").click(showAdvanced);
				$("#baslink").click(showBasic);
			
				//Set model		
				var multisize = '6';
			
				$("select[name='make[]']").change(function() {
					showModel();
				});
				
				var origval = $("input[name='model[]']").val();
				modelarr = origval.split(', ');
				
				var moddiv = $("input[name='model[]']").parent();
				$("input[name='model[]']").remove();
				
				var sel = '<select name="model[]" id="model[]" multiple="multiple" size="' + multisize + '"></select>';
				moddiv.append(sel);
				showBasic();
		
				showModel(modelarr);
			
				//Open advanced search if needed
				var showadv = false;
				
				//Advanced Search page
				var url = document.location+'';
				if (url.indexOf('task=advsearch') != -1) {
					$("#optiontabs").css('display','none');
					$("#search").css('display','block');
					showadv = true;
				} else {
					//For other pages
					
					//Check all advanced fields
					$("#advcontent :text").each(function () {
						if ($(this).val() != "") { showadv = true; }
					});
					$("#advcontent select").each(function () {
						if(this.selectedIndex != 0) { showadv = true; }
					});
					$("#advcontent :checkbox").each(function () {
						if(this.checked) { showadv = true; }
					});		
				}
				
				if(showadv) { showAdvanced(); }
				
				if ($("#noresults").length) { showSearch();	}
			}
			
			//For Search Results
			if ($("#search-results").length) {
				$(document.proclistings).submit(function() {
					var ch = $("#search-results :checkbox:checked").length;
					if (ch <= 1) {
						alert('Please select more than one listings to compare');
						return false;
					} else if (ch > 4) {
						alert('Please select less than four listings to compare');
						return false;
					}
				});
				
		
				
				$("#search-results tr").each(function(i) {
					
					var id = $(this).find(".options :checkbox").val();
					
					//Has saved image, so is saved
					var saved = $(this).find(".details1 img.saved").length?true:false;
					
					var imgLoc = ".details1 strong:eq(0)";
					var sImg = '<img src="images/star.gif" class="saved" alt="" title="This listing has been saved" />';
					
					$(this).find(".details2").append(
						'<input type="button" value="' + (saved?'Un-Save':'Save') + '" />'
					).find(":button").click(function() {
					
						//Changes cookie
						saved = editSaved(id);
		
						$("#search-results .details2 a").remove();
		
						if(saved) {
							this.value = 'Un-Save';
							$(this).parents("tr").find(imgLoc).before(sImg);
							$(this).after('<a href="index.php?task=viewsaved">Show all saved listings</a>');
						} else {
							this.value = 'Save';
							$(this).parents("tr").find(".details1 img.saved").remove();
						}
					});
				});
			}
			
			
			//For Listing
			if ($("#view").length) {
			
				//For main photo
				$("#mainphoto a").click(function() {
					// alert('hey');
					var file = $(this).attr('href');
				
					// Get height of area to center vertically
					var imgheight = 480;
					
					var de = document.documentElement; 
					var h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
					h = (h/2)-(imgheight/2);
		
					var d = '<div class="bigphoto" title="Click to close image"><img style="margin-top:'+h+'px" src="' + file + '" /></div>';
					$(document.body).append(d);
					$("div.bigphoto").click(function() { $(this).remove(); } );
			
					return false;
				});
				
				//For thumbnails
				$("#thumbnails a").click(function() {
					var img = $(this).find("img");
					var fname = img.attr('src').replace('/thb/','/std/');
		
					$("#phototitle").text(img.attr("alt")?img.attr("alt"):'');
					$("#photodesc").text(img.attr("longdesc")?img.attr("longdesc"):'');
					
					$("#mainphoto img").attr('src',fname);
					$("#mainphoto a").attr('href',fname.replace('/std/','/ori/'));
		
					return false;
				});
				
				var url = $("#savelink").attr('href');
				//Do for save button
				$("#savelink").attr('href','#').click( function() {
				
					var id = url.substr(url.lastIndexOf('=')+1);
					var saved = editSaved(id);
					
					var cont = $(this).html();
					
					if(!saved) {
						$(this).html(cont.replace(/Remove/g,'Save'));
					} else {
						$(this).html(cont.replace(/Save/g,'Remove'));
					}
					return false;
				});
			}
			
			
			//For Calculator
			if ($("#estimatecalc").length) {
				//Change submit effect of form
				$(document.calc).submit(showpay);
				
				$("#estimatecalc :input").change(function() {
					var p = $("#estimatecalc input[name='pay']").val();
					if (p != null && p.length != 0) { showpay(); }
				});
			}

		}
	}

}();

$(document).ready(gnaCarFinder.init);

function addCommas(a){a+='';x=a.split('.');x1=x[0];x2=x.length>1?'.'+x[1]:'';var b=/(\d+)(\d{3})/;while(b.test(x1)){x1=x1.replace(b,'$1'+','+'$2')}return x1+x2}

jQuery.cookie=function(name,value,options){if(typeof value!='undefined'){options=options||{};if(value===null){value='';options.expires=-1}var expires='';if(options.expires&&(typeof options.expires=='number'||options.expires.toUTCString)){var date;if(typeof options.expires=='number'){date=new Date();date.setTime(date.getTime()+(options.expires*24*60*60*1000))}else{date=options.expires}expires='; expires='+date.toUTCString()}var path=options.path?'; path='+options.path:'';var domain=options.domain?'; domain='+options.domain:'';var secure=options.secure?'; secure':'';document.cookie=[name,'=',encodeURIComponent(value),expires,path,domain,secure].join('')}else{var cookieValue=null;if(document.cookie&&document.cookie!=''){var cookies=document.cookie.split(';');for(var i=0;i<cookies.length;i++){var cookie=jQuery.trim(cookies[i]);if(cookie.substring(0,name.length+1)==(name+'=')){cookieValue=decodeURIComponent(cookie.substring(name.length+1));break}}}return cookieValue}};


var Modelsindb=[
['MDX','MDX Premium','TL'],['A4 Quattro','TT Quattro'],['325','325i','528','745li','X5','Z4'],['','Century Custom','Lacrosse|4','Lesabre Custom|2','Lesabre Limited','Lucerne|3','Lucerne CXL','Park Avenue|2','Regal LS|2','Rendezvous|5'],['CTS|5','Deville','DTS|2','Eldorado','Escalade|3','Escalade Luxury|2','SRX|3','STS|6','XLR Roadster'],['1500 Silverado|6','1500 Silverado 4X4|2','1500 Silverado WT','Astro|2','Avalanche','Avalanche 1500|4','Aveo|2','Blazer|2','Camaro','Camaro Z28','Cavalier|3','Cavalier LS','Cavalier LS Sport','Cobalt|4','Cobalt LT','Colorado|5','Corvette|3','Equinox LS','Equinox LT','Express G3500|2','G1500 Express','HHR|2','Impala|9','Impala LT|7','K1500','Malibu|5','Malibu LS','Malibu LT','Malibu Maxx','Malibu Maxx LT','Monte Carlo','S-10 LS','Silverado|4','Silverado 1500|15','Silverado 1500 Classic','Silverado 2500hd','Silverado 3500','SSR','Suburban|3','Suburban 1500|3','Suburban 1500 4X4','Suburban 1500 LT 2WD','Tahoe|8','Tahoe 4X4','Tahoe LT Z71 4X4','Tahoe Lt2wd|3','Tracker 4X4','Tracker LT','Trailblazer|11','Trailblazer 2WD LT','Trailblazer 4X4|2','Trailblazer 4X4 LT','Trailblazer EXT|2','Trailblazer LS 2WD|7','Trailblazer LS 4X4','Trailblazer Lt4x4','Uplander EXT LS','Venture'],['300|10','300 Touring','300c','300m','Pacifica|5','Pacifica Touring','PT Cruiser|7','PT Cruiser Touring|3','PT Cruiser Touring ED.','Sebring|4','Sebring LX|3','Town & Country|4','Town & Country LMT','Town & Country LTD|2','Town & Country LX','Town & Country LXI','Town & Country Touring|2'],['Catalina'],['1500 RAM 4X4','Avenger|2','Avenger R/T','Avenger SE|5','Caliber','Caravan|2','Caravan Sport','Caravan SXT|2','Charger|6','Charger SE','Charger SXT','Dakota SLT|2','Dakota ST|2','Durango|2','Durango Limited','Durango SLT|2','Durango ST','Grand Caravan|3','Grand Caravan SE|5','Grand Caravan SXT|2','Intrepid SE','Magnum|4','Neon','Neon SXT','Nitro','Ram 1500|28','RAM 1500 4X4','RAM 1500 Quad CAB','RAM 1500 SLT','RAM 1500 ST','RAM 2500|3','Ram 3500','Stratus|2','Stratus SE'],['Crown Victoria|3','Crown Victoria LX','E-350 Super Duty','Edge SEL','Escape|4','Escape Limited','Escape XLT|4','Escort','Excursion','Expedition|3','Expedition Eddie Bauer|7','Expedition XLT|5','Explorer|3','Explorer Eddie Bauer','Explorer Sport','Explorer Sport Trac|2','Explorer XLS|4','Explorer XLT|5','F-150|17','F-150 4X4|4','F-150 Styleside','F-150 Supercrew','F-150 XLT Lariat','F-250|2','F-250 Super Duty|3','F-350','F-350 Super Duty','F-350 Super Duty FX4','Five Hundred','Five Hundred SEL|3','Focus|8','Focus ZX3','Freestar','Freestar SEL','Fusion SE|2','Fusion SEL|2','Mustang|12','Mustang 2D Coupe','Mustang Cobra SVT','Mustang GT','Mustang Supercharged GT','Ranger|7','Ranger 4X4|2','Ranger XLT','Sport Trac LTD','Taurus|4','Taurus SE|6','Taurus SEL|4','Taurus SES|2','Windstar','Windstar SEL'],['Gaehw58sa','Gaehw612sa|12','Gaehw612ta2|2','Gaehw714ta2','Gaehw8.520ta2|2','Gaehwh20ta2','Gaje6i4sa','Gatw58sa','Gavhw58sa','Gavhw610sa|3','Gavhw612sa|4','Gavhw612ta2|6','Gavhw714ta2','Gavhw8.524ta3','Trailer|3'],['1500 Sierra','1500 Sierra Denali','1500 Sierra SLE 4X4|2','2500hd Sierra','Acadia','Envoy|3','K1500 Sierra|2','K1500 Sierra SLT 4X4','Savana G3500','Sierra 1500|3','Yukon|7','Yukon Denali','Yukon SLE','Yukon XL','Yukon XL 1500|2','Yukon XL SLT Whit NAV'],['Accord|3','Accord LX','Civic|8','Civic EX','Civic LX','Cr-v|2','Cr-v EX','Element','Element EX','Odyssey','Odyssey EX|2','Pilot|2','Pilot EX'],['H2','H3|2','H3 4 Door SUV|2','H3 SUV'],['Accent|2','Elantra','Entourage','Santa FE|7','Santa FE GLS','Sonata|9','Tiburon|2','Tucson|2'],['Q45','QX4'],['Rodeo'],['S-type|2','X-type 3.0','XJ','XJ8'],['Cherokee|2','Cherokee Sport','Commander','Grand Cherokee|2','Grand Cherokee Laredo|4','Grand Cherokee Limited|3','Liberty|2','Liberty Sport','Patriot|2','Wrangler|4','Wrangler Sahara','Wrangler SE','Wrangler Unlimited','Wrangler X'],[''],['Optima|4','Rio|3','Sedona|3','Sorento|2','Sportage|4'],['ES 330','Es300','LS 430','LS 460','RX 350','RX 400 Hybrid'],['Aviator','LS|3','Navigator|3','Town Car|2','Town CAR Executive','Town CAR Signature|2','Town CAR Signature LTD'],['3','5','6','B2300','Cx-7|2','Mazda3','Mazda3 I','Mazda3i|2','Mazda6','Mazda6 S|2','Mazda6i','Miata|2','MPV|3','Rx-8|3','Tribute','Tribute ES','Tribute I|3','Tribute LX','Tribute S|2'],['C230|2','Clk-class','Clk320'],['Grand Marquis|2','Grand Marquis LS|3','Mariner|3','Montego Premier','Mountaineer|3'],['Cooper'],['Eclipse|2','Eclipse GS','Eclipse GT','Endeavor LS|2','Galant|3','Galant ES','Lancer','Lancer Sportback Ralliart','Montero Limited','Outlander','Outlander LS','Raider'],['350z|4','Altima|11','Frontier|4','Frontier 4X4','Maxima|3','Murano|4','Pathfinder|4','Pickup','Quest|2','Sentra|2','Titan|4','Xterra|4','Xterra S'],['Alero GL'],['Cargo Mate Gaftb612sa 0','Continental Cargo Cc610sa','Gasehw610sa'],['Aztek|2','G6|10','G6 GT|2','G6 SE1','Grand AM','Grand AM GT','Grand AM SE','Grand AM SE1|2','Grand Prix|8','Grand Prix SE','Montana|3','Solstice','Vibe'],['9-7x Linear'],['Ion|2','L300','Lw200|4','SKY','VUE'],['TC','XB'],['Forester'],['Aerio','Forenza|2','XL7|3'],['4runner','4runner 4X4','4runner SR5','Avalon|2','Camry|3','Corolla|4','FJ Cruiser','Highlander 4X4','Sequoia Limited','Tacoma','Tacoma Prerunner|2','Tundra'],['Beetle','Beetle GLS','Jetta','Jetta 2.5','NEW Beetle','Passat|3','Passat GLS|2','Rabbit','Touareg 4.2'],['S40 2.4i','Xc90']
];
Makesindb = ['Acura','Audi','BMW','Buick','Cadillac','Chevrolet','Chrysler','Coachman','Dodge','Ford','Forest River','GMC','Honda','Hummer','Hyundai','Infiniti','Isuzu','Jaguar','Jeep','Kaufman','Kia','Lexus','Lincoln','Mazda','Mercedes-benz','Mercury','Mini','Mitsubishi','Nissan','Oldsmobile','Other','Pontiac','Saab','Saturn','Scion','Subaru','Suzuki','Toyota','Volkswagen','Volvo'];