/**********************************
 * GeoImpress - v1.5 - gi.js
 * copyright by Hoelle Development e.U., Thomas Teufel, 2009
 * office@hoelle.net
 **********************************/

google.load("maps","2.x");var addTweets,addTweet,controls=new Array(),printError,findCircle;$(document).ready(function(){var w=$("div#g_map"),F=$("div#map_close"),D=$("head").get(0),b=$("div#content"),B=$("div#precision"),E=B.find("div#precision_slider"),h,Y,v,l=B.find("div#refresh"),al=$("div#service select#services"),aj=$("div#extras"),e=$("div#extras_open"),ai=$("form.address_search"),O=$("a.random"),q=$("div#homelocation"),G=$("div#twitter_bird"),M=G.find("a"),af=al.find("option").get(0).value,N=al.find("option").get(1).value,d=$.ajax(),s=$.ajax(),c=new google.maps.ClientGeocoder(),L,W,A=parseInt(w.css("height")),ac=50,R,T=new Array(G_NORMAL_MAP,G_SATELLITE_MAP,G_HYBRID_MAP,G_PHYSICAL_MAP),aa=null,I=null,f,ad,ak,i,k=null,g,an=ai.find("input#address").val(),p,aq,ab=(navigator.userAgent.indexOf("IE")==-1),Q=250,a=4000,o=Math.floor((new Date().getTime())/60000)-100,ar,j=new Array(),n=-1,S=0,m=0,ap=13,U=20,u=1000,H=false;function ah(){W=w.html();L=new google.maps.Map2(w.get(0),{backgroundColor:$("div#box").css("backgroundColor"),mapTypes:T});L.setCenter(new google.maps.LatLng(25,15),2);controls.largeMap=new google.maps.LargeMapControl();controls.smallMap=new google.maps.SmallMapControl();controls.overviewMap=new google.maps.OverviewMapControl();controls.scale=new google.maps.ScaleControl();controls.mapType=new google.maps.MapTypeControl();controls.menuMapType=new google.maps.MenuMapTypeControl();L.addControl(controls.largeMap);L.addControl(controls.scale);L.addControl(controls.menuMapType);L.enableScrollWheelZoom();google.maps.Event.addListener(L,"click",function(au,av,at){if(av){aa=av;C();}});google.maps.Event.addListener(L,"zoomend",function(au,at){ae();});google.maps.Event.addListener(L,"dragstart",function(){ae();});google.maps.Event.addListener(L,"maptypechanged",function(){ae();});if(google.loader.ClientLocation!=null){k=new google.maps.LatLng(google.loader.ClientLocation.latitude,google.loader.ClientLocation.longitude);g=google.loader.ClientLocation.address.country+"/"+google.loader.ClientLocation.address.region+"/"+google.loader.ClientLocation.address.city;q.fadeIn(Q);aj.append('<div class="sep"></div><a href="#" class="extra_link home">Focus home location</a></li>');aj.find("a.home").click(function(at){y();at.preventDefault();});}if(useStartLocation){aa=new google.maps.LatLng(sLat,sLng);L.setZoom(sZoom);x();C();}w.append(W);w.find("div:first").append('<div id="precision_layer"><div id="precision_circle"><img src="img/precision_circle.png" /></div></div>');h=w.find("div:first div#precision_layer");Y=h.find("div#precision_circle");v=Y.find("img");}e.click(function(at){aj.slideDown(Q);e.fadeOut(Q);});aj.find("a.closer").click(function(at){aj.slideUp(Q);e.fadeIn(Q);at.preventDefault();});ai.submit(function(at){if(ai.find("input#address").val()!=""){c.getLatLng(ai.find("input#address").val(),function(au){if(!au){printError("nolocation");}else{aa=au;L.setZoom(11);x();C();}});}else{printError("noaddress");}at.preventDefault();});ai.find("input#address").focus(function(at){if(ai.find("input#address").val()==an){ai.find("input#address").get(0).select();}});ai.find("input#address").blur(function(at){if(ai.find("input#address").val()==""){ai.find("input#address").val(an);}});O.click(function(at){am();J();d=$.ajax({url:"getrandomloc.php",type:"POST",dataType:"json",error:function(aw,av,au){printError("load");},success:function(au){if(au.error=="0"){aa=new google.maps.LatLng(au.lat,au.lng);E.slider("value",50);l.hide();L.setZoom(11);x();C();}else{printError("load");}}});at.preventDefault();});F.click(function(at){r();});function y(){q.fadeOut(Q);aa=k;L.setZoom(10);x();C();}q.find("a:not(a.closer)").click(function(at){y();at.preventDefault();});q.find("a.closer").click(function(at){q.fadeOut(Q);at.preventDefault();});function C(){am();J();L.clearOverlays();L.addOverlay(new google.maps.Marker(aa));if(al.val()==af){ag(aa,ao());M.get(0).href="http://www.geoimpress.com/twitterlocation.php?lt="+aa.lat()+"&ln="+aa.lng()+"&z="+L.getZoom()+"&p="+E.slider("value");G.fadeIn(Q);}else{if(al.val()==N){z(aa);}}}function J(){d.abort();window.clearInterval(H);b.empty();b.html('<div id="loader"></div>');b.find("div#loader").stop().animate({width:"100%"},{duration:a});r();}function x(){L.checkResize();L.setCenter(aa);}function Z(){if(window.innerHeight){return window.innerHeight;}else{if(window.document.documentElement&&window.document.documentElement.clientHeight){return window.document.documentElement.clientHeight;}else{return window.document.body.offsetHeight;}}}function am(){aj.slideUp(Q);e.fadeIn(Q);q.fadeOut(Q);}function r(){K(ac);}function ae(){K(100);}function K(at){if(at==100){L.removeControl(controls.smallMap);L.addControl(controls.largeMap);F.fadeIn(Q);}else{L.removeControl(controls.largeMap);L.addControl(controls.smallMap);F.fadeOut(Q);}R=String(Math.floor(A*at/100))+"px";w.stop().animate({height:R},{duration:200});}M.click(function(at){if(!aa||al.val()!=af){at.preventDefault();}});$("a[href^='#?p']").click(function(at){J();aq=at.target.href.substring(at.target.href.indexOf("=")+1);d=$.ajax({url:"getpage.php",type:"POST",data:"page="+aq,dataType:"json",error:function(aw,av,au){printError("load");},success:function(au){if(aq!=au.html){b.html('<div id="text">'+au.html+"</div>");$.getScript("http://www.geoimpress.com/_test/js/page/"+aq+".js");}else{printError("load");}}});at.preventDefault();});$("div#refresh a").click(function(at){C();at.preventDefault();});al.change(function(at){if(al.val()==af){B.fadeIn(Q);if(aa){G.fadeIn(Q);}}else{B.fadeOut(Q);G.fadeOut(Q);}if(aa!=null){C();}}).change();function ao(){return parseFloat(E.slider("value"))/100;}function ag(az,au){l.fadeOut(Q);var av=Math.floor(parseInt(b.css("width"))/106);var ay=Math.floor((parseInt(Z())-(A*ac/100)-parseInt($("div#header").css("height"))-60)/81);var at=(k!=null&&az.lat()==k.lat()&&az.lng()==k.lng()?"&hl=1":"");var aw="getpics.php",ax="lat="+az.lat()+"&lon="+az.lng()+"&z="+au+"&ppr="+av+"&rws="+ay+at;d=$.ajax({url:aw,type:"POST",data:ax,dataType:"json",error:function(aC,aB,aA){printError("load");},success:function(aA){if(aA.error=="0"){b.html(aA.html);$(function(aB){aB("a[rel^='lightbox']").slimbox({overlayOpacity:0.8,easing:"easeOutElastic"},null,function(aC){return(this==aC)||((this.rel.length>8)&&(this.rel==aC.rel));});});}else{printError("load");}}});}E.slider({animate:true,range:"min",min:0,max:100,step:0.5,value:(useStartLocation?sPrecision:50),start:function(au,at){if(aa!=null){I=L.fromLatLngToContainerPixel(aa);}else{I=new google.maps.Point(L.getSize().width/2,L.getSize().height/2);}if(ab){h.fadeIn(Q/2);}else{h.show();}X();},stop:function(au,at){if(ab){h.fadeOut(Q);}else{h.hide();}},slide:function(au,at){X();},change:function(au,at){l.show();}});function V(){f=L.getBounds().toSpan().lat()*111.32;ad=L.getSize().height/L.getBounds().toSpan().lat();ak=L.getSize().height/f;return Math.max(100-parseFloat(E.slider("value")),1/32*100)/100*32*ak;}function X(){i=V();v.css("width",i*2);v.css("height",i*2);Y.css("left",I.x);Y.css("top",I.y);Y.css("margin-left",-i);Y.css("margin-top",-i);}$("div#morethoughts a").live("click",function(at){$(this).fadeOut(Q);P();});function z(au){var at=new google.maps.ClientGeocoder();at.getLocations(au,function(av){if(!av||av.Status.code!=200){switch(av.Status.code){case G_GEO_SERVER_ERROR:printError("nolocation");break;case G_GEO_MISSING_ADDRESS:printError("noaddress");break;case G_GEO_UNKNOWN_ADDRESS:printError("nolocation");break;case G_GEO_UNAVAILABLE_ADDRESS:printError("nolocation");break;case G_GEO_TOO_MANY_QUERIES:printError("gmqueryoverload");break;default:printError("load");break;}}else{place=av.Placemark[0];currentPlace=place.address.split(", ").join("/").split(/[0-9]/g).join("").split(/^\s+|\s+$/g).join("").split(/\s*\/\s*/g).join("/");if(currentPlace.match(/\//g).length>=2){p=currentPlace.split("/");while(p.length>2){p.shift();}currentPlace=p.join("/");}t("");}});}function t(aw){var at="http://search.twitter.com/search.json",av='callback=addTweets&q="'+currentPlace.replace(/\//g,'"+OR+"')+'"+-filter%3Alinks&lang=all&rpp='+(ap*U)+"&since="+aw,au=document.createElement("script");ar=currentPlace.split("/");au.type="text/javascript";au.src=at+"?"+av;D.appendChild(au);}addTweets=function(at){b.empty();b.prepend('<div id="morethoughts"><a href="#" style="display:none;">more Thoughts?</a></div>');S=m=0;o=at.max_id;j=at.results;n=at.results.length-1;window.clearInterval(H);H=window.setInterval("addTweet()",u);};function P(){r();S=0;window.clearInterval(H);H=window.setInterval("addTweet()",u);}addTweet=function(){if(--n>=0&&S<ap){var aA=j[n].text,ax,aC,av,aD,ay,az,aB,aE,at;ax=aA.toLowerCase();for(var au=0;au<ar.length;au++){var aw=ar[au];aC=aw.toLowerCase();av=ax.indexOf(aC);while(av>-1){aA=aA.substring(0,av)+'<span class="keyword">'+aw+"</span>"+aA.substring(av+aw.length);ax=aA.toLowerCase();av=ax.indexOf(aC,ax.indexOf("</span>",av));}}if(m>=ap){b.find("p.tweet:last").remove();m--;}j[n].text=aA;b.prepend('<p class="tweet" style="display:none;">'+j[n].text+"</p>");b.find("p.tweet:hidden").stop().slideDown(800);S++;m++;}else{window.clearInterval(H);if(n>-1){$("div#morethoughts a").fadeIn(Q);}else{if(j.length>0){b.prepend('<div id="morethoughts">These are the most recent thoughts for the target.</div>');}else{printError("nothoughts");}}}};printError=function(at){var au="";switch(at){case"load":au='<p class="error">Sorry, an error occurred while loading the content.<br />Please try again.</p>';break;case"gmqueryoverload":au='<p class="error">Sorry, there have been to many requests one after another.</p>';break;case"nolocation":au='<p class="error">Sorry, could not find the specified location.<br />Please try again somewhere else.</p>';break;case"noaddress":au='<p class="error">Please fill the search field with an address<br /> if you want to use the address search.</p>';break;case"nothoughts":au='<p class="error">Sorry, there are no thoughts for this area.</p>';break;default:break;}b.html(au);};google.setOnLoadCallback(ah);});