function log(message,opt_color){}
function logHtml(html){}
function logUrl(url){}
function createElement(tagName,opt_parent,opt_position,opt_size){var element=document.createElement(tagName);if(opt_position){moveTo(element,opt_position);}else{element.style.position="relative";}
if(opt_size)setSize(element,opt_size);if(opt_parent)opt_parent.appendChild(element);return element;}
function setSize(element,size){element.style.width=Math.round(size.width)+"px";element.style.height=Math.round(size.height)+"px";}
function moveTo(element,position){element.style.position="absolute";element.style.left=Math.round(position.x)+"px";element.style.top=Math.round(position.y)+"px";}
function disableSelection(element){element.onselectstart=returnFalse;element.unselectable="on";element.style.MozUserSelect="none";element.style.cursor="default";}
function setOpacity(element,opacity){if(navigator.userAgent.indexOf("MSIE")>=0){element.style.filter="alpha(opacity="+Math.round(opacity*100)+")";}else{element.style.opacity=opacity;}}
function stopEvent(e){if(e.stopPropagation){e.stopPropagation();}else{e.cancelBubble=true;}}
function createPngImage(src,opt_parent,opt_position,opt_size){if(navigator.userAgent.indexOf("MSIE")>=0){var element=createElement("div",opt_parent,opt_position,opt_size);element.style.filter="progid:DXImageTransform.Microsoft."+"AlphaImageLoader(src='"+src+"')";return element;}else{var image=createElement("img",opt_parent,opt_position,opt_size);image.src=src;return image;}}
function Transition(milliseconds,opt_curve){this.milliseconds_=milliseconds;this.curve_=opt_curve||SineCurve;this.start_=new Date().getTime();}
Transition.prototype.run=function(stepTime,stepFn){if(!this.hasNext())return;stepFn.call(null,this.next());window.setTimeout(GEvent.callbackArgs(this,this.run,stepTime,stepFn),stepTime);}
Transition.prototype.hasNext=function(){if(this.done_)return this.oneLeft_;var now=new Date().getTime();if((now-this.start_)>this.milliseconds_){this.done_=true;this.oneLeft_=true;}
return true;}
Transition.prototype.next=function(){this.oneLeft_=false;var now=new Date().getTime();var percentage=Math.min(1,(now-this.start_)/this.milliseconds_);return this.curve_(percentage);}
function LinearCurve(percentage){return percentage;}
function SineCurve(percentage){return(1-Math.cos(percentage*Math.PI))/2;}
function SearchControl(opt_initialSearch){this.initialSearch_=opt_initialSearch;this.geocoder_=new GClientGeocoder();}
SearchControl.prototype=new GControl();SearchControl.prototype.initialize=function(map){var container=createElement("div",map.getContainer());var icon=createPngImage("search.png",container,new GPoint(0,0),new GSize(25,25));icon.style.zIndex=2;var contentContainer=createElement("div",container);contentContainer.style.zIndex=1;contentContainer.style.marginLeft="12px";contentContainer.style.height="25px";var searchContainer=createElement("div",contentContainer);var form=createElement("form",contentContainer);form.action=location.pathname;form.method="get";form.onsubmit=GEvent.callback(this,this.doSearch_);var input=createElement("input",form);input.type="text";input.name="q";input.style.width="200px";input.style.fontFace="Tahoma";input.style.fontSize="12px";input.style.padding="1px";input.style.paddingLeft="15px";input.style.marginTop="2px";input.style.border="1px solid #979797";if(this.initialSearch_)input.value=this.initialSearch_;this.input_=input;this.map_=map;return container;}
SearchControl.prototype.getDefaultPosition=function(){return new GControlPosition(G_ANCHOR_TOP_LEFT,new GSize(10,10));}
SearchControl.prototype.selectable=function(){return true;}
SearchControl.prototype.focus=function(){this.input_.focus();}
SearchControl.prototype.doSearch_=function(){address=this.input_.value;if(!address)return false;this.geocoder_.getLocations(address,GEvent.callback(this,function(res){if(res.Status.code!=200){this.showError_("No se encontraron resultados para: \""+address+"\"");return;}
this.showPlacemark_(res.Placemark[0]);}));return false;}
SearchControl.prototype.findThoroughfare_=function(object){if(!object)return null;if(typeof object!='object')return null;for(key in object){if(key=="Thoroughfare")return object[key];var thoroughfare=this.findThoroughfare_(object[key]);if(thoroughfare)return thoroughfare;}
return null;}
SearchControl.prototype.showPlacemark_=function(place){var point=new GLatLng(place.Point.coordinates[1],place.Point.coordinates[0]);var map=this.map_;this.map_.clearOverlays();if(this.findThoroughfare_(place)){if(Math.abs(map.getZoom()-16)>3||!map.getBounds().contains(point)){map.setCenter(point,16);}
this.createMarker_(point,place);}else{if(map.getZoom()==10){map.panTo(point);}else{map.setCenter(point,13);}}}
SearchControl.prototype.createMarker_=function(point,place){var marker=new GMarker(point,G_DEFAULT_ICON);this.map_.addOverlay(marker);var parts=place.address.split(', ');var lines=[]
lines.push(parts.shift());var country=parts.pop();lines.push(parts.join(', '));lines.push(country);var html='<div>'+lines.join('</div><div>')+'</div>';GEvent.addListener(marker,"click",function(){marker.openInfoWindowHtml(html);});marker.openInfoWindowHtml(html);}
SearchControl.prototype.showError_=function(message){var div=createElement("div",this.map_.getContainer());div.style.border="1px solid #979797";div.style.backgroundColor="white";div.style.padding="1em";div.style.fontSize="medium";div.style.position="absolute";div.style.top="50%";div.style.left="50%";div.style.width="24em";div.style.marginTop="-1em";div.style.marginLeft="-13em";div.style.textAlign="center";div.style.zIndex=100000;div.appendChild(document.createTextNode(message));window.setTimeout(function(){var transition=new Transition(500);transition.run(25,function(percentage){if(percentage==1){div.parentNode.removeChild(div);}else{setOpacity(div,1-percentage);}});},1000);}
function SelfContainedMap(container){this.container_=container;}
SelfContainedMap.prototype.run=function(){var map=new GMap2(this.container_);map.enableDoubleClickZoom();map.enableContinuousZoom();map.addControl(new GLargeMapControl(),new GControlPosition(G_ANCHOR_TOP_RIGHT,new GSize(10,10)));map.addControl(new GMapTypeControl(),new GControlPosition(G_ANCHOR_TOP_LEFT,new GSize(38,38)));var searchControl=new SearchControl();map.addControl(searchControl);searchControl.focus();map.setCenter(new GLatLng(23.612315, -102.260742),5);}
