/*
 *  Popup v1.0
 *  
 *	Szerző: Bodonyi László (Profartis Design Kft.)
 *	Utoljára módosítva: 2009-04-08 13:05
 *	
 */ 	
			
	function Popup(options){
		
		this.overlay = null;
		this.element = null;
		
	    this.options = {
	        'id': options.id,
	        'auto': options.auto ? options.auto : false,
	        'maxShow': options.maxShow ? options.maxShow : 1
	    }
	    
	    this.createOverlay = function(){
	        if (this.overlay) {
	            this.overlay.style.display = 'block';
	        }
	        else {
	            var overlay = document.createElement('div');
	            overlay.id = 'popup-overlay';
	            overlay.style.background = '#000';
	            overlay.style.position = 'absolute';
	            overlay.style.zIndex = 1000;
	            overlay.style.top = 0;
	            overlay.style.left = 0;
	            overlay.style.width = document.body.scrollWidth + 'px';
	            overlay.style.height = document.body.scrollHeight + 'px';
	            overlay.style.display = 'none';
	            document.body.appendChild(overlay);
	            this.overlay = overlay, t = this;
	            this.setOpacity(this.overlay, 0.5);
	            this.overlay.onclick = function(){
	                t.Close(t);
	            }
	        }
	    }
	    
	    this.initialize = function(){
	    	
	        var registered_shows = this.getCookie(this.options.id);
	        
	        if (!registered_shows) {
	            registered_shows = 0;
	        }
	        if (registered_shows < parseInt(this.options.maxShow)) {
	            this.setCookie(parseInt(registered_shows) + 1);
	        }
	        else {
	            return;
	        }
	        
	        this.createOverlay();
	        
	        this.element = document.getElementById(this.options.id);
	        this.element.style.position = 'absolute';
	        this.element.style.zIndex = 1001;
	        this.element.style.visibility = 'hidden';
	        
	        if (this.options.auto) {
	            this.Open();
	        }
	        
	        var t = this;
	        document.getElementById(this.options.id + '-close').href = 'javascript:;';
	        document.getElementById(this.options.id + '-close').onclick = function(){
	            t.Close(t);
	        };
	        
	        document.onkeydown = function(event){
	            var keyCode = window.event ? window.event.keyCode : event.keyCode;
	            if (keyCode == 27) {
	                t.Close(t);
	            }
	        }
	        
	    }
	    
	    this.Open = function(){
			this.overlay.style.display = 'block';
	        this.element.style.display = 'block';
	        this.setPosition();
	        this.element.style.visibility = 'visible';
	    }
	    
	    this.Close = function(t){
	        t = t ? t : this;
	        t.overlay.style.display = 'none';
	        t.element.style.display = 'none';
	    }
	    
	    this.setPosition = function(){
	        var viewport = this.getViewport();
	        this.element.style.left = Math.ceil((viewport[0] - this.element.offsetWidth) / 2) + 'px';
	        this.element.style.top = this.getScrollOffset() + Math.ceil((viewport[1] - this.element.offsetHeight) / 2) + 'px';
	    }
	    
	    this.setOpacity = function(element, alpha){
	        var style = element.style;
	        if (style.MozOpacity != undefined) { //Moz and older
	            style.MozOpacity = alpha;
	        }
	        else 
	            if (style.opacity != undefined) { //Opera
	                style.opacity = alpha;
	            }
	            else 
	                if (style.filter != undefined) { //IE
	                    style.filter = "alpha(opacity=0)";
	                    element.filters.alpha.opacity = (alpha * 100);
	                }
	    }
	    
	    this.getScrollOffset = function(){
	        return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
	    }
	    
	    this.getViewport = function(){
	        var viewportwidth;
	        var viewportheight;
	        if (typeof window.innerWidth != 'undefined') {
	            viewportwidth = window.innerWidth;
	            viewportheight = window.innerHeight;
	        }
	        else 
	            if (typeof document.documentElement != 'undefined' && typeof document.documentElement.clientWidth != 'undefined' && document.documentElement.clientWidth != 0) {
	                viewportwidth = document.documentElement.clientWidth;
	                viewportheight = document.documentElement.clientHeight;
	            }
	            else {
	                viewportwidth = document.getElementsByTagName('body')[0].clientWidth;
	                viewportheight = document.getElementsByTagName('body')[0].clientHeight;
	            }
	        return new Array(viewportwidth, viewportheight);
	    }
	    
	    this.getCookie = function(cname){
	        if (document.cookie.length > 0) {
	            c_start = document.cookie.indexOf(cname + "=");
	            if (c_start != -1) {
	                c_start = c_start + cname.length + 1;
	                c_end = document.cookie.indexOf(";", c_start);
	                if (c_end == -1) 
	                    c_end = document.cookie.length;
	                return unescape(document.cookie.substring(c_start, c_end));
	            }
	        }
	        return "";
	    }
	    
	    this.setCookie = function(value){
	        var exdate = new Date();
	        exdate.setDate(exdate.getDate() + 30);
	        document.cookie = this.options.id + "=" + value + ";expires=" + exdate.toGMTString();
	    }
	    
	    this.initialize();
	    
	}
