/**
 * @author Hans Elgelid
 */
var JayaYui = {}; // global Object cointainer
JayaYui.prepareModel = function(m, div){
	//insertCss(model.cssrules);
}
JayaYui.refresh = function(m, div) {
	div.style.position = "absolute";
	var width = m.w;
	if(JayaUtil.isDefined(m.w)) {
		if (Jaya.models["left"] !=undefined && m.name =="content"
			&& Jaya.models["left"].numberOfModules == 0) {
			width = width + Jaya.models["left"].w ;
			//alert(" width=" + width);
		}
		if (Jaya.models["right"] !=undefined && m.name =="content"
			&& Jaya.models["right"].numberOfModules == 0) {
			width = width + Jaya.models["right"].w ;
			//alert( Jaya.models["right"].w + " width=" + width);
		}
		div.style.width = width + "%";
	}
	
	var left = JayaUtil.percentToPx(m.x);
	//alert(m.name + " m.xbase = " + m.xbase + " " + left + " " + m.x);
	if(JayaUtil.isDefined(m.x) && m.xbase == "windowtopleft") {
		if ( m.name =="content" && Jaya.models["left"].numberOfModules == 0) {
			left = left - JayaUtil.percentToPx(Jaya.models["left"].w);
		}
	} else if(m.xbase == "center") {
		left = JayaUtil.percentToPx(50) - Jaya.divs[m.name].clientWidth/2;
	} else if(JayaUtil.isDefined(m.x) && JayaUtil.isDefined(Jaya.models[m.xbase])) {
		left = left + JayaUtil.percentToPx(Jaya.models[m.xbase].x) + JayaUtil.percentToPx(Jaya.models[m.xbase].w);
		//alert(m.name + " m.xbase= " + m.xbase + " left=" + left + " m.x=" + m.x);
	}
	div.style.left =left + "px";
	
	var top = JayaUtil.percentToPxY(m.y);
	if(JayaUtil.isDefined(m.y) && m.ybase == "windowtopleft") {

	} else if(m.ybase == "windowbottomleft") {
		top = JayaUtil.getBrowserWindowHeight() - JayaUtil.percentToPxY(Jaya.models[m.name].h) - JayaUtil.percentToPxY(Jaya.models[m.name].y);
		//alert(m.name + " " + JayaUtil.getBrowserWindowHeight() +" m.ybase= " + m.ybase + " top=" + top + " m.h=" + m.h + " Jaya.models[m.ybase]=" + Jaya.models[m.ybase]);
	} else if(m.ybase == "center") {
		top = JayaUtil.percentToPx(50, JayaUtil.getBrowserWindowHeight()) - JayaUtil.percentToPx(Jaya.models[m.name].h/2);
	} else if(JayaUtil.isDefined(m.y) && JayaUtil.isDefined(Jaya.models[m.ybase])) {
		top = top + JayaUtil.percentToPx(Jaya.models[m.ybase].y) + Jaya.guidivs[m.ybase].clientHeight;
		//alert(m.name + " m.ybase= " + m.ybase + " left=" + left + " m.y=" + m.y + " Jaya.models[m.ybase]=" + Jaya.models[m.ybase]);
	}
	div.style.top  = top + "px";
	
	if(JayaUtil.isDefined(m.h)) {
		var joomlaDivHeight = Jaya.divs[m.name].offsetHeight;
		var setDivHeight = JayaUtil.percentToPx(m.h, JayaUtil.getBrowserWindowHeight());
		if (joomlaDivHeight > setDivHeight) {
			div.style.height = joomlaDivHeight + "px";
		} else {
			div.style.height = setDivHeight  +"px";
		}
	}

	if (m.cssurl.indexOf("yui.css") > 0) {
		if (JayaUtil.isDefined(m.guih)) {
			div.style.height = m.guih + "%";
		} else {
			div.style.height = m.h + "%";
		}
	} else {
		if ( m.numberOfModules == 0 || m.pos == "mainmenu") {
			div.style.height = m.h + "%";
			//alert("m.name " + m.name + " " + Jaya.divs[m.name].offsetHeight);
		} else {
			//alert("m.name " + m.name + " " + Jaya.divs[m.name].offsetHeight);
			div.style.height = (Jaya.divs[m.name].offsetHeight)  +"px";
		}
	}
	
	if(JayaUtil.isDefined(m.z)) {
		div.style.zIndex = m.z - 1;
	}
	//Logger.log("GUI REFRESH" + div.id + " " + div.style.height);
	JayaUtil.setOpacity(div, m.alpha);
	div.style.fontFamily  = m.fontfamily;
	div.style.color = m.fgcolor;
}
JayaYui.applyYuiCss = function(m) {
	var bgurl;
	var cssClassOrIdSelector;
	var cssDeclaration ="vertical-align:middle; line-height:22px; font-weight:bold;";
	JayaUtil.createCSS("#"+m.name + "_yuipanel.yui-panel .hd span", cssDeclaration);
	
	//Header background.
	if (JayaUtil.isDefined(m.topyuiimage)) {
		JayaUtil.topyuiimage = JayaYui.yuirooturl + m.topyuiimage;
	} else {
		JayaUtil.topyuiimage = JayaYui.yuirooturl + JayaYui.topyuiimage;
		//alert(m.name + " " +JayaUtil.yuirooturl + " topyuiimage=" + JayaUtil.topyuiimage + " closeyuiimage=" + JayaUtil.closeyuiimage);
	}
	cssDeclaration = "padding:0; border:none; overflow:visible;" 
	//cssDeclaration = "width:100%; height:" + m.topyuiimageheight +"px";
	JayaUtil.createCSS("#" + m.name + "_yuipanel.yui-panel .hd", cssDeclaration);
	//
	if (JayaUtil.isDefined(m.closeyuiimage)) {
		JayaUtil.closeyuiimage = JayaYui.yuirooturl + m.closeyuiimage;
	} else {
		JayaUtil.closeyuiimage = JayaYui.yuirooturl + JayaYui.closeyuiimage;
	}
	cssDeclaration = "padding:0; border:none; background:url('" + JayaYui.closeyuiimage +
					 "'); position:absolute; top:2px; right:5px; height:10px; width:10px; " ;
	JayaUtil.createCSS("#"+m.name + "_yuipanel.yui-panel .container-close", cssDeclaration);
	
	if (JayaUtil.isDefined(m.closeoveryuiimage)) {
		JayaUtil.closeoveryuiimage = JayaYui.yuirooturl + m.closeoveryuiimage;
	} else {
		JayaUtil.closeoveryuiimage = JayaYui.yuirooturl + JayaYui.closeoveryuiimage;
	}
	cssDeclaration = "background:url('" + JayaUtil.closeoveryuiimage + "') ; " 
	JayaUtil.createCSS("#" + m.name + "_yuipanel.yui-panel .container-close:hover", cssDeclaration);
	JayaUtil.createCSS( "#" + m.name + "_yuipanel.yui-panel .bd","overflow:auto; padding:4px; border:none;");
	JayaUtil.createCSS( "#" + m.name + "_yuipanel.yui-panel .ft", "font-size:2%; color:#ffffff; padding:2px; overflow:auto; border-top:none; background:none;");
	//JayaUtil.createCSS("#" + m.name + "_yuipanel .yui-resize-handle-br", "right:0; bottom:-2px; height: 10px; width: 10px; position:absolute;");
	JayaUtil.createCSS("#" + m.name + "_c.hide-scrollbars .yui-resize .bd", "overflow: hidden;");
	JayaUtil.createCSS("#" + m.name + "_c.show-scrollbars .yui-resize .bd", "overflow: auto;");
	JayaUtil.createCSS("#" + m.name + "_c.show-scrollbars .underlay", "overflow: visible;");
	JayaUtil.createCSS(".yui-resize .yui-resize-handle-br", "height:5px;width:5px;bottom:0;right:0;cursor:se-resize;z-index:22;zoom:1; background-image:url('" + m.yuirooturl  + m.toprightyuiimage +"');background-repeat:no-repeat;background-position:-22px -62px;");
	//alert("cssClassOrIdSelector="  + cssClassOrIdSelector + " cssDeclaration=" + cssDeclaration );
	return;
}

JayaYui.makeYuiPanel = function(m, yuidiv) {
	var yui_panel = new YAHOO.widget.Panel(m.name + "_yuipanel", {
		    draggable: true,
            width: "50px",
            height: "70px",
            autofillheight: "body", // default value, specified here to highlight its use in the example
            constraintoviewport:false,
            context: ["showbtn", "tl", "bl"]
		}
	);
	JayaYui.panels[m.name] = yui_panel;
	JayaYui.applyYuiCss(m);
	
	//yui_panel.setHeader("<div class='tl'></div>" + m.myheader + "<div class='tr'></div>");
	yui_panel.setHeader("<img src='"+ JayaUtil.topyuiimage + "' WIDTH='100%' height='" 
			+ JayaUtil.percentToPx(m.topyuiimageheight, JayaUtil.getBrowserWindowHeight()) + "px '/>" );
	
	yui_panel.setBody(m.myhtml);
	yui_panel.setFooter("<a href='http://gothenburg.tv'>  'Made in Gothenburg.' </a>");
	yui_panel.render(yuidiv);
	
	 // Create Resize instance, binding it to the 'resizablepanel' DIV 
    var resize = new YAHOO.util.Resize(m.name + "_yuipanel", {
        handles: ["br"],
        autoRatio: false,
        minWidth: 50,
        minHeight: 70,
        status: false 
    });
	
	// Setup startResize handler, to constrain the resize width/height
    // if the constraintoviewport configuration property is enabled.
    resize.on("startResize", function(args) {
	    if (this.cfg.getProperty("constraintoviewport")) {
            var D = YAHOO.util.Dom;
            var clientRegion = D.getClientRegion();
            var elRegion = D.getRegion(this.element);
            resize.set("maxWidth", clientRegion.right - elRegion.left - YAHOO.widget.Overlay.VIEWPORT_OFFSET);
            resize.set("maxHeight", clientRegion.bottom - elRegion.top - YAHOO.widget.Overlay.VIEWPORT_OFFSET);
        } else {
            resize.set("maxWidth", null);
            resize.set("maxHeight", null);
    	}
    }, yui_panel, true);

    resize.on("resize", function(args) {
        var panelHeight = args.height;
        this.cfg.setProperty("height", panelHeight + "px");
    }, yui_panel, true);
	return;
}
