var Classy={version:1};Classy.typeOf=function(a){if(a===undefined){return"undefined";}if(a===null){return"null";}if(a instanceof Array){return"array";}if(a instanceof RegExp){return"regexp";}if(a instanceof Date){return"date";}if(typeof a=="number"&&!isFinite(a)){return"nan";}if(a.callee){return"arguments";}if(a.item){return"collection";}if(a.nodeName){if(a.nodeType==1){return"element";}if(a.nodeTYpe==3){return(/\S/).test(a.nodeValue)?"textnode":"whitespace";}}return typeof a;};Classy.unlink=function(a){switch(typeOf(a)){case"object":return Classy.Object.clone(a);break;case"array":return Classy.Array.clone(a);break;default:return a;break;}return null;};Classy.Delay=function(h,d,g,c){var e=Classy.typeOf(g);var f,b;if(e=="array"){f=h;b=g;}else{f=(g)?g:h;b=(c)?c:[];}this.timer=(setTimeout(function(){h.apply(f,b);},d));return this.timer;};Classy.Delay.prototype.clear=function(){clearTimeout(this.timer);};Classy.Periodical=function(h,d,g,c){var e=Classy.typeOf(g);var f,b;if(e=="array"){f=h;b=g;}else{f=(g)?g:h;b=(c)?c:[];}this.timer=(setInterval(function(){h.apply(f,b);},d));};Classy.Periodical.prototype.clear=function(){clearInterval(this.timer);};Classy.Array={clone:function(a){var c=[];for(var d=0,b=obj.length;d<b;d++){c[d]=Classy.unlink(a[d]);}return c;},associate:function(a,e){var c={};for(var d=0,b=e.length;d<b;d++){c[e[d]]=a[d];}return c;},clean:function(a){var c=[];for(var d=0,b=a.length;d<b;d++){if(a[d]!==null){c[d]=a[d];}}return c;},combine:function(a){var c=a.clone();for(var d=0,b=a.length;d<b;d++){if(Classy.Array.contains(c,a[d])===false){c.push(a[d]);}}return c;},contains:function(a,d,e){e=(e)?e:0;for(var c=e,b=a.length;c<b;c++){if(a[c]===d){return true;}}return false;},empty:function(a){for(var b=a.length;b>=0;b--){delete a[b];}a.length=0;return a;},every:function(a,e,d){d=(d)?d:a;for(var c=0,b=a.length;c<b;c++){if(!e.call(d,a[c],c,a)){return false;}}return true;},extend:function(a,d){for(var c=0,b=d.length;c<b;c++){a.push(d[c]);}return a;},filter:function(a,f,e){e=(e)?e:a;var c=[];for(var d=0,b=a.length;d<b;d++){if(f.call(e,a[d],d,a)){c.push(a[d]);}}return c;},flatten:function(b){var e=[];for(var f=0,c=b.length;f<c;f++){if(b[f] instanceof Array){var g=Classy.Array.flatten(b[f]);for(var d=0,a=g.length;d<a;d++){e.push(g[d]);}}else{e.push(b[f]);}}return e;},forEach:function(a,e,d){d=(d)?d:a;for(var c=0,b=a.length;c<b;c++){e.call(d,a[c],c);}},getLast:function(a){return a[a.length-1]||null;},getRandom:function(a){return a[Classy.Number.random(0,a.length-1)]||null;},include:function(a,b){if(Classy.Array.contains(a,b)===false){a.push(b);}return a;},indexOf:function(a,d,e){e=(e)?e:0;for(var c=e,b=a.length;c<b;c++){if(a[c]===d){return c;}}return -1;},indexesOf:function(a,e,f){var c=[];f=(f)?f:0;for(var d=f,b=a.length;d<b;d++){if(a[d]===e){c.push(d);}}if(c.length>0){return c;}return null;},lastIndexOf:function(a,c,d){d=(d)?d:a.length;for(var b=d;b>=0;b--){if(a[b]===c){return b;}}return -1;},lastIndexesOf:function(a,d,e){var b=[];e=(e)?e:a.length;for(var c=e;c>=0;c--){if(a[c]===d){b.push(c);}}if(b.length>0){return b;}return null;},map:function(a,f,e){e=(e)?e:a;var c=[];for(var d=0,b=a.length;d<b;d++){c.push(f.call(e,a[d],d,a));}return c;},remove:function(a,d){for(var c=0,b=a.length;c<b;c++){if(a[c]===d){a.splice(c,1);}}return a;},some:function(a,e,d){d=(d)?d:a;for(var c=0,b=a.length;c<b;c++){if(e.call(d,a[c],c,a)){return true;}}return false;},unique:function(a){var c=[];for(var d=0,b=a.length;d<b;d++){if(c.indexOf(a[d])==-1){c.push(a[d]);}}return c;}};Classy.Object={clone:function(b){var a={};for(var c in b){a[c]=Classy.unlink(b[c]);}return a;},implement:function(b,a){for(var c in implemeting){if(b.hasOwnProperty(c)===false){b[c]=a[c];}}return b;},extend:function(b,a){for(var c in a){b[c]=a[c];}return b;},add:function(c,a,b){if(!c.hasOwnProperty(a)){c[a]=b;}return this;},combine:function(b,a){for(var c in a){if(!b.hasOwnProperty(c)){b[c]=a[c];}}return b;},empty:function(a){for(var b in a){if(a.hasOwnProperty(b)){delete a[b];}}return a;},every:function(c,b,a){a=(a)?a:c;for(var d in c){if(c.hasOwnProperty(d)){if(!b.call(a,c[d],d,c)){return false;}}}return true;},forEach:function(c,b,a){a=(a)?a:c;for(var d in c){if(c.hasOwnProperty(d)){b.call(a,c[d],d,c);}}},filter:function(d,c,b){b=(b)?b:d;var a={};for(var e in d){if(d.hasOwnProperty(e)){if(c.call(b,d[e],e,d)){a[e]=d[e];}}}return a;},getKeys:function(b){var a=[];for(var c in b){if(b.hasOwnProperty(c)){a.push(c);}}return a;},getValues:function(b){var a=[];for(var c in this){if(b.hasOwnProperty(c)){a.push(b[c]);}}return a;},has:function(b,a){return b.hasOwnProperty(a);},hasValue:function(b,a){for(var c in b){if(b.hasOwnProperty(c)){if(b[c]==a){return true;}}}return false;},keyOf:function(b,a){for(var c in b){if(b.hasOwnProperty(p)){if(b[c]==a){return c;}}}return false;},keysOf:function(c,b){var a=[];for(var d in c){if(c.hasOwnProperty(d)){if(c[d]==b){a.push(d);}}}if(a.length>0){return a;}return false;},length:function(b){var a=0;for(var c in b){if(b.hasOwnProperty(c)){a++;}}return a;},map:function(d,c,b){b=(b)?b:d;var a={};for(var e in d){if(Classy.Object.has(d,e)){a[e]=c.call(b,d[e],e,d);}}return a;},remove:function(b,a){if(Classy.Object.has(b,a)){delete b[a];}return b;},removeObject:function(b,a){for(var c in b){if(Classy.Object.has(b,c)){if(b[c]==a){delete b[c];}}}return b;},some:function(c,b,a){a=(a)?a:c;for(var d in c){if(Classy.Object.has(c,d)){if(b.call(a,c[d],d,c)){return true;}}}return false;}};Classy.Number={random:function(b,a){return Math.floor(Math.random()*(a-b+1)+b);},limit:function(b,c,a){if(b<c){return c;}else{if(b>a){return a;}else{return b;}}}};Classy.String={camelCase:function(e){var d=e.split("-");if(d.length==1){return d[0];}var f=d[0];for(var c=1,a=d.length;c<a;c++){var b=d[c];f+=b.charAt(0).toUpperCase()+b.substring(1);}return f;},capitalize:function(f){var e=f.split(" ");var a="";for(var d=0,b=e.length;d<b;d++){var c=e[d];a+=c.charAt(0).toUpperCase()+c.substring(1)+" ";}return a.substring(0,f.length);},hyphenate:function(e){var c=e.charAt(0);for(var d=1,a=e.length;d<a;d++){var b=e.charAt(d);if(/[A-Z]/.test(b)){c+="-"+b.toLowerCase();}else{c+=b;}}return c;},stripTags:function(a){return a.replace(/<\/?[^>]+>/gi,"");},toFloat:function(b){var a=parseFloat(b);return isFinite(a)?a:null;},toInt:function(b){var a=parseInt(b,10);return isFinite(a)?a:null;},supplant:function(c,b,a){a=a||new RegExp(/{([^{}]*)}/g);return c.replace(a,function(e,d){var f=b[d];return typeof f==="string"||typeof f==="number"?f:e;});},trim:function(a){return a.replace(/^\s+|\s+$/g,"");}};Classy.Function={bind:function(c,b,a){a=(Classy.typeOf(a)=="array")?a:[a];return function(){c.apply(b,a);};}};Classy.Form=function(a,b){this.form;this.lang;this.breaksOnError;this.inputs={};this.errors={};this.onFormSubmit;var c=jQuery(a);if(c.length!==0){this.form=c;}else{throw new Error("[Classy.Form] '"+a+"' could not be found");}if(b){this.lang=b.lang||"fr";this.breaksOnError=b.breaksOnError||false;this.onFormSubmit=b.onFormSubmit||function(){};}var d=this;this.form.submit(function(){var e=d.submit();if(e!==undefined){return e;}});};Classy.Form.prototype={registerInput:function(e,c,f,g,b){var h=this;var d;function a(){var m,k;if(Classy.typeOf(c)=="array"){k=(f!=undefined)?f:h.breaksOnError;for(var n=0,j=c.length;n<j;n++){m=(c[n][1])?c[n][1]:{lang:h.lang};d.addValidation(c[n][0],m,k);}}else{m=(f&&Classy.typeOf(f)=="string")?f:{lang:h.lang};k=(g!=undefined)?g:(Classy.typeOf(f)=="boolean")?f:h.breakOnError;d.addValidation(c,f,k);}}if(b!==undefined){this.inputs[b.name]=new Classy.Form.Input(jQuery(e));d=this.inputs[b.name];a();}else{jQuery(this.form).find(e+":not(input[type^=submit],input[type^=button],input[type^=reset]):input").each(function(){d=h.addInput(jQuery(this));a();});}},registerGroup:function(b,c,a,d,e){this.registerInput(c,a,d,e,{name:b});},addInput:function(b){var a=b.attr("name");var c=b.attr("type");if(c=="radio"){if(validation=="required"){if(Classy.Object.has(this.inputs,a)===false){this.inputs[a]=new Classy.Form.Radio(b);}else{this.inputs[a].addInput(b);}}}else{if(Classy.Object.has(this.inputs,a)===false){this.inputs[a]=new Classy.Form.Input(b);}}return this.inputs[a];},getErrors:function(){var a=this;Classy.Object.forEach(this.inputs,function(c,b){a.errors[b]=c.getErrors();});return this.errors;},getErrorsForName:function(a){return this.inputs[a].errors;},getInput:function(a){return this.inputs[a];},validate:function(){var a=true;Classy.Object.forEach(this.inputs,function(c,b){if(c.validate()===false){a=false;}});return a;},submit:function(){Classy.Object.empty(this.errors);var c=this.validate();var d=this.getErrors();if(this.onFormSubmit!==undefined){try{var a=this.onFormSubmit.call(this,c,d);if(a!==undefined){return a;}}catch(b){alert("[Classy.Form onFormSubmit] "+b);return false;}}if(c===false){return false;}}};Classy.Form.Input=function(a){this.input;this.validations=[];this.errors=[];var b=jQuery(a);if(b.length>=1){this.input=b;}else{throw new Error("[Classy.Form.Input constructor] '"+a+"' could not be found;");}};Classy.Form.Input.prototype={addValidation:function(a,c,b){if(Classy.typeOf(a)=="string"&&Classy.Object.has(Classy.Form.ValidationRegExp,a)){c=(Classy.typeOf(c)=="object"&&c.lang)?Classy.Form.ErrorMessages[c.lang][a]:c;this.validations.push([Classy.Form.ValidationRegExp[a],c]);}else{if(Classy.typeOf(a)=="object"){c=(Classy.typeOf(c)=="object"&&c.lang)?Classy.Form.ErrorMessages[c.lang][a]:c;if(Classy.Object.has(Classy.Form.ValidationFunctions,a.fn)){this.validations.push([Classy.Form.ValidationFunctions[a.fn],a.args,c]);}else{this.validations.push([a.fn,a.args,c]);}}else{if(typeof c==undefined){throw new Error("[Classy.Form.Input addValidation] custom validation requires specifying a custom error message");}if(Classy.typeOf(a)=="regexp"){this.validations.push([a,c]);}else{if(Classy.typeOf(a)=="function"){this.validations.push([a,c]);}}}}this.breakOnError=(b)?b:false;},getErrors:function(){return this.errors;},getValue:function(){if(jQuery(this.input).attr("type")=="checkbox"){return(jQuery(this.input).attr("checked")===true)?"checked":"";}var a="";jQuery(this.input).each(function(){a+=jQuery(this).val();});return a;},validate:function(){Classy.Array.empty(this.errors);var e=this.getValue();var d=this.validations;var c;if(e===""){for(c=0,l=d.length;c<l;c++){if(d[c][0]=="required"){this.errors.push(Classy.Array.getLast(d[c]));return false;}}return true;}else{for(c=0,l=d.length;c<l;c++){if(d[c][0]=="required"){if(this.input[0].defaultValue==e){this.errors.push(Classy.Array.getLast(d[c]));return false;}}if(this.input[0].defaultValue!=e){if(Classy.typeOf(d[c][0])=="regexp"){if(d[c][0].test(e)===false){this.errors.push(Classy.Array.getLast(d[c]));if(this.breakOnError){return false;}}}else{if(Classy.typeOf(d[c][0])=="function"){var b;b=false;if(Classy.typeOf(d[c][1])=="array"){var a=Classy.Array.clone(d[c][1]);a.splice(0,0,e);b=d[c][0].apply(this,a);}else{b=d[c][0].call(this,e);}if(b===false){this.errors.push(Classy.Array.getLast(d[c]));if(this.breakOnError){return false;}}}}}}return(this.errors.length===0);}}};Classy.Form.Radio=function(a){this.els=[jQuery(a)];this.validations={regexp:[]};this.errors=[];};Classy.Form.Radio.prototype={addInput:function(a){this.els.push(jQuery(a));},addValidation:function(a,c,b){this.validations.regexp.push([a,c]);},getErrors:function(){return this.errors;},getValue:function(){return $(this.els[0]+":checked").val();},validate:function(){Classy.Array.empty(this.errors);var a=this.getValue();if(a==undefined){this.errors.push(this.validations.regexp[0][1]);}return(this.errors.length===0);}};Classy.Form.ValidationRegExp={required:"required",email:/^[a-z0-9._%+\-]+@[a-z0-9\.\-]+\.[a-z]{2,4}$/,url:/^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/,phone:/^(([0-9]{1})*[- .(]*([0-9]{3})[- .)]*[0-9]{3}[- .]*[0-9]{4})+$/,zip:/^[ABCEGHJKLMNPRSTVXY][0-9][A-Z](\ )?[0-9][A-Z][0-9]$/i,usZip:/^[0-9]{5}(?:-[0-9]{4})?$/,date:/^(19|20)?[0-9]{2}[- \/\.](0?[1-9]|1[012])[- \/\.](0?[1-9]|[12][0-9]|3[01])$/,creditCard:/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6011[0-9]{12}|3(?:0[0-5]|[68][0-9])[0-9]{11}|3[47][0-9]{13})$/,alphaNumeric:/^[a-zA-Z0-9]+$/,alphaNumericWithSpaces:/^[a-zA-Z0-9\ ]+$/,letters:/^[a-zA-Z]+$/,digits:/^[0-9]+$/};Classy.Form.ValidationFunctions={isBetween:function(c,b,a){if(c>=b&&c<=a){return true;}return false;},isNotDefault:function(a){return(this.input[0].defaultValue!=a);}};Classy.Form.ErrorMessages={fr:{required:"Ce champ ne peux être vide.",email:"Veuillez entrer un courriel valide.",url:"Veuillez entrer un url valide.",phone:"Veuillez entrer un numéro de téléphone valide.",zip:"Veuillez entrer un code postal valide.",usZip:"Veuillez entrer un code postal valide.",date:"Veuillez entrer une date valide.",creditCard:"Veuillez entrer un numéro de carte de crédit valide.",alphaNumeric:"Ce champ n'accepte que des caractères alphanumériques.",alphaNumericWithSpaces:"Ce champ n'accepte que des caractères alphanumériques et des espaces.",letters:"Ce champ n'accepte que des lettres.",digits:"Ce champ n'accepte que des chiffres."},en:{required:"This field cannot be empty.",email:"Please enter a valid e-mail.",url:"Please enter a valid url.",phone:"Please enter a valid phone number.",zip:"Please enter a valid zip.",usZip:"Please enter a valid zip.",date:"Please enter a valid date.",creditCard:"Please enter a valid credit card number.",alphaNumeric:"This field only accepts alphanumeric caracters.",alphaNumericWithSpaces:"This field only accepts alphanumeric caracters and spaces.",letters:"This field only accepts letters.",digits:"This field only accepts numbers."}};Classy.Form.UI={makeSmartInput:function(a){jQuery(a).not("input[type=submit], input[type=button]").blur(function(){if(jQuery(this).val()===""){jQuery(this).val(this.defaultValue);}});jQuery(a).not("input[type=submit], input[type=button]").focus(function(){if(jQuery(this).val()==this.defaultValue){jQuery(this).val("");}});}};Classy.Form.ErrorField=function(b,a){if(b.getErrors==undefined){throw new Error("[Classy.Form.ErrorField] form is undefined");}else{this.form=b;}if(a&&a.messageContainer){if(a.messageContainer.indexOf("{input}")===0){this.type="single";this.container=a.messageContainer.substring(7,a.messageContainer.length);}else{this.type="general";this.container=a.messageContainer;}}else{throw new Error("[Classy.Form.ErrorField] messageContainer is not specified");}if(a&&a.errorElement){if(a.errorElement.indexOf("{input}")===0){this.errorElement={element:a.errorElement,type:"relative"};}else{this.errorElement={element:a.errorElement,type:"absolute"};}}else{this.errorElement={element:this.container};this.errorElement.type=(this.type=="single")?"relative":"absolute";}this.limit=(a&&Classy.typeOf(a.limit)!=="undefined")?a.limit:0;this.errorClass=(a&&a.errorClass)?a.errorClass:"error";this.wrapper=(a&&Classy.typeOf(a.wrapper)!=="undefined")?a.wrapper:"<div>";this.messages=[];this.errorClassedElements=[];this._argsRegExp=/[\(][\'\"]?[\w]+[\'\"]?[\)]/;this._funcRegExp=/\.[\w]+[\(][\'\"]?[\w]+[\'\"]?[\)]/g;};Classy.Form.ErrorField.prototype={showErrors:function(){var g=this.form.getErrors();var f,e;var h=0;this.removeErrors();if(this.type=="single"){for(var b in g){if(g[b].length>0){var c=jQuery(this.form.inputs[b].input[0]);var j=this._getRelativeContainer(c,this.container);for(e=0,l=g[b].length;e<l;e++){if(this.limit>0&&h==this.limit){break;}f=(this.wrapper!=="")?jQuery(this.wrapper).append(g[b][e]):g[b][e];this.messages.push(f);jQuery(j).append(f);h++;}}}}else{for(var b in g){if(g[b].length>0){var c=this.form.inputs[b].input[0];for(e=0,l=g[b].length;e<l;e++){if(this.limit>0&&h==this.limit){break;}f=(this.wrapper!=="")?jQuery(this.wrapper).append(g[b][e]):g[b][e];this.messages.push(f);jQuery(this.container).append(f);h++;}}}}h=0;if(this.errorElement.type=="relative"){for(var b in g){if(g[b].length>0){if(this.limit>0&&h==this.limit){break;}var d=jQuery(this.form.inputs[b].input);var a=this._getRelativeContainer(d,this.errorElement.element);this._addClass(a);h++;}}}else{this._addClass(this.errorElement.element);}},removeErrors:function(){for(var d=0,a=this.messages.length;d<a;d++){this.messages[d].remove();}for(var c=0,b=this.errorClassedElements.length;c<b;c++){this.errorClassedElements[c].removeClass(this.errorClass);}Classy.Array.empty(this.errorClassedElements);},getErrorElements:function(){return this.messages;},_getRelativeContainer:function(e,a){var c=jQuery(e);var f=a.match(this._funcRegExp);if(f!==null){for(var d=0,b=f.length;d<b;d++){match=f[d].substring(1,f[d].length);args=f[d].match(this._argsRegExp);args=args[0].replace(/[\'\"\(\)]/g,"");match=match.replace(this._argsRegExp,"");c=jQuery(c)[match](args);}}return c;},_addClass:function(a){this.errorClassedElements.push(jQuery(a));jQuery(a).addClass(this.errorClass);}};Classy.Map=function(e,b){if(e==undefined||typeof e!="string"){throw new Error("[Classy.Map] could not initialize; id was not provided or is not a string");}this.container=e;this.map=null;this.streetView=null;this.lang="fr";this.isDelayedCreated=false;this.isDelayedRendered=false;this.markers=[];this.polygons=[];this.renderingQueue=[];this.directionsRenderer=null;this.directionsService=null;this.geocoder=null;this.onMapCreation=null;this.onMapDisplay=null;var h="ROADMAP";var m=false;var o="TOP_RIGHT";var i="HORIZONTAL_BAR";var d=true;var k="DEFAULT";var c="TOP_LEFT";var j=false;if(b){var g=this.defaultCenter=(b&&b.defaultCenter)?b.defaultCenter:{lat:0,lng:0,zoom:1};if(b.lang){this.lang=b.lang;}if(b.isDelayedCreated===true){this.isDelayedCreated=true;}if(b.isDelayedRendered===true){this.isDelayedRendered=true;}if(b.onMapCreation){this.onMapCreation=b.onMapCreation;}if(b.onMapDisplay){this.onMapDisplay=b.onMapDisplay;}var n=["hybrid","roadmap","satellite","terrain"];if(b.mapType&&Classy.Array.contains(n,b.mapType)){h=b.mapType.toUpperCase();}var q=["bottom","bottom_left","bottom_right","left","right","top","top_left","top_right"];if(b.mapTypeControl===true||b.mapTypeControlPosition||b.mapTypeControlStyle){m=true;if(b.mapTypeControlPosition&&Classy.Array.contains(q,b.mapTypeControlPosition)){i=b.mapTypeControlPosition.toUpperCase();}var f=["default","dropdown_menu","horizontal_bar"];if(b.mapTypeControlStyle&&Classy.Array.contains(f,b.mapTypeControlStyle)){o=b.mapTypeControlStyle.toUpperCase();}}if(b.navControl===true){if(b.navControlPosition&&Classy.Array.contains(q,b.navControlPosition)){c=b.navControlPosition.toUpperCase();}var a=["android","default","small","zoom_pan"];if(b.navControlStyle&&Classy.Array.contains(a,b.navControlStyle)){k=b.navControlStyle.toUpperCase();}}else{d=false;}if(b.streetViewControl){j=b.streetViewControl;}}this._mapOpts={mapTypeControl:m,mapTypeControlOptions:{position:google.maps.ControlPosition[i],style:google.maps.MapTypeControlStyle[o]},navigationControl:d,navigationControlOptions:{position:google.maps.ControlPosition[c],style:google.maps.NavigationControlStyle[k]},zoom:(g.zoom||11),center:new google.maps.LatLng(g.lat,g.lng),mapTypeId:google.maps.MapTypeId[h],streetViewControl:j};if((b&&b.isDelayedCreated!==true)||!b){this.create();if(b&&b.isDelayedRendered!==true){this.renderOverlays();}}};Classy.Map.latLngFromObject=function(a){return new google.maps.LatLng(a.lat,a.lng);};Classy.Map.objectFromLatLng=function(a){return{lat:a.lat(),lng:a.lng()};};Classy.Map.latLngFromArray=function(a){return new google.maps.LatLng(a[0],a[1]);};Classy.Map.arrayFromLatLng=function(){return[latlng.lat(),latlng.lng()];};Classy.Map.getLatLngFromAddress=function(a,d){if(!this.geocoder){this.geocoder=new google.maps.Geocoder();}var b={address:a,language:this.lang};var c=this;this.geocoder.geocode(b,function(g,f){var e;if(g[0]!==undefined){e=g[0].formatted_address;}else{e=null;}d.call(c,f.toLowerCase(),g[0].geometry.location,e);});};Classy.Map.prototype={create:function(){if(this.map===null){this.map=new google.maps.Map($(this.container).get(0),this._mapOpts);this._mapOpts=null;var b=this;if(this.onMapCreation!==null){var a=setInterval(function(){if(b.map!=undefined){clearInterval(a);b.onMapCreation.call(b);}},100);}google.maps.event.addListener(this.map,"tilesloaded",function(){google.maps.event.clearListeners(this,"tilesloaded");if(b.onMapDisplay!==null){b.onMapDisplay.call(b);}if(b.isDelayedRendered===false){b.renderOverlays();}});}},renderOverlays:function(){if(this.map!==null&&this.renderingQueue.length>0){for(var b=0,a=this.renderingQueue.length;b<a;b++){this.renderingQueue[b].setMap(this.map);}this.renderingQueue=[];}},getZoom:function(){return this.map.getZoom();},setZoom:function(a){this.map.setZoom(a);},zoomIn:function(){this.map.zoomIn();},zoomOut:function(){this.map.zoomOut();},getCenter:function(){return this.map.getCenter();},setCenter:function(a){if(typeof a.lat!="function"){a=Classy.Map.latLngFromObject(a);}this.map.setCenter(a);},setMapType:function(a){var b=["hybrid","roadmap","satellite","terrain"];if(Classy.Array.contains(b,a)){this.map.setMapTypeId(a);}},createMarker:function(f,c){var a=(typeof f.lat!="function")?new google.maps.LatLng(f.lat,f.lng):f;var d={position:a};if(c){for(p in c){if(p=="markerIcon"){d.icon=c.markerIcon.icon;d.shadow=c.markerIcon.shadow;}else{d[p]=c[p];}}if(!c.draggable&&(c.dragstart||c.dragend)){d.draggable=true;}}var b=new google.maps.Marker(d);this.markers.push(b);if(c){var e=this;if(c.contents||c.onClick){google.maps.event.addListener(b,"click",function(h){if(c.contents){var g=new google.maps.InfoWindow({content:c.contents});g.open(e.map,b);}if(typeof c.onClick=="function"){c.onClick.call(e,this,this.position);}});}if(typeof c.dragstart=="function"){google.maps.event.addListener(b,"dragstart",function(g){c.dragstart.call(e,this,this.position);});}if(typeof c.dragend=="function"){google.maps.event.addListener(b,"dragend",function(g){c.dragend.call(e,this,this.position);});}}if(this.map!==null&&this.isDelayedRendered!==true){b.setMap(this.map);}else{this.renderingQueue.push(b);}},fitToMarkers:function(){var c=new google.maps.LatLngBounds();for(var b=0,a=this.markers.length;b<a;b++){c.extend(this.markers[b].position);}this.map.fitBounds(c);},getMarker:function(c){for(var b=0,a=this.markers.length;b<a;b++){if(this.markers[b].id==c){return this.markers[b];}}return null;},traceRoute:function(h,b,d){this.clearMarkers();var g=["bicycling","driving","walking"];var a="DRIVING";if(d&&d.travelMode&&Classy.Array.contains(g,d.travelMode)){a=d.travelMode;}var f=(d&&d.callback)?d.callback:function(){};if(!this.directionsRenderer){this.directionsRenderer=new google.maps.DirectionsRenderer();this.directionsRenderer.setMap(this.map);}if(!this.directionsService){this.directionsService=new google.maps.DirectionsService();}var c={travelMode:google.maps.DirectionsTravelMode[a],language:this.lang};c.origin=(typeof h.lat!="function")?new google.maps.LatLng(h.lat,h.lng):h;c.destination=(typeof b.lat!="function")?new google.maps.LatLng(b.lat,b.lng):b;var e=this;this.directionsService.route(c,function(i,j){if(j==google.maps.DirectionsStatus.OK){e.directionsRenderer.setDirections(i);f.call(this);}});},createPolygon:function(h,a){var m;if(Classy.typeOf(h[0][0])=="array"){m=[];for(var f=0,c=h.length;f<c;f++){m.push([]);for(var e=0,d=h[f].length;e<d;e++){m[m.length-1].push(new google.maps.LatLng(h[f][e][0],h[f][e][1]));}}}else{m=h;}var b={paths:m};if(a){for(p in a){b[p]=a[p];}}var g=new google.maps.Polygon(b);this.polygons.push(g);if(this.map!==null&&this.isDelayedRendered!==true){g.setMap(this.map);}else{this.renderingQueue.push(g);}},getPolygon:function(c){for(var b=0,a=this.polygons.length;b<a;b++){if(this.polygons[b].id==c){return this.polygons[b];}}return null;},centerOnMarker:function(g,d,f){for(var b=0,a=this.markers.length;b<a;b++){if(this.markers[b].id==g){this.map.setCenter(this.markers[b].position);d=(d)?d:15;this.map.setZoom(d);if(f===true){var c=this.markers[b].contents;var e=new google.maps.InfoWindow({content:c});e.open(this.map,this.markers[b]);}}}},clearMarkers:function(d){var a=this.markers.length,c=0;if(Classy.typeOf(d)=="array"){for(c,len=d.length;c<len;c++){for(var b=0;b<(a-1);b++){if(d[c]==this.markers[b].id){this.markers[b].setMap(null);Classy.Array.remove(this.markers,b);}}}}else{if(typeof d=="string"){for(c;c<a;c++){if(d==this.markers[c].id){this.markers[c].setMap(null);Classy.Array.remove(this.markers,c);break;}}}else{for(c;c<a;c++){this.markers[c].setMap(null);}this.markers=[];}}},clearPolygons:function(c){var a=this.polygons.length,d=0;if(Classy.typeOf(c)=="array"){for(d,len=c.length;d<len;d++){for(var b=0;b<(a-1);b++){if(c[d]==this.polygons[b].id){this.polygons[b].setMap(null);Classy.Array.remove(this.polygons,b);}}}}else{if(typeof c=="string"){for(d;d<a;d++){if(c==this.polygons[d].id){this.polygons[d].setMap(null);Classy.Array.remove(this.polygons,d);break;}}}else{for(d;d<a;d++){this.polygons[d].setMap(null);}Classy.Array.empty(this.polygons);}}}};Classy.Map.MarkerIcon=function(q,j,k,a){var d=j.w;var o=j.h;var c=(j.x)?j.x:d/2;var b=(j.y)?j.y:o;var e=new google.maps.MarkerImage(q,new google.maps.Size(d,o),new google.maps.Point(0,0),new google.maps.Point(c,b));var r=null;if(typeof k!="undefined"&&typeof a!="undefined"){var n=a.w;var f=a.h;var m=(a.x!=undefined)?a.x:n/2;var h=(a.y!=undefined)?a.y:f;r=new google.maps.MarkerImage(k,new google.maps.Size(n,f),new google.maps.Point(0,0),new google.maps.Point(m,h));}var g={icon:e,shadow:r};return g;};Classy.SelectInput=function(q,b){var t=this.realSelect=$(q);var s=this.realSelectHtml=t.get(0);this.onCreation=b.onCreation||false;this.onChange=b.onChange||false;this.id=b.id||false;this.optionsAreVisible=false;this.isAnimated=b.isAnimated||false;this.hasOptGroups=false;var v={id:""};var e=$("<ul class='classy-select-input-options'>");var m=[];var c=s.getElementsByTagName("optgroup");if(c.length>0){this.hasOptGroups=true;for(var n=0,f=c.length;n<f;n++){m.push("<li class='classy-select-input-optgroup'>"+c[n].label+"<ul>");var a=c[n].getElementsByTagName("option");for(var d=0,r=a.length;d<r;d++){m.push("<li><span class='classy-select-input-check'></span>"+a[d].text+"</li>");}m.push("</ul></li>");}}else{var u=s.getElementsByTagName("option");for(var h=0,g=u.length;h<g;h++){m.push("<li><span class='classy-select-input-check'></span>"+u[h].text+"</li>");}}e.html(m.join(""));this.options=$(e).appendTo("body");if(this.id){v.id="id='"+this.id+"' ";}var o="<div {id}class='classy-select-input'><p class='classy-select-input-selected'></p><div class='classy-select-input-arrow'></div></div>";this.select=select=$(Classy.String.supplant(o,v)).insertAfter(t);t.css("display","none");this.index(this.defaultIndex(),false);if(!b.isDelayedEnabled){this.enable();}if(this.onCreation){this.onCreation.call(this);}};Classy.SelectInput.prototype={add:function(c){var e="<option value='"+c.value+"'>"+c.text+"</option>",a="<li><span class='classy-select-input-check'></span>"+c.text+"</li>";if(typeof c.index=="undefined"||c.index==this.length()){this.realSelect.append(e);this.options.append(a);}else{var b=this.realSelect.find("option:eq("+c.index+")");var d=this.options.find("li:not(.classy-select-input-optgroup)").filter("li:eq("+c.index+")");b.before(e);d.before(a);}},remove:function(a){this.realSelect.get(0).remove(a);this.options.find("li:eq("+a+")").remove();},enable:function(){var b=this;var a=$(this.select);a.bind("click",function(c){c.preventDefault();c.stopPropagation();b.toggleOptionsVisibility();});a.bind("mouseover",function(){$(this).css("cursor","pointer");});a.bind("mouseout",function(){$(this).css("cursor","default");});this.options.delegate("li:not(.classy-select-input-optgroup)","mouseover",function(){$(this).addClass("hover");});this.options.delegate("li:not(.classy-select-input-optgroup)","mouseout",function(){$(this).removeClass("hover");});this.options.delegate("li:not(.classy-select-input-optgroup)","click",function(f){f.preventDefault();f.stopPropagation();if(b.hasOptGroups){var c=b.getOptions();for(var d=c.length;d--;){if($(c[d]).filter(this).length>0){b.index(d);}}}else{b.index($(this).index());}b.hideOptions();});$(window).bind("resize",$.proxy(this,"hideOptions"));},manageClickOutside:function(b){if(this.optionsAreVisible){var a=this.select.get(0);if($.contains(a,b.target)===false&&a!==b.target){this.hideOptions();}}},disable:function(){var a=$(this.select);a.unbind("click");a.unbind("mouseover");a.unbind("mouseout");this.options.undelegate("li","mouseover");this.options.undelegate("li","mouseout");this.options.undelegate("li","click");$(document).unbind("click",this.manageClickOutside);$(window).unbind("resize",this.hideOptions);},length:function(){return this.realSelectHtml.length;},defaultIndex:function(){var c;for(var b=0,a=this.realSelectHtml.options.length;b<a;b++){if(this.realSelectHtml.options[b].defaultSelected){return b;}}return 0;},defaultValue:function(){var a=this.defaultIndex;return this.realSelectHtml.options[a].value;},index:function(b,d){if(typeof b=="undefined"){return this.realSelectHtml.selectedIndex;}else{this.realSelect.find("option:selected").removeAttr("selected");var c=this.realSelect.find("option:eq("+b+")");var a=this.getOptions()[b];this.options.find("li.selected").removeClass("selected");$(a).addClass("selected");c.attr("selected","selected");this.select.find(".classy-select-input-selected").text(c.get(0).text);if(this.onChange&&d!==false){this.onChange.call(this,this.value());}}},value:function(d,e){if(typeof d=="undefined"){return this.realSelectHtml.value;}else{this.realSelect.find(":selected").removeAttr("selected");var c=this.realSelect.find("option[value="+d+"]");var b=c.get(0).index;var a=this.getOptions()[b];this.options.find("li.selected").removeClass("selected");$(a).addClass("selected");c.attr("selected","selected");this.select.find(".classy-select-input-selected").text(c.get(0).text);if(this.onChange&&e!==false){this.onChange.call(this,this.value());}}},toggleOptionsVisibility:function(){if(this.optionsAreVisible){this.hideOptions();}else{this.showOptions();}},showOptions:function(){var b=this.select.offset(),a=this.select.outerHeight();this.options.css({top:b.top+a,left:b.left});this.optionsAreVisible=true;if(!this.isAnimated){$(this.options).css("display","block");}else{$(this.options).slideDown(150);}$(document).bind("click",$.proxy(this,"manageClickOutside"));},hideOptions:function(){this.optionsAreVisible=false;if(!this.isAnimated){$(this.options).css("display","none");}else{$(this.options).slideUp(150);}$(document).unbind("click",this.manageClickOutside);},getOptions:function(){return this.options.find("li:not(.classy-select-input-optgroup)");}};Classy.Lightbox=function(){this.overlay=$("<div id='lightbox-overlay' style='display:none; z-index:2000'>");this.container=$("<div id='lightbox-container' style='display:none; z-index:2001'>");$("body").append(this.overlay);$("body").append(this.container);};Classy.Lightbox.prototype={load:function(a){var b=this;$.get(a,function(c){b.container.html(c);b.container.css("width",b.container.children("div").css("width"));$(b).trigger("contentloaded",[a]);});},show:function(){this.overlay.css("display","block");this.container.css("display","block");this.center();$(window).bind("resize",$.proxy(this,"center"));if($.browser.msie&&$.browser.version==6){this.overlay.css("position","absolute");var a=this;window.attachEvent("onscroll",function(){var b=document.documentElement;a.overlay.css("top",b.scrollTop);a.overlay.css("left",b.scrollLeft);});window.attachEvent("onresize",function(){var b=document.documentElement;a.overlay.css("width",(b&&b.clientWidth)+"px");a.overlay.css("height",(b&&b.clientHeight)+"px");});}},hide:function(){this.overlay.css("display","none");this.container.css("display","none");},center:function(){var a=(parseInt($(document).width(),10)-parseInt(this.container.width(),10))/2;this.container.css("left",a);}};Classy.Draggable=function(a){this.handle=a.handle;this.minX=a.minX;this.maxX=a.maxX;this.minY=a.minY;this.maxY=a.maxY;this.posX=a.posX||0;this.posY=a.posY||0;this.handle.bind("mousedown",$.proxy(this,"dragStart"));this.dragCallback=a.dragCallback||false;};Classy.Draggable.prototype={enable:function(){$(this.handle).bind("mousedown",$.proxy(this,"dragStart"));},disable:function(){$(this.handle).unbind("mousedown",this.dragStart);$(document).unbind("mousemove",this.drag);$(document).unbind("mouseup",this.dragEnd);},dragStart:function(a){a.preventDefault();this.startX=a.pageX;this.startY=a.pageY;$(document).bind("mousemove",$.proxy(this,"drag"));$(document).bind("mouseup",$.proxy(this,"dragEnd"));},dragEnd:function(a){a.preventDefault();$(document).unbind("mousemove",this.drag);$(document).unbind("mouseup",this.dragEnd);},drag:function(d){d.preventDefault();var b=d.pageX-this.startX;var f=d.pageY-this.startY;var c=this.posX+b;var a=this.posY+f;this.notify(c,a);this.startX=d.pageX;this.startY=d.pageY;},notify:function(b,a){this.posX=Classy.Number.limit(parseInt(b,10),this.minX,this.maxX);this.posY=Classy.Number.limit(parseInt(a,10),this.minY,this.maxY);if(this.dragCallback){this.dragCallback.call(this,this.posX,this.posY);}}};
