Array.extend({toList:function(A,B){A=$(A);if(A){A.empty();if(B){A.options.add(new Option(B,"0"))}this.each(function(C){A.options.add(new Option(C,C))})}}});var NS={};NS.Mask={show:function(A){if(!A){A={duration:500,onComplete:Class.empty}}if(A.duration){this.duration=A.duration}if(A.onComplete){this.onComplete=A.onComplete}if(!A.z){A.z=1000}this.el=new Element("div").setStyles({"position":"absolute","top":"0","left":"0","width":"100%","height":window.getHeight(),"background-color":"#000","z-index":A.z,"opacity":"0"});this.resize=function(){this.el.setStyles({"top":window.getScrollTop(),"height":window.getHeight(),"width":window.getWidth()})}.bind(this);window.addEvent("resize",this.resize.bind(this));window.addEvent("scroll",this.resize.bind(this));this.resize();this.elements=$A(document.getElementsByTagName("object"));this.elements.extend(document.getElementsByTagName(window.ActiveXObject?"select":"embed"));this.elements.each(function(B){B.style.visibility=open?"hidden":""});this.fx=new Fx.Style(this.el,"opacity",{duration:this.duration}).custom(0.5);if(this.onComplete){this.onComplete.delay(this.duration)}this.el.injectInside(document.body);return A.z+1},dispose:function(){this.elements.each(function(A){A.style.visibility=open?"":"visible"});this.fx.custom(0);(function(){Window.removeEvent("resize",this.resize);this.el.remove()}.bind(this)).delay(this.duration)}};NS.Ajax=new Class({options:{method:"",filter:"",model:"",onComplete:Class.empty,onSuccess:Class.empty,onFailure:Class.empty},initialize:function(A){this.setOptions(A)},send:function(){var A=Json.toString({"method":this.options.method,"model":this.options.model,"filter":this.options.filter});var B=new Json.Remote("/ajax/",{onComplete:function(C){if(C.success){C.data=Json.evaluate(C.data);this.options.onSuccess(C);this.options.onComplete(C)}else{this.options.onFailure(C)}}.bind(this)}).send(A)}});NS.Ajax.implement(new Options);NS.Blinger=Class({setOptions:function(A){this.options=$extend({interval:"",interval:100,duration:500,delay:4000,styleOn:{"opacity":[0.5,0.9]},styleOff:{"opacity":[0.9,0.5]},transition:Fx.Transitions.backInOut},A||{})},initialize:function(B,A){this.setOptions(A);this.elements=B;this.fxs=[];this.opts={duration:this.options.duration,transition:this.options.transition};this.elements.each(function(D,C){D.fx=new Fx.Styles(D,this.options.opts);this.fxs[C]=D.fx;D.addEvent("mouseenter",function(){D.fx.clearTimer();D.fx.custom(this.options.styleOn)}.bind(this));D.addEvent("mouseleave",function(){D.fx.clearTimer();D.fx.custom(this.options.styleOff)}.bind(this))},this);this.loop()},loop:function(){var B=0;this.fxs.each(function(D,C){D.custom.delay(B,D,this.options.styleOn);D.custom.delay(B+this.options.duration,D,this.options.styleOff);B+=this.options.interval}.bind(this));var A=this.options.interval*this.elements.length;this.loop.delay(A+this.options.delay,this)}});NS.Slide=new Class({setOptions:function(A){this.options=Object.extend({transition:Fx.Transitions.sineOut,duration:500,position:"center"},A||{})},initialize:function(B,A,D,C){this.setOptions(C);this.element=$(D);this.openButton=$(B);this.closeButton=$(A);this.element.fx=new Fx.Styles(this.element,{duration:this.options.duration,transition:this.options.transition});this.openButton.addEvent("click",function(){this.z=NS.Mask.show();this.element.setStyles({"visibility":"hidden","display":"block","z-index":this.z+1});this.element.setStyles({"top":-(window.getHeight()/2-this.element.offsetHeight/2),"left":(window.getWidth()/2-this.element.offsetWidth/2)});this.element.fx.custom({"opacity":[0,1],"top":[(window.getHeight()/2-this.element.offsetHeight/2)]})}.bind(this));this.closeButton.addEvent("click",function(){NS.Mask.dispose();this.element.fx.custom({"opacity":[1,0],"top":-(this.element.offsetHeight)});(function(){this.element.setStyle("display","none")}.bind(this)).delay(this.options.duration)}.bind(this));window.addEvent("resize",this.resize.bind(this));window.addEvent("scroll",this.resize.bind(this))},resize:function(){this.element.fx.clearTimer();this.element.fx.custom({"top":[(window.getHeight()/2-this.element.offsetHeight/2)+window.getScrollTop()],"left":[(window.getWidth()/2-this.element.offsetWidth/2)]})}});NS.Pop=new Class({setOptions:function(A){this.options=Object.extend({header:"",description:"",width:760,height:400,top:100,left:"center",src:"#",duration:1000,onComplete:Class.empty},A||{})},initialize:function(E,C){this.setOptions(C);this.z=NS.Mask.show();if(this.options.top=="center"){this.options.top=Window.getHeight()/2-this.options.height/2}if(this.options.left=="center"){this.options.left=Window.getWidth()/2-this.options.width/2}this.pop=new Element("div").setProperty("id","pop").setStyles({"position":"absolute","top":this.options.top,"left":this.options.left,"z-index":this.z,"padding":"40px 10px 0px 10px","background":"transparent url(/assets/images/pop-bg.gif) no-repeat","width":this.options.width,"height":this.options.height,"overflow":"hidden"});this.header=new Element("div");this.header.setStyles({"position":"absolute","height":"30px","top":"0","left":"0","width":this.options.width});this.header.injectInside(this.pop);var A={"position":"absolute","top":"15px","left":"20px","width":"100%","font-family":"trebuchet ms, lucida grande, sans-serif","font-size":"18px","font-weight":"bold","color":"#000"};var D={"position":"absolute","top":"10px","right":"0px"};var B={"float":"right","margin-left":"5px","cursor":"pointer"};this.headertext=new Element("span").setStyles(A).setHTML(this.options.header);this.headertext.injectInside(this.header);this.buttons=new Element("div").setStyles(D);this.buttons.injectInside(this.header);this.buttons.adopt(new Element("img").setProperties({"src":"/assets/images/pop-close.gif","alt":"Close"}).setStyles(B).addEvent("click",this.dispose.bind(this)));this.iframe=new Element("iframe").setProperties({"marginHeight":"0","marginWidth":"0","frameBorder":"0","src":E});this.iframe.setStyles({"height":this.options.height-20+"px","width":this.options.width+"px","background-color":"#fff","z-index":"1001"});this.fx=new Fx.Styles(this.pop,{duration:this.options.duration});this.resize=function(){this.fx.clearTimer();this.fx.custom({"top":[(Window.getHeight()/2-this.options.height/2)+window.getScrollTop()],"left":[(Window.getWidth()/2-this.options.width/2)]})}.bind(this);this.iframe.injectInside(this.pop);this.pop.injectInside(document.body);window.addEvent("resize",this.resize.bind(this));window.addEvent("scroll",this.resize.bind(this))},dispose:function(){window.resize=Class.empty;this.pop.remove();NS.Mask.dispose()}});var Form=new Class({options:{type:"text",border:"cccccc",borderWarning:"ff0000",borderSuccess:"cccccc"},initialize:function(B,C,A){this.element=$(B);this.id=C;this.setOptions(A);this.fields=this.getFields(this.element);$each(this.fields,function(D){D.addEvent("blur",function(){this.validate(D)}.bind(this))},this);this.tips=new Tips(this.fields,{onShow:function(D){new Fx.Style(D,"opacity",{duration:100}).custom(0.9)},fixed:false});$ES(".submit",this.element).addEvent("click",function(){this.submit()}.bind(this))},validate:function(A){this.isValid=true;this.fields=[];switch(A.getTag()){case"input":case"select":case"textarea":this.fields.push(A);break;default:this.fields=this.getFields(A);break}this.fields.each(function(D){D.isValid=true;if(D.hasClass("v")==true){var C=/\D+/;if(D.hasClass("email")){C=/^[^@]+@[^@.]+\.[^@]*\w\w$/}else{if(D.hasClass("phone")){C=/\(?\d{3}\)?[-\s.]?\d{3}[-\s.]\d{4}|\d{10}/}else{if(D.hasClass("ssn")){C=/\d{3}\-?\d{2}\-?\d{4}/}else{if(D.hasClass("zip")){C=/(^\d{5}$)|(^\d{5}-\d{4}$)/}else{if(D.hasClass("date")){C=/^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/}}}}}var E=D.getValue().trim();var B={};D.isEmpty=(E.length==0)?true:false;D.isRequired=D.hasClass("r");if(D.isRequired&&D.isEmpty){D.isValid=false;D.message=" required"}else{if(D.isEmpty){B={"border-color":[this.options.border]}}else{if(!E.test(C)){D.isValid=false;D.message=" invalid"}else{B={"border-color":[this.options.border,this.options.borderSuccess]}}}}if(D.isValid==false){B={"border-color":[this.options.border,this.options.borderWarning]};this.isValid=false}new Fx.Styles(D).custom(B)}}.bind(this));return this.isValid},save:function(){this.hash={};this.fields=this.getFields(this.element);$each(this.fields,function(A){this.hash[A.id]=A.getValue().trim()},this)},submit:function(){this.save();if(this.validate(this.element)==true){showLoader();this.save();this.hash._method="form";this.hash._type=this.options.type;this.hash._id=this.id;var A=Json.toString(this.hash);var B=new Json.Remote("/ajax/",{onComplete:function(C){hideLoader();if(C.success){var D=$E(".form-fields",this.element);D.fx=new Fx.Styles(D,{duration:250,transition:Fx.Transitions.sineOut});D.setStyle("overflow","hidden");D.fx.custom({"height":[0]});$E(".form-response",this.element).setHTML(C.message)}else{alert(C.message);$E(".form-response",this.element).setHTML(C.message)}}.bind(this)}).send(A)}else{alert("Please fill out the fields outlined in red")}},getFields:function(A){fields=[];fields.extend($ES("input",A));fields.extend($ES("select",A));fields.extend($ES("textarea",A));return fields}});Form.implement(new Options);NS.Data=new Class({initialize:function(A){this.el=$(A);this.values=[];this.keys=[];this.data=[];$ES("thead th",this.el).each(function(B,C){this.keys.push(B.innerHTML.toLowerCase().replace(" ","_"))},this);$ES("tbody tr",this.el).each(function(C){var B=C.innerHTML.replace(/TD>/g,"td>").replace(/<td>/g,"").trim().split("</td>");this.values.push(B)},this);this.values.each(function(C){var D={};for(var B=0;B<this.keys.length;B++){D[this.keys[B]]=C[B].trim()}this.data.push(D)},this)},filter:function(A){var B=[];this.data.each(function(E){var D=true;for(var C in A){if(E[C]!=A[C]){D=false;break}}if(D){B.push(E)}});return B},count:function(){return this.data.length}});NS.Data.PrintTable=function(C,F){C=$(C);var D=new Element("table");var E=new Element("thead");var A=new Element("tbody");if(F.length>0){var G=new Element("tr");for(var B in F[0]){G.adopt(new Element("th").setHTML(B))}E.adopt(G)}F.each(function(I){var J=new Element("tr");for(var H in I){J.adopt(new Element("td").setHTML(I[H]))}A.adopt(J)});D.adopt(E).adopt(A);C.adopt(D)};NS.Data.PrintRowAttributes=function(F,B,A,H){F.empty();var G=Math.floor(A.length/B);var E=(A.length%B==0)?G:G+1;var C=null;for(var D=0;D<A.length;D++){if((D==0||D%G==0)&&(D!=E-1)||(D==E)){C=new Element("div").addClass("fl").injectInside(F)}C.adopt(new Element("label").setHTML(A[D].replace("_"," ").capitalize()));C.adopt(new Element("span").setHTML(H[A[D]].capitalize()));C.adopt(new Element("br"))}};NS.Data.GetUniqueColumnValues=function(E,F){var A=[];var C="";for(var B=0;B<E.length;B++){A.push(E[B][F])}A.sort();var D=[];for(B=0;B<A.length;B++){if(A[B]!=C){D.push(A[B])}C=A[B]}return D};function showLoader(){var B=document.body;var C=(B.getPosition)?B.getPosition():{x:0,y:0};var A=new Asset.image("/assets/images/loading.gif");A.id="loader";A.alt="loading...";A.setStyles({"position":"absolute","top":B.offsetHeight/2-A.height/2+C.y,"left":B.offsetWidth/2-A.width/2+C.x});A.injectInside(B)}function hideLoader(){$("loader").remove()}function showGMap(C,A){if(GBrowserIsCompatible()){var B=new GMap2(document.getElementById(C));B.addControl(new GSmallMapControl());B.addControl(new GMapTypeControl());B.setCenter(new GLatLng(A.lat,A.lng),A.zoom);marker=createMarker(B.getCenter(),"<b>"+A.name+"</b><br/>"+A.addr+"<br/>"+A.city+" "+A.state+", "+A.zip+"<br/>"+A.phone+"<br/><br/><a href=\"http://maps.google.com/maps?saddr=&daddr="+A.addr+"%20"+A.city+",%20"+A.state+"%20"+A.zip+"\" target=\"_blank\">Get Directions</a>");B.addOverlay(marker)}}function createMarker(A,C){var B=new GMarker(A);GEvent.addListener(B,"click",function(){B.openInfoWindowHtml(C)});return B}var Timer=new Class({initialize:function(){this.time=new Date().getTime()+10;this.last=this.time},print:function(A){this.current=new Date().getTime()+10;console.log(A+": "+(this.current-this.last));this.last=new Date().getTime()},print_total:function(){this.current=new Date().getTime()+10;console.log("Timer Stop : "+(this.current-this.time))}})