// -*- mode: javascript; coding: utf-8 -*-

var portada = {
	MAS_ANIM_DELAY: 5, // ms
	MAS_ANIM_LIMIT: 26, // px
	MAS_ANIM_STEP: 1.3, // ratio
	SECT_COLS: 2,
	SECT_MAX_ITEMS: 3,
	MINI_PHOTOS_INITIAL: 3, // thumb photos to load at startup
	TICKER_STATE: 0,
	TICKER_START_DELAY: 5000, // ms
	TICKER_DELAY: 20, // ms
	TICKER_STEP: 2, // px

	xml: {},

	nodeGetBgOffsetY: function (node) {
		if (node.bgOffsetY == undefined) {
			var posStr = dodo.getComputedStyle (node, "background-position");
			if (!posStr) {
				node.bgOffsetY = dodo.getComputedStyle (node, "background-position-y");
				return node.bgOffsetY;
			}
			node.bgOffsetY = posStr.substr (posStr.indexOf (" ") + 1);
		}
		return node.bgOffsetY;
	},

	masChanging: false,

	masChange: function (srcNode, destNode) {
		srcNode.style.backgroundPosition = "0 " + portada.nodeGetBgOffsetY (srcNode);
		destNode.style.backgroundPosition = "0 " + portada.nodeGetBgOffsetY (destNode);

		var newClass = destNode.className.substr (srcNode.className.indexOf (" ") + 1);
		rss.render (rss.xml[newClass], document.getElementById ("mas-list"));
		portada.masChanging = false;
	},

	masSwitch: function (srcNode, destNode) {
		var newClass = srcNode.className.substr (srcNode.className.indexOf (" ") + 1);
		var oldClass = destNode.className.substr (destNode.className.indexOf (" ") + 1);
		destNode.className = "portada-mas " + newClass;
		srcNode.className = "portada-mas hover " + oldClass;
	},

	masAnim2: function (srcNode, destNode, offset) {
		if (offset > 0.1) {
			srcNode.style.backgroundPosition = offset + "px " + portada.nodeGetBgOffsetY (srcNode);
			destNode.style.backgroundPosition = -(offset) + "px " + portada.nodeGetBgOffsetY (destNode);
			offset *= 1 / portada.MAS_ANIM_STEP;
			window.setTimeout (function () { portada.masAnim2 (srcNode, destNode, offset) }, portada.MAS_ANIM_DELAY);
		} else
			portada.masChange (srcNode, destNode);
	},

	masAnim1: function (srcNode, destNode, offset) {
		if (offset < portada.MAS_ANIM_LIMIT) {
			srcNode.style.backgroundPosition = offset + "px " + portada.nodeGetBgOffsetY (srcNode);
			destNode.style.backgroundPosition = -(offset) + "px " + portada.nodeGetBgOffsetY (destNode);
			offset *= portada.MAS_ANIM_STEP;
			window.setTimeout (function () { portada.masAnim1 (srcNode, destNode, offset) }, portada.MAS_ANIM_DELAY);
		} else {
			portada.masSwitch (srcNode, destNode);
			window.setTimeout (function () { portada.masAnim2 (srcNode, destNode, offset) }, portada.MAS_ANIM_DELAY);
		}
	},

	masClick: function (evt) {
		if (!evt) evt = window.event;
		if (!evt.target) evt.target = this;
		if (!evt.currentTarget) evt.currentTarget = evt.srcElement;
		if (portada.masChanging || evt.target.className != evt.currentTarget.className)
			return;

		var destNode = document.getElementById ("mas-cont");
		var srcNode = evt.target;
		
		portada.masChanging = true;
		srcNode.className = srcNode.className.replace (" hover", "");
		window.setTimeout (function () { portada.masAnim1 (srcNode, destNode, 0.1) }, portada.MAS_ANIM_DELAY);
	},

	masOver: function (evt) {
		if (!evt) evt = window.event;
		if (!evt.target) evt.target = this;
		if (!evt.currentTarget) evt.currentTarget = evt.srcElement;
		if (!portada.masChanging && evt.target.className == evt.currentTarget.className)
			evt.target.className += " hover";
	},

	masOut: function (evt) {
		if (!evt) evt = window.event;
		if (!evt.target) evt.target = this;
		if (!evt.currentTarget) evt.currentTarget = evt.srcElement;
		if (!portada.masChanging && evt.target.className == evt.currentTarget.className)
			evt.target.className = evt.target.className.replace (" hover", "");
	},

	tickerMove: function (node, restart) {
		if (restart) {
			if (portada.TICKER_STATE > 0)
				return;
			portada.TICKER_STATE = 1;
		}

		if (!portada.TICKER_STATE) {
			if (node.firstChild && node.firstChild.style.display != "none") {
				var width = 25;
				for (var i = 0, child; child = node.childNodes[i]; i++)
					width += child.clientWidth;
				node.style.width = width + "px";
				node.style.left = "25px";
				portada.TICKER_WIDTH = width;
				portada.TICKER_STATE = 1;

				var box = node.parentNode.parentNode.parentNode;
				box.onmouseover = function () { 
					portada.TICKER_STATE = -1; 
				};
				box.onmouseout = function (evt) {
					if (!evt) evt = window.event;
					if (!evt.target) evt.target = this;

					if ((evt.relatedTarget && dodo.nodeIsParentOf (box, evt.relatedTarget)) ||
					    (evt.fromElement && dodo.nodeIsParentOf (box, evt.toElement)))
						portada.TICKER_STATE = -1; 
					else
						dodo.delayRun (function () { portada.tickerMove (node, 1); });
				};
			} else {
				dodo.delayRun (function () { portada.tickerMove (node); }, portada.TICKER_START_DELAY);
				return;
			}
		}

		if (portada.TICKER_STATE < 0)
			return;

		var left = node.style.left;
		left = left.substr (0, left.length - 2) - portada.TICKER_STEP;
		if (left * -1 > portada.TICKER_WIDTH)
			left = node.parentNode.clientWidth;
		node.style.left = left.toString () + "px";
		dodo.delayRun (function () { portada.tickerMove (node); }, portada.TICKER_DELAY);
	},

	sumariosRender: function (xml) {
		var sects = ["politica", "economia", "mundo", "sociedad", "capital", "estados", "cultura", "espectaculos", "deportes", "ciencias"];
		var dirSectNode = xml.getElementsByTagName ("sections")[0];
		var dirSects = {};
		var dirSectArr = dirSectNode.firstChild.nodeValue.split (" ");
		for (var i = 0, item; item = dirSectArr[i]; i++)
			dirSects[item] = 1;
		
		var html = '<table class="col1">';
		for (var i = 0, j = 0, sect; sect = sects[i]; i++)
			if (dirSects[sect])
				html += sumario.renderSect (xml, sect, portada.SECT_COLS, 0, j++, portada.SECT_MAX_ITEMS);
		if (j % portada.SECT_COLS != 0)
			html += '<tr><td>' + sumario.renderPleca () + '</td><td>&nbsp;</td></tr>';
		html += '</table>';
		document.getElementById ("portada-sumarios").innerHTML = html;

		html = '<table class="col2">';
		html += sumario.renderSect (xml, "columnas", 1, 0, 0, 99, "Opinion");
		html += sumario.renderSect (xml, "opinion", 1, 0, 0, 99, "Analysis");
		html += '</table>';
		document.getElementById ("portada-colopi").innerHTML = html;
	},

	rayuelaRender: function (xml) {
		var qepd = xml.getElementsByTagName ('qepd');
		var emptytag = xml.getElementsByTagName ('vacio');
		if (qepd.length > 0 ) {
			var rayText = document.getElementById ("rayuela-text");
			text = rayText.appendChild(document.createElement ("img"));
			text.setAttribute("src", "/v7.0/imagenes/crespon.png");
			text.setAttribute("style", "margin-left: 75px;");
                } else if (emptytag.length > 0){
			document.getElementById ("rayuelacaja").style.display = "none";
			var rayText = document.getElementById ("rayuela-text");
			text = rayText.appendChild(document.createElement ("img"));
			text.setAttribute("src", "/v7.0/imagenes/nada.png");
			text.setAttribute("style", "margin-left: 75px;");
		} else {
			var nodes = xml.getElementsByTagName ('Rayuela');
			if (nodes.length < 1)
				return;
			var rayNode = dodo.docImportNode (document, nodes[0], true);
			var rayText = document.getElementById ("rayuela-text");
			for (var i = 0, child; child = rayNode.childNodes[i]; i++)
				rayText.appendChild (child.cloneNode (true));
		}
	},

	dirOnLoad: function (req) {
		if (req.readyState == 4) {
			if (req.status == 200 || req.status == 0) {
				portada.rayuelaRender (req.responseXML);
				portada.sumariosRender (req.responseXML);
				if (document.getElementById ("mini-photo")) {
					document.getElementById ("mini-photo").style.display = "block";
					var mini = new miniPhoto;
					mini.init (document.getElementById ("mini-photo"), MINI_PHOTOS, portada.MINI_PHOTOS_INITIAL);
				}
			}
			dodo.finishTasks (1, "portada.dir " + req.status);
		}
	},

	dirLoad: function () {
		var req = dodo.httpReqGet ();
		if (!window.CIMPRESADAY)
			dodo.httpReqLoad (req, "dir.xml", function () { portada.dirOnLoad (req); }, false);
		else{
			dodo.httpReqLoad (req, window.CIMPRESADAY + "dir.xml", function () { portada.dirOnLoad (req); }, false);	
		}
	},

        overlayDelete: function(){
 		var adsOverlay = document.getElementById ("noteoverlay");
		adsOverlay.style.display = "none";
                var adsOverlay = document.getElementById ("oasbanner");
		adsOverlay.style.display = "block";
        },

 	onLoad: function () {
		dodo.startTasks (6, "dir.xml, feed-ultimas.rss, masleido.xml, masenviado.xml, mascomentado.xml, cartones.xml");

		var masCont = document.getElementById ("mas-cont");
		if (masCont) {
			masCont.parentNode.onclick = portada.masClick;
			masCont.parentNode.onmouseover = portada.masOver;
			masCont.parentNode.onmouseout = portada.masOut;
			masCont.parentNode.parentNode.onclick = portada.masClick;
			masCont.parentNode.parentNode.onmouseover = portada.masOver;
			masCont.parentNode.parentNode.onmouseout = portada.masOut;
		}

		if (!window.JORNADA_LIGHT)
			portada.dirLoad ();
		else
			dodo.finishTasks (1);

		var ids = [];
		var node;
		if (node = document.getElementById ("ultimas-list"))
			ids.push (node);
		if (node = document.getElementById ("ultimas-ticker-list")) {
			portada.tickerMove (node);
			ids.push (node);
		}
		if (ids.length)
			rss.load (ids, "/feed-ultimas.rss");
		else
			dodo.finishTasks (1);

		if (node = document.getElementById ("mas-list")) {
			if (!window.CIMPRESADAY)
				modruta = '';
			else
				modruta = window.CIMPRESADAY;

			rss.load (node, modruta + "masleido.xml", "leidas");
			rss.load (undefined, modruta + "masenviado.xml", "enviadas");
			rss.load (undefined, modruta + "mascomentado.xml", "comentadas");
		} else
			dodo.finishTasks (4);

		if (node = document.getElementById ("portada-cont"))
			lupa.setup (node);

             	/*setTimeout("portada.overlayDelete()", 22000);*/
	}
}

dodo.onLoadPush (portada.onLoad);

