

	/*
	 * Copyright (c) 2006 Wazap AG, Germany -- all rights reserved.
	 * Author: Danny Goersdorf
	 */

	var wazapAds = new Array();
	var waitingQueue = new Array(); //Contains all AdRequestors
	var ads_requested = false;
	var isDebug = false;
	
	var ad_q = ""; 
	var ad_numRes = 0; 
	var ad_ofsRes = 1; 
		
	         
	function AdRequestor(cntId,ofsRes,numRes){
		this.cntId = cntId;
		this.ofsRes = ofsRes;
		this.numRes = numRes;
	}
	
	/*
	 * This function calls the servlet ans receives the ads asynchron	
	 */
	function requestAds(){
		if(ad_q=="")return;
		
		var url ="/infospace?q=" + ad_q	+ "&numRes=" + ad_numRes+ "&ofsRes=" + ad_ofsRes;
		
		if(window.XMLHttpRequest){
		 req = new XMLHttpRequest();
		}else if(window.ActiveXObject){
		 req = new ActiveXObject("Microsoft.XMLHTTP");
	    } 
		
		ads_requested = true;
		
		 req.open("GET",url,true);
		 req.onreadystatechange = callBack;
		 req.send(null);
		 
	}
		 
	function callBack(){
		if(req.readyState == 4){
			if(req.status == 200){
		   		wazapAds = req.responseXML.getElementsByTagName("result");
		   		if(wazapAds.length > 0){
					//deliver ads to all Requestors
					var i=0;
					for(i=0;i<waitingQueue.length;i++){
						rq = waitingQueue[i];
					  	displayAds(rq.cntId,rq.ofsRes,rq.numRes);
					}
		   		}
	        }//status
		}//state
	}
	
	/*
	 * cntId 	: id of the HTMLElement which should display the ads
	 * numRes 	: number of ads you want to display (default:all)
	 * ofsRes 	: index of first Ads to be displayed(default:1)
	 */
	function displayAds(cntId,ofsRes,numRes){
		
	if($("error")){
	    hideAllAds();
		return;
	}
	
	container = $(cntId);
	if(!container)return;
				
		if(wazapAds.length==0){
			try{
				parentCnt = $(cntId.replace(/_cnt/,""));
				parentCnt.style.display="none";
			}catch(ex){
				handleException(ex.message);				
			}	
			waitingQueue[waitingQueue.length] = new AdRequestor(cntId,ofsRes,numRes);
			if(!ads_requested)
				requestAds();
		}else if(wazapAds.length >= (ofsRes)){
	 		myAdList = createAdElement("li","adList");
			//Build content
			start = (ofsRes==null || ofsRes==0)? 0 :ofsRes -1;
			numRes = (numRes == null || numRes == 0)? wazapAds.length : numRes;
			end = (wazapAds.length >= (start+numRes)) ?  (start+numRes) : wazapAds.length ;  
			var i=0;
		   	for(i=start;i<end;i++){
				ad = wazapAds[i];
				myAdList.appendChild(buildAdItem(ad));
	        }
	
			container.appendChild(myAdList);
			try{
				parentCnt = $(cntId.replace(/_cnt/,""));
				parentCnt.style.display="block";
				var anc = getAncestorWithClass(parentCnt,"adbox");
				if(anc)
					 anc.style.display="block";
			}catch(ex){
				handleException(ex.message);				
			}	
		}else{
			try{
				parentCnt = $(cntId.replace(/_cnt/,""));
				parentCnt.style.display="none";
			}catch(ex){
				handleException(ex.message);			
			}	
		}
		
	}
	 
	function buildAdItem(ad,out){
		//build list item
		myAd = createAdElement("li","adItem");
	
		//build title
		myTitle = createAdElement("a","adTitle");
		myTitle.href= ad.getElementsByTagName("site-link")[0].firstChild.nodeValue;
		myTitle.target="_blank";
		myTitle.innerHTML = ad.getElementsByTagName("title")[0].firstChild.nodeValue;
		myTitle.onmouseover=function(){
								window.status = ad.getElementsByTagName("display-url")[0].firstChild.nodeValue;
								return true;
							}
		myTitle.onmouseout=function(){window.status = "";return true;}
		
		myAd.appendChild(myTitle);
		
		//build URL
		myUrl = createAdElement("a","adUrl");
		myUrl.href= ad.getElementsByTagName("site-link")[0].firstChild.nodeValue;
		myUrl.target="_blank";
		myUrl.innerHTML = ad.getElementsByTagName("display-url")[0].firstChild.nodeValue;
		myUrl.onmouseover=function(){
			window.status = ad.getElementsByTagName("display-url")[0].firstChild.nodeValue;
			return true;
		}
		myUrl.onmouseout=function(){window.status = "";return true;}
		
	    //build description
	    myDesc = createAdElement("div","");
	    myDesc.appendChild(myUrl);
   
	    myDescrLink = createAdElement("a","adDesc");
	    myDescrLink.href = ad.getElementsByTagName("site-link")[0].firstChild.nodeValue;
	    myDescrLink.target = "_blank";
	    myDescrLink.innerHTML = "&nbsp;-&nbsp;" + ad.getElementsByTagName("description")[0].firstChild.nodeValue;
	    myDescrLink.onmouseover=function(){
			window.status = ad.getElementsByTagName("display-url")[0].firstChild.nodeValue;
			return true;
		}
	    myDescrLink.onmouseout=function(){window.status = "";return true;}
	    
	    myDesc.appendChild(myDescrLink);
	    
	    myAd.appendChild(myDesc);
			    
		return myAd;
	
	}
	
	function createAdElement(tagName,cssClass){
		el = document.createElement(tagName);
		el.className=cssClass;
		return el;
	}
	
	function hideAllAds(){
	  var i=0;
		for(i=0;i<waitingQueue.length;i++){
			var adRequestor = waitingQueue[i];
			htmlAdsContainer = document.getElementById(adRequestor.cntId);
			if(htmlAdsContainer)
				htmlAdsContainer.style.display="none";
		}
	}
	
	
	