var alreadyrunflag;function camaoAdsense(){var ads={callcount:0,recived:[],noAds:{container:[],element:[]},futureCalls:[]};var fallbacks={language:"de"};var settings={codierung:"utf8",usedTemplates:[false,false,false,false,false],usedTemplatesPartType:[false,false,false,false,false],lastdoubleclicksurl:"",domReady:false,defaultTemplate:1,hoverclass:"adsenseItemOver"};var blockedAdsense=false;var singleAdRequest=false;var activeAdsenseLoop=1;var errorLog="";this.init=function(options){try{useddoc=this.getDocumentHandler();ads.options=options;if(ads.options.allow_fallback==false){ads.options.allow_fallback=false}else{this.debug("Activating Fallback");ads.options.allow_fallback=true}ads.options.language=fallbacks.language;this.debug("init : Set Language to "+ads.options.language);this.getNextAdsense();this.createOnloadEvent();return true}catch(e){return false}};this.createOnloadEvent=function(){if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){alreadyrunflag=1;camaoAdsenseObj.domReadyEvent()},false)}else{if(document.all&&!window.opera){document.write('<script type="text/javascript" id="contentloadtag" defer="defer" src="javascript:void(0)"><\/script>');var contentloadtag=document.getElementById("contentloadtag");contentloadtag.onreadystatechange=function(){if(this.readyState=="complete"){alreadyrunflag=1;camaoAdsenseObj.domReadyEvent()}}}}if(window.onload!=undefined){oldOnload=window.onload}window.onload=function(){setTimeout("if (!alreadyrunflag) camaoAdsenseObj.domReadyEvent()",0);oldOnload()}};this.getNextAdsense=function(){eval("part = ads.options.part"+activeAdsenseLoop+" || false;");if(part!=false){this.debug("getNextAdsense : Using this Part :");this.debug("######");this.debug(part);this.debug("######");part.fallback=false;blockedAdsense=true;this.createDefaultScript(part);this.createCallScript(part);this.getAdsense();activeAdsenseLoop++}if(ads.futureCalls.length>0){blockedAdsense=true;this.debug("getNextAdsense : Found a call outside the Parts:");part=ads.futureCalls[0];this.createDefaultScript(part);this.createCallScript(part);this.getAdsense();ads.futureCalls.shift()}};this.domReadyEvent=function(){this.createUsedTemplates();this.insertAdsense();settings.domReady=true};this.createDefaultScript=function(part){adtype=part.type||"afc";if(part.fallback==false){ads.output="\n<script type='text/javascript'>"}else{ads.output=""}if(ads.options.debug){ads.output+="\ngoogle_adtest = 'ON';"}ads.output+="\ngoogle_ad_output = 'js'";ads.output+="\ngoogle_feedback = 'on';";ads.output+="\ngoogle_language = '"+ads.options.language+"';";ads.output+="\ngoogle_encoding = '"+settings.codierung+"';";ads.output+="\ngoogle_afs_client = '"+ads.options.pubid+"';";ads.output+="\ngoogle_afs_oe = '"+settings.codierung+"';";ads.output+="\ngoogle_afs_hl = '"+ads.options.language+"';";ads.output+="\ngoogle_afs_gl = '"+ads.options.language+"';";ads.output+="\ngoogle_afs_adsafe = 'high';";if(part.fallback==false){ads.output+="\n<\/script>"}};this.createCallScript=function(part){adtype=part.type||"afc";if(part.fallback==false){ads.output+="\n<script type='text/javascript'>"}if(part.hints){ads.output+="\ngoogle_hints = '"+part.hints+"';"}else{if(ads.options.hints){ads.output+="\ngoogle_hints = '"+ads.options.hints+"';"}}if(part.skip){ads.output+="\ngoogle_skip = '"+part.skip+"';"}if(part.channel){ads.output+="\ngoogle_afs_channel = '"+part.channel+"';"}else{if(ads.options.channel){ads.output+="\ngoogle_afs_channel = '"+ads.options.channel+"';"}}if(part.howmany){ads.output+="\ngoogle_afs_ad = 'w"+(part.howmany)+"';"}else{ads.output+="\ngoogle_afs_ad = 'w"+(part.container.length)+"';"}if(part.keyword){ads.output+="\ngoogle_afs_query = '"+part.keyword+"';"}else{if(ads.options.keyword){ads.output+="\ngoogle_afs_query = '"+ads.options.keyword+"';"}else{this.debug("createCallScript : Warning, you cant use AFS without Keyword!")}}if(part.fallback==false){ads.output+="\n<\/script>"}ads.output+='\n<script language="javascript" src="http://www.google.com/afsonline/show_afs_ads.js"><\/script>'};this.createUsedTemplates=function(){for(i=0;i<10;i++){eval("part = ads.options.part"+i+" || false;");if(part!=false){if(ads.options.template){settings.usedTemplates[ads.options.template]=true}for(x=0;x<part.container.length;x++){element=part.container[x];for(var template in element){if(template=="template"){settings.usedTemplates[eval("element."+template)]=true;settings.usedTemplatesPartType[eval("element."+template)]=part.type}}if(part.template){settings.usedTemplates[part.template]=true;if(part.type){settings.usedTemplatesPartType[part.template]=part.type}else{settings.usedTemplatesPartType[part.template]=ads.options.type}}}}}foundActiveTemplate=false;for(i=0;i<settings.usedTemplates.length;i++){if(settings.usedTemplates[i]!=false){foundActiveTemplate=true}}if(foundActiveTemplate==false){settings.usedTemplates[settings.defaultTemplate]=true}for(i=0;i<settings.usedTemplates.length;i++){if(settings.usedTemplates[i]!=false){code=this.getTemplate(i);this.debug("createUsedTemplates : Write Template Code ("+i+")");useddoc=this.getDocumentHandler();newdiv=document.createElement("DIV");newdiv.innerHTML=code;try{useddoc.appendChild(newdiv)}catch(e){useddoc.firstChild.appendChild(newdiv)}}}};this.getAdsense=function(){document.write(ads.output)};this.reciveAdsense=function(google_ads){blockedAdsense=false;this.debug("reciveAdsense : Reciving Adsense for Part"+ads.callcount+"");this.debug("######");this.debug(google_ads);this.debug("######");partLength=1;eval("part = ads.options.part"+(ads.callcount+1)+" || false;");if(part){partLength=part.container.length}if(singleAdRequest==false){if(google_ads.length==0){this.debug("reciveAdsense : No Ads recived for Part"+ads.callcount+"");if(camaoIndexOf(ads.noAds.container,ads.callcount)==-1){ads.noAds.container.push(ads.callcount)}}else{if(google_ads.length!=partLength){this.debug("reciveAdsense : Not all Adsense recived for Part"+ads.callcount+", missed "+(partLength-google_ads.length)+" ads");if(ads.noAds.container){if(camaoIndexOf(ads.noAds.container,ads.callcount)!==-1){ads.noAds.container[camaoIndexOf(ads.noAds.container,ads.callcount)]=-1}}if(camaoIndexOf(ads.noAds.element,ads.callcount)==-1){info={callcount:ads.callcount,missing:partLength-google_ads.length,targets:[],ads:[]};ads.noAds.element.push(info)}ads.recived.push({ads:google_ads,callcount:ads.callcount})}else{this.debug("reciveAdsense : All Adsense recived for Part"+ads.callcount+"):");if(ads.noAds.container){if(camaoIndexOf(ads.noAds.container,ads.callcount)!==-1){ads.noAds.container[camaoIndexOf(ads.noAds.container,ads.callcount)]=-1}}ads.recived.push({ads:google_ads,callcount:ads.callcount})}}ads.callcount=ads.callcount+1}else{if(google_ads.length==0){this.debug("reciveAdsense : No Ads recived for Part"+ads.callcount+"")}else{if(google_ads.length!=singleAdRequest){this.debug("reciveAdsense : Not all Adsense recived for Part"+ads.callcount+", missed "+(singleAdRequest-google_ads.length)+" ads");for(var i=0;i<ads.noAds.element.length;i++){node=ads.noAds.element[i];if(node.callcount==ads.callcount){node.ads.push(google_ads)}}}else{this.debug("reciveAdsense : All missed Adsense recived for Part"+ads.callcount+"):");if(ads.noAds.element){if(camaoIndexOf(ads.noAds.element,ads.callcount)!==-1){ads.noAds.container[camaoIndexOf(ads.noAds.container,ads.callcount)]=-1}}for(var i=0;i<ads.noAds.element.length;i++){node=ads.noAds.element[i];if(node.callcount==ads.callcount){node.ads.push(google_ads)}}ads.recived.push({ads:google_ads,callcount:ads.callcount})}}ads.callcount=ads.callcount+1}if(settings.domReady==true){this.insertAdsense()}};this.insertAdsense=function(){if(ads.options.allow_fallback==true){document.write=function(param){camaoAdsenseObj.document_write_overload(param)}}this.debug("insertAdsense : Inserting Adsense...");readyForClean=[];ads.useTemplateNumber="";if(ads.recived.length>0){for(var i=0;i<ads.recived.length;i++){recived=ads.recived[i];eval("part = ads.options.part"+(recived.callcount+1)+" || false;");if(part!=false){if(ads.options.template){ads.useTemplateNumber=ads.options.template}for(var x=0;x<part.container.length;x++){element=part.container[x];if(part.template){ads.useTemplateNumber=part.template}for(var target in element){if(target=="template"){ads.useTemplateNumber=eval("element."+target)}else{if(ads.useTemplateNumber==""){ads.useTemplateNumber=settings.defaultTemplate}if(singleAdRequest==false){node=document.getElementById(target);if(recived.ads.length!=0){if(node){if(recived.ads[x]){this.createAdsenseContext(node,recived.ads[x],ads.useTemplateNumber)}else{this.debug("insertAdsense : Missing ad for  : "+target);for(var z=0;z<ads.noAds.element.length;z++){noadelement=ads.noAds.element[z];if(noadelement.callcount==recived.callcount){noadelement.targets.push(target)}}}}else{this.debug("insertAdsense : Unknown Target ID : "+target)}}useTemplateNumber=""}else{for(var m=0;m<ads.noAds.element.length;m++){singleAd=ads.noAds.element[m];if(singleAd.callcount==recived.callcount){for(var n=0;n<singleAd.targets.length;n++){singleTarget=singleAd.targets[n];if(singleTarget==target){this.debug("insertAdsense : Single Target found : "+target);if(singleAd.ads[0][n]){this.createAdsenseContext(document.getElementById(target),singleAd.ads[0][n],ads.useTemplateNumber);if(camaoIndexOf(readyForClean,m)==-1){readyForClean.push(m)}}else{this.debug("insertAdsense : No Adsense found for Single Target : "+target+", bug?!")}}}}}}}}}}}}else{this.debug("insertAdsense : No normal ads found, looking for missed ads : ");for(var m=0;m<ads.noAds.element.length;m++){singleAd=ads.noAds.element[m];for(var n=0;n<singleAd.targets.length;n++){singleTarget=singleAd.targets[n];node=document.getElementById(singleTarget);this.debug("insertAdsense : Single Target found : "+singleTarget);if(singleAd.ads[0][n]){this.createAdsenseContext(node,singleAd.ads[0][n],this.getTemplateIDByPart(singleAd.callcount));if(camaoIndexOf(readyForClean,m)==-1){readyForClean.push(m)}}else{this.debug("insertAdsense : No Adsense found for Single Target : "+singleTarget+", bug?!");if(node.innerHTML==""){node.parentNode.removeChild(node)}}}}}for(var m=0;m<readyForClean.length;m++){ads.noAds.element[readyForClean[m]]=-1}ads.recived=new Array();if(this.countParts()==ads.callcount){for(var i=0;i<ads.noAds.container.length;i++){noAd=ads.noAds.container[i];if(noAd!=-1){eval("part = ads.options.part"+(noAd+1)+" || false;");if(part!=false){this.debug("insertAdsense : No Adsense recived for Part"+(noAd));if((part.fallback_keyword)&&(ads.options.allow_fallback==true)){this.debug("insertAdsense : Using fallback keyword "+part.fallback_keyword);ads.callcount=0;part.keyword=part.fallback_keyword;part.fallback_keyword="";part.fallback=true;ads.futureCalls.push(part);if(blockedAdsense==false){this.getNextAdsense()}}else{for(var x=0;x<part.container.length;x++){element=part.container[x];for(var target in element){if(target!="template"){node=document.getElementById(target);fallback_html=eval("part.container[x]."+target+".fallback_html");if(fallback_html){this.debug("insertAdsense : Using fallback HTML");node.innerHTML=fallback_html}else{this.debug("insertAdsense : No Fallback found, remove element ("+target+")");mainContainer=this.up(node,"adsenseContainer");if(mainContainer){found=false;if(/(adsense([0-9]+))\">(.*){1,}[^\s]<\/div>/.test(mainContainer.innerHTML.toLowerCase())==true){this.debug("insertAdsense : Remove only Element");node.parentNode.removeChild(node)}else{this.debug("insertAdsense : Remove complete container");mainContainer.parentNode.removeChild(mainContainer)}}else{this.debug("insertAdsense : Cant remove element, doesnt find the main class adsenseContainer")}}}}}}}}}for(var i=0;i<ads.noAds.element.length;i++){noAd=ads.noAds.element[i];eval("part = ads.options.part"+(noAd.callcount+1)+" || false;");if(part!=false){this.debug("insertAdsense : Missing "+noAd.missing+" adsense for Part"+(noAd.callcount));if((part.fallback_keyword)&&(ads.options.allow_fallback==true)){this.debug("insertAdsense : Using fallback keyword "+part.fallback_keyword);ads.callcount=0;part.keyword=part.fallback_keyword;part.fallback_keyword="";part.fallback=true;part.howmany=noAd.missing;singleAdRequest=noAd.missing;ads.futureCalls.push(part);if(blockedAdsense==false){this.getNextAdsense()}}else{for(var y=0;y<noAd.targets.length;y++){target=noAd.targets[y];for(var x=0;x<part.container.length;x++){element=part.container[x];for(var singleTarget in element){if(singleTarget==target){fallback_html=eval("part.container[x]."+target+".fallback_html");node=document.getElementById(target);if(fallback_html){this.debug("insertAdsense : Using fallback HTML for  + target + ");node.innerHTML=fallback_html}else{mainContainer=this.up(node,"adsenseContainer");if(mainContainer){this.debug("insertAdsense : No Fallback found, remove element ("+target+")");found=false;if(/(adsense([0-9]+))\">(.*){1,}[^\s]<\/div>/.test(mainContainer.innerHTML.toLowerCase())==true){this.debug("insertAdsense : Remove only Element");node.parentNode.removeChild(node)}else{this.debug("insertAdsense : Remove complete container");mainContainer.parentNode.removeChild(mainContainer)}}else{this.debug("insertAdsense : Cant remove element, doesnt find the main class adsenseContainer")}}}}}}}}}}};this.document_write_overload=function(param){quelle=false;useddoc=this.getDocumentHandler();this.debug("document_write_overload : Recive Code : ");this.debug(param);if(camaoIndexOf(param,"google_ad_output")!==-1){parts_tmp1=param.split("<script");jscode=parts_tmp1[0];eval(jscode);parts_tmp1=param.split('src="');parts_tmp2=parts_tmp1[1].split('"');quelle=parts_tmp2[0]}else{if(camaoIndexOf(param,"googlesyndication.com")!==-1){parts_tmp1=param.split('src="');parts_tmp2=parts_tmp1[1].split('"');quelle=parts_tmp2[0]}else{if(camaoIndexOf(param,"google_protectAndRun")!==-1){parts_tmp1=param.split("<script>");parts_tmp2=parts_tmp1[1].split("</");jscode=parts_tmp2[0];eval(jscode)}else{if(camaoIndexOf(param,"googleads.g.doubleclick.net")!==-1){parts_tmp1=param.split('src="');parts_tmp2=parts_tmp1[1].split('"');quelle=parts_tmp2[0]}else{if(camaoIndexOf(param,"www.google.com")!==-1){parts_tmp1=param.split('src="');parts_tmp2=parts_tmp1[1].split('"');quelle=parts_tmp2[0]}else{this.debug("document_write_overload : Unknown string recived : "+param)}}}}}if(quelle!=false){if(quelle!=settings.lastdoubleclicksurl){settings.lastdoubleclicksurl=quelle;var jslink=document.createElement("script");jslink.setAttribute("type","text/javascript");jslink.setAttribute("src",quelle);useddoc.appendChild(jslink)}}};this.countParts=function(){found=0;for(var i=0;i<10;i++){eval("part = ads.options.part"+(i+1)+" || false;");if(part!=false){found++}}return found};this.getTemplateIDByPart=function(part){eval("part = ads.options.part"+(part+1)+" || false;");if(part!=false){return part.template}};this.createAdsenseContext=function(target,ad,templateNumber){this.debug("createAdsenseContext : Inserting Ads for Target : "+target.id);usedTemplate=document.getElementById("adsense_template_"+templateNumber);if(usedTemplate){cloned=usedTemplate.cloneNode(true);cloned.id="";for(var x=0;x<15;x++){ad.url=ad.url.replace("&amp;","&")}this.select(cloned,"adsense-visible_url")[0].innerHTML=ad.line1;this.select(cloned,"adsense-url")[0].href=ad.url;this.select(cloned,"adsense-url")[0].target="_blank";this.select(cloned,"adsense-line2")[0].innerHTML=ad.line2;this.select(cloned,"adsense-line3")[0].innerHTML=ad.line3||"";this.select(cloned,"adsense-visible_url")[1].innerHTML=ad.visible_url;this.select(cloned,"adsense-url2")[0].href=ad.url;this.select(cloned,"adsense-url2")[0].target="_blank";target.appendChild(cloned);cloned.onmouseover=function(){this.className=this.className.replace(" "+settings.hoverclass,"");this.className=this.className+" "+settings.hoverclass};cloned.onmouseout=function(){this.className=this.className.replace(" "+settings.hoverclass,"")};cloned.style.display=""}else{this.debug("createAdsenseContext : Template not found, try to load 'adsense_template_"+templateNumber+"'")}};this.getTemplate=function(part){try{if(settings.usedTemplatesPartType[part]=="afc"){feedbackurl=google_info.feedback_url}else{feedbackurl="http://services.google.com/feedback/online_hws_feedback"}}catch(e){this.debug("createAdsenseContext : Feedback nicht gefunden! ");feedbackurl="http://services.google.com/feedback/online_hws_feedback"}google_words="Google-Anzeigen";return"<div><div class='adsense' id='adsense_template_1' style='display:none;'><span class='adsense-googleAds'><a href='"+feedbackurl+"' target='_blank'>"+google_words+"</a></span><div class='adsenseItem'><a href='#' class='adsense-url'><span class='adsense-visible_url'></span></a><div class='adsense-lines'><span class='adsense-line2'></span><span class='adsense-line3'></span><br><a class='adsense-url2'><span class='adsense-visible_url'></span></a></div></div></div></div>"};this.getDocumentHandler=function(){return document.body||document.documentElement};this.$=function(id){return document.getElementById(id)};this.select=function(element,str){var Rx=RegExp("\\b"+str+"\\b");var who,i=0,A=[],tem,temp;var G=element.getElementsByTagName("*");while(G[i]){tem=G[i++];temp=tem.className||"";if(Rx.test(temp)){A.push(tem)}}return A};this.up=function(element,classname){if(element){if(camaoIndexOf(element.className,classname)!=-1){return element}else{stop=false;do{if(!element.parentNode){stop=true}element=element.parentNode;try{if(camaoIndexOf(element.className,classname)!=-1){return element}}catch(e){}}while(stop==false)}}else{false}};this.debug=function(msg){if(ads.options.debug){console.log(msg)}else{errorLog=errorLog+"\n"+msg}};this.getErrorLog=function(){return errorLog}}function camaoIndexOf(c,b){for(var a=0;a<b.length;a++){if(b[a]==c){return a}}return -1}function google_ad_request_done(a){camaoAdsenseObj.reciveAdsense(a);camaoAdsenseObj.getNextAdsense()}function google_afs_request_done(a){camaoAdsenseObj.reciveAdsense(a);camaoAdsenseObj.getNextAdsense()}var camaoAdsenseObj=new camaoAdsense();
