/**********************************/
/*            EXTENDS             */
/**********************************/
/*         VENTANA MODAL          */
/**********************************/

jQuery.extend(jQuery, {

	vModal: function(opciones) {
		
		//if ($("#overlay").is(":hidden")) return false;
		if (typeof $('.lb-activa:first').get(0) != 'undefined') {
			var $els = $('.lb-activa');
			$els.stop;
			$('#overlay').stop;
			$("#vModal-loader").hide()
			$els.removeClass('lb-activa').fadeOut(150).queue(function() {
				$('#overlay').fadeTo(200, 0).queue(function() {
					if ($.browser.version <= 6.0 && $.browser.msie) {
						$('select').css({visibility: 'visible'});
					}
					$(this).css({display: 'none'}).dequeue();
				});
				$(this).dequeue();
			});
			return false;
		}
		
			
		var opt = {
			ancho: 520,
			alto: 400,
			id: 'lb-box',
			fxVel: 150,
			overlayVel: 200,
			overlayOp: 0.7
		};
		
    	$.extend(opt, opciones);  	
    	
    	opt.ancho = ($('#'+opt.id).css('width') == 'auto') ? 
    		opt.ancho : 
    		parseInt($('#'+opt.id).width());
    	/**/
		
		for (var sp in opciones.params) {
			$('#'+opt.id+' .'+sp).html(opciones.params[sp]);
		}
		
		//Se crean los elementos necesarios
		
		if (typeof $('#vModal-loader').get(0) == 'undefined') {
			var nuevoOv = '<div id="vModal-loader" style="display: none" onclick="$.vModal();"><div onclick="$.vModal();"></div></div>';
			$('body').append(nuevoOv);
		}
		
		if (typeof $('#overlay').get(0) == 'undefined') {
			var nuevoOv = '<div id="overlay" style="display: none"></div>';
			$('body').append(nuevoOv);
		}
		//--
		
		var $el = $('#'+opt.id);
		$el.addClass('lb-activa');
		$el.css({ width: opt.ancho + 'px' });
		
		/*
		$('#overlay').click(function() {
			$el.removeClass('lb-activa').fadeOut(opt.fxVel).queue(function() {
				$('#overlay').fadeTo(200, 0).queue(function() {
					$(this).css({display: 'none'}).dequeue();
				});
				if ($.browser.version <= 6.0 && $.browser.msie) {
					$('select').css({visibility: 'visible'});
				}
				$(this).dequeue();
			});
		});
		/**/
		
		if ($.browser.version <= 6.0 && $.browser.msie) {
			$('select').css({visibility: 'hidden'});
			$('#'+opt.id+' select').css({visibility: 'visible'});
		}
		
		/**
		 * Calcular el alto y limitarlo
		 */
		$el.css({visibility: 'hidden',display: 'block'});
		var innerHeight = $('#'+opt.id + ' div.caja_cuerpo').height();
		$el.css({display: 'none',visibility: 'visible'});
		var maxH = opt.alto;
		$('#'+opt.id+' div.caja_cuerpo').each(function() {
			var $this = $(this);
			if (innerHeight > maxH) {
				$this.css({height: maxH});
			}
		});
		/**/
		
		$('#overlay').css({
			opacity: 0,
			display: '',
			background: '#000',
			width: '100%',
			height: $(document).height()+'px',
			position: 'absolute',
			zIndex: 150,
			top:0,
			left:0
		}).fadeTo(200, opt.overlayOp)
		.queue(function() {
			$("#vModal-loader").show();
			$el.centerInClient().css({zIndex: 151, display: 'none'});
			//console.log($el);
			if (typeof $el.find('iframe').get(0) != 'undefined') {
				$el.find('iframe').load(function() {
					$(this).parent().fadeIn(opt.fxVel, function() { $("#vModal-loader").hide(); });
				});
			} else {
				$el.fadeIn(opt.fxVel);
				$("#vModal-loader").hide();
			}
			
			$(this).dequeue();
		});
		
		return false;
	}
});


$.fn.centerInClient=function(options){var opt={forceAbsolute:false,container:window,completeHandler:null};$.extend(opt,options);return this.each(function(i){var el=$(this);var jWin=$(opt.container);var isWin=opt.container==window;if(opt.forceAbsolute){if(isWin)
el.remove().appendTo("body");else
el.remove().appendTo(jWin.get(0));}
el.css("position","absolute");var heightFudge=isWin?2.0:1.8;var x=(isWin?jWin.width():jWin.outerWidth())/2-el.outerWidth()/2;var y=(isWin?jWin.height():jWin.outerHeight())/heightFudge-el.outerHeight()/2;y=(y<0)?0:y;el.css("left",x+jWin.scrollLeft());el.css("top",y+jWin.scrollTop());if(opt.completeHandler)
opt.completeHandler(this);});}


/*
$(document).ready(function() {
	
	var iframeFn = $.fn.fancybox.showIframe;
	$.fn.fancybox.showIframe = function() {
		$("#fancy_frame").attr('allowTransparency','true');
		iframeFn();
	}

});


// Rutina para cuando el fancybox se carga "a pedido"
window.onload = function() {
	if (typeof $.fn.fancybox != 'undefined') {
		var iframeFn = $.fn.fancybox.showIframe;
		$.fn.fancybox.showIframe = function() {
			$("#fancy_frame").attr('allowTransparency','true');
			iframeFn();
		}
	}
};
/**/

$.fn.oneClick = function(o) {
	var opts = {
		'showCloseButton': true,
		'hideOnOverlayClick': false,
		'frameWidth': 460,
		'frameHeight': 460,
		'overlayColor': '#000',
		'overlayOpacity': 0.7,
		'padding': 0,
		'callbackOnStart': function() {
			$("#fancy_outer").addClass("oneclickStyle");
		},
		'callbackOnClose': function() {
			$("#fancy_outer").removeClass("oneclickStyle");
		},
		'callbackOnShow': function(obj) {
			//TODO: fix, explicado en la funcion (borrar mas adelante)
			//fixClosePosition(obj);
		}
	}
	
	$.extend(opts, o);
	
	this.each(function(i) {
		$el = $(this).addClass('iframe');
		
		var rel = $el.attr("rel");
		var href = $el.attr("href");
		
		var inlineHeight = /height=([0-9]+)/i.exec(rel);
		var inlineWidth = /width=([0-9]+)/i.exec(rel);
		
		var optw = (inlineWidth) ? inlineWidth[1] : opts.frameWidth;
		var opth = (inlineHeight) ? inlineHeight[1] : opts.frameHeight;
		
		$.extend(opts, {
			'frameWidth': parseInt(optw),
			'frameHeight': parseInt(opth)
		});
		
		if (/\?/ig.test(href)) {
			$el.attr("href", href + "&btnCerrar=no");
		}
		else {
			$el.attr("href", href + "?btnCerrar=no");
		}
		
		$el.fancybox(opts);
	});
}


$.fn.destroyOneClick = function() {
	return this.each(function() {
		$(this).unbind('click.fb')
	});
}


// Para que boton cerrar en el iframe siga cerrando el lightbox
// DEPRECATED
var Shadowbox = {
	//close: function() { $.vModal(); }
	close: function() { $.fn.fancybox.close(); }
}

$(document).keyup(function(event){
    if (event.keyCode == 27 && $("#overlay").is(":visible")) {
        $.vModal();
    }
});

/**
 * FIX PARA CORRECCION DE LA POSICION DE BOTON CERRAR
 * EN ONECLICK, PARA DIRECCION TIPO:
 * http://testepcs.i2b.cl/landing_im/lightbox.iws?origen=homeepcs&btnCerrar=false
 * (CASO ESPECIAL)
 */
function fixClosePosition(obj) {
	var $el = (obj.orig.get(0).tagName == 'A') ? obj.orig : obj.orig.parent();
	//var $el = obj.orig;
	var href = $el.attr("href");
	//http://www.entelpcs.cl/landing_i_m/lightbox.iws?origen=videocall&btnCerrar=false
	var ereg = /landing[im_]+\/lightbox/i;
	if (ereg.test(href)) {
		if ($.browser.msie && $.browser.version.substr(0,1)<7)
			$("#fancy_close").css({'margin': '25px 15px 0 0'});
		else {
			$("#fancy_close").css({'margin': '30px 42px 0 0'});
		}
	}
	else {
		$("#fancy_close").css({'margin': '0'});
	}
}