﻿var SKIN_PATH = "/KoegeGolf/_Res/Images/";

var SKIN_TOP_LEFT = 1;
var SKIN_TOP = 2;
var SKIN_TOP_RIGHT = 4;
var SKIN_RIGHT = 8;
var SKIN_BOTTOM_RIGHT = 16;
var SKIN_BOTTOM = 32;
var SKIN_BOTTOM_LEFT = 64;
var SKIN_LEFT = 128;
var SKIN_BODY = 256;

var SKIN_CORNERS = SKIN_TOP_LEFT | SKIN_TOP_RIGHT | SKIN_BOTTOM_RIGHT | SKIN_BOTTOM_LEFT;
var SKIN_ALL = 512 - 1;


var SKINS = {
        "RoundedCorners": { postfix: "boksgrafik/", padding: [6, 6, 6, 6] }                
    };
	
var CSS_RULES = {
	"roundedCorners": "RoundedCorners"	
};

	
function createPanelsFromRules(oContainer) {
	if( !oContainer ) {
		oContainer = document.body;	
	}
	var cDivs = oContainer.getElementsByTagName("DIV");
	var cTargets = [];
	for( var i = 0; 	i < cDivs.length; i++ ) {		
		if( CSS_RULES[cDivs[i].className] ) {			
			cTargets.push({div: cDivs[i], skin: CSS_RULES[cDivs[i].className]}); 	
		}
	}
	
	for( var i = 0; i < cTargets.length; i++ ) {
		cTargets[i].div.style.border = "0px none black";
		createSkinPanel(cTargets[i].div, cTargets[i].skin);	
	}
}


var cPanels = [];
var cNewPanels = [];
var skinPanelID = 0;
var toPanels = null;

var bIsIE = document.all != null;
var bIsIE7 = navigator.appVersion.toLowerCase().indexOf("msie 7") != -1;
var bQuirksMode = document.compatMode == "BackCompat";

function createSkinPanel(o, sSkin, sWidth, sHeight)
{         
    var oSkin = SKINS[sSkin];
    var iImages = oSkin.images || SKIN_ALL;        
    var sSkinPath = SKIN_PATH + oSkin.postfix;
    var oDiv = o || getCreatedElement();	
	var sPanelID = "skinPanel" + (skinPanelID++);
		
	var oFrame = document.createElement("DIV");	
	oFrame.style.position = "relative";
	oFrame.id = sPanelID;			
	
	var oImageContainer = document.createElement("DIV");	
	oImageContainer.style.position = "absolute";
	oImageContainer.style.top = "0px";
	oImageContainer.style.left = "0px";
	oImageContainer.style.display = "none";
	
	oImageContainer.id = sPanelID + "_imageContainer";
	
	var cImages = [];
    if( (iImages & SKIN_TOP_LEFT) > 0 ) createImage(sPanelID + "_img0", sSkinPath + "Panel_TopLeft", oSkin.padding[3], oSkin.padding[0], 0, 0);	    	    
    if( (iImages & SKIN_TOP) > 0 ) createImage(sPanelID + "_img1", sSkinPath + "Panel_Top", 1, oSkin.padding[0], 0, oSkin.padding[3]);
    if( (iImages & SKIN_TOP_RIGHT) > 0 ) createImage(sPanelID + "_img2", sSkinPath + "Panel_TopRight", oSkin.padding[3], oSkin.padding[0], 0, 0);
    
    if( (iImages & SKIN_LEFT) > 0 ) createImage(sPanelID + "_img3", sSkinPath + "Panel_Left", oSkin.padding[3], 1, oSkin.padding[0], 0);
    if( (iImages & SKIN_BODY) > 0 ) createImage(sPanelID + "_img4", sSkinPath + "Panel_Body", 1, 1, oSkin.padding[0], oSkin.padding[3]);
    if( (iImages & SKIN_RIGHT) > 0 ) createImage(sPanelID + "_img5", sSkinPath + "Panel_Right", oSkin.padding[1], 1, oSkin.padding[0], oSkin.padding[1]);
    	    	    
    if( (iImages & SKIN_BOTTOM_LEFT) > 0 ) createImage(sPanelID + "_img6", sSkinPath + "Panel_BottomLeft", oSkin.padding[3], oSkin.padding[2], 0, 0);	    	  
    if( (iImages & SKIN_BOTTOM) > 0 ) createImage(sPanelID + "_img7", sSkinPath + "Panel_Bottom", 1, oSkin.padding[2], 0, oSkin.padding[1]);	    	    	    
    if( (iImages & SKIN_BOTTOM_RIGHT) > 0 ) createImage(sPanelID + "_img8", sSkinPath + "Panel_BottomRight", oSkin.padding[1], oSkin.padding[2], 0, 0);

	oFrame.appendChild(oImageContainer);
	
    var cPadding = oSkin.containerPadding || oSkin.padding;
    
    var sContainerPadding = cPadding.join("px ") + "px";    
    
    var oContainer = document.createElement("DIV");
    oContainer.id = sPanelID + "_container";
    oContainer.style.position = "relative";	
    if( bIsIE ) {		
		if( bIsIE7 && !bQuirksMode ) {		
			oContainer.style.minHeight = "1px";
		} else {
			oContainer.style.height = "1px";
			oContainer.style.overflow = "visible";
		}        
    }
	
	// If the div to be wrapped has an explicit height declaration		
	if( o.style.height && bIsIE && bQuirksMode ) {
		oContainer.style.height = o.style.height;	
		oFrame.style.height = o.style.height;	
	}
	
	
    oContainer.style.padding = sContainerPadding;        
    
    oFrame.appendChild(oContainer);    
    
    oDiv.parentNode.insertBefore(oFrame, oDiv);		    
	oContainer.appendChild(oDiv);	
	
	var oPanel = { panelID: sPanelID, skin: oSkin };
	cPanels.push(oPanel);
	
	cNewPanels.shift(oPanel);
	clearTimeout(toPanels);
	toPanels = setTimeout("refreshSkinPanels()", 10);
	
	//setTimeout("refreshSkinPanel(cPanels[" + (cPanels.length - 1) + "])", 1);
	
	
	
	
	    function createImage(sID, sSrc, iWidth, iHeight, iTop, iLeft) {
	        	    	    
	        sSrc += ".gif"; //sSrc += oSkin.isPng ? ".png" : ".gif";
	        
	        if( bIsIE && oSkin.isPng ) {
	            var oImg = document.createElement("DIV");	        
	            oImg.style.fontSize = "0pt";
	            oImg.style.padding = "0px";
	            oImg.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + sSrc + "',sizingMethod='scale')";	            
	        } else {
	            var oImg = document.createElement("IMG");	        
	            oImg.src = sSrc;	        
	        }
	        
	        oImg.id = sID;
	        
	        oImg.style.position = "absolute";
	        oImg.style.top = iTop + "px";
	        oImg.style.left = iLeft + "px";
	        oImg.style.width = iWidth + "px";
	        oImg.style.height = iHeight + "px";	        
	        
	        oImageContainer.appendChild(oImg);	        
	    }
}

function skinBox_getPrevSiblingElement(o)
{
	for( ;; ) {
		o = o.previousSibling;
		if( !o ) return null;
		else if( o.nodeType == 1 ) return o;					
	}				
}


function getCreatedElement()
{
    var c = document.all || document.body.getElementsByTagName("*");
	return skinBox_getPrevSiblingElement(c[c.length - 1]);     
}


var __iSkinPanel = 0;
var __iRefreshBatchSize = 10;
function refreshSkinPanels() {
	var iDelay = 100;
	if( cNewPanels.length ) {
		iDelay = 10;
		refreshSkinPanel(cNewPanels.unshift());	
	} else {
		for( var i = 0; i < __iRefreshBatchSize; i++ ) { 
			refreshSkinPanel(cPanels[__iSkinPanel]);
			__iSkinPanel = ++__iSkinPanel % cPanels.length;
		}
    }
    
    clearTimeout(toPanels);
    toPanels = setTimeout("refreshSkinPanels()", iDelay);
}

function refreshSkinPanel(oPanel) {
    var oFrame = document.getElementById(oPanel.panelID);
	if( oFrame.style.display == "none" ) return;
       
	var oContainer = document.getElementById(oPanel.panelID + "_container");		
	
    var oDiv = oContainer.firstChild;
    
    if( !oDiv ) {        
        return false;
    }
       	
	try {
		var iWidth = oDiv.offsetWidth + parseInt(oContainer.style.paddingLeft) + parseInt(oContainer.style.paddingRight);
		var iHeight = oDiv.offsetHeight + parseInt(oContainer.style.paddingTop) + parseInt(oContainer.style.paddingBottom);		
			
		if( iWidth > 0 && oPanel.width != iWidth ) {                           
			oFrame.firstChild.style.display = "none";
			
			oPanel.width = iWidth;        
			for( var i = 1; i < 9; i += 3 ) {            
				var oImg1 = document.getElementById(oPanel.panelID + "_img" + i);
				oImg1.style.width = (iWidth - (oPanel.skin.padding[3] + oPanel.skin.padding[1])) + "px";						
				
				var oImg2 = document.getElementById(oPanel.panelID + "_img" + (i + 1));
				oImg2.style.left = (iWidth - oPanel.skin.padding[1]) + "px";
			}       		
		}
		
		
		if( iHeight > 0 && oPanel.height != iHeight ) {          
			oFrame.firstChild.style.display = "none";
						  
			oPanel.height = iHeight;
			for( var i = 3; i <= 5; i++  ) {
				var oImg1 = document.getElementById(oPanel.panelID + "_img" + i);
				oImg1.style.height = (iHeight - (oPanel.skin.padding[0] + oPanel.skin.padding[2])) + "px";                        
				var oImg2 = document.getElementById(oPanel.panelID + "_img" + (i + 3));
				oImg2.style.top = (iHeight - oPanel.skin.padding[2]) + "px";
			}              
		}                
		
		if( oFrame.firstChild.style.display == "none" ) {
			oFrame.firstChild.style.display = "";            
		}
	} catch( e ) {}
}

var cDelayedCreates = [];
function createSkinPanelDelayed(o, sSkin, sWidth, sHeight) {	
	cDelayedCreates.push([o || getCreatedElement(), sSkin, sWidth, sHeight]);
}

function createDelayedPanels(_bGo) {
	if( !_bGo ) setTimeout("createDelayedPanels(true)", 1);
	else {
		for( var i = 0; i < cDelayedCreates.length; i++ ) {		
			createSkinPanel(cDelayedCreates[i][0], cDelayedCreates[i][1], cDelayedCreates[i][2], cDelayedCreates[i][3]);
		}
		}
}