
var map;var is_maplet=0;var org_bounds=0;var layer_stack=[];var max_layers=2;var current_zoom=-1;var refresh_timer=0;var refresh_disabled=false;var auto_research=false;var urlfilter='';var lng_min;var lng_max;var lat_min;var lat_max;var tooltip;var last_info_window;var last_info_window_time;var onstart_open_latlng;var active_filter;var active_score1;var active_score2;var active_order;var last_hash;var max_results=100;var result_count=0;var last_result_count=0;var marker_count=0;var loaded=false;var base_url='http://sfscores.com/';var city_bounds=new GLatLngBounds(new GLatLng(37.628,-122.51),new GLatLng(37.812,-122.367));var spark_colormap={};for(var i=0;i<=100;i++){if(i==100)
spark_colormap[i]='#33ff33';else if(i>=80)
spark_colormap[i]='#ffff55';else
spark_colormap[i]='#ff5555';}
function handleResize(){$('#map').height($(window).height()-140);}
function initMashupMap(){$(window).resize(handleResize);handleResize();map=new GMap2(document.getElementById('map'));map.setUIToDefault();setupAds();if(!loadHash()){map.setCenter(new GLatLng(37.7899,-122.4108),15);}
initMoveEvent();initTooltip();refreshDisplay();}
function initTooltip(){tooltip=document.createElement('div');tooltip.className='tooltip';tooltip.style.position='absolute';tooltip.style.visibility='hidden';map.getPane(G_MAP_FLOAT_PANE).appendChild(tooltip);}
function setupAds(){var publisher_id="pub-0188040448427944";var adPos=new GControlPosition(G_ANCHOR_BOTTOM_RIGHT,new GSize(7,20))
adsManagerOptions={maxAdsOnMap:2,style:'adunit',channel:'0751477260',position:adPos};adsManager=new GAdsManager(map,publisher_id,adsManagerOptions);adsManager.enable();}
function showTooltip(marker,name,recent){var loc=map.fromLatLngToDivPixel(marker.getPoint());tooltip.style.top=(loc.y-56)+'px';tooltip.style.left=(loc.x+22)+'px';tooltip.style.visibility='visible';tooltip.innerHTML=name+'<span class="sparkline"></span>';if(recent)
updateSparkline($('.sparkline'),recent);}
function hideTooltip(){tooltip.style.visibility='hidden';}
var sparktimer;function updateSparkline(el,recent){var values=[];$.each(recent,function(){values.push(this[1]);});el.sparkline(values,{type:'bar',chartRangeMin:40,chartRangeMax:100,colorMap:spark_colormap});if(!sparktimer){sparktimer=setInterval($.sparkline_display_visible,200);}}
function initMoveEvent(){GEvent.addListener(map,'moveend',function(){if(refresh_timer){clearTimeout(refresh_timer);}
refresh_timer=setTimeout(function(){refresh_timer=0;auto_research=false;if(is_maplet){GAsync(map,'getZoom','getBounds',function(zoom,bounds){refreshDisplay(0,zoom,bounds);});}else{refreshDisplay();}},300);});}
function initMaplet(){map=new GMap2();map.setCenter(new GLatLng(37.7899,-122.4108),15);is_maplet=1;initMoveEvent();GAsync(map,'getZoom','getBounds',function(zoom,bounds){refreshDisplay(0,zoom,bounds);});}
function updateHash(click_latlng){var c=map.getCenter();var z=map.getZoom();var lat=(''+c.lat()).substr(0,6);var lng=(''+c.lng()).substr(0,7);var srcstr='c='+lat+','+lng+'&'+'z='+z;if(click_latlng||(last_info_window&&(new Date().getTime()-last_info_window_time<200||!map.getInfoWindow().isHidden())))
srcstr+='&i='+last_info_window;if(active_filter)
srcstr+='&f='+encodeURIComponent(active_filter);if(active_score1)
srcstr+='&s1='+active_score1+'&s2='+active_score2;if(active_order)
srcstr+='&o='+active_order;var hashstr=encode64(srcstr);window.location.hash=hashstr;last_hash=window.location.hash;}
function loadHash(){var hashstr=decode64(window.location.hash);if(!hashstr){setTimeout(checkHash,200);return false;}
var result=false;var pairs=hashstr.split('&');var vals={}
for(var i=0;i<pairs.length;i++){var s=pairs[i].split('=',2);vals[s[0]]=s[1];}
if(vals.c&&vals.z){var ll=vals.c.split(',');var lat=ll[0];var lng=ll[1];map.setCenter(new GLatLng(lat,lng),parseInt(vals.z));result=true;}
if(vals.f)
document.getElementById('filter').value=decodeURIComponent(vals.f);if(vals.s1||vals.s2){document.getElementById('score1').value=vals.s1;document.getElementById('score2').value=vals.s2;}
if(vals.o)
setRadioValue('scoreorder',vals.o);if(vals.i)
onstart_open_latlng=vals.i;setTimeout(checkHash,200);return result;}
function checkHash(){if(last_hash!=window.location.hash){last_hash=window.location.hash;loadHash();}else{last_hash=window.location.hash;setTimeout(checkHash,200);}}
function getWidth(bounds){var ne=bounds.getNorthEast();var sw=bounds.getSouthWest();return Math.abs(ne.lng()-sw.lng());}
function getHeight(bounds){var ne=bounds.getNorthEast();var sw=bounds.getSouthWest();return Math.abs(ne.lat()-sw.lat());}
function shouldRedraw(org,current){var org_ne=org.getNorthEast();var current_ne=current.getNorthEast();var org_width=getWidth(org);var xshift=Math.abs(org_ne.lng()-current_ne.lng());if(xshift/org_width>0.1)
return true;var org_height=getHeight(org);var yshift=Math.abs(org_ne.lat()-current_ne.lat());if(yshift/org_height>0.1)
return true;}
function radioValue(grp){var rlist=document.getElementsByName(grp);for(var i=0;i<rlist.length;i++){if(rlist[i].checked){return rlist[i].value;}}}
function setRadioValue(grp,val){var rlist=document.getElementsByName(grp);for(var i=0;i<rlist.length;i++){if(rlist[i].value==val){rlist[i].checked=true;}}}
function updateNeighborhood(){var nh=document.getElementById('nh').value
if(!nh)return;nh=nh.split(',');var lat=nh[0];var lng=nh[1];var zoom=parseInt(nh[2]);map.setCenter(new GLatLng(lat,lng),zoom);refreshDisplay(0);}
function formSubmit(){if(!loaded)return false;auto_research=true;refreshDisplay(1);return false;}
function mapletRefreshDisplay(force,zoom,bounds,citysearch){}
function refreshDisplay(force,zoom,bounds,citysearch){if(refresh_disabled){refresh_disabled--;return;}
if(is_maplet){if(!zoom&&!bounds){GAsync(map,'getZoom','getBounds',function(zoom,bounds){refreshDisplay(force,zoom,bounds,citysearch);});return false;}else if(!zoom){GAsync(map,'getZoom',function(zoom){refreshDisplay(force,zoom,bounds,citysearch);});return false;}else if(!bounds){GAsync(map,'getBounds',function(bounds){refreshDisplay(force,zoom,bounds,citysearch);});return false;}}else{if(!zoom)
zoom=map.getZoom();if(!bounds)
bounds=map.getBounds();}
var ne=bounds.getNorthEast();var sw=bounds.getSouthWest();if(current_zoom==zoom&&org_bounds&&!force&&!shouldRedraw(org_bounds,bounds)){return;}
if(force)
cleanupMarkers();else
cleanupMarkers(bounds);var limit=max_results-marker_count;org_bounds=bounds;if((is_maplet&&current_zoom!=zoom)||force){map.clearOverlays();resetData();layer_stack=[];}
current_zoom=zoom;active_filter=document.getElementById('filter').value;if(active_filter=='*All*')
active_filter='';active_score1=document.getElementById('score1').value;active_score2=document.getElementById('score2').value;active_order=radioValue('scoreorder');urlfilter='q='+encodeURIComponent(active_filter)+'&score1='+active_score1+'&score2='+active_score2+'&order='+active_order;var url=base_url+'search.php?ne='+ne.lat()+','+ne.lng()+'&sw='+sw.lat()+','+sw.lng()+'&'+urlfilter+'&limit='+limit;document.getElementById('loading').style.display='block';if(is_maplet){var geoXml=new GGeoXml(url);GEvent.addListener(geoXml,'load',function(){document.getElementById('loading').style.display='none';layer_stack.push(geoXml);if(layer_stack.length>max_layers){var remove=layer_stack.shift();map.removeOverlay(remove);}});map.addOverlay(geoXml);}else{loadData(url,function(){if(!last_result_count&&!citysearch&&auto_research){auto_research=false;refreshDisplay(true,zoom,city_bounds,true);}else{if(citysearch&&last_result_count){var b=new GLatLngBounds(new GLatLng(lat_min,lng_min),new GLatLng(lat_max,lng_max));zoom=map.getBoundsZoomLevel(b);refresh_disabled=1;map.setCenter(b.getCenter(),zoom);}else if(auto_research){var b=new GLatLngBounds(new GLatLng(lat_min,lng_min),new GLatLng(lat_max,lng_max));map.panTo(b.getCenter());}
if((citysearch||auto_research)&&last_result_count==1){for(var latlng in markerLocations)
markerClicked(latlng);}
document.getElementById('loading').style.display='none';}
if(onstart_open_latlng){markerClicked(onstart_open_latlng);onstart_open_latlng=false;}
if(!loaded)loaded=true;updateHash();});}
return false;}
iconBase=new GIcon(G_DEFAULT_ICON);iconBase.iconSize=new GSize(32,32);var data={};var names={};var markers={};var markerLocations={};var markerTypes={'redMarker':new GIcon(iconBase,'http://maps.google.com/intl/en_us/mapfiles/ms/icons/red.png'),'yellowMarker':new GIcon(iconBase,'http://maps.google.com/intl/en_us/mapfiles/ms/icons/yellow.png'),'greenMarker':new GIcon(iconBase,'http://maps.google.com/intl/en_us/mapfiles/ms/icons/green.png')};var purpleMarker=new GIcon(iconBase,'http://maps.google.com/intl/en_us/mapfiles/ms/icons/purple.png');function resetData(){data={};names={};markers={};markerLocations={};}
function loadData(url,callback){$.get(url,function(kml){lng_min=1000;lng_max=-1000;lat_min=1000;lat_max=-1000;last_result_count=0;$('Placemark',kml).each(function(){result_count++;last_result_count++;var name=$('name',this).text();if(names[name])
return;names[name]=1;var id=parseInt($('id',this).text());var score=parseInt($('score',this).text());var recent=[];$.each($('recent',this).text().split(','),function(){recent.push(this.split(':'));});var multi=$('multi',this).text();var desc=$('description',this).text();var coord=$('coordinates',this).text().split(',');var lat=parseFloat(coord[1]);var lng=parseFloat(coord[0]);if(lat<lat_min)lat_min=lat;if(lat>lat_max)lat_max=lat;if(lng<lng_min)lng_min=lng;if(lng>lng_max)lng_max=lng;var latlng=new GLatLng(lat,lng);var style=$('styleUrl',this).text().substr(1);var icon=markerTypes[style];if(!markers[latlng]){if(multi){var mtype=purpleMarker;var d=multi.split(',');var addr_total=d[1];var markerscore=d[2];var min_score=d[2];var max_score=d[3];}else{var mtype=markerTypes[style];var markerscore=score;}
var c=markerscore==100?'labelScore100':'labelScore';var offset=markerscore==100?new GSize(-1,-30):new GSize(0,-31);var marker=new LabeledMarker(latlng,{'icon':mtype,'clickable':true,'labelText':markerscore,'labelClass':c,'labelOffset':offset});GEvent.addListener(marker,'click',function(){markerClicked(latlng);});if(multi)
GEvent.addListener(marker,'mouseover',function(){showTooltip(marker,''+addr_total+' businesses (scores '+min_score+'-'+max_score+')');});else
GEvent.addListener(marker,'mouseover',function(){showTooltip(marker,name,recent);});GEvent.addListener(marker,'mouseout',function(){hideTooltip();});markers[latlng]=marker;map.addOverlay(marker);marker_count++;}
data={'id':id,'name':name,'multi':multi,'score':score,'recent':recent,'desc':desc,'latlng':latlng};if(!markerLocations[latlng])
markerLocations[latlng]=[];markerLocations[latlng].push(data);});if(callback)
callback();});}
function loadProperty(latlng,callback){if(markerLocations[latlng][0].multiloaded){if(callback)
callback();return;}
var gh=markerLocations[latlng][0].multi.split(',')[0];var url=base_url+'search.php?prop='+gh+'&'+urlfilter;$.get(url,function(kml){$('Placemark',kml).each(function(){var name=$('name',this).text();if(names[name])
return;names[name]=1;var id=parseInt($('id',this).text());var score=parseInt($('score',this).text());var recent=[];$.each($('recent',this).text().split(','),function(){recent.push(this.split(':'));});var multi=$('multi',this).text();var desc=$('description',this).text();var coord=$('coordinates',this).text().split(',');data={'id':id,'name':name,'multi':multi,'score':score,'recent':recent,'desc':desc,'latlng':latlng};markerLocations[latlng].push(data);});markerLocations[latlng].sort(function(a,b){if(a.name<b.name)return-1;if(a.name>b.name)return 1;return 0;});markerLocations[latlng][0].multiloaded=true;if(callback)
callback();});}
function cleanupMarkers(bounds){for(var latlng in markerLocations){var glatlng=markerLocations[latlng][0].latlng;if(!bounds||!bounds.containsLatLng(glatlng)){for(var i=0;i<markerLocations[latlng].length;i++){var data=markerLocations[latlng][i];delete names[data.name];result_count--;}
map.removeOverlay(markers[latlng]);marker_count--;delete markers[latlng];delete markerLocations[latlng];}}}
function escapeQuotes(str){return str.replace(/'/g,"\\'");}
function scoreToColor(score){if(score==100)
return'#33ff33';if(score>=80)
return'#ffff55';return'#ff5555';}
function displayPropList(latlng,offset){var perpage=10;if(!offset)
offset=0;var entries=markerLocations[latlng];var desc='<p>'+entries.length+' Matching Restaurants at This Location:</p><table class="proptab">';for(var i=offset;i<entries.length;i++){if(i-offset+1>perpage)
break;var data=entries[i];var score='<b style="padding: 0px 2px 0px 2px; background-color: '+scoreToColor(data.score)+'">'+data.score+'</b>';desc+='<tr><td class="linum">'+(i+1)+')</td><td>'+score+'</td><td><a href="javascript:void(0)" onclick="markerClicked(\''+latlng+'\', \''+escapeQuotes(data.name)+'\')">'+data.name+'</a></td></tr>';}
desc+='</table>';if(offset){var prev=offset-10;desc+='<small><a href="javascript:void(0)" onclick="displayPropList(\''+latlng+'\', '+prev+')">Previous Page</a></small> &nbsp;';}
if(i<entries.length){desc+='<small><a href="javascript:void(0)" onclick="displayPropList(\''+latlng+'\', '+i+')">Next Page</a></small>';}
markers[latlng].openInfoWindow(desc);last_info_window=latlng;last_info_window_time=new Date().getTime();updateHash(latlng);}
function displayViolations(latlng,name){var data=getDataByName(latlng,name);$.getJSON(base_url+'violations.php?id='+data.id,function(results){if(results){var display='<h3 class="restname">'+data.name+'</h3>';var selector='<ul class="selector">';var resultdivs='';var riskcol={'High':'red','Moderate':'orange','Low':'yellow'}
var summaries={};for(var j=0;j<results.length;j++){var dt=results[j].date;var score=results[j].score;var violations=results[j].violations;var byrisk={'High':'','Moderate':'','Low':''};for(var i=0;i<violations.length;i++){var violation=violations[i];var abated=violation.abated?' (abated '+violation.abated+')':'';byrisk[violation.risk]+='<tr><td valign="top"><img src="http://sfscores.com/images/'+riskcol[violation.risk]+'-dot.jpg" width="16" height="16" border="0"></td><td valign="top">'+violation.type+abated+'</td></tr>';}
var v='<div class="vtable"><table>';v+=byrisk['High'];v+=byrisk['Moderate'];v+=byrisk['Low'];v+='</table></div>';if(i==1)
var summary='<p>Scored '+score+' with 1 violation:</p> <ul>'+v+'</ul>';else
var summary='<p>Scored '+score+' with '+i+' violations:</p> <ul>'+v+'</ul>';summaries[j]=summary;var selstyle=j==0?'class="active"':'class="inactive"';selector+='<li '+selstyle+'><a href="javascript:void(0)" onclick="switchSummary(this,'+j+')">'+dt+' ('+score+')</a></li>';}
display+='<table id="vwin" cellpadding="4"><tr><td valign="top" nowrap="nowrap" class="selcell">'+selector+'</td><td valign="top" id="summaries">'+summaries[0]+'</td></tr></table>';}else{var display="No inspection history";}
markers[latlng].openInfoWindow(display);$('#vwin').data('summaries',summaries);});}
function switchSummary(el,i){var summaries=$('#vwin').data('summaries');$('.selector li').removeClass('active');$(el).parent('li').addClass('active');$('#summaries').html(summaries[i]);map.updateInfoWindow();}
function getDataByName(latlng,name){var entries=markerLocations[latlng];for(var i=0;i<entries.length;i++){if(entries[i].name==name){var data=entries[i];break;}}
return data;}
function markerClicked(latlng,name){if(!markerLocations[latlng])return;if(markerLocations[latlng][0].multi){if(!name){if(!markerLocations[latlng][0].multiloaded){markers[latlng].openInfoWindow('Loading..');loadProperty(latlng,function(){displayPropList(latlng);});}else{displayPropList(latlng);}
return;}else{var data=getDataByName(latlng,name);var vlink=' (<a href="javascript:void(0)" onclick="displayViolations(\''+latlng+'\', \''+escapeQuotes(data.name)+'\')">view inspection details</a>)';if(data){var desc='<p class="sparkholder">History: <span></span></p>'
+'<h3>'+data.name+'</h3>'+data.desc.replace('<!--violations-->',vlink);}}}else{var data=markerLocations[latlng][0];var vlink=' (<a href="javascript:void(0)" onclick="displayViolations(\''+latlng+'\', \''+escapeQuotes(data.name)+'\')">view inspection details</a>)';var desc='<p class="sparkholder">History: <span></span></p>'
+'<h3>'+data.name+'</h3>'+data.desc.replace('<!--violations-->',vlink);}
markers[latlng].openInfoWindow(desc);if(data.recent){updateSparkline($('.sparkholder span'),data.recent);}
last_info_window=latlng;last_info_window_time=new Date().getTime();updateHash(latlng);}
function pageLoaded(){if(GBrowserIsCompatible()){initMashupMap();}}
var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function encode64(input){var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;do{chr1=input.charCodeAt(i++);chr2=input.charCodeAt(i++);chr3=input.charCodeAt(i++);enc1=chr1>>2;enc2=((chr1&3)<<4)|(chr2>>4);enc3=((chr2&15)<<2)|(chr3>>6);enc4=chr3&63;if(isNaN(chr2)){enc3=enc4=64;}else if(isNaN(chr3)){enc4=64;}
output=output+keyStr.charAt(enc1)+keyStr.charAt(enc2)+
keyStr.charAt(enc3)+keyStr.charAt(enc4);}while(i<input.length);return output;}
function decode64(input){var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=(enc1<<2)|(enc2>>4);chr2=((enc2&15)<<4)|(enc3>>2);chr3=((enc3&3)<<6)|enc4;output=output+String.fromCharCode(chr1);if(enc3!=64){output=output+String.fromCharCode(chr2);}
if(enc4!=64){output=output+String.fromCharCode(chr3);}}while(i<input.length);return output;}// jquery.sparkline.js - http://omnipotent.net/jquery.sparkline/

(function($){$.fn.simpledraw=function(width,height,use_existing){if(use_existing&&this[0].vcanvas)return this[0].vcanvas;if(width==undefined)width=$(this).innerWidth();if(height==undefined)height=$(this).innerHeight();if($.browser.hasCanvas){return new vcanvas_canvas(width,height,this);}else if($.browser.msie){return new vcanvas_vml(width,height,this);}else{return false;}};var pending=[];$.fn.sparkline=function(uservalues,options){var options=$.extend({type:'line',lineColor:'#00f',fillColor:'#cdf',defaultPixelsPerValue:3,width:'auto',height:'auto',composite:false},options?options:{});return this.each(function(){var render=function(){var values=(uservalues=='html'||uservalues==undefined)?$(this).text().split(','):uservalues;var width=options.width=='auto'?values.length*options.defaultPixelsPerValue:options.width;if(options.height=='auto'){if(!options.composite||!this.vcanvas){var tmp=document.createElement('span');tmp.innerHTML='a';$(this).html(tmp);height=$(tmp).innerHeight();$(tmp).remove();}}else{height=options.height;}
$.fn.sparkline[options.type].call(this,values,options,width,height);}
if(($(this).html()&&$(this).is(':hidden'))||($.fn.jquery<"1.3.0"&&$(this).parents().is(':hidden'))){console.log('Sparkline is hidden');pending.push([this,render]);}else{render.call(this);}});};$.sparkline_display_visible=function(){for(var i=pending.length-1;i>=0;i--){var el=pending[i][0];if($(el).is(':visible')&&!$(el).parents().is(':hidden')){pending[i][1].call(el);pending.splice(i,1);}}};$.fn.sparkline.line=function(values,options,width,height){var options=$.extend({spotColor:'#f80',spotRadius:1.5,minSpotColor:'#f80',maxSpotColor:'#f80',normalRangeMin:undefined,normalRangeMax:undefined,normalRangeColor:'#ccc',chartRangeMin:undefined,chartRangeMax:undefined},options?options:{});var xvalues=[],yvalues=[];for(i=0;i<values.length;i++){var isstr=typeof(values[i])=='string';var isarray=typeof(values[i])=='object'&&values[i]instanceof Array;var sp=isstr&&values[i].split(':');if(isstr&&sp.length==2){xvalues.push(Number(sp[0]));yvalues.push(Number(sp[1]));}else if(isarray){xvalues.push(values[i][0]);yvalues.push(values[i][1]);}else{xvalues.push(i);yvalues.push(Number(values[i]));}}
if(options.xvalues){xvalues=options.xvalues;}
var maxy=Math.max.apply(Math,yvalues);var maxyval=maxy;var miny=Math.min.apply(Math,yvalues);var minyval=miny;var maxx=Math.max.apply(Math,xvalues);var maxxval=maxx;var minx=Math.min.apply(Math,xvalues);var minxval=minx;if(options.normalRangeMin!=undefined){if(options.normalRangeMin<miny)
miny=options.normalRangeMin;if(options.normalRangeMax>maxy)
maxy=options.normalRangeMax;}
if(options.chartRangeMin!=undefined&&options.chartRangeMin<miny){miny=options.chartRangeMin;}
if(options.chartRangeMax!=undefined&&options.chartRangeMax>maxy){maxy=options.chartRangeMax;}
var rangex=maxx-minx==0?1:maxx-minx;var rangey=maxy-miny==0?1:maxy-miny;var vl=yvalues.length-1;if(vl<1){this.innerHTML='';return;}
var target=$(this).simpledraw(width,height,options.composite);if(target){var canvas_width=target.pixel_width;var canvas_height=target.pixel_height;var canvas_top=0;var canvas_left=0;if(options.spotRadius&&(canvas_width<(options.spotRadius*4)||canvas_height<(options.spotRadius*4))){options.spotRadius=0;}
if(options.spotRadius){if(options.minSpotColor||(options.spotColor&&yvalues[vl]==miny))
canvas_height-=Math.ceil(options.spotRadius);if(options.maxSpotColor||(options.spotColor&&yvalues[vl]==maxy)){canvas_height-=Math.ceil(options.spotRadius);canvas_top+=Math.ceil(options.spotRadius);}
if(options.minSpotColor||options.maxSpotColor&&(yvalues[0]==miny||yvalues[0]==maxy)){canvas_left+=Math.ceil(options.spotRadius);canvas_width-=Math.ceil(options.spotRadius);}
if(options.spotColor||(options.minSpotColor||options.maxSpotColor&&(yvalues[vl]==miny||yvalues[vl]==maxy)))
canvas_width-=Math.ceil(options.spotRadius);}
canvas_height--;if(options.normalRangeMin!=undefined){var ytop=canvas_top+Math.round(canvas_height-(canvas_height*((options.normalRangeMax-miny)/rangey)));var height=Math.round((canvas_height*(options.normalRangeMax-options.normalRangeMin))/rangey);target.drawRect(canvas_left,ytop,canvas_width,height,undefined,options.normalRangeColor);}
var path=[[canvas_left,canvas_top+canvas_height]];for(var i=0;i<yvalues.length;i++){var x=xvalues[i],y=yvalues[i];path.push([canvas_left+Math.round((x-minx)*(canvas_width/rangex)),canvas_top+Math.round(canvas_height-(canvas_height*((y-miny)/rangey)))]);}
if(options.fillColor){path.push([canvas_left+canvas_width,canvas_top+canvas_height-1]);target.drawShape(path,undefined,options.fillColor);path.pop();}
path[0]=[canvas_left,canvas_top+Math.round(canvas_height-(canvas_height*((yvalues[0]-miny)/rangey)))];target.drawShape(path,options.lineColor);if(options.spotRadius&&options.spotColor){target.drawCircle(canvas_left+canvas_width,canvas_top+Math.round(canvas_height-(canvas_height*((yvalues[vl]-miny)/rangey))),options.spotRadius,undefined,options.spotColor);}
if(maxy!=minyval){if(options.spotRadius&&options.minSpotColor){var x=xvalues[yvalues.indexOf(minyval)];target.drawCircle(canvas_left+Math.round((x-minx)*(canvas_width/rangex)),canvas_top+Math.round(canvas_height-(canvas_height*((minyval-miny)/rangey))),options.spotRadius,undefined,options.minSpotColor);}
if(options.spotRadius&&options.maxSpotColor){var x=xvalues[yvalues.indexOf(maxyval)];target.drawCircle(canvas_left+Math.round((x-minx)*(canvas_width/rangex)),canvas_top+Math.round(canvas_height-(canvas_height*((maxyval-miny)/rangey))),options.spotRadius,undefined,options.maxSpotColor);}}}else{this.innerHTML='';}};$.fn.sparkline.bar=function(values,options,width,height){values=$.map(values,Number);var options=$.extend({type:'bar',barColor:'#00f',negBarColor:'#f44',zeroColor:undefined,zeroAxis:undefined,barWidth:4,barSpacing:1,chartRangeMax:undefined,chartRangeMin:undefined,colorMap:{}},options?options:{});var width=(values.length*options.barWidth)+((values.length-1)*options.barSpacing);var max=Math.max.apply(Math,values);var min=Math.min.apply(Math,values);if(options.chartRangeMin!=undefined&&options.chartRangeMin<min){min=options.chartRangeMin;}
if(options.chartRangeMax!=undefined&&options.chartRangeMax>max){max=options.chartRangeMax;}
if(options.zeroAxis==undefined)options.zeroAxis=min<0;var range=max-min==0?1:max-min;var target=$(this).simpledraw(width,height);if(target){var canvas_width=target.pixel_width;var canvas_height=target.pixel_height;var yzero=min<0&&options.zeroAxis?canvas_height-Math.round(canvas_height*(Math.abs(min)/range))-1:canvas_height-1;for(var i=0;i<values.length;i++){var x=i*(options.barWidth+options.barSpacing);var val=values[i];var color=(val<0)?options.negBarColor:options.barColor;if(options.zeroAxis&&min<0){var height=Math.round(canvas_height*((Math.abs(val)/range)))+1;var y=(val<0)?yzero:yzero-height;}else{var height=Math.round(canvas_height*((val-min)/range))+1;var y=canvas_height-height;}
if(val==0&&options.zeroColor!=undefined){color=options.zeroColor;}
if(options.colorMap[val]){color=options.colorMap[val];}
target.drawRect(x,y,options.barWidth-1,height-1,color,color);}}else{this.innerHTML='';}};$.fn.sparkline.tristate=function(values,options,width,height){values=$.map(values,Number);var options=$.extend({barWidth:4,barSpacing:1,posBarColor:'#6f6',negBarColor:'#f44',zeroBarColor:'#999',colorMap:{}},options);var width=(values.length*options.barWidth)+((values.length-1)*options.barSpacing);var target=$(this).simpledraw(width,height);if(target){var canvas_width=target.pixel_width;var canvas_height=target.pixel_height;var half_height=Math.round(canvas_height/2);for(var i=0;i<values.length;i++){var x=i*(options.barWidth+options.barSpacing);if(values[i]<0){var y=half_height;var height=half_height-1;var color=options.negBarColor;}else if(values[i]>0){var y=0;var height=half_height-1;var color=options.posBarColor;}else{var y=half_height-1;var height=2;var color=options.zeroBarColor;}
if(options.colorMap[values[i]]){color=options.colorMap[values[i]];}
target.drawRect(x,y,options.barWidth-1,height-1,color,color);}}else{this.innerHTML='';}};$.fn.sparkline.discrete=function(values,options,width,height){values=$.map(values,Number);var options=$.extend({lineHeight:'auto',thresholdColor:undefined,thresholdValue:0,chartRangeMax:undefined,chartRangeMin:undefined},options);width=options.width=='auto'?values.length*2:width;var interval=Math.floor(width/values.length);var target=$(this).simpledraw(width,height);if(target){var canvas_width=target.pixel_width;var canvas_height=target.pixel_height;var line_height=options.lineHeight=='auto'?Math.round(canvas_height*0.3):options.lineHeight;var pheight=canvas_height-line_height;var min=Math.min.apply(Math,values);var max=Math.max.apply(Math,values);if(options.chartRangeMin!=undefined&&options.chartRangeMin<min){min=options.chartRangeMin;}
if(options.chartRangeMax!=undefined&&options.chartRangeMax>max){max=options.chartRangeMax;}
var range=max-min;for(var i=0;i<values.length;i++){var val=values[i];var x=(i*interval);var ytop=Math.round(pheight-pheight*((val-min)/range));target.drawLine(x,ytop,x,ytop+line_height,(options.thresholdColor&&val<options.thresholdValue)?options.thresholdColor:options.lineColor);}}else{this.innerHTML='';}};$.fn.sparkline.bullet=function(values,options,width,height){values=$.map(values,Number);var options=$.extend({targetColor:'red',targetWidth:3,performanceColor:'blue',rangeColors:['#D3DAFE','#A8B6FF','#7F94FF'],base:undefined},options);width=options.width=='auto'?'4.0em':width;var target=$(this).simpledraw(width,height);if(target&&values.length>1){var canvas_width=target.pixel_width-Math.ceil(options.targetWidth/2);var canvas_height=target.pixel_height;var min=Math.min.apply(Math,values);var max=Math.max.apply(Math,values);if(options.base==undefined){var min=min<0?min:0;}else{min=options.base;}
var range=max-min;for(i=2;i<values.length;i++){var rangeval=parseInt(values[i]);var rangewidth=Math.round(canvas_width*((rangeval-min)/range));target.drawRect(0,0,rangewidth-1,canvas_height-1,options.rangeColors[i-2],options.rangeColors[i-2]);}
var perfval=parseInt(values[1]);var perfwidth=Math.round(canvas_width*((perfval-min)/range));target.drawRect(0,Math.round(canvas_height*0.3),perfwidth-1,Math.round(canvas_height*0.4)-1,options.performanceColor,options.performanceColor);var targetval=parseInt(values[0]);var x=Math.round(canvas_width*((targetval-min)/range)-(options.targetWidth/2));var targettop=Math.round(canvas_height*0.10);var targetheight=canvas_height-(targettop*2);target.drawRect(x,targettop,options.targetWidth-1,targetheight-1,options.targetColor,options.targetColor);}else{this.innerHTML='';}};$.fn.sparkline.pie=function(values,options,width,height){values=$.map(values,Number);var options=$.extend({sliceColors:['#f00','#0f0','#00f']},options);width=options.width=='auto'?height:width;var target=$(this).simpledraw(width,height);if(target&&values.length>1){var canvas_width=target.pixel_width;var canvas_height=target.pixel_height;var radius=Math.floor(Math.min(canvas_width,canvas_height)/2);var total=0;for(var i=0;i<values.length;i++)
total+=values[i];var next=0;if(options.offset){next+=(2*Math.PI)*(options.offset/360);}
var circle=2*Math.PI;for(var i=0;i<values.length;i++){var start=next;var end=next;if(total>0){end=next+(circle*(values[i]/total));}
target.drawPieSlice(radius,radius,radius,start,end,undefined,options.sliceColors[i%options.sliceColors.length]);next=end;}}};function quartile(values,q){if(q==2){var vl2=Math.floor(values.length/2);return values.length%2?values[vl2]:(values[vl2]+values[vl2+1])/2;}else{var vl4=Math.floor(values.length/4);return values.length%2?(values[vl4*q]+values[vl4*q+1])/2:values[vl4*q];}};$.fn.sparkline.box=function(values,options,width,height){values=$.map(values,Number);var options=$.extend({raw:false,boxLineColor:'black',boxFillColor:'#cdf',whiskerColor:'black',outlierLineColor:'#333',outlierFillColor:'white',medianColor:'red',showOutliers:true,outlierIQR:1.5,spotRadius:1.5,target:undefined,targetColor:'#4a2',chartRangeMax:undefined,chartRangeMin:undefined},options);width=options.width=='auto'?'4.0em':width;minvalue=options.chartRangeMin==undefined?Math.min.apply(Math,values):options.chartRangeMin;maxvalue=options.chartRangeMax==undefined?Math.max.apply(Math,values):options.chartRangeMax;var target=$(this).simpledraw(width,height);if(target&&values.length>1){var canvas_width=target.pixel_width;var canvas_height=target.pixel_height;if(options.raw){if(options.showOutliers&&values.length>5){var loutlier=values[0],lwhisker=values[1],q1=values[2],q2=values[3],q3=values[4],rwhisker=values[5],routlier=values[6];}else{var lwhisker=values[0],q1=values[1],q2=values[2],q3=values[3],rwhisker=values[4];}}else{values.sort(function(a,b){return a-b;});var q1=quartile(values,1);var q2=quartile(values,2);var q3=quartile(values,3);var iqr=q3-q1;if(options.showOutliers){var lwhisker=undefined,rwhisker=undefined;for(var i=0;i<values.length;i++){if(lwhisker==undefined&&values[i]>q1-(iqr*options.outlierIQR))
lwhisker=values[i];if(values[i]<q3+(iqr*options.outlierIQR))
rwhisker=values[i];}
var loutlier=values[0];var routlier=values[values.length-1];}else{var lwhisker=values[0];var rwhisker=values[values.length-1];}}
var unitsize=canvas_width/(maxvalue-minvalue+1);var canvas_left=0;if(options.showOutliers){canvas_left=Math.ceil(options.spotRadius);canvas_width-=2*Math.ceil(options.spotRadius);var unitsize=canvas_width/(maxvalue-minvalue+1);if(loutlier<lwhisker)
target.drawCircle((loutlier-minvalue)*unitsize+canvas_left,canvas_height/2,options.spotRadius,options.outlierLineColor,options.outlierFillColor);if(routlier>rwhisker)
target.drawCircle((routlier-minvalue)*unitsize+canvas_left,canvas_height/2,options.spotRadius,options.outlierLineColor,options.outlierFillColor);}
target.drawRect(Math.round((q1-minvalue)*unitsize+canvas_left),Math.round(canvas_height*0.1),Math.round((q3-q1)*unitsize),Math.round(canvas_height*0.8),options.boxLineColor,options.boxFillColor);target.drawLine(Math.round((lwhisker-minvalue)*unitsize+canvas_left),Math.round(canvas_height/2),Math.round((q1-minvalue)*unitsize+canvas_left),Math.round(canvas_height/2),options.lineColor);target.drawLine(Math.round((lwhisker-minvalue)*unitsize+canvas_left),Math.round(canvas_height/4),Math.round((lwhisker-minvalue)*unitsize+canvas_left),Math.round(canvas_height-canvas_height/4),options.whiskerColor);target.drawLine(Math.round((rwhisker-minvalue)*unitsize+canvas_left),Math.round(canvas_height/2),Math.round((q3-minvalue)*unitsize+canvas_left),Math.round(canvas_height/2),options.lineColor);target.drawLine(Math.round((rwhisker-minvalue)*unitsize+canvas_left),Math.round(canvas_height/4),Math.round((rwhisker-minvalue)*unitsize+canvas_left),Math.round(canvas_height-canvas_height/4),options.whiskerColor);target.drawLine(Math.round((q2-minvalue)*unitsize+canvas_left),Math.round(canvas_height*0.1),Math.round((q2-minvalue)*unitsize+canvas_left),Math.round(canvas_height*0.9),options.medianColor);if(options.target){var size=Math.ceil(options.spotRadius);target.drawLine(Math.round((options.target-minvalue)*unitsize+canvas_left),Math.round((canvas_height/2)-size),Math.round((options.target-minvalue)*unitsize+canvas_left),Math.round((canvas_height/2)+size),options.targetColor);target.drawLine(Math.round((options.target-minvalue)*unitsize+canvas_left-size),Math.round(canvas_height/2),Math.round((options.target-minvalue)*unitsize+canvas_left+size),Math.round(canvas_height/2),options.targetColor);}}else{this.innerHTML='';}};if(!Array.prototype.indexOf){Array.prototype.indexOf=function(entry){for(var i=0;i<this.length;i++){if(this[i]==entry)
return i;}
return-1;}}
if($.browser.msie&&!document.namespaces['v']){document.namespaces.add('v','urn:schemas-microsoft-com:vml','#default#VML');}
if($.browser.hasCanvas==undefined){var t=document.createElement('canvas');$.browser.hasCanvas=t.getContext!=undefined;}
var vcanvas_base=function(width,height,target){};vcanvas_base.prototype={init:function(width,height,target){this.width=width;this.height=height;this.target=target;if(target[0])target=target[0];target.vcanvas=this;},drawShape:function(path,lineColor,fillColor){alert('drawShape not implemented');},drawLine:function(x1,y1,x2,y2,lineColor){return this.drawShape([[x1,y1],[x2,y2]],lineColor);},drawCircle:function(x,y,radius,lineColor,fillColor){alert('drawCircle not implemented');},drawPieSlice:function(x,y,radius,startAngle,endAngle,lineColor,fillColor){alert('drawPieSlice not implemented');},drawRect:function(x,y,width,height,lineColor,fillColor){alert('drawRect not implemented');},getElement:function(){return this.canvas;},_insert:function(el,target){$(target).html(el);}};var vcanvas_canvas=function(width,height,target){return this.init(width,height,target);};vcanvas_canvas.prototype=$.extend(new vcanvas_base,{_super:vcanvas_base.prototype,init:function(width,height,target){this._super.init(width,height,target);this.canvas=document.createElement('canvas');if(target[0])target=target[0];target.vcanvas=this;$(this.canvas).css({display:'inline-block',width:width,height:height,verticalAlign:'top'});this._insert(this.canvas,target);this.pixel_height=$(this.canvas).height();this.pixel_width=$(this.canvas).width();this.canvas.width=this.pixel_width;this.canvas.height=this.pixel_height;$(this.canvas).css({width:this.pixel_width,height:this.pixel_height});},_getContext:function(lineColor,fillColor){var context=this.canvas.getContext('2d');if(lineColor!=undefined)
context.strokeStyle=lineColor;context.lineWidth=1;if(fillColor!=undefined)
context.fillStyle=fillColor;return context;},drawShape:function(path,lineColor,fillColor){var context=this._getContext(lineColor,fillColor);context.beginPath();context.moveTo(path[0][0]+0.5,path[0][1]+0.5);for(var i=1;i<path.length;i++){context.lineTo(path[i][0]+0.5,path[i][1]+0.5);}
if(lineColor!=undefined){context.stroke();}
if(fillColor!=undefined){context.fill();}},drawCircle:function(x,y,radius,lineColor,fillColor){var context=this._getContext(lineColor,fillColor);context.beginPath();context.arc(x,y,radius,0,2*Math.PI,false);if(lineColor!=undefined){context.stroke();}
if(fillColor!=undefined){context.fill();}},drawPieSlice:function(x,y,radius,startAngle,endAngle,lineColor,fillColor){var context=this._getContext(lineColor,fillColor);context.beginPath();context.moveTo(x,y);context.arc(x,y,radius,startAngle,endAngle,false);context.lineTo(x,y);context.closePath();if(lineColor!=undefined){context.stroke();}
if(fillColor){context.fill();}},drawRect:function(x,y,width,height,lineColor,fillColor){return this.drawShape([[x,y],[x+width,y],[x+width,y+height],[x,y+height],[x,y]],lineColor,fillColor);}});var vcanvas_vml=function(width,height,target){return this.init(width,height,target);};vcanvas_vml.prototype=$.extend(new vcanvas_base,{_super:vcanvas_base.prototype,init:function(width,height,target){this._super.init(width,height,target);if(target[0])target=target[0];target.vcanvas=this;this.canvas=document.createElement('span');$(this.canvas).css({display:'inline-block',position:'relative',overflow:'hidden',width:width,height:height,margin:'0px',padding:'0px',verticalAlign:'top'});this._insert(this.canvas,target);this.pixel_height=$(this.canvas).height();this.pixel_width=$(this.canvas).width();this.canvas.width=this.pixel_width;this.canvas.height=this.pixel_height;;var groupel='<v:group coordorigin="0 0" coordsize="'+this.pixel_width+' '+this.pixel_height+'"'
+' style="position:absolute;top:0;left:0;width:'+this.pixel_width+'px;height='+this.pixel_height+'px;"></v:group>';this.canvas.insertAdjacentHTML('beforeEnd',groupel);this.group=$(this.canvas).children()[0];},drawShape:function(path,lineColor,fillColor){var vpath=[];for(var i=0;i<path.length;i++){vpath[i]=''+(path[i][0])+','+(path[i][1]);}
var initial=vpath.splice(0,1);var stroke=lineColor==undefined?' stroked="false" ':' strokeWeight="1" strokeColor="'+lineColor+'" ';var fill=fillColor==undefined?' filled="false"':' fillColor="'+fillColor+'" filled="true" ';var closed=vpath[0]==vpath[vpath.length-1]?'x ':'';var vel='<v:shape coordorigin="0 0" coordsize="'+this.pixel_width+' '+this.pixel_height+'" '
+stroke
+fill
+' style="position:absolute;left:0px;top:0px;height:'+this.pixel_height+'px;width:'+this.pixel_width+'px;padding:0px;margin:0px;" '
+' path="m '+initial+' l '+vpath.join(', ')+' '+closed+'e">'
+' </v:shape>';this.group.insertAdjacentHTML('beforeEnd',vel);},drawCircle:function(x,y,radius,lineColor,fillColor){x-=radius+1;y-=radius+1;var stroke=lineColor==undefined?' stroked="false" ':' strokeWeight="1" strokeColor="'+lineColor+'" ';var fill=fillColor==undefined?' filled="false"':' fillColor="'+fillColor+'" filled="true" ';var vel='<v:oval '
+stroke
+fill
+' style="position:absolute;top:'+y+'px; left:'+x+'px; width:'+(radius*2)+'px; height:'+(radius*2)+'px"></v:oval>';this.group.insertAdjacentHTML('beforeEnd',vel);},drawPieSlice:function(x,y,radius,startAngle,endAngle,lineColor,fillColor){if(startAngle==endAngle){return;}
if((endAngle-startAngle)==(2*Math.PI)){startAngle=0.0;endAngle=(2*Math.PI);}
var startx=x+Math.round(Math.cos(startAngle)*radius);var starty=y+Math.round(Math.sin(startAngle)*radius);var endx=x+Math.round(Math.cos(endAngle)*radius);var endy=y+Math.round(Math.sin(endAngle)*radius);var vpath=[x-radius,y-radius,x+radius,y+radius,startx,starty,endx,endy];var stroke=lineColor==undefined?' stroked="false" ':' strokeWeight="1" strokeColor="'+lineColor+'" ';var fill=fillColor==undefined?' filled="false"':' fillColor="'+fillColor+'" filled="true" ';var vel='<v:shape coordorigin="0 0" coordsize="'+this.pixel_width+' '+this.pixel_height+'" '
+stroke
+fill
+' style="position:absolute;left:0px;top:0px;height:'+this.pixel_height+'px;width:'+this.pixel_width+'px;padding:0px;margin:0px;" '
+' path="m '+x+','+y+' wa '+vpath.join(', ')+' x e">'
+' </v:shape>';this.group.insertAdjacentHTML('beforeEnd',vel);},drawRect:function(x,y,width,height,lineColor,fillColor){return this.drawShape([[x,y],[x,y+height],[x+width,y+height],[x+width,y],[x,y]],lineColor,fillColor);}});})(jQuery);// jquery.suggest.js (c) Peter Vulgaris (www.vulgarisoip.com)

(function($){$.suggest=function(input,options){var $input=$(input).attr("autocomplete","off");var $results=$(document.createElement("ul"));var timeout=false;var prevLength=0;var cache=[];var cacheSize=0;$results.addClass(options.resultsClass).appendTo('body');resetPosition();$(window).load(resetPosition).resize(resetPosition);$input.blur(function(){setTimeout(function(){$results.hide()},200);});try{$results.bgiframe();}catch(e){}
if($.browser.mozilla)
$input.keypress(processKey);else
$input.keydown(processKey);function resetPosition(){var offset=$input.offset();$results.css({top:(offset.top+input.offsetHeight)+'px',left:offset.left+'px'});}
function processKey(e){if((/27$|38$|40$/.test(e.keyCode)&&$results.is(':visible'))||(/^13$|^9$/.test(e.keyCode)&&getCurrentResult())||e.keyCode=='13'){if(e.preventDefault)
e.preventDefault();if(e.stopPropagation)
e.stopPropagation();e.cancelBubble=true;e.returnValue=false;switch(e.keyCode){case 38:prevResult();break;case 40:nextResult();break;case 9:case 13:selectCurrentResult();break;case 27:$results.hide();break;}}else if($input.val().length!=prevLength){if(timeout)
clearTimeout(timeout);timeout=setTimeout(suggest,options.delay);prevLength=$input.val().length;if(options.onChange){options.onChange.apply($input[0]);}}}
function suggest(){var q=$.trim($input.val());if(q.length>=options.minchars){cached=checkCache(q);if(cached){displayItems(cached['items']);}else{$.get(options.source,{q:q},function(txt){$results.hide();var items=parseTxt(txt,q);displayItems(items);addToCache(q,items,txt.length);});}}else{$results.hide();}}
function checkCache(q){for(var i=0;i<cache.length;i++)
if(cache[i]['q']==q){cache.unshift(cache.splice(i,1)[0]);return cache[0];}
return false;}
function addToCache(q,items,size){while(cache.length&&(cacheSize+size>options.maxCacheSize)){var cached=cache.pop();cacheSize-=cached['size'];}
cache.push({q:q,size:size,items:items});cacheSize+=size;}
function displayItems(items){if(!items)
return;if(!items.length){$results.hide();return;}
var html='';for(var i=0;i<items.length;i++)
html+='<li>'+items[i]+'</li>';$results.html(html).show();$results.children('li').mouseover(function(){$results.children('li').removeClass(options.selectClass);$(this).addClass(options.selectClass);}).click(function(e){e.preventDefault();e.stopPropagation();selectCurrentResult();});}
function parseTxt(txt,q){var items=[];var tokens=txt.split(options.delimiter);for(var i=0;i<tokens.length;i++){var token=$.trim(tokens[i]);if(token){token=token.replace(new RegExp(q,'ig'),function(q){return'<span class="'+options.matchClass+'">'+q+'</span>'});items[items.length]=token;}}
return items;}
function getCurrentResult(){if(!$results.is(':visible'))
return false;var $currentResult=$results.children('li.'+options.selectClass);if(!$currentResult.length)
$currentResult=false;return $currentResult;}
function selectCurrentResult(){$currentResult=getCurrentResult();if($currentResult){$input.val($currentResult.text());$results.hide();}
if(options.onSelect)
options.onSelect.apply($input[0]);}
function nextResult(){$currentResult=getCurrentResult();if($currentResult)
$currentResult.removeClass(options.selectClass).next().addClass(options.selectClass);else
$results.children('li:first-child').addClass(options.selectClass);}
function prevResult(){$currentResult=getCurrentResult();if($currentResult)
$currentResult.removeClass(options.selectClass).prev().addClass(options.selectClass);else
$results.children('li:last-child').addClass(options.selectClass);}}
$.fn.suggest=function(source,options){if(!source)
return;options=options||{};options.source=source;options.delay=options.delay||100;options.resultsClass=options.resultsClass||'ac_results';options.selectClass=options.selectClass||'ac_over';options.matchClass=options.matchClass||'ac_match';options.minchars=options.minchars||2;options.delimiter=options.delimiter||'\n';options.onSelect=options.onSelect||false;options.onChange=options.onChange||false;options.maxCacheSize=options.maxCacheSize||65536;this.each(function(){new $.suggest(this,options);});return this;};})(jQuery);// jquery.bgiframe.js
/* Copyright (c) 2006 Brandon Aaron (http://brandonaaron.net)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
* and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. */

(function($){$.fn.bgIframe=$.fn.bgiframe=function(s){if($.browser.msie&&/6.0/.test(navigator.userAgent)){s=$.extend({top:'auto',left:'auto',width:'auto',height:'auto',opacity:true,src:'javascript:false;'},s||{});var prop=function(n){return n&&n.constructor==Number?n+'px':n;},html='<iframe class="bgiframe"frameborder="0"tabindex="-1"src="'+s.src+'"'+'style="display:block;position:absolute;z-index:-1;'+
(s.opacity!==false?'filter:Alpha(Opacity=\'0\');':'')+'top:'+(s.top=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+\'px\')':prop(s.top))+';'+'left:'+(s.left=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+\'px\')':prop(s.left))+';'+'width:'+(s.width=='auto'?'expression(this.parentNode.offsetWidth+\'px\')':prop(s.width))+';'+'height:'+(s.height=='auto'?'expression(this.parentNode.offsetHeight+\'px\')':prop(s.height))+';'+'"/>';return this.each(function(){if($('> iframe.bgiframe',this).length==0)
this.insertBefore(document.createElement(html),this.firstChild);});}
return this;};})(jQuery);function LabeledMarker(latlng,opt_opts){this.latlng_=latlng;this.opts_=opt_opts;this.labelText_=opt_opts.labelText||"";this.labelClass_=opt_opts.labelClass||"LabeledMarker_markerLabel";this.labelOffset_=opt_opts.labelOffset||new GSize(0,0);this.clickable_=opt_opts.clickable||true;this.title_=opt_opts.title||"";this.labelVisibility_=true;if(opt_opts.draggable){opt_opts.draggable=false}GMarker.apply(this,arguments)};LabeledMarker.prototype=new GMarker(new GLatLng(0,0));LabeledMarker.prototype.initialize=function(map){GMarker.prototype.initialize.apply(this,arguments);this.map_=map;this.div_=document.createElement("div");this.div_.className=this.labelClass_;this.div_.innerHTML=this.labelText_;this.div_.style.position="absolute";this.div_.style.cursor="pointer";this.div_.title=this.title_;map.getPane(G_MAP_MARKER_PANE).appendChild(this.div_);if(this.clickable_){function newEventPassthru(obj,event){return function(){GEvent.trigger(obj,event)}}var eventPassthrus=['click','dblclick','mousedown','mouseup','mouseover','mouseout'];for(var i=0;i<eventPassthrus.length;i++){var name=eventPassthrus[i];GEvent.addDomListener(this.div_,name,newEventPassthru(this,name))}}};LabeledMarker.prototype.redraw=function(force){GMarker.prototype.redraw.apply(this,arguments);this.redrawLabel_()};LabeledMarker.prototype.redrawLabel_=function(){var p=this.map_.fromLatLngToDivPixel(this.latlng_);var z=GOverlay.getZIndex(this.latlng_.lat());this.div_.style.left=(p.x+this.labelOffset_.width)+"px";this.div_.style.top=(p.y+this.labelOffset_.height)+"px";this.div_.style.zIndex=z};LabeledMarker.prototype.remove=function(){GEvent.clearInstanceListeners(this.div_);if(this.div_.outerHTML){this.div_.outerHTML=""}if(this.div_.parentNode){this.div_.parentNode.removeChild(this.div_)}this.div_=null;GMarker.prototype.remove.apply(this,arguments)};LabeledMarker.prototype.copy=function(){return new LabeledMarker(this.latlng_,this.opts_)};LabeledMarker.prototype.show=function(){GMarker.prototype.show.apply(this,arguments);if(this.labelVisibility_){this.showLabel()}else{this.hideLabel()}};LabeledMarker.prototype.hide=function(){GMarker.prototype.hide.apply(this,arguments);this.hideLabel()};LabeledMarker.prototype.setLatLng=function(latlng){this.latlng_=latlng;GMarker.prototype.setLatLng.apply(this,arguments);this.redrawLabel_()};LabeledMarker.prototype.setLabelVisibility=function(visibility){this.labelVisibility_=visibility;if(!this.isHidden()){if(this.labelVisibility_){this.showLabel()}else{this.hideLabel()}}};LabeledMarker.prototype.getLabelVisibility=function(){return this.labelVisibility_};LabeledMarker.prototype.hideLabel=function(){this.div_.style.visibility='hidden'};LabeledMarker.prototype.showLabel=function(){this.div_.style.visibility='visible'};