/*################################
File requesting this should have initialised the Ad Manager, and the relevant path should have been received in the 'adPathFromVelocity' variable:  

Eg: 
var adPathFromVelocityOrig = "$ad_a.getAdPath()"; 
//relative path to the random advertisment is returned by Velocity
var adPathFromVelocity = ((window.location.protocol).toString())+"//"+((window.location.host).toString())+"/qptcms"+adPathFromVelocityOrig; 
//Constructing the full path will help in the AJAX call.

The containers:
	<div class="productHomeAd"><div class="carouselContainer"> </div><div class="adCount"><ul></ul></div></div>

The path to the Ad Manger XML is also defined below, and can be changed if required - adManagerXMLPath


To add controls use the following in the base document (the class name to the anchor is the key):

<a href='javascript:;' class='controls play'>Play </a>
<a href='javascript:;' class='controls pause'> Pause</a>
<a href='javascript:;' class='controls first'>First </a>
<a href='javascript:;' class='controls next'>Next </a>
<a href='javascript:;' class='controls previous'> Previous</a>
<a href='javascript:;' class='controls last'>Last </a>

#################################*/

var cmsRootJs = ((window.location.protocol).toString())+"//"+((window.location.host).toString())+"/qptcms";
var adManagerXMLPath = cmsRootJs+"/qCmsRepository/Global/largeBusiness/config/ad-manager.xml";
var totalAds = 0; /*length of ads, excluding expired ones */
var advertPaths = []; /*paths retrieved from the XML */
var advertSpaces = []; /*adSpace retrieved from the XML */
var selectedAdvert = ""; /*the index of the currently displayed advertisement */
var selAdSpace = {}; /*object holding information about the selected adSpace */
var t; /*var to set/stop the timer for transitioning between advertisments */
var transitionTime = 4; /*time in seconds for the transition */
var autoRotateAds = false; /*set to false if no automatic transition between advertisments is required */
 var advloadcnt=0;
function getAdvertPaths(onLoad) {
	
	jQuery.each(advertPaths, function(i) {
log.info("getAdvertPaths","getAjaxContent-Called: "+i,5);									  
		getAjaxContent(this,i,onLoad);
	})
	
}

function toggleDisplay(ind,onLoad) {
	jQuery("div.productHomeAd .carouselContainer").children("div:eq("+ind+")").fadeIn("slow").siblings().hide();
	selectedAdvert = ind;
	setActiveListItem();
	if(autoRotateAds) {
		t=setTimeout('toggleDisplay((selectedAdvert+1),"")',transitionTime*1000);
	}
	if((selectedAdvert)==(totalAds)){
		selectedAdvert = -1;
	}
}

function isSpecialOffer() {}

function autoRotate() {}

function getDetailsLink() {}

function countSolutions() {}
var loaded = false;
function generateList() {
	if(!loaded) {
	if(advloadcnt==0){
	advloadcnt=1;
	
		for (index=0;index<=(totalAds-1);index++) {
			jQuery("div.adCount ul").append("<li class='adverts'> <a class='adCounter' href="+advertPaths[index]+">"+(index+1)+"</a></li>");
			log.info("generateList","generateList-Called: <li class='adverts'> <a class='adCounter' href="+advertPaths[index]+">"+(index+1)+"</a></li>",5);
		}
	}
}
	
	/* Uncomment the following to have a set of user controls dynamically written in after the list of items. Alternatively add it to the document - eg is in the comment on top. 
		//$("div.adCount ul").append("<li><a href='javascript:;' class='controls play'>Play </a></li> <li><a href='javascript:;' class='controls pause'> Pause</a></li>")
		//$("div.adCount ul").append("<li><a href='javascript:;' class='controls first'>First </a></li><li><a href='javascript:;' class='controls next'>Next </a></li> <li><a href='javascript:;' class='controls previous'> Previous</a></li><li><a href='javascript:;' class='controls last'>Last </a></li>")
	*/
	$("div.adCount ul li").each(function(i) {				 
		i==0?$(this).addClass("first"):"";
		i==(totalAds-1)?$(this).addClass("last"):"";
	})
	
	toggleDisplay(selectedAdvert,'');
	jQuery("div.adCount ul li a.adCounter").bind('click',function(e) {
		e.preventDefault();
		adPathFromVelocity = jQuery(this).attr("href");
		if(adPathFromVelocity!='') {		
			var adIndex = jQuery("a.adCounter").index(this);
			loaded = true;
			getAjaxContent(adPathFromVelocity,adIndex,false);
			selectedAdvert = adIndex;
			clearTimeout(t);/*clear  the timer */
			toggleDisplay(adIndex,'');
		}
		/*autoRotateAds = false; // do not rotate the ads after an advert is clicked */
	});
	jQuery("a.controls").bind('click',function(e) {
		autoRotateAds = $(this).hasClass("play")==true?true:false;
		$(this).hasClass("play")==true?'':clearTimeout(t);
		if($(this).hasClass("first")){
			selectedAdvert = 0;
		}
		else if($(this).hasClass("next")){
			selectedAdvert = selectedAdvert!=(totalAds-1)?(selectedAdvert+1):(totalAds-1);
		}
		else if($(this).hasClass("previous")) {
			selectedAdvert = selectedAdvert!=0?(selectedAdvert-1):0;
		}
		else if($(this).hasClass("last")){
			selectedAdvert = (totalAds-1);
		}
		toggleDisplay(selectedAdvert,'');
	})
	
}

function setActiveListItem() {
	$("div.adCount ul li a.adCounter").each(function(i) {
		$(this).attr("href",advertPaths[i]);
	})
	$("div.adCount ul li a.adCounter").each(function(i) {
		if (i==selectedAdvert) {
			if(i==0) {
				$(this).parent().addClass("firstSelectedAd");
				$(this).parent().siblings().removeClass("selectedAd firstSelectedAd lastSelectedAd");
			}
			else if(i==(totalAds-1)) {
				$(this).parent().addClass("lastSelectedAd");
				$(this).parent().siblings().removeClass("selectedAd firstSelectedAd lastSelectedAd");
			}
			else {
				$(this).parent().addClass("selectedAd");
				$(this).parent().siblings().removeClass("selectedAd firstSelectedAd lastSelectedAd");
			}
			//$(this).parent().removeClass("adverts").addClass("selectedAd").end().parent().siblings().addClass("adverts").removeClass("selectedAd");
			$(this).parent().siblings().addClass("adverts").removeClass("selectedAd firstSelectedAd lastSelectedAd");
			$(this).parent().children("a").removeAttr("href");
			//$(this).parent().siblings().children("a").attr("href","javascript:;");
			return false;
		};
	});
}

var advertLoaded = false;
function getAjaxContent(path,ind,onLoad) {
	var advertPath = path.toString();
	log.info("getAjaxContent","advertPath: "+advertPath,5);
	jQuery.ajax({
        type: "GET",
		url: advertPath,
		async: false,
		cache: false,
		dataType: "html",
		success: function(html){
			if(onLoad) {
				var filterData = html.toString();				
				var filterData1=filterData.replace(/\$searchPath.getCmsRoot\(\)/gi,cmsRootJs);
				$("div.placeHolder").remove();
				$("div.productHomeAd .carouselContainer").append(filterData1).children("div").hide();
				advertLoaded = true;
			}
		},
		error: function(err) {
				log.error("getAjaxContent","JS: AJAX error: "+getAjaxContent);
		}
	});
}

function checkEndDate(date) {
	var today = new Date();
	var constDate = (today.getMonth()+1)+"/"+today.getDate()+"/"+today.getFullYear();
	var adDate = Date.parse(date);
	var todayDate = Date.parse(constDate);
	return adDate<todayDate;
}
var loadcnt=0; var totcnt=0;
function loadAdvertisment() {
	var s;
	jQuery.ajax({
        type: "GET",
        url: adManagerXMLPath,
		cache: false,
		dataType: (jQuery.browser.msie) ? "text" : "xml",
		success: function(data){
			log.info("onLoad","JS: XML successfully retrieved",5);
			var xml;
			if (typeof data == "string") {
				xml = new ActiveXObject("Microsoft.XMLDOM");
				xml.async = false;
				xml.loadXML(data);
			} else {
				xml = data;
			}
			xml=jQuery(xml);
			if(loadcnt==0){
				log.info("loadAdvertisment","load-count: "+loadcnt,5);
			jQuery(xml).children().children().children().each(function(i,obj) {
				if(cmsRootJs+(jQuery(this).find("adPath").text())==adPathFromVelocity) {
					selAdSpace.adSpace=jQuery(this).find("adSpace").text();
					selAdSpace.adStartDate=jQuery(this).find("adStartDate").text();
					selAdSpace.adEndDate=jQuery(this).find("adEndDate").text();
					selAdSpace.adOscillation=jQuery(this).find("adOscillation").text();
					selAdSpace.adCount=jQuery(this).find("adCount").text();
					selAdSpace.adPath=cmsRootJs+(jQuery(this).find("adPath").text());
					selAdSpace.adUrl=jQuery(this).find("adUrl").text();
					selAdSpace.adCampaign=jQuery(this).find("adCampaign").text();
					selAdSpace.relatedIDs=jQuery(this).find("relatedIDs").text();
				}
			return;
			});
			jQuery(xml).children().children().children().each(function(l,obj1) {
				if(jQuery(this).find("adSpace").text()==selAdSpace.adSpace) {
					advertPaths.push(cmsRootJs+(jQuery(this).find("adPath").text()));
					totalAds++;
					log.info("loadAdvertisment","totalAds: "+totalAds,5);
					if (checkEndDate(jQuery.trim(jQuery(this).find("adEndDate").text()))) {
						totalAds--;
						advertPaths.pop(cmsRootJs+(jQuery(this).find("adPath").text()));
					}
				}; 
			});
			jQuery.each(advertPaths,function(i,obj){
				if(obj==adPathFromVelocity){
					selectedAdvert = i;
				}
			});
			loadcnt=1; 
			getAdvertPaths(true);
			generateList();
			}
		}
	});	
}
jQuery(document).ready(function () {
	totalAds=0;				 
	loadAdvertisment();
});
