
/*
 * 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, function(n, i){
				return (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=[
['RDX|2','RL','RSX','TSX'],['Q7'],['3 Series','328|6','330','335|2','335i','5 Series','530','550','7 Series','750|4','X3|4','X5','Z4|2'],['Enclave|11','Lacrosse|16','Lucerne|15','Rainier','Regal','Rendezvous|2'],['CTS|30','Deville|2','DTS|13','Escalade|8','Escalade ESV','Escalade EXT|2','Seville','SRX|11','STS|7'],['|2'],['Avalanche|10','Avalanche 1500','Aveo|7','Aveo5|2','Blazer','Camaro|12','Cobalt|25','Colorado|10','Corvette|4','Equinox|16','Express 3500','Express Cargo','Express G3500|2','HHR|10','Impala|35','Malibu|22','Malibu Maxx','Monte Carlo','Silverado 1500|59','Silverado 1500 Classic|2','Silverado 1500 SS','Silverado 1500- Z71','Silverado 2500hd|3','Silverado 3500','Silverado 3500hd','Silverado Base; LS; LT','SSR|2','Suburban|13','Suburban 1500|5','Suburban LT','Tahoe|22','Trailblazer|16','Trailblazer EXT','Traverse|9','Uplander|3'],['300|14','300-series','Aspen|3','Cirrus','Pacifica|5','PT Cruiser|5','Sebring|7','Sebring Limited','Town & Country|13','Town AND Country|2'],['','Avenger|7','Caliber|2','Caravan|3','Challenger|7','Charger|9','Dakota|10','Durango','Grand Caravan|14','Journey|10','Magnum','Neon','Nitro|2','RAM 1500|20','RAM 2500|4','RAM 3500|2','RAM Pickup 1500|6','RAM Pickup 2500','Stratus|4'],['Crown Victoria','E-150','Edge|17','Escape|14','Expedition|7','Expedition EL|3','Explorer|14','Explorer Sport','F-150|48','F-250|7','F-250 Super Duty|3','F-350|4','Five Hundred','Flex|3','Focus|20','Focus SES','Freestar','Freestyle|4','Fusion|19','Mustang|29','Ranger|12','Sport Trac|4','Taur','Taurus|4','Taurus GL','Taurus X','Transit Connect|6','Windstar SE'],['1500 Sierra','Acadia|6','Canyon|7','Envoy|5','Envoy Denali','Envoy XL','Sierra','Sierra 1500|20','Sierra 2500|2','Sierra 2500hd','Sierra 3500hd','Yukon|15','Yukon Denali|4','Yukon XL|8'],['','Accord|8','Accord EX','Civic|4','Civic CPE|4','Cr-v|3','Fit|2','Odyssey|5','Pilot','Ridgeline'],['H2|2','H2 SUT|3','H3|8','H3 SUV','H3T'],['','Accent','Elantra','Genesis','Santa FE|2','Sonata|6','Tucson GL'],['Fx35','QX4'],['Ascender','Oasis'],['S-type','X-type'],['Cherokee','Commander|4','Grand Cherokee|12','Grand Cherokee Laredo','Liberty|3','Wrangler|18','Wrangler Unlimited'],['','Forte|11','Forte Koup|8','Optima|21','RIO|23','Rondo|8','Sedona|11','Sorento|9','Soul|5','Spectra|4','Sportage|6'],['Range Rover','Range Rover Sport'],['GX|2','IS 350','Is250','LX 470','RX','RX 400h'],['LS','MKS|6','MKT|9','MKX|7','MKZ|4','Navigator|6','Town CAR|3'],['CX7|3'],['|7','6 I','626','Cx-7|18','Cx-9|11','Mazda3|34','Mazda3i|2','Mazda5|4','Mazda6|24','Millenia','Mx-5 Miata|7','Rx-8|3','Tribute|3','Tribute I'],['C-class|3','C280','Clk-class','Clk500','E-class|2','E320','E350|2','Ml320','Ml350'],['Grand Marquis|4','Mariner|7','Milan|4','Mountaineer|4','Sable'],['Cooper'],['Eclipse|2','Eclipse Spyder','Galant'],['|2','370z','Altima|18','Armada','Frontier|5','Maxima|10','Murano|5','Pathfinder|3','Rogue|3','Sentra','Titan|5','Versa|5','Xterra|2'],['Voyager'],['G5|3','G6|25','G8','Grand Prix|2','Solstice|2','Sunfire','Torrent|2','Vibe|7'],['911sc Targa'],['Aura|3','Outlook|2','VUE|5'],['TC','XB'],['Fortwo'],['Impreza','Legacy L'],['XL7'],['|4','4runner|2','Avalon|4','Camry|11','Camry LE','Camry Solara|5','Corolla|11','Highlander|4','Matrix','Prius','Rav4|6','Sequoia|2','Sienna|2','Tacoma|7','Tundra|2','Yaris'],['|10','CC|7','EOS','Jetta|7','Jetta Sedan|18','NEW Beetle|6','NEW Beetle Convertible|7','NEW Beetle Coupe|11','Passat|2','Passat Sedan|5','Passat Wagon','Routan|7','Tiguan|2','Touareg 2'],['C70','S60|2','Xc70','Xc90'],['CC','Jett|10']
];
Makesindb = ['Acura','Audi','BMW','Buick','Cadillac','Chev','Chevrolet','Chrysler','Dodge','Ford','GMC','Honda','Hummer','Hyundai','Infiniti','Isuzu','Jaguar','Jeep','Kia','Land Rover','Lexus','Lincoln','Mazd','Mazda','Mercedes-benz','Mercury','Mini','Mitsubishi','Nissan','Plymouth','Pontiac','Porsche','Saturn','Scion','Smart','Subaru','Suzuki','Toyota','Volkswagen','Volvo','Vw'];