/* Corrige la altura de los iframes
 * Extraido de http://sonspring.com/journal/jquery-iframe-sizing 
 */
function fixBanner(bannerIFrame){
	if (bannerIFrame.data != null && !bannerIFrame.data("fixed")){
		// close empty banners
		var contents = bannerIFrame.contents();
		// chequear que haya algo cargado en el iframe
		if (contents.length > 0 && 
			contents.find("body>*").length > 0){
			
			// sólo marcar que fue corregido cuando el banner terminó de cargarse
			bannerIFrame.data("fixed", true);
			
			// chequear si el banner vino vacío
			if (contents.find("body").find("a").length == 0 &&
				contents.find("body").find("object").length == 0) {
				
				// el banner vino vacío, así que hay que ocultarlo
				var wrapper = $("#" + bannerIFrame.attr("id") + "-wrapper");
				if (wrapper.length == 0) {
					// ocultar el banner
					bannerIFrame.css("display","none"); 
					var parent = bannerIFrame.parent();
					if (parent.is("li")){
						// agregar el estilo de firstBanner al primer banner visible
						if (parent.hasClass("firstBanner")){
							parent.next().addClass("firstBanner");
						}
						// ocultar el li del banner para que no ocupe lugar
						parent.hide(); 
					}
				} else {
					wrapper.css("display","none");
				}
			}
			
			// Set inline style to equal the body height of the iframed content.
			var correction = 0;	
			bannerIFrame.css("height", bannerIFrame.contents()[0].body.offsetHeight - correction);
			// alinear los banners a la izquierda modificando su css interno
			bannerIFrame.contents().find("body").css("text-align", "left");
			// show background
			bannerIFrame.css("background-position", "0 0");
			if (bannerIFrame.hasClass("bannerFondoBlanco")){
				bannerIFrame.contents().find("body").css("background-color","white");
			}	
		}
	}
}

$(document).ready(function(){
	// Set specific variable to represent all iframe tags.
	var iFrames = $("iframe[id^='banner']");
	// Resize heights.
	function iResize(){
		// Iterate through all iframes in the page.
		for (var i = 0, j = iFrames.length; i < j; i++){
			// Set inline style to equal the body height of the iframed content.
			iFrames[i].style.height = iFrames[i].contentWindow.document.body.offsetHeight + 'px';
		}
	}

	// Check if browser is Safari or Opera.
	if ($.browser.safari || $.browser.opera){
		// Start timer when loaded.
		iFrames.load(function(){
				setTimeout(iResize, 0);
		});

		// Safari and Opera need a kick-start.
		for (var i = 0, j = iFrames.length; i < j; i++){
			var iSource = iFrames[i].src;
			iFrames[i].src = '';
			iFrames[i].src = iSource;
			fixBanner(iFrames[i]);
		}
	}else{
		// For other good browsers.
		iFrames.each(function(i,e){
			var current = $(iFrames[i]);
			current.data("fixed", false);
			var fn = function(){
				return fixBanner(current);
			}
			
			current.data("loaded", false);
			if (!$.browser.msie){
				current.load(function(){fn(); current.data("loaded", true);});
			} else {
				// IE no se comporta igual cuando tiene los datos cacheados que cuando no
				// (en caso de que estén cacheados, no ejecuta el load)
				current.data("loaded", true);
			}
			
			/* Esto corrige el error de IE que no detecta bien cuando se cargó el iframe */
			var delayExec = function(){
				if (current.data("loaded")){
					fn();
					if (!current.data("fixed")){
						setTimeout(delayExec, 4000);
					}
					// en el caso de que ya esté corregida ya no se vuelve a ejecutar
				} else {
					setTimeout(delayExec, 4000);
				}
			}
			setTimeout(delayExec, 4000);
		});
	}
});


function fixRascacieloResize(bannerId){		
	var object = $("#"+bannerId);
	object.data("loaded",false);
	object.data("fixed", false);
	if(!$.browser.msie){
		object.load(function() {			
			fixingRascacieloResizeBanner(object);
			object.data("loaded",true);
		});
	}else{
		object.data("loaded",true);
	}
	
	/* Esto corrige el error de IE que no detecta bien cuando se cargó el iframe */
	var delayExec = function(){
		if (object.data("loaded")){
			fixingRascacieloResizeBanner(object);
			if (!object.data("fixed")){
				setTimeout(delayExec, 4000);
			}
			// en el caso de que ya esté corregida ya no se vuelve a ejecutar
		} else {
			setTimeout(delayExec, 4000);
		}
	}
	setTimeout(delayExec, 4000);	
}

function fixingRascacieloResizeBanner(iframe){	
	var element = iframe.contents().find('object');
	if (element.length == 0) element = iframe.contents().find('a');
	if (element.length == 0) element = iframe.contents().find('div');
	if (element.length == 0) return;
	
	var width = element.width();
	var originalWidth = iframe.width(); 
	if (width <= originalWidth) return;	
	
	$(iframe).parent().css("height",iframe.css("height"));
		
	iframe.css('position', 'absolute');
	iframe.css('width', width);
	iframe.css('z-index', 0);
	iframe.css('margin-left', originalWidth - width);
	
	iframe.css("background","none");
	iframe.css('background-color',"transparent");	
	iframe.contents().find("body").css("background-color","transparent");
	if($.browser.msie){
		document.getElementById(iframe.attr("id")).allowTransparency = true;		
	}
	
	iframe.hover(
			function(eventObject) {//handlerIn(eventObject)
				iframe.css('z-index', 99999);
			}, 
			function(eventObject) {//handlerOut(eventObject)
				iframe.css('z-index', 0);
			}
	);
	iframe.data("fixed",true);
	var iSource = iframe.src;
	iframe.src = '';
	iframe.src = iSource;
}