/*
 * Script: Classy.js
 * Author: Charles Demers
 * Version: 1.0
 * 
 * Inspired by Mootools (http://www.mootools.net)
 * and Douglas Crockford (http://javascript.crockford.com)
 * 
 * Provides: [Classy]
 */
	
var Classy=C={version:1};Classy.typeOf=function(a){if(a===undefined){return"undefined";}if(a===null){return"null";}if(typeof a=="object"&&typeof a.length=="number"){return"array";}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 a.constructor.toString().substring(9,a.constructor.toString().indexOf("(")).toLowerCase();};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.Periodical=Classy.Delay={};Classy.Periodical.clear=Classy.Delay.clear=function(a){clearInterval(a);clearTimeout(a);};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;},from:function(a){if(a===null){return[];}return(Classy.Object.isEnumerable(a)&&typeof a!="string")?(Classy.typeOf(a)=="array")?a:Array.prototype.slice.call(a):[a];},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={from:function(b){var a=parseFloat(b);return isFinite(a)?a:null;},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={from:function(a){return a+"";},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(b,a){return b.replace(/{([^{}]*)}/g,function(d,c){var e=a[c];return typeof e==="string"||typeof e==="number"?e:d;});},trim:function(a){return a.replace(/^\s*(\S*(\s+\S+)*)\s*$/,"1$");}};Classy.Function={from:function(a){return(Classy.typeOf(a)=="function")?a:function(){return a;};},bind:function(c,b,a){a=(Classy.typeOf(a)=="array")?a:[a];return function(){c.apply(b,a);};},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:[];}return(setTimeout(function(){h.apply(f,b);},d));},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:[];}return(setInterval(function(){h.apply(f,b);},d));}};

/**
 * Script: Classy.Map.js
 * Author: Charles Demers
 * Version: 1.0
 *
 * Requires: [Classy.js, jquery-1.4.2.js]
 * Provides: [Classy.Map, Classy.Map.MarkerIcon]
 */

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 l=false;var n="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 m=["hybrid","roadmap","satellite","terrain"];if(b.mapType&&Classy.Array.contains(m,b.mapType)){h=b.mapType.toUpperCase();}var o=["bottom","bottom_left","bottom_right","left","right","top","top_left","top_right"];if(b.mapTypeControl===true||b.mapTypeControlPosition||b.mapTypeControlStyle){l=true;if(b.mapTypeControlPosition&&Classy.Array.contains(o,b.mapTypeControlPosition)){i=b.mapTypeControlPosition.toUpperCase();}var f=["default","dropdown_menu","horizontal_bar"];if(b.mapTypeControlStyle&&Classy.Array.contains(f,b.mapTypeControlStyle)){n=b.mapTypeControlStyle.toUpperCase();}}if(b.navControl===true){if(b.navControlPosition&&Classy.Array.contains(o,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:l,mapTypeControlOptions:{position:google.maps.ControlPosition[i],style:google.maps.MapTypeControlStyle[n]},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);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(o,j,k,a){var d=j.w;var n=j.h;var c=(j.x)?j.x:d/2;var b=(j.y)?j.y:n;var e=new google.maps.MarkerImage(o,new google.maps.Size(d,n),new google.maps.Point(0,0),new google.maps.Point(c,b));var q=null;if(typeof k!="undefined"&&typeof a!="undefined"){var m=a.w;var f=a.h;var l=(a.x!=undefined)?a.x:m/2;var h=(a.y!=undefined)?a.y:f;q=new google.maps.MarkerImage(k,new google.maps.Size(m,f),new google.maps.Point(0,0),new google.maps.Point(l,h));}var g={icon:e,shadow:q};return g;};
/**
 * Script: Classy.Map.CustomInfoWindow.js
 * Author: Charles Demers
 * Version: 1.0
 *
 * Requires: [Classy.js, jquery-1.4.2.js]
 * Provides: [Classy.Map.CustomInfoWindow]
 */
Classy.Map.CustomInfoWindow=function(a,b){this.marker=a;this.gmap=a.map;this.html=b.html;this.htmlElement=null;this.anchor=b.anchor||{x:0,y:0};this.marginLeft=b.marginLeft||0;this.marginTop=b.marginTop||0;this.contents=b.contents;this.position=a.position;this.onCreation=b.onCreation;this.setMap(this.gmap);};Classy.Map.CustomInfoWindow.prototype=new google.maps.OverlayView();(function(){var a={add:function(){this.setMap(this.gmap);},onAdd:function(){var f=this.getPanes();this.htmlElement=$(f.overlayLayer).html(this.html);this.htmlElement.css("position","relative");var d=this.htmlElement.width();var e=this.htmlElement.height();function c(h,g){if(typeof h=="string"){if(h.indexOf("%")){return g*(parseInt(h,10)/100);}else{return parseInt(h,10);}}else{return h;}}this.anchor.x=c(this.anchor.x,d);this.anchor.y=c(this.anchor.y,e);this.marginLeft=c(this.marginLeft,d);this.marginTop=c(this.marginTop,e);this.onCreation.call(this);},draw:function(){var c=this.getProjection();var f=c.fromLatLngToDivPixel(this.position);var e=f.x-this.anchor.x+this.marginLeft;var d=f.y-this.anchor.y+this.marginTop;this.htmlElement.css({top:d,left:e,zIndex:5000});},remove:function(){this.setMap(null);},onRemove:function(){this.htmlElement.remove();this.htmlElement=null;},show:function(){this.htmlElement.css("visibility","visible");this.isVisible=true;},hide:function(){this.htmlElement.css("visibility","hidden");this.isVisible=false;}};for(var b in a){Classy.Map.CustomInfoWindow.prototype[b]=a[b];}})();
/**
 * Script: Classy.Map.StreetView.js
 * Author: Charles Demers
 * Version: 1.0
 *
 * Requires: [Classy.js, jquery-1.4.2.js]
 * Provides: [Classy.Map.StreetView]
 */
Classy.Map.StreetView=function(f,e){this.map=f;this.panorama=null;this.addressControl=false;this.isDelayedCreated=false;this.isDelayedDisplayed=true;var a=this.defaultPosition=this.map.defaultCenter;var h=false;var d="BOTTOM_RIGHT";var c={};var g=false;e=e||{};this.onStreetViewCreation=e.onStreetViewCreation||false;if(e.defaultPosition){a=this.defaultPosition=e.defaultPosition;}if(e.isDelayedCreated===true){this.isDelayedCreated=true;}if(e.isDelayedDisplayed===false){this.isDelayedDisplayed=false;}if(e.addressControl===true||e.addressControlOptions){h=true;if(e.addressControlPosition){var b=["bottom","bottom_left","bottom_right","left","right","top","top_left","top_right"];if(e.addressControlPosition&&Classy.Array.contains(b,e.addressControlPosition)){d=e.addressControlPosition.toUpperCase();}}if(e.addressControlStyle){c=e.addressControlStyle;}}if(e.pointOfView){this.setPointOfView(e.pointOfView);}if(e.enableCloseButton===true){g=true;if(e.onCloseClick){this.onCloseClick=e.onCloseClick;}}this._panoramaOptions={position:new google.maps.LatLng(a.lat,a.lng),pov:{heading:0,pitch:0,zoom:1},enableCloseButton:g,addressControl:h,addressControlOptions:{position:google.maps.ControlPosition[d],style:c}};if(!this.isDelayedCreated){this.create();}};Classy.Map.StreetView.prototype={create:function(){if(this.map.map!==null){var a=this;this.panorama=new google.maps.StreetViewPanorama($(this.map.container).get(0),this._panoramaOptions);this.map.map.setStreetView(this.panorama);google.maps.event.addListener(this.panorama,"closeclick",function(){a.hide();});if(this.isDelayedDisplayed===true){a.hide();}if(this.onStreetViewCreation!==false){this.onStreetViewCreation.call(this);}}},getPosition:function(){return this.panorama.getPosition();},getPointOfView:function(){return this.panorama.getPov();},getIsVisible:function(){return this.panorama.getVisible();},setPosition:function(b){var a=(typeof b.lat!="function")?new google.maps.LatLng(b.lat,b.lng):b;this.panorama.setPosition(a);},setPointOfView:function(b){var a={};a.heading=(b.heading>=0&&b.heading<=360)?b.heading:0;a.pitch=(b.pitch>=-90&&b.pitch<=90)?b.pitch:0;a.zoom=b.zoom||1;this.panorama.setPov(a);},show:function(){this.panorama.setVisible(true);},hide:function(){this.panorama.setVisible(false);}};
/**
 * Script: Classy.SelectInput.js
 * Author: Charles Demers
 * Version: 1.0
 *
 * Requires: [Classy.js, jquery-1.4.2.js]
 * Provides: [Classy.SelectInput]
 */
Classy.SelectInput=function(g,a){var j=this.realSelect=$(g);var h=this.realSelectHtml=j.get(0);this.onCreation=a.onCreation||false;this.onChange=a.onChange||false;this.id=a.id||false;this.optionsAreVisible=false;this.isAnimated=a.isAnimated||false;var k=h.options;var m={id:"",selected:"<p class='classy-select-input-selected'>"+k[h.selectedIndex].text+"</p>"};var d=["<ul class='classy-select-input-options'>"];for(var e=0,b=k.length;e<b;e++){var c=k[e];d.push("<li>"+c.text+"</li>");}d.push("</ul>");m.options=d.join("");if(this.id){m.id="id='"+this.id+"' ";}var f="<div {id}class='classy-select-input'><div>{selected}<div class='classy-select-input-arrow'></div></div>{options}</div>";this.select=$(Classy.String.supplant(f,m)).insertAfter(j);j.css("display","none");if(!a.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>"+c.text+"</li>";if(typeof c.index=="undefined"||c.index==this.length()){this.realSelect.append(e);this.select.find(".classy-select-input-options").append(a);}else{var b=this.realSelect.find("option:eq("+c.index+")");var d=this.select.find("li:eq("+c.index+")");b.before(e);d.before(a);}},remove:function(a){this.realSelect.get(0).remove(a);$(this.select).find("li:eq("+a+")").remove();},enable:function(){var b=this;var a=$(this.select);a.bind("click",function(){b.toggleOptionsVisibility();});a.bind("mouseover",function(){$(this).css("cursor","pointer");});a.bind("mouseout",function(){$(this).css("cursor","default");});a.delegate("ul.classy-select-input-options li","mouseover",function(){$(this).addClass("hover");});a.delegate("ul.classy-select-input-options li","mouseout",function(){$(this).removeClass("hover");});a.delegate("ul.classy-select-input-options li","click",function(){b.index($(this).index());return false;});$(document).bind("click",function(d){if(b.optionsAreVisible){var c=b.realSelect.next(".classy-select-input").get(0);if($.contains(c,d.target)===false&&c!==d.target){b.hideOptions();}}});},disable:function(){var a=$(this.select);a.unbind("click");a.unbind("mouseover");a.unbind("mouseout");a.undelegate("ul.classy-select-input-options li","mouseover");a.undelegate("ul.classy-select-input-options li","mouseout");a.undelegate("ul.classy-select-input-options li","click");$(document).unbind("click");},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(a){if(typeof a=="undefined"){return this.realSelectHtml.selectedIndex;}else{this.realSelect.find(":selected").removeAttr("selected");var b=this.realSelect.find("option:eq("+a+")");b.attr("selected","selected");this.select.find("div:first p").text(b.get(0).text);if(this.onChange){this.onChange.call(this,this.value());}}},value:function(b){if(typeof b=="undefined"){return this.realSelectHtml.value;}else{this.realSelect.find(":selected").removeAttr("selected");var a=this.realSelect.find("option[value="+b+"]");a.attr("selected","selected");this.select.find("div:first p").text(a.get(0).text);if(this.onChange){this.onChange.call(this,this.value());}}},toggleOptionsVisibility:function(){if(this.optionsAreVisible){this.hideOptions();}else{this.showOptions();}},showOptions:function(){this.optionsAreVisible=true;if(!this.isAnimated){$(this.select).find("ul.classy-select-input-options").css("display","block");}else{$(this.select).find("ul.classy-select-input-options").slideDown("fast");}},hideOptions:function(){this.optionsAreVisible=false;if(!this.isAnimated){$(this.select).find("ul.classy-select-input-options").css("display","none");}else{$(this.select).find("ul.classy-select-input-options").slideUp("fast");}}};
