google.load("gdata","1.x");google.setOnLoadCallback(initializeServices);var svc;var map;var scope="http://www.google.com/m8/feeds";var max_contacts_allowed=200;var contacts_per_request=10;function initializeServices(){addDebug("Initialize Services");Event.observe("googlecontactsmap-signin-button","click",accountSignIn);Event.observe("googlecontactsmap-signout-button","click",accountSignOut);svc=new google.gdata.contacts.ContactsService("googlecontactsmap-1.1");if(GBrowserIsCompatible()){map=new GMap2($("googlecontactsmap-canvas"));map.setCenter(new GLatLng(32.879587,13.183594),2);map.enableScrollWheelZoom();map.addMapType(G_PHYSICAL_MAP);map.setMapType(G_PHYSICAL_MAP);map.addControl(new GSmallMapControl());map.addControl(new GMapTypeControl());if(google.accounts.user.checkLogin(scope)){addDebug("User is signed in");$("googlecontactsmap-signin").hide();$("googlecontactsmap-signout").show();$("googlecontactsmap-canvas").show();$("googlecontactsmap-debugtoogle").hide();$("googlecontactsmap-debug").hide();parseContacts()}else{addDebug("User is signed out");$("googlecontactsmap-signin").show();$("googlecontactsmap-signout").hide();$("googlecontactsmap-canvas").show();$("googlecontactsmap-debugtoogle").hide();$("googlecontactsmap-debug").hide()}}else{addDebug("Browser not compatible");alert("Failed: Browser not compatible")}}function createMarker(e,c,b,g,d){var a=new GMarker(new GLatLng(g,d));var f="<b>"+e+"</b>";if(c!=""){f+="<br><a href='mailto:"+c+"'>"+c+"</a>"}f+="<br>"+b;GEvent.addListener(a,"click",function(){a.openInfoWindowHtml(f)});map.addOverlay(a)}function accountSignIn(){addDebug("User signed in");google.accounts.user.login(scope)}function accountSignOut(){addDebug("User signed out");google.accounts.user.logout();map.clearOverlays();$("googlecontactsmap-signin").show();$("googlecontactsmap-signout").hide();$("googlecontactsmap-canvas").show();$("googlecontactsmap-debugtoogle").hide();$("googlecontactsmap-debug").hide()}function addDebug(e){var b=new Date();var d=b.getHours();var a=(b.getMinutes()<10)?("0"+b.getMinutes()):b.getMinutes();var c=(b.getSeconds()<10)?("0"+b.getSeconds()):b.getSeconds();$("googlecontactsmap-debug").innerHTML+=d+":"+a+":"+c+" - "+e+"<br>"}function toogleDebug(){if($("googlecontactsmap-debug").visible()){$("googlecontactsmap-debug").hide()}else{$("googlecontactsmap-debug").show()}}function parseContacts(){addDebug("Start parsing contacts");map.clearOverlays();$("googlecontactsmap-loading").show();var b=function(l){$("googlecontactsmap-total").innerHTML=l.feed.entry.length;addDebug(l.feed.entry.length+" contacts found");var c="type=google";var k=c;var g=0;var e=0;var d=0;var h=0;var j=0;for(var f=0;f<l.feed.entry.length;f++){if(l.feed.entry[f].getPostalAddresses().length>0&&e<max_contacts_allowed){$("googlecontactsmap-address").innerHTML=++e;k+="&arg"+g+"="+f;k+="&address"+g+"="+encodeURI(l.feed.entry[f].getPostalAddresses()[0].getValue().replace("\n",", "));g++}if(g==contacts_per_request||f==l.feed.entry.length-1){addDebug("Submit request with "+g+" contacts");new Ajax.Request("/fileadmin/utilities/geocoding.php",{method:"post",postBody:k,asynchronous:true,onComplete:function(o){var n=o.responseXML.getElementsByTagName("response");for(var s=0;s<n.length;s++){if(n[s].getAttribute("status")=="200"){var t=n[s].getAttribute("arg");var i=l.feed.entry[t].getTitle().getText();var m=l.feed.entry[t].getEmailAddresses().length>0?l.feed.entry[t].getEmailAddresses()[0].getAddress():"";var r=l.feed.entry[t].getPostalAddresses()[0].getValue().replace('\n','<br>');var p=n[s].getAttribute("lat");var q=n[s].getAttribute("lng");createMarker(i,m,r,p,q);$("googlecontactsmap-success").innerHTML=parseInt($("googlecontactsmap-success").innerHTML)+1}else{j++}}addDebug("Response received with "+n.length+" contacts");if(++h==d){$("googlecontactsmap-loading").hide();addDebug("Finished, "+d+" requests sent ("+j+" errors)")}}});d++;k=c;g=0}}};var a=new google.gdata.contacts.ContactQuery("http://www.google.com/m8/feeds/contacts/default/full");a.setMaxResults(10000);svc.getContactFeed(a,b,function(c){addDebug(c)})};