﻿var $E = $E || YAHOO.util.Event;

var DanBolig = DanBolig || {};

DanBolig.Utils = DanBolig.Utils || {};
DanBolig.Utils.ModalPanel = (function() {
	
    var panels = {};
	
    return {
        // True when init havs been run. Needed in IE
        isInitialized: false,
        init: function() {
            // Set up panels
	        var default_options = {
		        constraintoviewport: true,
		        visible: false,
		        width: "500px",
		        modal: true,
		        fixedcenter: true,
		        draggable: true
	        };
	        var foot = $$("#foot", null, true);
	        var elms =  $$("div.modal-panel");
	        for (var elm; elm=elms.shift();) {
				// Move all misplaced into "root".
				if (foot) foot.parentNode.appendChild(elm);
				
				var options = default_options;
				var m = elm.className.match(/(\s|^)modal-panel-w(\d+)($|\s)/);
				if (m) options = YAHOO.lang.merge(options, { width: m[2] + "px" });
				
				var m = elm.className.match(/(\s|^)modal-panel-h(\d+)($|\s)/);
				if (m) options = YAHOO.lang.merge(options, { height: m[2] + "px" });
		        
		        // Create panel
		        var id = elm.getAttribute("id");
		        var panel = new YAHOO.widget.Panel(id, options);
		        panel.hideMaskEvent.subscribe(this.onHide, id, true);
		        panels["#" + id] = panel;
		        elm.panel = panel;
	        }
			DanBolig.Utils.ModalPanel.isInitialized = true;
	        // Set up links
	        var elms = $$("a.modal-panel-link");
	        $E.on(elms, "click", function(e) {
		        if (!this.preventModalPanel) {
			        if (e) YAHOO.util.Event.preventDefault(e);
			        DanBolig.Utils.ModalPanel.showPanel(this.getAttribute("href", 2));
		        }
	        });
        },
        showPanel: function(id, print, printFunc) {
	        var p = panels[id];
            // Add print icon if specified
            if (print) {
                var con = p.innerElement;
                var div = document.createElement('div');
                div.appendChild(document.createTextNode('Udskriv'));
                div.className = 'modal-print';
                if (printFunc) {
					div.onclick = printFunc;
                } else {
					div.onclick = function() {
                        //window.open('http://extcom.esoft.dk/extern/kunder/danbolig/fremvisning2/plantegninger.php?sagsnr=EVES108&firmaid=2559#','','');
						window.print();
					}
                }
                con.appendChild(div);
            }
	        if (p.innerElement.modalOnPreRender && typeof p.innerElement.modalOnPreRender == "function") {
				p.innerElement.modalOnPreRender(p.innerElement);
	        } else if (p.innerElement.composer && p.innerElement.composer.modalOnPreRender && typeof p.innerElement.composer.modalOnPreRender == "function") {
				p.innerElement.composer.modalOnPreRender(p.innerElement);
	        }
	        $D.setStyle(p.innerElement, "display", "block"); // Ensure visibility for YUI to position correctly.
	        p.render();
	        p.show();
	        var i = 0;
	        //$D.setStyle(tt.element, "z-index", "103"); // Fix for IE to put the modal window above the old-style menu.
        },
        hidePanel: function(id) {
	        var p = panels[id];
	        if (p.innerElement.onClose && typeof p.innerElement.onClose == "function") {
				p.innerElement.onClose(p.innerElement);
	        }
	        p.hide();
        },
        onHide: function(t, a, id) {
            var print = document.getElementById('modal-print');
            if (print)
                print.parentNode.removeChild(print);
			var p = panels["#"+id];
			if (p.innerElement.onClose && typeof p.innerElement.onClose == "function") {
				p.innerElement.onClose(p.innerElement);
	        } else if (p.innerElement.composer && p.innerElement.composer.onClose && typeof p.innerElement.composer.onClose == "function") {
				p.innerElement.composer.onClose(p.innerElement);
	        }
        },
        getPanel: function(id) {
			return panels[id];
        }
    };
})();

$E.onDOMReady(function() {
    DanBolig.Utils.ModalPanel.init();
});
