﻿/****************************************************************
 *                                                              *
 * ModalPopups                                                  *
 * -----------                                                  *
 *                                                              *
 * This script offers you a collection of basic modal popups.   *
 *                                                              *
 * Requirements:                                                * 
 * DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" *
 *                                                              *
 * Version 0.1 (initial version)                                *
 * Copyright (c) 2008 Jan Stolk                                 *
 *                                                              *
 * Website: http://www.modalpopups.com                          *
 * E-Mail: stolk_jan@hotmail.com                                *
 *                                                              *
 *                                                              *
 * This library is free software; you can redistribute          *
 * it and/or modify it under the terms of the GNU               *
 * Lesser General Public License as published by the            *
 * Free Software Foundation; either version 3 of the            *
 * License, or (at your option) any later version.              *
 *                                                              *
 * This library is distributed in the hope that it will         *
 * be useful, but WITHOUT ANY WARRANTY; without even the        *
 * implied warranty of MERCHANTABILITY or FITNESS FOR A         *
 * PARTICULAR PURPOSE. See the GNU Lesser General Public        *
 * License for more details.                                    *
 *                                                              *
 * You should have received a copy of the GNU Lesser            *
 * General Public License along with this library;              *
 * Inc., 59 Temple Place, Suite 330, Boston,                    *
 * MA 02111-1307 USA                                            *
 *                                                              *
 ****************************************************************/

/****************************************************************
 *                                                              *
 *  Next release ideas:                                         *
 *                                                              *
 *  maxWidth and maxHeight                                      *
 *      to limit autosize of popup                              *
 *                                                              *
 *  Improve window.onresize                                     *
 *      change is to addHandler etc... to be able to have more  *
 *      than one window or more than one oneesize active        *
 *                                                              *
 ****************************************************************/

// This is the parent of Information Popup
var parentContainer;
var infoParentChild;
var messageToSend;
var parentDivGot;
var isBrowserIE6 = false;

var ModalPopupsDefaults = {
	shadowColor: "#cc0000",
	fontFamily: "",
	fontSize: ""
}

var ModalPopups = {
    Init: function() {
        //No init required, yet
    },
    
    SetDefaults: function(parameters) {
        
        //parameters = parameters || {};
       // ModalPopupsDefaults.shadow = parameters.shadow != null ? parameters.shadow : ModalPopupsDefaults.shadow;
        //ModalPopupsDefaults.shadowSize = parameters.shadowSize != null ? parameters.shadowSize : ModalPopupsDefaults.shadowSize;
       // ModalPopupsDefaults.shadowColor = parameters.shadowColor != null ? parameters.shadowColor : ModalPopupsDefaults.shadowColor;
		//ModalPopupsDefaults.fontFamily = parameters.fontFamily != null ? parameters.fontFamily : ModalPopupsDefaults.fontFamily;
       // ModalPopupsDefaults.fontSize = parameters.fontSize != null ? parameters.fontSize : ModalPopupsDefaults.fontSize;
		
    },

    Info: function(parentDiv, id, title, message, parameters) {
        //Get parameters
        parentDivGot = parentDiv;                parameters = parameters || {};
        if(!title) title = "Info";
		
		//'Alert' specific parameters
        parameters.buttons = "ok";
        parameters.okButtonText = parameters.okButtonText != null ? parameters.okButtonText : ModalPopupsDefaults.okButtonText;

        //Create layers
        var myLayers = ModalPopups._createAllLayers(id, title);
        oPopupInfo = myLayers[0];
        
       messageToSend = message;
		oPopupInfo.innerHTML = message;				//Style all layers        
        ModalPopups._styleAllLayers(id, parameters, myLayers);
    },
    
    Alert: function(id, title, message, parameters) {
        //Get parameters
                parameters = parameters || {};
        if(!title) title = "Alert";
		//typeOfPopup = 'Alert';
		
		
        //'Alert' specific parameters
        parameters.buttons = "ok";
        parameters.okButtonText = parameters.okButtonText != null ? parameters.okButtonText : ModalPopupsDefaults.okButtonText;

        //Create layers
        var myLayers = ModalPopups._createAllLayers(id, title, message, parameters);
        var oPopupBody = myLayers[4];
        
        //'Alert' specific setup of Body
        oPopupBody.innerHTML = message;		
        //Style all layers                ModalPopups._styleAllLayers(id, parameters, myLayers);
    },
    
    
    
    
    //Cancel/Close modal popup    
    Close: function(id) {
    
        window.onresize = null;
        window.onscroll = null;
		
		
		
        if(typeOfPopup == "info"){
    
			if(isBrowserIE6){
				parentContainer.innerHTML = "";
		 	}
		 	else{
		 		parentContainer.removeChild(ModalPopupsSupport.findControl(id+"_popupInfo"));
		 		typeOfPopup = "";
			}
        }
        else{
				
			
			if(parentContainer){
				parentContainer.innerHTML = "";
				typeOfPopup = "";
			}
			
			if(lastVisied == "info"){
				document.body.removeChild(ModalPopupsSupport.findControl(id+"_background"));
				document.body.removeChild(ModalPopupsSupport.findControl(id+"_popup"));
				document.body.removeChild(ModalPopupsSupport.findControl(id+"_shadow"));
			}
			else{
				
				document.body.removeChild(ModalPopupsSupport.findControl(id+"_background"));
				document.body.removeChild(ModalPopupsSupport.findControl(id+"_popup"));
				document.body.removeChild(ModalPopupsSupport.findControl(id+"_shadow"));
			}
			
		}
		lastVisied = "info";
    },

    //Cancel/Close modal popup    
    Cancel: function(id) {
        (id);
    },
    
     //Support variable to put each layer on top, increases everytime a modal popup is created
	_zIndex: 10000,
    
     //Support function to create all layers
    _createAllLayers: function(id, title, message, parameters) {
        if(typeOfPopup == "info"){
			var oBackground = ModalPopupsSupport.makeLayer(id+'_background', true, null);        // 0
			var oPopupInfo = ModalPopupsSupport.makeLayer(id+'_popupInfo', true, null);    // 1
			
		}
        else{			var oBackground = ModalPopupsSupport.makeLayer(id+'_background', true, null);        // 0
			var oPopup = ModalPopupsSupport.makeLayer(id+'_popup', true, null);                  // 1
			var oShadow = ModalPopupsSupport.makeLayer(id+'_shadow', true, null);                // 2
			var oPopupTitle = ModalPopupsSupport.makeLayer(id+'_popupTitle', true, oPopup);      // 3
			var oPopupBody = ModalPopupsSupport.makeLayer(id+'_popupBody', true, oPopup);        // 4
			var oPopupFooter = ModalPopupsSupport.makeLayer(id+'_popupFooter', true, oPopup);    // 5
			
        }        
        //Set default values for button related parameters; OK, Yes, No, Cancel
		if(typeOfPopup != "info"){			/*			var okButtonText = parameters.okButtonText != null ? parameters.okButtonText : ModalPopupsDefaults.okButtonText;
			var yesButtonText = parameters.yesButtonText != null ? parameters.yesButtonText : ModalPopupsDefaults.yesButtonText;
			var noButtonText = parameters.noButtonText != null ? parameters.noButtonText : ModalPopupsDefaults.noButtonText;
			var cancelButtonText = parameters.cancelButtonText != null ? parameters.cancelButtonText : ModalPopupsDefaults.cancelButtonText;
			var onOk = parameters.onOk != null ? parameters.onOk : "ModalPopups.Close(\"" + id + "\");";
			var onYes = parameters.onYes != null ? parameters.onYes : "ModalPopups.Close(\"" + id + "\");";
			var onNo = parameters.onNo != null ? parameters.onNo : "ModalPopups.Close(\"" + id + "\");";
			var onCancel = parameters.onCancel != null ? parameters.onCancel : "ModalPopups.Close(\"" + id + "\");";
			*/        }
        //Create popup 'title' layer
       if(typeOfPopup != "info"){ oPopupTitle.innerHTML = "" ;}
        
        //Create popup 'footer' layer
		if(typeOfPopup != "info"){ oPopupFooter.innerHTML = "";}
        
        //Create Info 'PopupInfo' layer
        		
            
        //Split buttons parameter and create buttons; OK, Yes, No, Cancel
        if(typeOfPopup != "info"){			//parameters.fontFamily = parameters.fontFamily != null ? parameters.fontFamily : ModalPopupsDefaults.fontFamily;
			//var bt = parameters.buttons.split(',');
        }
        
        //Create popup 'body' layer, is done in; Alert, Confirm, YesNoCancel, Prompt and Custom functions.
        if(typeOfPopup == "info"){
			var allLayers = new Array(oPopupInfo);
        }
        else{
			var allLayers = new Array(oBackground, oPopup, oShadow, oPopupTitle, oPopupBody, oPopupFooter, oPopupInfo);
		}
		
		return allLayers;
    },
    
     //Support function to style and position all layers
    _styleAllLayers: function(id, parameters, allLayers) {
        var myLayers = allLayers;
        var oBackground = myLayers[0];
        var oPopup = myLayers[1];
        var oShadow = myLayers[2];
        var oPopupTitle = myLayers[3];
        var oPopupBody = myLayers[4];
        var oPopupFooter = myLayers[5];
        var oPopupInfo = myLayers[6];
        
        ModalPopups._zIndex += 3;
        var zIndex = ModalPopups._zIndex;

        //Get Css parameters for borderColor. 
        parameters.borderColor = parameters.borderColor != null ? parameters.borderColor : ModalPopupsDefaults.borderColor;  // #859DBE

		var cssBackground = "display:inline; position:absolute; z-index: " + (zIndex) + "; left:0px; top:0px; width:100%; height:100%; filter:alpha(opacity=70); opacity:0.7;";
        
        if(ModalPopupsSupport.isOlderIE()) {
			if(typeOfPopup == "info"){
			}
			else{
				var viewport = ModalPopupsSupport.getViewportDimensions();
				cssBackground = "display:inline; position:absolute; z-index: 10; left:0px; top:0px; width:" + viewport.width + "px; height:" + viewport.height + "px; filter:alpha(opacity=70); opacity:0.7; overflow:hidden;";
			}
		}
		
		
        if(typeOfPopup == "info"){			var cssShadow = "display:inline; z-index: " + (zIndex+1) + ";"; 
			var cssPopup = "display:inline; z-index: " + (zIndex+2) + "; background:none; color:black; border:solid 1px " + parameters.borderColor + "; padding:1px;"; // background-color:#EEF1F2
		}
		else{
			var cssShadow = "display:inline; position:absolute; z-index: " + (zIndex+1) + ";"; 
			var cssPopup = "display:inline; position:absolute; z-index: " + (zIndex+2) + "; background:none; color:black; border:solid 1px " + parameters.borderColor + "; padding:1px;"; // background-color:#EEF1F2
		}
        //Get Css parameters for oBackGround layer. 
        parameters.backgroundColor = parameters.backgroundColor != null ? parameters.backgroundColor : ModalPopupsDefaults.backgroundColor;
        cssBackground += " background-color:" + parameters.backgroundColor + ";";

        //Css for oPopup content layers. (oPopupTitle, oPopupBody, oPopupFooter)
        parameters.fontFamily = parameters.fontFamily != null ? parameters.fontFamily : ModalPopupsDefaults.fontFamily;
        parameters.fontSize = parameters.fontSize != null ? parameters.fontSize : ModalPopupsDefaults.fontSize;
        if(typeOfPopup == "info"){
        	var cssPopupTitle = "font-family:" + parameters.fontFamily + "; font-size:" + parameters.fontSize + "; padding: 0px; text-align:left;";
			var cssPopupBody = "font-family:" + parameters.fontFamily + "; font-size:" + parameters.fontSize + "; padding: 0px; text-align:left;";
			var cssPopupFooter = "font-family:" + parameters.fontFamily + "; font-size:" + parameters.fontSize + "; padding: 0px; text-align:center;";
		}
        else{
			var cssPopupTitle = "position: absolute; font-family:" + parameters.fontFamily + "; font-size:" + parameters.fontSize + "; padding: 0px; text-align:left;";
			var cssPopupBody = "position: absolute; font-family:" + parameters.fontFamily + "; font-size:" + parameters.fontSize + "; padding: 0px; text-align:left;";
			var cssPopupFooter = "position: absolute; font-family:" + parameters.fontFamily + "; font-size:" + parameters.fontSize + "; padding: 0px; text-align:center;";
		}
        
        //First style the contents of the oPopup layer. (oPopupTitle, oPopupBody, oPopupFooter)
        //When this is done we can calculate the height and width of the oPopup contents.
        if(ModalPopupsSupport.isIE) {
             if(typeOfPopup != "info"){
				 oPopupTitle.style.cssText = cssPopupTitle;
				oPopupBody.style.cssText = cssPopupBody; 
				oPopupFooter.style.cssText = cssPopupFooter;
				}
        }
        else { 
            if(typeOfPopup != "info"){
				oPopupTitle.setAttribute("style", cssPopupTitle);
				oPopupBody.setAttribute("style", cssPopupBody);
				oPopupFooter.setAttribute("style", cssPopupFooter);
				}
        } 

        //Get css color related parameters for; oPopup, oPopupTitle, oPopupBody, oPopupFooter.
        parameters.titleBackColor = parameters.titleBackColor != null ? parameters.titleBackColor : ModalPopupsDefaults.titleBackColor;
        parameters.titleFontColor = parameters.titleFontColor != null ? parameters.titleFontColor : ModalPopupsDefaults.titleFontColor;
        parameters.popupBackColor = parameters.popupBackColor != null ? parameters.popupBackColor : ModalPopupsDefaults.popupBackColor;
        parameters.popupFontColor = parameters.popupFontColor != null ? parameters.popupFontColor : ModalPopupsDefaults.popupFontColor;
        parameters.footerBackColor = parameters.footerBackColor != null ? parameters.footerBackColor : ModalPopupsDefaults.footerBackColor;
        parameters.footerFontColor = parameters.footerFontColor != null ? parameters.footerFontColor : ModalPopupsDefaults.footerFontColor;
        cssPopupTitle += " background-color:" + parameters.titleBackColor + ";";
        cssPopupTitle += " color:" + parameters.titleFontColor + ";";
        cssPopupBody += " background-color:" + parameters.popupBackColor + ";";
        cssPopupBody += " color:" + parameters.popupFontColor + ";";
        cssPopupFooter += " background-color:" + parameters.footerBackColor + ";";
        cssPopupFooter += " color:" + parameters.footerFontColor + ";";

        //Calculate maxWidth of the 3 layers in oPopup. (oPopupTitle,oPopupBody,oPopupFooter)
        if(typeOfPopup != "info"){			var calcMaxWidth = 0;
			if(ModalPopupsSupport.getLayerWidth(oPopupTitle.id) > calcMaxWidth) 
			    calcMaxWidth = ModalPopupsSupport.getLayerWidth(oPopupTitle.id);
			if(ModalPopupsSupport.getLayerWidth(oPopupBody.id) > calcMaxWidth)
			    calcMaxWidth = ModalPopupsSupport.getLayerWidth(oPopupBody.id);  
			if(ModalPopupsSupport.getLayerWidth(oPopupFooter.id) > calcMaxWidth)
			    calcMaxWidth = ModalPopupsSupport.getLayerWidth(oPopupFooter.id);   
			                
			//Calculate total height of the 3 layers in oPopup. (oPopupTitle+oPopupBody+oPopupFooter)
			var calcTotalHeight = ModalPopupsSupport.getLayerHeight(oPopupTitle.id) + ModalPopupsSupport.getLayerHeight(oPopupBody.id) + ModalPopupsSupport.getLayerHeight(oPopupFooter.id);    
        
			parameters.width = parameters.width != null ? parameters.width : (calcMaxWidth + 4); // Add 4px for; padding: 1px and border: 1px;
			parameters.height = parameters.height != null ? parameters.height : calcTotalHeight; // Set height as height of; oPopupTitle + oPopupBody + oPopupFooter
        
			//Eerst hoogte oPopupBody aanpassen indien parameters.height is meegegeven
			var newBodyHeight = ModalPopupsSupport.getLayerHeight(oPopupBody.id)
        
        }
        if(typeOfPopup != "info"){
			if(parameters.height > calcTotalHeight) {
			    // Sub 10px for; padding: 5px;
			    newBodyHeight = parameters.height - ModalPopupsSupport.getLayerHeight(oPopupTitle.id) - ModalPopupsSupport.getLayerHeight(oPopupFooter.id);
			    cssPopupBody += " height:" + newBodyHeight + "px;";
			    calcTotalHeight = ModalPopupsSupport.getLayerHeight(oPopupTitle.id) + newBodyHeight + ModalPopupsSupport.getLayerHeight(oPopupFooter.id);  
			}
		}
        
        //Get browser width and height
        var frameWidth = ModalPopupsSupport.getFrameWidth();
        var frameHeight = ModalPopupsSupport.getFrameHeight();
        
        if(parameters.height < calcTotalHeight)
            parameters.height = calcTotalHeight;
        
        //Get parameters for oPopup layer.
		if(typeOfPopup == "info"){
			parameters.top = parameters.top != null ? parameters.top : ((frameHeight/2) - (parameters.height/2));
			parameters.left = parameters.left != null ? parameters.left : ((frameWidth/2) - (parameters.width/2));
		}
        else{
			parameters.top = parameters.top != null ? parameters.top : ((frameHeight/2) - (parameters.height/2));
			parameters.left = parameters.left != null ? parameters.left : ((frameWidth/2) - (parameters.width/2));
		}        
        if(parameters.width) 
            cssPopup += " width:" + parameters.width + "px;";
        else
            cssPopup += " width:" + parameters.maxWidth + "px;";
            
        if(parameters.height) 
            cssPopup += " height:" + (parameters.height-1) + "px;";
        else
            cssPopup += " height:" + (calcTotalHeight-1) + "px;";
        
        //First style the contents of the oPopup layer. (oPopupTitle, oPopupBody, oPopupFooter)
        //When this is done we can calculate the height and width of the oPopup contents.
        if(ModalPopupsSupport.isIE) {
            if(typeOfPopup != "info"){
			    oPopupTitle.style.cssText = cssPopupTitle;
			    oPopupBody.style.cssText = cssPopupBody; 
			    oPopupFooter.style.cssText = cssPopupFooter; 
			}
		}
        else { 
            if(typeOfPopup != "info"){
				oPopupTitle.setAttribute("style", cssPopupTitle);
				oPopupBody.setAttribute("style", cssPopupBody);
				oPopupFooter.setAttribute("style", cssPopupFooter);
			}
		}

        //Setup shadow layer
        if(typeOfPopup != "info"){			parameters.shadow = parameters.shadow != null ? parameters.shadow : ModalPopupsDefaults.shadow;
			parameters.shadowSize = parameters.shadowSize != null ? parameters.shadowSize : ModalPopupsDefaults.shadowSize;
			if(parameters.shadow) {
			    //Get parameters for oShadow layer.
			    parameters.shadowSize = parameters.shadowSize != null ? parameters.shadowSize : ModalPopupsDefaults.shadowSize;
			    parameters.shadowColor = parameters.shadowColor != null ? parameters.shadowColor : ModalPopupsDefaults.shadowColor;
			    cssShadow += "background-color:" + parameters.shadowColor + ";"; 
        
				if(parameters.width) 
			        cssShadow += " width:" + parameters.width + "px;";
			    else
			        cssShadow += " width:" + maxWidth + "px;";
			    if(parameters.height) 
			        cssShadow += " height:" + (parameters.height-1) + "px;";
			    else
			        cssShadow += " height:" + (calcTotalHeight) + "px;";
			}
			else {
			    cssShadow += " display:none;";
			}
		}
        
        //Secondly style the contents of the main layers. (oBackGround, oPopup, oShadow)
        if(ModalPopupsSupport.isIE) {
            if(typeOfPopup != "info"){
				oPopup.style.cssText = cssPopup; 
				oShadow.style.cssText = cssShadow; 
				oBackground.style.cssText = cssBackground; 
			}
        }
        else {
            if(typeOfPopup != "info"){
				oPopup.setAttribute("style", cssPopup);
				oShadow.setAttribute("style", cssShadow);
				oBackground.setAttribute("style", cssBackground);
			}		}
        
        if(!ModalPopupsSupport.isOlderIE()) {
	        if(typeOfPopup != "info"){
	        }
	        else{
				ModalPopupsSupport.centerElement(document.getElementById(id+'_background'), 0, true);
			}
		}
		else {
			var viewport = ModalPopupsSupport.getViewportDimensions();
			if(typeOfPopup == "info"){
				parentContainer.innerHTML = "<div style='border:10px solid #c00; width:250; height:250px;'><iframe frameborder='2' style='border:2px solid #c00; width:250px; height:250px;' id='corr_bug_ie'></iframe></div>";
				parentContainer.innerHTML = messageToSend;
				isBrowserIE6 = true;
			}
			else{
				oBackground.innerHTML = "<div><iframe style='z-index:-1; position:absolute; top:0;left:0 display:none; display/**/:block; position:absolute; filter:mask(); width:" + viewport.width + "px; height:" + viewport.height + "px;' id='corr_bug_ie' src='../common/imgLay/spinner.gif'></iframe></div>";
			}
			
		}
        ModalPopupsSupport.centerElement(document.getElementById(id+'_popup'), 0, false);
        if(parameters.shadow)
            ModalPopupsSupport.centerElement(document.getElementById(id+'_shadow'), parameters.shadowSize, false);
        
        //Load file?
        parameters.loadTextFile = parameters.loadTextFile != null ? parameters.loadTextFile : "";
        if(parameters.loadTextFile != "")
            ModalPopups._loadTextFile(id, parameters, allLayers, parameters.loadTextFile);
            
		
        window.onresize = function() {
			if(typeOfPopup == "info"){
				ModalPopupsSupport.centerElement(document.getElementById(id+'_background'), 0, true);
				ModalPopupsSupport.centerElement(document.getElementById(id+'_popup'), 0, false);
				ModalPopupsSupport.centerElement(document.getElementById(id+'_popupInfo'), 0, true);
				if(parameters.shadow) {
					ModalPopupsSupport.centerElement(document.getElementById(id+'_shadow'), parameters.shadowSize, false);
				}
				//checkScreenStatus();
				
			}
			else{
				ModalPopupsSupport.centerElement(document.getElementById(id+'_background'), 0, true);
				ModalPopupsSupport.centerElement(document.getElementById(id+'_popup'), 0, false);
				if(parameters.shadow) {
					ModalPopupsSupport.centerElement(document.getElementById(id+'_shadow'), parameters.shadowSize, false);
				}
				checkScreenStatus();
			}
		}
            
            
        window.onscroll = function() {
			//changes the X positioning
			if(typeOfPopup == "info"){
				ModalPopupsSupport.centerElement(document.getElementById(id+'_popupInfo'), 0, false);
				
			}
			else{
				ModalPopupsSupport.centerElement(document.getElementById(id+'_background'), 0, true);
				ModalPopupsSupport.centerElement(document.getElementById(id+'_popup'), 0, false);
				if(parameters.shadow) {
					ModalPopupsSupport.centerElement(document.getElementById(id+'_shadow'), parameters.shadowSize, false);
				}
				checkScreenStatus();
			}
        }
     },
     
     //Support function to load text file via AJAX call
     _loadTextFile: function(id, parameters, allLayers, filename)
     {
        var objXml = ModalPopupsSupport.getXmlHttp(); 
        objXml.open("GET", filename, true);
        objXml.onreadystatechange=function() 
        {
            if (objXml.readyState==4) 
            {
                
                 var txt = objXml.responseText.replace("\r\n","<br>").replace("\n\r","<br>").replace("\n","<br>").replace("\r","<br>");
                var html = "<div style='overflow-y: scroll; position:absolute; " + 
                    "top:5px; left:5px; height:" + (parameters.height - 65) + "px; " + 
                    "width:" + (parameters.width - 10) + "px;'>";
                html += txt;
                html += "</div>";
                ModalPopups.GetCustomControl(id+"_popupBody").innerHTML = html;
                parameters.loadTextFile = "";
                ModalPopups._styleAllLayers(id, parameters, allLayers);
            }
        }
        objXml.send(null);
    }
};

var ModalPopupsSupport = {
    isIE: function() {
        return (window.ActiveXObject) ? true : false;
    },

    isOlderIE: function() {
		var ver = -1; // Return value assumes failure.
		if (navigator.appName == 'Microsoft Internet Explorer') {
			var ua = navigator.userAgent;
			var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
			if (re.exec(ua) != null) {
				ver = parseFloat( RegExp.$1 );
		    }
		}
		if ( ver > -1 && ver < 7.0 ) {
			return true;
		} else {
			return false;
		}
    },
    
    makeLayer : function(id,layerVisible,layerParent) {
		var container = document.createElement("div");
         
        container.id = id;
        
        if(layerParent){
            layerParent.appendChild(container);
            }
        else{
            if(typeOfPopup == "info"){
				id = document.getElementById(parentDivGot);
				parentContainer = id;
				infoParentChild = parentContainer.appendChild(container);
            }
            else{
				document.body.appendChild(container);
            }
            
            
        }
        //alert("container: " + container);
        //document.getElementById('popUpTop').style.background='url(../../../images/popup_top.png)'; 
        return container;
    },
    
    deleteLayer: function(id) {
        var del = findLayer(id);
        if(del) 
            document.body.removeChild(del);
    },
    
    findLayer: function(id) {
        return document.all ? document.all[id] : document.getElementById(id);
    },
        
    findControl: function(id, parent) {
        return document.all ? document.all[id] : document.getElementById(id);
    },
    
    getLayerHeight: function(id) {
        if (document.all) {
            gh = document.getElementById(id).offsetHeight;  
        }
        else {
            gh = document.getElementById(id).offsetHeight;  //-5;
        }
        return gh;
    },
    
    getLayerWidth: function(id) {
        gw = document.getElementById(id).offsetWidth;
        return gw;
    },
    
    getViewportDimensions: function() {
        var intH = 0, intW = 0;
        
        if(self.innerHeight) {
           intH = window.innerHeight;
           intW = window.innerWidth;
        } 
        else {
            if(document.documentElement && document.documentElement.clientHeight) {
                intH = document.documentElement.clientHeight;
                intW = document.documentElement.clientWidth;
            }
            else {
                if(document.body) {
                    intH = document.body.clientHeight;
                    intW = document.body.clientWidth;
                }
            }
        }
		
        return {
            height: parseInt(intH, 10),
            width: parseInt(intW, 10)
        };
    },
    
    getScrollXY: function() {
        if(typeOfPopup == "info"){
           var scrOfX = 0, scrOfY = 0;
			if( typeof( window.pageYOffset ) == 'number' ) {
			    //Netscape compliant
			    scrOfY = window.pageYOffset;
			    scrOfX = window.pageXOffset;
			} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
			    //DOM compliant
			    scrOfY = document.body.scrollTop;
			    scrOfX = document.body.scrollLeft;
			} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
			    //IE6 standards compliant mode
			    scrOfY = document.documentElement.scrollTop;
			    scrOfX = document.documentElement.scrollLeft;
			}
		}
        else{
			var scrOfX = 0, scrOfY = 0;
			if( typeof( window.pageYOffset ) == 'number' ) {
			    //Netscape compliant
			    scrOfY = window.pageYOffset;
			    scrOfX = window.pageXOffset;
			} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
			    //DOM compliant
			    scrOfY = document.body.scrollTop;
			    scrOfX = document.body.scrollLeft;
			} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
			    //IE6 standards compliant mode
			    scrOfY = document.documentElement.scrollTop;
			    scrOfX = document.documentElement.scrollLeft;
			}
		}
        
         return [ scrOfX, scrOfY ];
        },
    
    centerElement: function(elem,add,noleft) {
        if(typeOfPopup != "info"){
			var viewport = ModalPopupsSupport.getViewportDimensions();
			var left = (viewport.width == 0) ? 50 : parseInt((viewport.width - elem.offsetWidth) / 2, 10);
			if(typeOfPopup == "compare"){
				var top = 0;
			}
			else{
				var top = (viewport.height == 0) ? 50 : parseInt((viewport.height - elem.offsetHeight) / 2, 10);
			}
			
			var top = (viewport.height == 0) ? 50 : parseInt((viewport.height - elem.offsetHeight) / 2, 10);
			if(typeOfPopup == "compare"){
				var scroll = 0;
			}
			else{
				var scroll = ModalPopupsSupport.getScrollXY();
			}
			
			if(!noleft) {
				elem.style.left = (left + add) + 'px';
			}
			if(typeOfPopup == "compare"){
				elem.style.top = '0px';
			}
			else{
				elem.style.top = (top + add + scroll[1]) + 'px';
			}
			viewport, left, top, elem = null; 
			}  
    },
    
    readFile: function(filename, intoElement) {
        var xmlHttp = getXmlHttp();
        var file = filename+"?r="+Math.random();
        xmlHttp.open("GET", file, true);
        xmlHttp.onreadystatechange=function() 
        {
            if (xmlHttp.readyState==4) 
            {
                intoElement.innerHTML = xmlHttp.responseText;
            }
        }
        xmlHttp.send(null);
    },
        
    getFrameWidth: function() {
        var frameWidth = document.documentElement.clientWidth;
        if (self.innerWidth) // Als de browser deze manier van aanroepen hanteerd
        {
            frameWidth = self.innerWidth; // Haal de frame-width op
        }
        else if (document.documentElement && document.documentElement.clientWidth)  // Als de browser deze manier van aanroepen hanteerd
        {
            frameWidth = document.documentElement.clientWidth; // Haal de frame-width op
        }
        else if (document.body)  // Als de browser deze manier van aanroepen hanteerd
        {
            frameWidth = document.body.clientWidth-20; // Haal de frame-width op
        }
        else return;
        
        
        return frameWidth;
    },
    
    getFrameHeight: function() {
        var frameHeight = document.documentElement.clientHeight;
        if (self.innerWidth) // Als de browser deze manier van aanroepen hanteerd
        {
            frameHeight = self.innerHeight; // Haal de frame-height op
        }
        else if (document.documentElement && document.documentElement.clientWidth)  // Als de browser deze manier van aanroepen hanteerd
        {
            frameHeight = document.documentElement.clientHeight; // Haal de frame-height op
        }
        else if (document.body)  // Als de browser deze manier van aanroepen hanteerd
        {
            frameHeight = document.body.clientHeight; // Haal de frame-height op
        }
        else return;
        return frameHeight;
    },
    
    getXmlHttp: function()
    {
        var xmlHttp;
        try
        {  // Firefox, Opera 8.0+, Safari  
            xmlHttp=new XMLHttpRequest();  
        }
        catch (e)
        {  // Internet Explorer  
            try
            {    
                xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");    
            }
            catch (e)
            {    
                try
                {      
                    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");      
                }
                catch (e)
                {      
                    alert("Your browser does not support AJAX!");      
                    return false;      
                }    
            }  
        }  
        return xmlHttp;
    }
    
};




