function GSEAPI(apiEndpoint)
{this._dealerCache={};this._promotionCache={};this.apiEndpoint=apiEndpoint;}
GSEAPI.prototype.getDealer=function(dealerId)
{return this._dealerCache[dealerId];}
GSEAPI.prototype.validatePromoCode=function(promoCode,successCallback,errorCallback)
{this.loadDealers({promoCode:promoCode},function(data,textStatus,request)
{var isValid=data&&data.results&&data.results.length?true:false;successCallback(isValid,promoCode,data.results[0]);},errorCallback);}
GSEAPI.prototype.loadDealer=function(dealerId,successCallback,errorCallback)
{if(this._dealerCache[dealerId])
{successCallback(this._dealerCache[dealerId]);}
else
{$.ajax({context:this,dataType:"json",url:this.apiEndpoint+"/dealers/"+dealerId,success:$.proxy(function(data,textStatus,request){this._dealerSuccessHandler(data,textStatus,request,successCallback);},this),error:$.proxy(function(request,textStatus,errorThrown){this._errorHandler(request,textStatus,errorThrown,errorCallback);},this)});}}
GSEAPI.prototype.loadDealers=function(params,successCallback,errorCallback)
{$.ajax({context:this,data:params,dataType:"json",url:this.apiEndpoint+"/dealers",success:$.proxy(function(data,textStatus,request){this._dealerListSuccessHandler(data,textStatus,request,successCallback);},this),error:$.proxy(function(request,textStatus,errorThrown){this._errorHandler(request,textStatus,errorThrown,errorCallback);},this)});}
GSEAPI.prototype.loadPromotions=function(params,successCallback,errorCallback)
{$.ajax({context:this,data:params,dataType:"json",url:this.apiEndpoint+"/promotions",success:$.proxy(function(data,textStatus,request){this._promotionListSuccessHandler(data,textStatus,request,successCallback);},this),error:$.proxy(function(request,textStatus,errorThrown){this._errorHandler(request,textStatus,errorThrown,errorCallback);},this)});}
GSEAPI.prototype._promotionListSuccessHandler=function(data,textStatus,request,successCallback)
{if(successCallback)
successCallback(data,textStatus,request);}
GSEAPI.prototype._dealerListSuccessHandler=function(data,textStatus,request,successCallback)
{for(var i=0;i<data.results.length;i++)
{var dealer=data.results[i];this._dealerCache[dealer.id]=dealer;}
if(successCallback)
successCallback(data,textStatus,request);}
GSEAPI.prototype._dealerSuccessHandler=function(data,textStatus,request,successCallback)
{this._dealerCache[data.id]=data;if(successCallback)
successCallback(data,textStatus,request);}
GSEAPI.prototype._errorHandler=function(request,textStatus,errorThrown,userHandler)
{if(textStatus=="parsererror")
{setTimeout(function(){$.error("There was an error parsing the data returned by the server.");},0);}
if(userHandler)
userHandler(request,textStatus,errorThrown);}
function DealerChooser(api,stateSelectBox,dealerSelectBox,dealerFieldContainer)
{this.api=api;this._stateSelectBox=$(stateSelectBox);this._dealerSelectBox=$(dealerSelectBox);this._dealerFieldContainer=$(dealerFieldContainer||dealerSelectBox);this._dealersLoadCompleteHandler=$.proxy(this._dealersLoadCompleteHandler,this);this._init();}
DealerChooser.prototype.getDealerData=function()
{var id=this.getDealerId();if(id&&this._dealersData)
{for(var i=0;i<this._dealersData.results.length;i++)
{if(this._dealersData.results[i].id==id)
return this._dealersData.results[i];}}}
DealerChooser.prototype.getDealerId=function()
{return this._dealerSelectBoxIsVisible?this._dealerSelectBox.val():null;}
DealerChooser.prototype._init=function()
{var self=this;this._stateSelectBox.change($.proxy(this._stateSelectBoxChangeHandler,this));this._dealerSelectBox.change($.proxy(this._dealerSelectBoxChangeHandler,this));this._stateSelectBoxChangeHandler();}
DealerChooser.prototype._dealerSelectBoxChangeHandler=function(event)
{$(this).trigger("dealerChanged");}
DealerChooser.prototype._stateSelectBoxChangeHandler=function(event)
{var state=this._stateSelectBox.val();this._hideDealerSelectBox();if(state)
this.api.loadDealers({state:state},this._dealersLoadCompleteHandler);$(this).trigger("dealerChanged");}
DealerChooser.prototype._dealersLoadCompleteHandler=function(data)
{this._dealersData=data;this._dealerSelectBox.empty();if(!data||!data.results||!data.results.length)
{alert("Sorry, there are no dealers in the state you selected!");return;}
this._dealerSelectBox.html('<option value=""></option>');for(var i=0;i<data.results.length;i++)
{var option=document.createElement('option');option.value=data.results[i].id;var txt=document.createTextNode(data.results[i].name);option.appendChild(txt);this._dealerSelectBox.append(option);}
this._showDealerSelectBox();$(this).trigger("dealerChanged");}
DealerChooser.prototype._showDealerSelectBox=function()
{this._dealerSelectBoxIsVisible=true;this._dealerFieldContainer.fadeIn();$("select#dealer").sb({fixedWidth:true}).change(function(){$(this).siblings('.selectbox').removeClass('error')});$("select#dealer").sb("refresh");}
DealerChooser.prototype._hideDealerSelectBox=function()
{this._dealerSelectBoxIsVisible=false;this._dealerFieldContainer.fadeOut();}
function PromoCodeField(element,api)
{this._borderColor="#b5b603";this._hideDuration=this._showDuration=250;this._oldValue="";this._input=$("input",element);this._container=$("#form-create-coupon-code");this._message=$(".invalid-code-container",element);this._api=api;this._input.attr({autocomplete:"off"});this._message.hide();this._changeHandler=$.proxy(this._changeHandler,this);this._checkFieldValue=$.proxy(this._checkFieldValue,this);this._validationCallback=$.proxy(this._validationCallback,this);this._input.change(this._changeHandler);this._input.bind("keyup",this._changeHandler);this._changeHandler();}
PromoCodeField.prototype._changeHandler=function(event)
{if(event)
event.preventDefault();var value=this.getValue();if(value!=this._oldValue)
{this._oldValue=value;clearTimeout(this._checkValueTimeout);this._checkValueTimeout=setTimeout(this._checkFieldValue,700);$(this).trigger("change");}}
PromoCodeField.prototype._checkFieldValue=function()
{this._api.validatePromoCode(this.getValue(),this._validationCallback);}
PromoCodeField.prototype._validationCallback=function(isValid,promoCode,dealerData)
{var value=this.getValue();if(promoCode!=value)
return;this._isValid=isValid;if(isValid)
{this._dealerId=dealerData.id;this._hideInvalidIndicator();}
else
{this._showInvalidIndicator();}
$(this).trigger("validated");}
PromoCodeField.prototype._hideInvalidIndicator=function()
{this._container.removeClass("error");this._message.hide("slow");}
PromoCodeField.prototype._showInvalidIndicator=function()
{this._container.addClass('error');this._message.fadeIn('slow')}
PromoCodeField.prototype.getValue=function()
{return this._input.val();}
PromoCodeField.prototype.getIsValid=function()
{return this._isValid;}
PromoCodeField.prototype.getDealerId=function()
{return this._dealerId;}
PromoCodeField.prototype.resetValue=function()
{if(this._input.val())this._input.val("");}
function DealerOfferGenerator(api,dealerChooser,promoCodeField)
{this.api=api;this.dealerChooser=dealerChooser;this.promoCodeField=promoCodeField;this._promoCode="";this._dealerChooserDealerChangedHandler=$.proxy(this._dealerChooserDealerChangedHandler,this);this._promoCodeFieldValidatedHandler=$.proxy(this._promoCodeFieldValidatedHandler,this);$(dealerChooser).bind("dealerChanged",this._dealerChooserDealerChangedHandler);$(promoCodeField).bind("validated",this._promoCodeFieldValidatedHandler);}
DealerOfferGenerator.prototype._resetPromoCode=function()
{this._promoCode="";}
DealerOfferGenerator.prototype._setValidPromoCode=function(promoCode)
{this._promoCode=promoCode;}
DealerOfferGenerator.prototype._getValidPromoCode=function()
{return this._promoCode;}
DealerOfferGenerator.prototype.getDealerId=function()
{return this._dealerId;}
DealerOfferGenerator.prototype._dealerChooserDealerChangedHandler=function(event)
{this.promoCodeField.resetValue();this._resetPromoCode();this.promoCodeField._hideInvalidIndicator();this._updateButtons(this.dealerChooser.getDealerId());}
DealerOfferGenerator.prototype._promoCodeFieldValidatedHandler=function(event)
{if(this.promoCodeField.getValue()&&this.promoCodeField.getIsValid())
{this._setValidPromoCode(this.promoCodeField.getValue());this._updateButtons(this.promoCodeField.getDealerId());}
else
this._updateButtons(null);}
DealerOfferGenerator.prototype._updateButtons=function(dealerId)
{var apptButton=$(".schedule-an-appointment");var offerButton=$(".show-me-my-dealer-offers");this._dealerId=dealerId;var promoCode=this._getValidPromoCode();if(dealerId)
{this.api.loadDealer(dealerId,function(data)
{var temp='/promotions/'+dealerId+'/'+promoCode;offerButton.attr("href",temp).fadeIn();apptButton.attr("href",data.scheduleAppointmentURL).fadeIn();});}
else
{apptButton.fadeOut();offerButton.fadeOut();}};(function($){var $scrollTo=$.scrollTo=function(target,duration,settings){$(window).scrollTo(target,duration,settings);};$scrollTo.defaults={axis:'xy',duration:parseFloat($.fn.jquery)>=1.3?0:1};$scrollTo.window=function(scope){return $(window)._scrollable();};$.fn._scrollable=function(){return this.map(function(){var elem=this,isWin=!elem.nodeName||$.inArray(elem.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!isWin)
return elem;var doc=(elem.contentWindow||elem).document||elem.ownerDocument||elem;return $.browser.safari||doc.compatMode=='BackCompat'?doc.body:doc.documentElement;});};$.fn.scrollTo=function(target,duration,settings){if(typeof duration=='object'){settings=duration;duration=0;}
if(typeof settings=='function')
settings={onAfter:settings};if(target=='max')
target=9e9;settings=$.extend({},$scrollTo.defaults,settings);duration=duration||settings.speed||settings.duration;settings.queue=settings.queue&&settings.axis.length>1;if(settings.queue)
duration/=2;settings.offset=both(settings.offset);settings.over=both(settings.over);return this._scrollable().each(function(){var elem=this,$elem=$(elem),targ=target,toff,attr={},win=$elem.is('html,body');switch(typeof targ){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(targ)){targ=both(targ);break;}
targ=$(targ,this);case'object':if(targ.is||targ.style)
toff=(targ=$(targ)).offset();}
$.each(settings.axis.split(''),function(i,axis){var Pos=axis=='x'?'Left':'Top',pos=Pos.toLowerCase(),key='scroll'+Pos,old=elem[key],max=$scrollTo.max(elem,axis);if(toff){attr[key]=toff[pos]+(win?0:old-$elem.offset()[pos]);if(settings.margin){attr[key]-=parseInt(targ.css('margin'+Pos))||0;attr[key]-=parseInt(targ.css('border'+Pos+'Width'))||0;}
attr[key]+=settings.offset[pos]||0;if(settings.over[pos])
attr[key]+=targ[axis=='x'?'width':'height']()*settings.over[pos];}else{var val=targ[pos];attr[key]=val.slice&&val.slice(-1)=='%'?parseFloat(val)/100*max:val;}
if(/^\d+$/.test(attr[key]))
attr[key]=attr[key]<=0?0:Math.min(attr[key],max);if(!i&&settings.queue){if(old!=attr[key])
animate(settings.onAfterFirst);delete attr[key];}});animate(settings.onAfter);function animate(callback){$elem.animate(attr,duration,settings.easing,callback&&function(){callback.call(this,target,settings);});};}).end();};$scrollTo.max=function(elem,axis){var Dim=axis=='x'?'Width':'Height',scroll='scroll'+Dim;if(!$(elem).is('html,body'))
return elem[scroll]-$(elem)[Dim.toLowerCase()]();var size='client'+Dim,html=elem.ownerDocument.documentElement,body=elem.ownerDocument.body;return Math.max(html[scroll],body[scroll])
-Math.min(html[size],body[size]);};function both(val){return typeof val=='object'?val:{top:val,left:val};};})(jQuery);;(function($){var l=location.href.replace(/#.*/,'');var g=$.localScroll=function(a){$('body').localScroll(a)};g.defaults={duration:1e3,axis:'y',event:'click',stop:true,target:window,reset:true};g.hash=function(a){if(location.hash){a=$.extend({},g.defaults,a);a.hash=false;if(a.reset){var e=a.duration;delete a.duration;$(a.target).scrollTo(0,a);a.duration=e}i(0,location,a)}};$.fn.localScroll=function(b){b=$.extend({},g.defaults,b);return b.lazy?this.bind(b.event,function(a){var e=$([a.target,a.target.parentNode]).filter(d)[0];if(e)i(a,e,b)}):this.find('a,area').filter(d).bind(b.event,function(a){i(a,this,b)}).end().end();function d(){return!!this.href&&!!this.hash&&this.href.replace(this.hash,'')==l&&(!b.filter||$(this).is(b.filter))}};function i(a,e,b){var d=e.hash.slice(1),f=document.getElementById(d)||document.getElementsByName(d)[0];if(!f)return;if(a)a.preventDefault();var h=$(b.target);if(b.lock&&h.is(':animated')||b.onBefore&&b.onBefore.call(b,a,f,h)===false)return;if(b.stop)h.stop(true);if(b.hash){var j=f.id==d?'id':'name',k=$('<a> </a>').attr(j,d).css({position:'absolute',top:$(window).scrollTop(),left:$(window).scrollLeft()});f[j]='';$('body').prepend(k);location=e.hash;k.remove();f[j]=d}h.scrollTo(f,b).trigger('notify.serialScroll',[f])}})(jQuery);(function(e,d,g){e.fn.borderWidth=function(){return e(this).outerWidth()-e(this).innerWidth()};e.fn.paddingWidth=function(){return e(this).innerWidth()-e(this).width()};e.fn.extraWidth=function(){return e(this).outerWidth(true)-e(this).width()};e.fn.offsetFrom=function(i){var h=e(i);return{left:e(this).offset().left-h.offset().left,top:e(this).offset().top-h.offset().top}};e.fn.maxWidth=function(){var h=0;e(this).each(function(){if(e(this).width()>h){h=e(this).width()}});return h};e.fn.triggerAll=function(h,i){return e(this).each(function(){e(this).triggerHandler(h,i)})};var c=Array.prototype.slice,a=function(){return Math.floor(Math.random()*999999999)};e.proto=function(){var i=arguments[0],h=arguments[1],j=h,l={},k;opts=e.extend({elem:"elem",access:"access",init:"init",instantAccess:false},arguments[2]);if(h._super){l[opts.init]=function(){};j=h.extend(l)}e.fn[i]=function(){var m,n=arguments;e(this).each(function(){var p=e(this),q=p.data(i),o=!q;if(o){q=new j();if(h._super){q[opts.init]=h.prototype.init}q[opts.elem]=p[0];if(q[opts.init]){q[opts.init].apply(q,opts.instantAccess?[]:c.call(n,0))}p.data(i,q)}if(!o||opts.instantAccess){if(q[opts.access]){q[opts.access].apply(q,c.call(n,0))}if(n.length>0){if(e.isFunction(q[n[0]])){m=q[n[0]].apply(q,c.call(n,1))}else{if(n.length===1){if(e.getObject){m=e.getObject(n[0],q)}else{m=q[n[0]]}}else{if(e.setObject){e.setObject(n[0],n[1],q)}else{q[n[0]]=n[1]}}}}else{if(m===k){m=p.data(i)}}}});if(m===k){return e(this)}return m}};var b=function(){return false},f=function(){var q=this,T={},m=null,C=null,u=null,v=null,l=null,ab=null,V="",F=null,U=null,i=null,S,Y,n,ae,s,ac,X,L,Z,w,ad,h,aa,R,P,K,y,z,j,W,Q,I,H,O,G,N,D,B,k,M,p,A,E,x,t,r,J;S=function(){u=e("<div class='sb "+T.selectboxClass+" "+m.attr("class")+"' id='sb"+a()+"'></div>").attr("role","listbox").attr("aria-has-popup","true").attr("aria-labelledby",C.attr("id")?C.attr("id"):"");e("body").append(u);var af=m.children().size()>0?T.displayFormat.call(m.find("option:selected")[0],0,0):"&nbsp;";v=e("<div class='display "+m.attr("class")+"' id='sbd"+a()+"'></div>").append("<div class='text'>"+af+"</div>").append(T.arrowMarkup);u.append(v);l=e("<ul class='"+T.selectboxClass+" items "+m.attr("class")+"' role='menu' id='sbdd"+a()+"'></ul>").attr("aria-hidden","true");u.append(l).attr("aria-owns",l.attr("id"));if(m.children().size()===0){l.append(Y())}else{m.children().each(function(ag){var ah,ai,aj,ak;if(e(this).is("optgroup")){ai=e(this);aj=e("<li class='optgroup'>"+T.optgroupFormat.call(ai[0],ag+1)+"</li>").addClass(ai.is(":disabled")?"disabled":"").attr("aria-disabled",ai.is(":disabled")?"true":"");ak=e("<ul class='items'></ul>");aj.append(ak);l.append(aj);ai.children("option").each(function(){ah=Y(e(this),ag).addClass(ai.is(":disabled")?"disabled":"").attr("aria-disabled",ai.is(":disabled")?"true":"");ak.append(ah)})}else{l.append(Y(e(this),ag))}})}ab=l.find("li").not(".optgroup");u.attr("aria-active-descendant",ab.filter(".selected").attr("id"));l.children(":first").addClass("first");l.children(":last").addClass("last");if(!T.fixedWidth){var o=l.find(".text, .optgroup").maxWidth()+v.extraWidth()+1;u.width(T.maxWidth?Math.min(T.maxWidth,o):o)}else{if(T.maxWidth&&u.width()>T.maxWidth){u.width(T.maxWidth)}}m.before(u).addClass("has_sb").hide().show();ad();J();l.hide();if(!m.is(":disabled")){m.bind("blur.sb",ae).bind("focus.sb",n);v.mousedown(I).mousedown(R).click(b).focus(z).blur(j).hover(W,Q);N().click(P).hover(W,Q);l.find(".optgroup").hover(W,Q).click(b);ab.filter(".disabled").click(b);if(!e.browser.msie||e.browser.version>=9){e(d).resize(e.throttle?e.throttle(100,h):aa)}}else{u.addClass("disabled").attr("aria-disabled");v.click(function(ag){ag.preventDefault()})}u.bind("close.sb",w).bind("destroy.sb",s);m.bind("reload.sb",ac);if(e.fn.tie&&T.useTie){m.bind("domupdate.sb",X)}};aa=function(){clearTimeout(i);i=setTimeout(h,50)};h=function(){if(u.is(".open")){ad();L(true)}};Y=function(ag,o){if(!ag){ag=e("<option value=''>&nbsp;</option>");o=0}var ai=e("<li id='sbo"+a()+"'></li>").attr("role","option").data("orig",ag[0]).data("value",ag?ag.attr("value"):"").addClass(ag.is(":selected")?"selected":"").addClass(ag.is(":disabled")?"disabled":"").attr("aria-disabled",ag.is(":disabled")?"true":""),ah=e("<div class='item'></div>"),af=e("<div class='text'></div>").html(T.optionFormat.call(ag[0],0,o+1));return ai.append(ah.append(af))};n=function(){t();v.triggerHandler("focus")};ae=function(){v.triggerHandler("blur")};s=function(o){u.remove();m.unbind(".sb").removeClass("has_sb");e(d).unbind("resize",aa);if(!o){m.removeData("sb")}};ac=function(){var af=u.is(".open"),o=v.is(".focused");w(true);s(true);q.init(T);if(af){m.focus();L(true)}else{if(o){m.focus()}}};X=function(){clearTimeout(U);U=setTimeout(ac,30)};x=function(){w();e(document).unbind("click",x)};A=function(){e(".sb.open."+T.selectboxClass).triggerAll("close")};t=function(){e(".sb.focused."+T.selectboxClass).not(u[0]).find(".display").blur()};E=function(){e(".sb.open."+T.selectboxClass).not(u[0]).triggerAll("close")};w=function(o){if(u.is(".open")){v.blur();ab.removeClass("hover");e(document).unbind("keyup",K).unbind("keydown",r).unbind("keypress",r).unbind("keydown",y);l.attr("aria-hidden","true");if(o===true){l.hide();u.removeClass("open");u.append(l)}else{l.fadeOut(T.animDuration,function(){u.removeClass("open");u.append(l)})}}};O=function(){var o=null;if(T.ddCtx==="self"){o=u}else{if(e.isFunction(T.ddCtx)){o=e(T.ddCtx.call(m[0]))}else{o=e(T.ddCtx)}}return o};G=function(){return ab.filter(".selected")};N=function(){return ab.not(".disabled")};Z=function(){l.scrollTop(l.scrollTop()+G().offsetFrom(l).top-l.height()/2+G().outerHeight(true)/2)};J=function(){if(e.browser.msie&&e.browser.version<8){e("."+T.selectboxClass+" .display").hide().show()}};L=function(af){var o,ag=O();t();u.addClass("open");ag.append(l);o=ad();l.attr("aria-hidden","false");if(af===true){l.show();Z()}else{if(o==="down"){l.slideDown(T.animDuration,Z)}else{l.fadeIn(T.animDuration,Z)}}e(document).click(x);m.focus()};ad=function(){var ai=O(),ap=0,ag=v.offsetFrom(ai).left,af=0,aj="",am,o,ao,an,ah,aq,al,ak;l.removeClass("above");l.show().css({maxHeight:"none",position:"relative",visibility:"hidden"});if(!T.fixedWidth){l.width(v.outerWidth()-l.extraWidth()+1)}ao=e(d).scrollTop()+e(d).height()-v.offset().top-v.outerHeight();an=v.offset().top-e(d).scrollTop();ah=v.offsetFrom(ai).top+v.outerHeight();aq=ao-an+T.dropupThreshold;if(l.outerHeight()<ao){ap=T.maxHeight?T.maxHeight:ao;af=ah;aj="down"}else{if(l.outerHeight()<an){ap=T.maxHeight?T.maxHeight:an;af=v.offsetFrom(ai).top-Math.min(ap,l.outerHeight());aj="up"}else{if(aq>=0){ap=T.maxHeight?T.maxHeight:ao;af=ah;aj="down"}else{if(aq<0){ap=T.maxHeight?T.maxHeight:an;af=v.offsetFrom(ai).top-Math.min(ap,l.outerHeight());aj="up"}else{ap=T.maxHeight?T.maxHeight:"none";af=ah;aj="down"}}}}am=(""+e("body").css("margin-left")).match(/^\d+/)?e("body").css("margin-left"):0;o=(""+e("body").css("margin-top")).match(/^\d+/)?e("body").css("margin-top"):0;al=e().jquery>="1.4.2"?parseInt(am):e("body").offset().left;ak=e().jquery>="1.4.2"?parseInt(o):e("body").offset().top;l.hide().css({left:ag+(ai.is("body")?al:0),maxHeight:ap,position:"absolute",top:af+(ai.is("body")?ak:0),visibility:"visible"});if(aj==="up"){l.addClass("above")}return aj};R=function(o){if(u.is(".open")){w()}else{L()}return false};D=function(){var af=e(this),o=m.val(),ag=af.data("value");if(T.useTie&&e.fn.tie){m.find("option").old_removeAttr("selected");e(af.data("orig")).old_attr("selected","selected")}else{m.find("option").removeAttr("selected");e(af.data("orig")).attr("selected","selected")}N().removeClass("selected");af.addClass("selected");u.attr("aria-active-descendant",af.attr("id"));v.find(".text").attr("title",af.find(".text").html());v.find(".text").html(T.displayFormat.call(af.data("orig")));if(o!==ag){m.change()}};P=function(o){D.call(this);x();m.focus();return false};B=function(){V=""};k=function(ai){var ah,ag,o,af=N();for(ah=0;ah<af.size();ah++){o=af.eq(ah).find(".text");ag=o.children().size()==0?o.text():o.find("*").text();if(ai.length>0&&ag.toLowerCase().match("^"+ai.toLowerCase())){return af.eq(ah)}}return null};M=function(af){var o=k(af);if(o!==null){D.call(o[0]);return true}return false};r=function(o){if(o.ctrlKey||o.altKey){return}if(o.which===38||o.which===40||o.which===8){o.preventDefault()}if($('input:focus').length==0&&o.which===32){o.preventDefault()}};p=function(ai){var ah,ag,o=G(),af=N();for(ah=af.index(o)+1;ah<af.size();ah++){ag=af.eq(ah).find(".text").text();if(ag!==""&&ag.substring(0,1).toLowerCase()===ai.toLowerCase()){D.call(af.eq(ah)[0]);return true}}return false};y=function(ag){if(ag.altKey||ag.ctrlKey){return false}var af=G(),o=N();switch(ag.which){case 35:if(af.size()>0){ag.preventDefault();D.call(o.filter(":last")[0]);Z()}break;case 36:if(af.size()>0){ag.preventDefault();D.call(o.filter(":first")[0]);Z()}break;case 38:if(af.size()>0){if(o.filter(":first")[0]!==af[0]){ag.preventDefault();D.call(o.eq(o.index(af)-1)[0])}Z()}break;case 40:if(af.size()>0){if(o.filter(":last")[0]!==af[0]){ag.preventDefault();D.call(o.eq(o.index(af)+1)[0]);Z()}}else{if(ab.size()>1){ag.preventDefault();D.call(ab.eq(0)[0])}}break;default:break}};K=function(o){if(o.altKey||o.ctrlKey){return false}if(o.which!==38&&o.which!==40){V+=String.fromCharCode(o.keyCode);if(M(V)){clearTimeout(F);F=setTimeout(B,T.acTimeout)}else{if(p(String.fromCharCode(o.keyCode))){Z();clearTimeout(F);F=setTimeout(B,T.acTimeout)}else{B();clearTimeout(F)}}}};z=function(){E();u.addClass("focused");e(document).unbind("keyup",K).keyup(K).unbind("keypress",r).keypress(r).unbind("keydown",r).keydown(r).keydown(y).unbind("keydown",y).keydown(y)};j=function(){u.removeClass("focused");e(document).unbind("keyup",K).unbind("keydown",r).unbind("keydown",y)};W=function(){e(this).addClass("hover")};Q=function(){e(this).removeClass("hover")};I=function(){v.addClass("active");e(document).bind("mouseup",H)};H=function(){v.removeClass("active");e(document).unbind("mouseup",H)};this.init=function(o){if(e.browser.msie&&e.browser.version<7){return}m=e(this.elem);if(m.attr("id")){C=e("label[for='"+m.attr("id")+"']:first")}if(!C||C.size()===0){C=m.closest("label")}if(m.hasClass("has_sb")){return}T=e.extend({acTimeout:800,animDuration:200,ddCtx:"body",dropupThreshold:150,fixedWidth:false,maxHeight:false,maxWidth:false,selectboxClass:"selectbox",useTie:false,arrowMarkup:"<div class='arrow_btn'><span class='arrow'></span></div>",displayFormat:g,optionFormat:function(af,ah){if(e(this).size()>0){var ag=e(this).attr("label");if(ag&&ag.length>0){return ag}return e(this).text()}else{return""}},optgroupFormat:function(af){return"<span class='label'>"+e(this).attr("label")+"</span>"}},o);T.displayFormat=T.displayFormat||T.optionFormat;S()};this.open=L;this.close=w;this.refresh=ac;this.destroy=s;this.options=function(o){T=e.extend(T,o);ac()}};e.proto("sb",f)}(jQuery,window));(function(){$(document).ready(function()
{var api=new GSEAPI("/api/1.0");var dealerChooser=new DealerChooser(api,"select#state","select#dealer","#form-create-coupon-dealer");var promoCodeField=new PromoCodeField("#form-create-coupon-code",api);var dealerOfferGenerator=new DealerOfferGenerator(api,dealerChooser,promoCodeField);$("#videos li a").click(function(event){event.preventDefault();var video=$(this).attr('href');ytplayer.loadVideoByUrl(video);});$("a[href^='http']").attr('target','_blank');$('#loading').ajaxStart(function(){$(this).show();}).ajaxStop(function(){$(this).hide();});});})();function onPlayerError(errorCode){alert("An error occured of type:"+errorCode);}
function onYouTubePlayerReady(playerId){ytplayer=document.getElementById("ytPlayer");ytplayer.addEventListener("onError","onPlayerError");}
(function($){$('ul li:first-child').addClass('first');$('ul li:last-child').addClass('last');nav=$('nav li');mask=$(window);mask.resize(function(){resizePanel();});function resizePanel(){wWidth=mask.width()/5;nav.css('width',wWidth);}
resizePanel();$('article').each(function(){$(this).find('h1').before('<a href="#" class="close" title="Close">x</a>');var id=$(this).attr('id');var icon_src=$(this).find('img').attr('src');$('nav li:has(a[href=#'+id+']) img:eq(1)').attr('src',icon_src);});rcl=$('article .close');rcl.click(function(){$(this).closest('article').slideUp();$('nav.open').removeClass('open').find('li.active').removeClass('active');$.scrollTo('#promo','1000',{queue:'true',axis:'y',offset:-110});return false;});$("select#state").sb({fixedWidth:true}).change(function(){$(this).siblings('.selectbox').removeClass('error')});$('article').slideUp(0);$('nav a').click(function(){$(this).parent().addClass('active').siblings().removeClass('active');$(this).closest('nav').addClass('open');$($(this).attr('href')).slideDown().siblings('article').slideUp();return false;});navItems=$('nav a');navItems.click(function(){function return_click(){window.location.replace($(this).attr('href'));}
$.scrollTo('#promo','1000',{queue:'true',axis:'y',offset:430});return false;});if(window.location.hash){$('nav a[href='+window.location.hash+']').click();}})(window.jQuery);(function($){$.fn.adGallery=function(options){var defaults={loader_image:'/static/main/images/ajax-loader.gif',start_at_index:2,description_wrapper:false,thumb_opacity:1,animate_first_image:false,animation_speed:300,width:460,height:280,display_next_and_prev:true,display_back_and_forward:true,scroll_jump:410,slideshow:{enable:true,autostart:true,speed:2000,start_label:'Start',stop_label:'Stop',stop_on_scroll:true,countdown_prefix:'(',countdown_sufix:')',onStart:false,onStop:false},effect:'fade',enable_keyboard_move:true,cycle:true,callbacks:{init:false,afterImageVisible:false,beforeImageVisible:false}};var settings=$.extend(false,defaults,options);if(options&&options.slideshow){settings.slideshow=$.extend(false,defaults.slideshow,options.slideshow);};if(!settings.slideshow.enable){settings.slideshow.autostart=false;};var galleries=[];$(this).each(function(){var gallery=new AdGallery(this,settings);galleries[galleries.length]=gallery;});return galleries;};function VerticalSlideAnimation(img_container,direction,desc){var current_top=parseInt(img_container.css('top'),10);if(direction=='left'){var old_image_top='-'+this.image_wrapper_height+'px';img_container.css('top',this.image_wrapper_height+'px');}else{var old_image_top=this.image_wrapper_height+'px';img_container.css('top','-'+this.image_wrapper_height+'px');};if(desc){desc.css('bottom','-'+desc[0].offsetHeight+'px');desc.animate({bottom:0},this.settings.animation_speed*2);};if(this.current_description){this.current_description.animate({bottom:'-'+this.current_description[0].offsetHeight+'px'},this.settings.animation_speed*2);};return{old_image:{top:old_image_top},new_image:{top:current_top}};};function HorizontalSlideAnimation(img_container,direction,desc){var current_left=parseInt(img_container.css('left'),10);if(direction=='left'){var old_image_left='-'+this.image_wrapper_width+'px';img_container.css('left',this.image_wrapper_width+'px');}else{var old_image_left=this.image_wrapper_width+'px';img_container.css('left','-'+this.image_wrapper_width+'px');};if(desc){desc.css('bottom','-'+desc[0].offsetHeight+'px');desc.animate({bottom:0},this.settings.animation_speed*2);};if(this.current_description){this.current_description.animate({bottom:'-'+this.current_description[0].offsetHeight+'px'},this.settings.animation_speed*2);};return{old_image:{left:old_image_left},new_image:{left:current_left}};};function ResizeAnimation(img_container,direction,desc){var image_width=img_container.width();var image_height=img_container.height();var current_left=parseInt(img_container.css('left'),10);var current_top=parseInt(img_container.css('top'),10);img_container.css({width:0,height:0,top:this.image_wrapper_height/2,left:this.image_wrapper_width/2});return{old_image:{width:0,height:0,top:this.image_wrapper_height/2,left:this.image_wrapper_width/2},new_image:{width:image_width,height:image_height,top:current_top,left:current_left}};};function FadeAnimation(img_container,direction,desc){img_container.css('opacity',0);return{old_image:{opacity:0},new_image:{opacity:1}};};function NoneAnimation(img_container,direction,desc){img_container.css('opacity',0);return{old_image:{opacity:0},new_image:{opacity:1},speed:0};};function AdGallery(wrapper,settings){this.init(wrapper,settings);};AdGallery.prototype={wrapper:false,image_wrapper:false,gallery_info:false,nav:false,loader:false,preloads:false,thumbs_wrapper:false,scroll_back:false,scroll_forward:false,next_link:false,prev_link:false,slideshow:false,image_wrapper_width:0,image_wrapper_height:0,current_index:0,current_image:false,current_description:false,nav_display_width:0,settings:false,images:false,in_transition:false,animations:false,init:function(wrapper,settings){var context=this;this.wrapper=$(wrapper);this.settings=settings;this.setupElements();this.setupAnimations();if(this.settings.width){this.image_wrapper_width=this.settings.width;this.image_wrapper.width(this.settings.width);this.wrapper.width(this.settings.width);}else{this.image_wrapper_width=this.image_wrapper.width();};if(this.settings.height){this.image_wrapper_height=this.settings.height;this.image_wrapper.height(this.settings.height);}else{this.image_wrapper_height=this.image_wrapper.height();};this.nav_display_width=this.nav.width();this.current_index=0;this.current_image=false;this.current_description=false;this.in_transition=false;this.findImages();if(this.settings.display_next_and_prev){this.initNextAndPrev();};var nextimage_callback=function(callback){return context.nextImage(callback);};this.slideshow=new AdGallerySlideshow(nextimage_callback,this.settings.slideshow);this.controls.append(this.slideshow.create());if(this.settings.slideshow.enable){this.slideshow.enable();}else{this.slideshow.disable();};if(this.settings.display_back_and_forward){this.initBackAndForward();};if(this.settings.enable_keyboard_move){this.initKeyEvents();};var start_at=parseInt(this.settings.start_at_index,10);if(window.location.hash&&window.location.hash.indexOf('#ad-image')===0){start_at=window.location.hash.replace(/[^0-9]+/g,'');if((start_at*1)!=start_at){start_at=this.settings.start_at_index;};};this.loading(true);this.showImage(start_at,function(){if(context.settings.slideshow.autostart){context.preloadImage(start_at+1);context.slideshow.start();};});this.fireCallback(this.settings.callbacks.init);},setupAnimations:function(){this.animations={'slide-vert':VerticalSlideAnimation,'slide-hori':HorizontalSlideAnimation,'resize':ResizeAnimation,'fade':FadeAnimation,'none':NoneAnimation};},setupElements:function(){this.controls=this.wrapper.find('.ad-controls');this.gallery_info=$('<p class="ad-info"></p>');this.controls.append(this.gallery_info);this.image_wrapper=this.wrapper.find('.ad-image-wrapper');this.image_wrapper.empty();this.nav=this.wrapper.find('.ad-nav');this.thumbs_wrapper=this.nav.find('.ad-thumbs');this.preloads=$('<div class="ad-preloads"></div>');this.loader=$('<img class="ad-loader" src="'+this.settings.loader_image+'">');this.image_wrapper.append(this.loader);this.loader.hide();$(document.body).append(this.preloads);},loading:function(bool){if(bool){this.loader.show();}else{this.loader.hide();};},addAnimation:function(name,fn){if($.isFunction(fn)){this.animations[name]=fn;};},findImages:function(){var context=this;this.images=[];var thumb_wrapper_width=0;var thumbs_loaded=0;var thumbs=this.thumbs_wrapper.find('a');var thumb_count=thumbs.length;if(this.settings.thumb_opacity<1){thumbs.find('img').css('opacity',this.settings.thumb_opacity);};thumbs.each(function(i){var link=$(this);var image_src=link.attr('href');var thumb=link.find('img');if(!context.isImageLoaded(thumb[0])){thumb.load(function(){thumb_wrapper_width+=this.parentNode.parentNode.offsetWidth;thumbs_loaded++;});}else{thumb_wrapper_width+=thumb[0].parentNode.parentNode.offsetWidth;thumbs_loaded++;};link.addClass('ad-thumb'+i);link.click(function(){context.showImage(i);context.slideshow.stop();return false;}).hover(function(){if(!$(this).is('.ad-active')&&context.settings.thumb_opacity<1){$(this).find('img').fadeTo(300,1);};context.preloadImage(i);},function(){if(!$(this).is('.ad-active')&&context.settings.thumb_opacity<1){$(this).find('img').fadeTo(300,context.settings.thumb_opacity);};});var link=false;if(thumb.data('ad-link')){link=thumb.data('ad-link');}else if(thumb.attr('longdesc')&&thumb.attr('longdesc').length){};var desc=false;if(thumb.data('ad-desc')){desc=thumb.data('ad-desc');}else if(thumb.attr('alt')&&thumb.attr('alt').length){desc=thumb.attr('alt');};var title=false;if(thumb.data('ad-title')){title=thumb.data('ad-title');}else if(thumb.attr('title')&&thumb.attr('title').length){title=thumb.attr('title');};context.images[i]={thumb:thumb.attr('src'),image:image_src,error:false,preloaded:false,desc:desc,title:title,size:false,link:link};});var inter=setInterval(function(){if(thumb_count==thumbs_loaded){thumb_wrapper_width-=100;var list=context.nav.find('.ad-thumb-list');list.css('width',thumb_wrapper_width+'px');var i=1;var last_height=list.height();while(i<201){list.css('width',(thumb_wrapper_width+i)+'px');if(last_height!=list.height()){break;}
last_height=list.height();i++;$('#page-drivergear .ad-thumb-list').css('width','600px');$('#page-secondskin .ad-thumb-list').css('width','1625px');$('#page-accessories .ad-thumb-list').css('width','1150px');$('#page-secondskin .ad-thumb-list').css('height','280px');}
clearInterval(inter);};},100);},initKeyEvents:function(){var context=this;$(document).keydown(function(e){if(e.keyCode==39){context.nextImage();context.slideshow.stop();}else if(e.keyCode==37){context.prevImage();context.slideshow.stop();};});},initNextAndPrev:function(){this.next_link=$('<div class="ad-next"><div class="ad-next-image"></div></div>');this.prev_link=$('<div class="ad-prev"><div class="ad-prev-image"></div></div>');this.image_wrapper.append(this.next_link);this.image_wrapper.append(this.prev_link);var context=this;this.prev_link.add(this.next_link).mouseover(function(e){$(this).css('height',40);$(this).css('width',10);$(this).find('div').show();}).mouseout(function(e){$(this).find('div').hide();}).click(function(){if($(this).is('.ad-next')){context.nextImage();context.slideshow.stop();}else{context.prevImage();context.slideshow.stop();};}).find('div').css('opacity',1);},initBackAndForward:function(){var context=this;this.scroll_forward=$('<a class="ad-forward"></a>');this.scroll_back=$('<a class="ad-back"></a>');this.nav.append(this.scroll_forward);this.nav.prepend(this.scroll_back);var has_scrolled=0;var thumbs_scroll_interval=true;$(this.scroll_back).add(this.scroll_forward).click(function(){var width=context.nav_display_width-50;if(context.settings.scroll_jump>0){var width=context.settings.scroll_jump;};if($(this).is('.ad-forward')){var left=context.thumbs_wrapper.scrollLeft()+width;}else{var left=context.thumbs_wrapper.scrollLeft()-width;};if(context.settings.slideshow.stop_on_scroll){context.slideshow.stop();};context.thumbs_wrapper.animate({scrollLeft:left+'px'});return false;}).css('opacity',1).hover();},_afterShow:function(){},_getContainedImageSize:function(image_width,image_height){if(image_height>this.image_wrapper_height){var ratio=image_width/image_height;image_height=this.image_wrapper_height;image_width=this.image_wrapper_height*ratio;};if(image_width>this.image_wrapper_width){var ratio=image_height/image_width;image_width=this.image_wrapper_width;image_height=this.image_wrapper_width*ratio;};return{width:image_width,height:image_height};},_centerImage:function(img_container,image_width,image_height){img_container.css('top','0px');if(image_height<this.image_wrapper_height){var dif=this.image_wrapper_height-image_height;img_container.css('top',(dif/2)+'px');};img_container.css('left','0px');if(image_width<this.image_wrapper_width){var dif=this.image_wrapper_width-image_width;img_container.css('left',(dif/2)+'px');};},_getDescription:function(image){var desc=false;if(image.desc.length||image.title.length){var title='';if(image.title.length){var thumbs=this.thumbs_wrapper.find('a');thumbs.each(function(i){var link=$(this);var thumb=link.find('img');link=thumb.attr('longdesc');if(link==""){title='<strong class="ad-description-title " target=_blank>'+image.title+'</a>';}
else{title='<a href='+"'"+link+"'"+' class="ad-description-title " target=_blank>'+image.title+'</a>';}});};var desc='';if(image.desc.length){desc='<span>'+image.desc+'</span>';};desc=$('<div class="ad-image-description">'+title+desc+'</div>');};return desc;},showImage:function(index,callback){if(this.images[index]&&!this.in_transition){var context=this;var image=this.images[index];this.in_transition=true;if(!image.preloaded){this.loading(true);this.preloadImage(index,function(){context.loading(false);context._showWhenLoaded(index,callback);});}else{this._showWhenLoaded(index,callback);};};},_showWhenLoaded:function(index,callback){if(this.images[index]){var context=this;var image=this.images[index];var img_container=$(document.createElement('div')).addClass('ad-image');var img=$(new Image()).attr('src',image.image);if(image.link){var link=$('<a href="'+image.link+'" target="_blank"></a>');link.append(img);img_container.append(link);}else{img_container.append(img);}
this.image_wrapper.prepend(img_container);var size=this._getContainedImageSize(image.size.width,image.size.height);img.attr('width',size.width);img.attr('height',size.height);img_container.css({width:size.width+'px',height:size.height+'px'});this._centerImage(img_container,size.width,size.height);var desc=this._getDescription(image,img_container);if(desc){if(!this.settings.description_wrapper){img_container.append(desc);var width=size.width-parseInt(desc.css('padding-left'),10)-parseInt(desc.css('padding-right'),10);desc.css('width',width+'px');}else{this.settings.description_wrapper.append(desc);}};this.highLightThumb(this.nav.find('.ad-thumb'+index));var direction='right';if(this.current_index<index){direction='left';};this.fireCallback(this.settings.callbacks.beforeImageVisible);if(this.current_image||this.settings.animate_first_image){var animation_speed=this.settings.animation_speed;var easing='swing';var animation=this.animations[this.settings.effect].call(this,img_container,direction,desc);if(typeof animation.speed!='undefined'){animation_speed=animation.speed;};if(typeof animation.easing!='undefined'){easing=animation.easing;};if(this.current_image){var old_image=this.current_image;var old_description=this.current_description;old_image.animate(animation.old_image,animation_speed,easing,function(){old_image.remove();if(old_description)old_description.remove();});};img_container.animate(animation.new_image,animation_speed,easing,function(){context.current_index=index;context.current_image=img_container;context.current_description=desc;context.in_transition=false;context._afterShow();context.fireCallback(callback);});}else{this.current_index=index;this.current_image=img_container;context.current_description=desc;this.in_transition=false;context._afterShow();this.fireCallback(callback);};};},nextIndex:function(){if(this.current_index==(this.images.length-1)){if(!this.settings.cycle){return false;};var next=0;}else{var next=this.current_index+1;};return next;},nextImage:function(callback){var next=this.nextIndex();if(next===false)return false;this.preloadImage(next+1);this.showImage(next,callback);return true;},prevIndex:function(){if(this.current_index==0){if(!this.settings.cycle){return false;};var prev=this.images.length-1;}else{var prev=this.current_index-1;};return prev;},prevImage:function(callback){var prev=this.prevIndex();if(prev===false)return false;this.preloadImage(prev-1);this.showImage(prev,callback);return true;},preloadAll:function(){var context=this;var i=0;function preloadNext(){if(i<context.images.length){i++;context.preloadImage(i,preloadNext);};};context.preloadImage(i,preloadNext);},preloadImage:function(index,callback){if(this.images[index]){var image=this.images[index];if(!this.images[index].preloaded){var img=$(new Image());img.attr('src',image.image);if(!this.isImageLoaded(img[0])){this.preloads.append(img);var context=this;img.load(function(){image.preloaded=true;image.size={width:this.width,height:this.height};context.fireCallback(callback);}).error(function(){image.error=true;image.preloaded=false;image.size=false;});}else{image.preloaded=true;image.size={width:img[0].width,height:img[0].height};this.fireCallback(callback);};}else{this.fireCallback(callback);};};},isImageLoaded:function(img){if(typeof img.complete!='undefined'&&!img.complete){return false;};if(typeof img.naturalWidth!='undefined'&&img.naturalWidth==0){return false;};return true;},highLightThumb:function(thumb){this.thumbs_wrapper.find('.ad-active').removeClass('ad-active');thumb.addClass('ad-active');if(this.settings.thumb_opacity<1){this.thumbs_wrapper.find('a:not(.ad-active) img').fadeTo(300,this.settings.thumb_opacity);thumb.find('img').fadeTo(300,1);};var left=thumb[0].parentNode.offsetLeft;left-=(this.nav_display_width/2)-(thumb[0].offsetWidth/2);this.thumbs_wrapper.animate({scrollLeft:left+'px'});},fireCallback:function(fn){if($.isFunction(fn)){fn.call(this);};}};function AdGallerySlideshow(nextimage_callback,settings){this.init(nextimage_callback,settings);};AdGallerySlideshow.prototype={start_link:false,stop_link:false,countdown:false,controls:false,settings:false,nextimage_callback:false,enabled:false,running:false,countdown_interval:false,init:function(nextimage_callback,settings){var context=this;this.nextimage_callback=nextimage_callback;this.settings=settings;},create:function(){this.start_link=$('<span class="ad-slideshow-start">'+this.settings.start_label+'</span>');this.stop_link=$('<span class="ad-slideshow-stop">'+this.settings.stop_label+'</span>');this.countdown=$('<span class="ad-slideshow-countdown"></span>');this.controls=$('<div class="ad-slideshow-controls"></div>');this.controls.append(this.start_link).append(this.stop_link).append(this.countdown);this.countdown.hide();var context=this;this.start_link.click(function(){context.start();});this.stop_link.click(function(){context.stop();});$(document).keydown(function(e){if(e.keyCode==83){if(context.running){context.stop();}else{context.start();};};});return this.controls;},disable:function(){this.enabled=false;this.stop();this.controls.hide();},enable:function(){this.enabled=true;this.controls.show();},toggle:function(){if(this.enabled){this.disable();}else{this.enable();};},start:function(){if(this.running||!this.enabled)return false;var context=this;this.running=true;this.controls.addClass('ad-slideshow-running');this._next();this.fireCallback(this.settings.onStart);return true;},stop:function(){if(!this.running)return false;this.running=false;this.countdown.hide();this.controls.removeClass('ad-slideshow-running');clearInterval(this.countdown_interval);this.fireCallback(this.settings.onStop);return true;},_next:function(){var context=this;var pre=this.settings.countdown_prefix;var su=this.settings.countdown_sufix;clearInterval(context.countdown_interval);this.countdown.show().html(pre+(this.settings.speed/1000)+su);var slide_timer=0;this.countdown_interval=setInterval(function(){slide_timer+=1000;if(slide_timer>=context.settings.speed){var whenNextIsShown=function(){if(context.running){context._next();};slide_timer=0;};if(!context.nextimage_callback(whenNextIsShown)){context.stop();};slide_timer=0;};var sec=parseInt(context.countdown.text().replace(/[^0-9]/g,''),10);sec--;if(sec>0){context.countdown.html(pre+sec+su);};},1000);},fireCallback:function(fn){if($.isFunction(fn)){fn.call(this);};}};})(jQuery);$(function(){var galleries=$('#gallery .slideshow').adGallery();$('#page-drivergear .slideshow').adGallery();$('#page-accessories .slideshow').adGallery();$('#page-secondskin .slideshow').adGallery();});
