/**
 * @Andres senn
 */
/**
 * @author Administrador
 */
var pp = {
	util:{
		getDim:function(ele){
			var dim = {};
			if(ele == "document"){
				ele = document;				
				dim.w = $(ele).width();
				dim.h = $(ele).height();
			}else
			if(ele == "window"){
				ele = window;				
				dim.w = $(ele).width();
				dim.h = $(ele).height();
			}else{				
				dim.w = $(ele).outerWidth();
				dim.h = $(ele).outerHeight();
			}
			return dim;
		},
		getPos:function(ele){
			var pos = {};
			if(ele == "document" || ele == "window"){
				pos = {
					x : 0,
					y : 0
				};
			}else{
				pos = {
					x : $(ele).offset().left,
					y : $(ele).offset().top
				};
			}
			return pos;
		},
		setCenter:function(ele,rel){
			var elex,eley,elew,eleh,posx,posy;
			elex = pp.util.getPos(ele).x;
			eley = pp.util.getPos(ele).y;
			elew = pp.util.getDim(ele).w;
			eleh = pp.util.getDim(ele).h;
			posx = parseInt((pp.util.getDim(rel).w/2)+pp.util.getPos(rel).x-(elew/2));
			posy = parseInt((pp.util.getDim(rel).h/2)+pp.util.getPos(rel).y-(eleh/2));
			$(ele).css("position","absolute").css("left",posx+"px").css("top",posy+"px");
		}		
	},
	cont: function(opt){
		var ov, win, cont, ifr, id;
		var settings = jQuery.extend({
			idframe: '',
			width: 300,
			height: 200,
			overlay: true,
			bgcolor: "#eee",
			ovcolor: "#000",
			ovopacity: "0.2",
			btnclose: "",
			url: "",
			ico: "",
			html: "",
			modal: false,
			iframe: false,
			data: {},
			onclose: null,
			onopen: null
		}, opt || {});
		if (settings.overlay) {
			ov = pp.overlay({
				target: "document",
				color: settings.ovcolor,
				opacity: settings.ovopacity
			});
		}
		win = document.createElement("div");
		cont = document.createElement("div");		
	
		$(win).attr("style", "background:" + settings.bgcolor + ";height:" + settings.height + "px;width:" + settings.width + "px;border:2px solid #333;");
		
		$(cont).attr("style", "overflow:auto;height:" + (settings.height - 24) + "px;padding:4px 0px;width:" + settings.width + "px");
		
		$(win).append(cont);
		
		if (settings.url != "" && !settings.iframe) {
			$.post(settings.url, {}, function(data){
				$("body").append(win);
				$(cont).html(data);
				pp.util.setCenter(win, "window");
				
				if (typeof settings.onopen == 'function') {
					settings.onopen();
				}
			});
		}
		else 
			if (settings.iframe) {
				ifr = document.createElement("iframe");
				// id
				if (settings.idframe != '') {
					$(ifr).attr("id", settings.idframe);
				}
				$(ifr).attr("style", "padding:0;margin:0;").attr("marginwidth", "0").attr("marginheight", "0").attr("src", settings.url).attr("width", "100%").attr("height", settings.height - 30).attr("frameborder", "0");
				$(cont).html(ifr);
				$(win).css("padding", "0");
				$("body").append(win);
				pp.util.setCenter(win, "window");
				
				// Dentro del iframe
				if (settings.btnclose != "") {
					$(ifr).contents().find(settings.btnclose).live("click",function(){
						ov.remove();
						$(win).remove();
					});
				}
				
			}
			else {
				$(cont).html(unescape(settings.html));
				$("body").append(win);
				pp.util.setCenter(win, "window");
				
				if (typeof settings.onopen == 'function') {
					settings.onopen();
				}
			}
		if (!settings.iframe && settings.btnclose != "") {
			$(settings.btnclose).click(function(){
				ov.remove();
				$(win).remove();
			});
		}
		$(window).resize(function(){
			pp.util.setCenter(win, "window");
		});
		if (settings.overlay && !settings.modal) {
			$(ov).click(function(){
				ov.remove();
				$(win).remove();
			});
		}
		var obj = {};
		if (settings.overlay) {
			obj.ov = ov;
		}
		obj.win = $(win);
		obj.settings = settings;
		return obj;
	},
	removeCont: function(cont){
		if (typeof cont.ov != 'undefined') {
			cont.ov.remove();
		}
		cont.win.remove();
		if (typeof cont.settings.onclose == 'function') {
			cont.settings.onclose();
		}
	},
	overlay : function(o){
		o = $.extend({
			target: 'document',
			color:'#000',
			opacity: '0.5'
		}, o);
		var tw,th,tx,ty;		
		var ele = document.createElement("div");
		if(o.target == "document"){
			tw = pp.util.getDim("document").w;
			th = pp.util.getDim("document").h;
			tx = 0;
			ty = 0;
		}else
		if(o.target == "window"){
			tw = pp.util.getDim("window").w;
			th = pp.util.getDim("window").h;		
			tx = 0;
			ty = 0;
		}else{
		
			tw = pp.util.getDim(o.target).w;
			th = pp.util.getDim(o.target).h;		
			tx = pp.util.getPos(o.target).x;
			ty = pp.util.getPos(o.target).y;
		}
		$(ele).css("left",tx+"px").css("top",ty+"px").css("background",o.color).css("opacity",o.opacity).css("height",th+"px").css("width",tw+"px").css("position","absolute");
		if(o.target == "document" || o.target == "window"){		
			$("body").append(ele);
			$(window).resize(function(){
				$(ele).css("height",$(window).height()+"px").css("width",$(window).width()+"px");
			});
		}else{
			$(o.target).append(ele);
		}
		return $(ele);
	}
}
