//var console = { log: function() };

var FOLDER_PREFIX = _TEMPLATE_FOLDER_;

String.prototype.trim = function()
{
	return this.replace(/\s+/g,"");
}

var nbEX = {

	wentWentWent: false,
	src : [],
	
	srcParsed : [],
	
	widgetZones : [],
	divZones : [],
	
	goGoGo: function(info)
	{
		if(nbEX.wentWentWent) return;

		nbEX.wentWentWent = true;
		nbEX.src = info;
		
		//limpio zonas para evitar duplicados
		var x = 0;
		var y = 0;
		for(x=0;x<nbEX.src.length;x++)
		{
			//normalizo los datos de los DIVS.publicidad
			if(nbEX.src[x].nombre == "contenidos" &&  nbEX.src[x].zona == "ncore_base_contenidos")
			{
				var baseContents = nbEX.src[x];
				nbEX.src.splice(x,1);
				
				for(y=0;y<baseContents.banners.length;y++)
				{
					var banner = baseContents.banners[y];
					var grupo = nbEX.getGrupoContenidosDiv(banner);
					grupo.banners.push(banner);
				}
			}
			
			for(y=x+1;y<nbEX.src.length;y++)
			{
				if(nbEX.src[x].zona == nbEX.src[y].zona)
				{
					nbEX.src.splice(y,1);
					y = x+1;
				}
			}
		}
		
		//capturo zonas actualmente en el HTML
		nbEX.divZones = $$("div.publicidad");
		nbEX.widgetZones = $$("li.multiwidget_ncore-banner");
		
		//separo el SRC en widgets y DIVs y ya asigno los banners que van a rotar en cada cosa, según grupos
		for(x=0;x<nbEX.src.length;x++)
		{
			var zoneInfo = nbEX.src[x];
			zoneInfo.appZones = new Array();

			(nbEX.divZones.concat(nbEX.widgetZones)).each(function(elementZone,index)
			{
				if(elementZone.nodeName.toLowerCase() === "div" && zoneInfo.nombre != "contenidos") return;
				if(elementZone.nodeName.toLowerCase() === "li" && zoneInfo.nombre == "contenidos") return;
				
				var clase = nbEX.getZoneID(elementZone);

				//es una zona sin nombre, para rotación de banners genéricos
				if(!clase && zoneInfo.zona == '') zoneInfo.appZones.push(elementZone);
				else
				//es una zona con nombre, para rotación específica
				if(clase === zoneInfo.zona) zoneInfo.appZones.push(elementZone);
				else
				//normalizo
				nbEX.normalizeElement(elementZone,zoneInfo);
			});
			
			nbEX.srcParsed.push(zoneInfo);
		}
		
		//parseada toda la info de banners, la proceso y muestro
		nbEX.procesar();
	},
	
	getGrupoContenidosDiv : function(banner)
	{
		var x;
		var returned = false;
		
		for(x=0;x<nbEX.src.length;x++) if(nbEX.src[x].nombre == "contenidos" && nbEX.src[x].zona == banner.grupo) returned = nbEX.src[x];
		
		if(returned == false)
		{
			returned = {
				"nombre" : "contenidos" ,
				"zona" : banner.grupo ,
				"rotative" : 1,
				"rotationtime" : 5,
				"banners" : new Array()
			};
			
			nbEX.src.push(returned);
		}
		
		return returned;
	},
	
	normalizeElement : function(appZone,zoneInfo)
	{
		if(zoneInfo.nombre == "widget") appZone.setStyle({"width" : "304px" , "height" : "85px"});
		if(zoneInfo.nombre == "contenidos") appZone.setStyle({"width" : "100%" , "height" : "85px"});
	},
	
	getZoneID : function(elementZone)
	{
		var clases = elementZone.nodeName.toLowerCase() == "li" ? elementZone.childElements().first().className.split(" ") : elementZone.className.split(" ");

		if(clases.length > 1) return clases.last();
		return false;
	},
	
	procesar : function()
	{
		if(nbEX.srcParsed.length) nbEX.srcParsed.each(function(zoneInfo,index)
		{
			//si no tiene zonas de aplicación, MUERTE
			if(!zoneInfo.appZones.length) return;
			
			//si no tiene banners, NORMALIZO layout
			if(!zoneInfo.banners.length)
			{
				zoneInfo.appZones.each(function(appZone){ nbEX.normalizeElement(appZone,zoneInfo); });
				return;
			}
			
			//creo si no existe la cuenta de usos
			if(Object.isUndefined(zoneInfo.useCount)) zoneInfo.useCount = -1;
			
			
			zoneInfo.banners.each(function(banner)
			{
				zoneInfo.useCount = zoneInfo.useCount+1 < zoneInfo.appZones.length ? zoneInfo.useCount+1 : 0;
				
				var output;
				if(zoneInfo.nombre == "widget")
				{
					output = $li({"class":"widget"});
					output.addClassName("multiwidget_ncore-banner");
					output.setStyle({"border" : "0px"});
					output.groupID = zoneInfo.zona;
				}
				
				if(zoneInfo.nombre == "contenidos")
				{
					output = $div({"class":"publicidad"});
					output.setStyle({"border" : "0px"});
				}
				
				switch(banner.type)
				{
					case "Image":
						var outputBanner = $img({src:banner.url});
						outputBanner.writeAttribute("alt",banner.nombre);
						outputBanner.writeAttribute("title",banner.nombre);
						if(banner.behavior.link != undefined) outputBanner = $a({href:'javascript:' + banner.behavior.link + ';'},outputBanner);
						output.appendChild(outputBanner);
						
						zoneInfo.appZones[zoneInfo.useCount].replace(output);
					break;
					
					case "Flash":
						var flashdiv = $div();
						var zonaWidth = banner.ancho;
						var zonaHeight = banner.alto;
						flashdiv.writeAttribute("style",'margin-left:auto;margin-right:auto;width:' + zonaWidth + 'px;height:' + zonaHeight + 'px;overlay:hidden;');

						var overlay = $div();
						overlay.writeAttribute("style",'position:absolute;z-index:10;width:' + zonaWidth + 'px;height:' + zonaHeight + 'px;overlay:hidden;cursor:pointer;background-color:ffffff;*filter:alpha(opacity=0); -moz-opacity:0; opacity:0;');
						overlay.writeAttribute("alt",banner.nombre);
						overlay.writeAttribute("title",banner.nombre);
						
						
						output.appendChild(overlay);
						output.appendChild(flashdiv);
						
						zoneInfo.appZones[zoneInfo.useCount].replace(output);
						
						var swf = banner.url;
						
						var params = {
							quality: "best",
							scale: "noscale",
							wmode: "transparent"
						};
						var flashvars = {};
						var attributes = {id:flashdiv.identify()};
						
						swfobject.embedSWF(swf, flashdiv.identify(), zonaWidth + "px", zonaHeight + "px", "9", swf, flashvars, params, attributes);
						if(banner.behavior.link != undefined) overlay.observe("click",function() {eval(banner.behavior.link);});
					break;
				}
				
				nbEX.srcParsed[index] = zoneInfo;
			});
		});
	}
}

var niceBanner = {
	ZONAS: new Array(),
	INTERVALOS: new Array(),
	wentWentWent: false,
	
	goGoGo: function(info)
	{
		if(niceBanner.wentWentWent) return;
		else niceBanner.wentWentWent = true;

		niceBanner.ZONAS = info;
		
		//limpio zonas para evitar duplicados
		var x = 0;
		var y = 0;
		for(x=0;x<niceBanner.ZONAS.length;x++)
		{
			for(y=x+1;y<niceBanner.ZONAS.length;y++)
			{
				if(niceBanner.ZONAS[x].zona == niceBanner.ZONAS[y].zona)
				{
					niceBanner.ZONAS.splice(y,1);
					y = x+1;
				}
			}
		}
		
		var bannersDIV = $$("div.publicidad");
		var bannersLI = $$("li.multiwidget_ncore-banner");
		
		if(bannersLI.length) bannersLI.each(function(element)
		{
			var idMagia = element.childElements().first();
			var clases = $w(idMagia.className);
			if(clases.length > 1) idMagia = clases.last();
			else idMagia = "";
			element.groupID = idMagia;
			
			var x = 0;
			if(niceBanner.ZONAS.length) for(x=0;x<niceBanner.ZONAS.length;x++)
			{
				var zona = niceBanner.ZONAS[x];
				if(zona.nombre == "widget") if(zona.zona == element.groupID)
				{
					if(Object.isUndefined(zona.appZones)) zona.appZones = new Array();
					zona.appZones.push(element);
					niceBanner.ZONAS[x] = zona;
				}
			};
		});
		
		if((bannersDIV.length) && (niceBanner.ZONAS.length)) bannersDIV.each(function(element)
		{
			var x = 0;
			for(x=0;x<niceBanner.ZONAS.length;x++)
			{
				var zona = niceBanner.ZONAS[x];
				if(zona.nombre == "contenidos")
				{
					if(Object.isUndefined(zona.appZones)) zona.appZones = new Array();
					zona.appZones.push(element);
					niceBanner.ZONAS[x] = zona;
				}
			};
		});
		
		if(niceBanner.ZONAS.length) niceBanner.ZONAS.each(function(zona)
		{
			niceBanner.procesar(zona);
		});
		
		/*var bannersDIV = $$("div.publicidad");
		var bannersLI = $$("li.multiwidget_ncore-banner");
		var banners = new Array();

		if(bannersDIV.length) bannersDIV.each(function(element){banners.push(element);});
		if(bannersLI.length) bannersLI.each(function(element)
		{
			var idMagia = element.childElements().first();
			var clases = $w(idMagia.className);
			if(clases.length > 1) idMagia = clases.last();
			element.groupID = idMagia;
			banners.push(element);
		});
		
		if(banners.length > 0) banners.each(function(banner)
		{
			if(banner.hasClassName("multiwidget_ncore-banner")) niceBanner.procesar("widget",banner.groupID);
			if(banner.hasClassName("publicidad")) niceBanner.procesar("contenidos");
		});*/
	},
	
	getZona: function(id,groupName)
	{
		var x = 0;
		for(x=0;x<niceBanner.ZONAS.length;x++) if(niceBanner.ZONAS[x].nombre == id)
		{
			if(groupName !== "")
			{
				if(niceBanner.ZONAS[x].zona == groupName) return niceBanner.ZONAS[x];
			}
			else return niceBanner.ZONAS[x];
		}
		return false;
	},
	
	procesar: function(zone,startIndex)
	{
		if(Object.isUndefined(startIndex)) startIndex = 0;
		if(!zone.banners.length)
		{
			if(zone.nombre == "widget") if(zone.appZones.length) zone.appZones.each(function(appZone)
			{
				appZone.setStyle({"width" : "304px" , "height" : "85px"});
			});
			
			if(zone.nombre == "contenidos")if(zone.appZones.length) zone.appZones.each(function(appZone)
			{
				appZone.setStyle({"width" : "100%" , "height" : "85px"});
			});
			
			return;
		}
		
		if(zone.useCount == undefined) zone.useCount = 0;
		
		if(!Object.isUndefined(zone.appZones)) if(zone.appZones.length)
		{
			zone.appZones.each(function(zonaAplicacion,zoneIndex)
			{
				zone.useCount++;
				if(zone.useCount > zone.banners.length) zone.useCount = 1;
				
				var output;
				switch(zone.nombre)
				{
					case "widget":
						output = $li({"class":"widget"});
						output.addClassName("multiwidget_ncore-banner");
						output.setStyle({"border" : "0px"});
						output.groupID = zone.zona;
						break;
						
					case "contenidos":
						output = $div({"class":"publicidad"});
						output.setStyle({"border" : "0px"});
						break;
				}
				
				var outputSource = zone.banners[zone.useCount-1];
				
				if(zone.nombre == "contenidos")
				{
					if(!outputSource.grupo.blank()) if(!zonaAplicacion.hasClassName(outputSource.grupo))
					{
						if(zoneIndex < zone.appZones.length-1) zone.useCount--;
						else
						{
							zone.banners.splice(zone.useCount-1,1);
							niceBanner.procesar(zone);
						}
						return;
					}
					
					var clases = zonaAplicacion.classNames().toArray();
					if(outputSource.grupo.blank()) if(clases.length > 1)
					{
						if(zoneIndex < zone.appZones.length-1) zone.useCount--;
						else
						{
							zone.banners.splice(zone.useCount-1,1);
							niceBanner.procesar(zone);
						}
						return;
					}
				}
				


				switch(outputSource.type)
				{
					case "Image":
						var outputBanner = $img({src:outputSource.url});
						outputBanner.writeAttribute("alt",outputSource.nombre);
						outputBanner.writeAttribute("title",outputSource.nombre);
						if(outputSource.behavior.link != undefined) outputBanner = $a({href:'javascript:' + outputSource.behavior.link + ';'},outputBanner);
						output.appendChild(outputBanner);

						//if(!Object.isUndefined(zonaAplicacion.outputSource)) niceBanner.stopObservingBanner(zonaAplicacion);
						Element.extend(zonaAplicacion);
						//console.log("PRE REPLACE");
						zonaAplicacion.replace(output);
						//if(outputSource.behavior.count != undefined) output.observe("click",function() { new Ajax.Request(FOLDER_PREFIX + "admin/includes/php/sys/helpers/webrequest.php",{method:"post",parameters:{action:'count_banner_click', id: outputSource.id}}); });
					break;
					
					case "Flash":
						var flashdiv = $div();
						var zonaWidth = outputSource.ancho;
						var zonaHeight = outputSource.alto;
						flashdiv.writeAttribute("style",'margin-left:auto;margin-right:auto;width:' + zonaWidth + 'px;height:' + zonaHeight + 'px;overlay:hidden;');

						var overlay = $div();
						overlay.writeAttribute("style",'position:absolute;z-index:10;width:' + zonaWidth + 'px;height:' + zonaHeight + 'px;overlay:hidden;cursor:pointer;background-color:ffffff;*filter:alpha(opacity=0); -moz-opacity:0; opacity:0;');
						overlay.writeAttribute("alt",outputSource.nombre);
						overlay.writeAttribute("title",outputSource.nombre);
						
						
						output.appendChild(overlay);
						output.appendChild(flashdiv);
						
						zonaAplicacion.replace(output);
						
						var swf = outputSource.url;
						
						var params = {
							quality: "best",
							scale: "noscale",
							wmode: "transparent"
						};
						var flashvars = {};
						var attributes = {id:flashdiv.identify()};
						
						swfobject.embedSWF(swf, flashdiv.identify(), zonaWidth + "px", zonaHeight + "px", "9", swf, flashvars, params, attributes);
						if(outputSource.behavior.link != undefined) overlay.observe("click",function() {eval(outputSource.behavior.link);});
					break;
				}
			});			
		}
	},
	
	
	
	
	
	
	
	
	
	
	
	
	
	procesarOLD: function(zoneType,groupName)
	{
		if(groupName == null) groupName = "";
		var banners = new Array();
		switch(zoneType)
		{
			case "widget":
				banners = $$("li.multiwidget_ncore-banner");
				break;
				
			case "contenidos":
				banners = $$("div.publicidad");
				break;
		}

		var zona = niceBanner.getZona(zoneType,groupName);
		if(zona.useCount == undefined) zona.useCount = 0;

		
		
		if(((banners.length > 0) && (zona !== false)) && (zona.banners.length))
		{
			banners.each(function(banner)
			{
				zona.useCount++;
				if(zona.useCount > zona.banners.length) zona.useCount = 1;
				
				var output;
				switch(zoneType)
				{
					case "widget":
						output = $li({"class":"widget"});
						output.addClassName("multiwidget_ncore-banner");
						output.setStyle({"border" : "0px"});
						break;
						
					case "contenidos":
						output = $div({"class":"publicidad"});
						output.setStyle({"border" : "0px"});
						break;
				}
				
				var outputSource = zona.banners[zona.useCount-1];

				switch(outputSource.type)
				{
					case "Image":
						var outputBanner = $img({src:outputSource.url});
						outputBanner.writeAttribute("alt",outputSource.nombre);
						outputBanner.writeAttribute("title",outputSource.nombre);
						if(outputSource.behavior.link != undefined) outputBanner = $a({href:'javascript:' + outputSource.behavior.link + ';'},outputBanner);
						output.appendChild(outputBanner);

						if(!Object.isUndefined(banner.outputSource)) niceBanner.stopObservingBanner(banner);
						if(!Object.isUndefined(banner.groupID)) output.groupID = banner.groupID;
						banner.replace(output);
						//if(outputSource.behavior.count != undefined) output.observe("click",function() { new Ajax.Request(FOLDER_PREFIX + "admin/includes/php/sys/helpers/webrequest.php",{method:"post",parameters:{action:'count_banner_click', id: outputSource.id}}); });
					break;
				}
			});			
		}		
	},
	
	observeBanner: function(output)
	{
		if(output.outputSource.behavior.onclick != undefined) output.observe("click",output.outputSource.behavior.onclick);
		if(output.outputSource.behavior.onmouseover != undefined) output.observe("mouseover",output.outputSource.behavior.onmouseover);
		if(output.outputSource.behavior.onmouseout != undefined) output.observe("mouseout",output.outputSource.behavior.onmouseout);
	},
	
	stopObservingBanner: function(output)
	{
		if(output.outputSource.behavior.onclick != undefined) output.stopObserving("click",output.outputSource.behavior.onclick);
		if(output.outputSource.behavior.onmouseover != undefined) output.stopObserving("mouseover",output.outputSource.behavior.onmouseover);
		if(output.outputSource.behavior.onmouseout != undefined) output.stopObserving("mouseout",output.outputSource.behavior.onmouseout);
	}
};