function message_box(text, mode) {

    this.name = 'box';
    this.answer = 0;
    this.message = text;
    this.type = mode;
    
    this.content = '';

    var oBody = document.getElementsByTagName("body").item(0);
		
		this.oOverlay = document.createElement("div");
		this.oOverlay.setAttribute('id','msgbox_overlay');
    this.oOverlay.style.position = 'absolute';
    this.oOverlay.style.top = '0';
	  this.oOverlay.style.left = '0';
    this.oOverlay.style.zIndex = '90';
    this.oOverlay.style.width = '100%';
    this.oOverlay.style.height = '500px';
    this.oOverlay.style.backgroundColor = '#000000';

		this.oOverlay.style.display = 'none';
		this.oOverlay.style.opacity = '0.75';
		this.oOverlay.style.filter = 'alpha(opacity=75)';
		oBody.appendChild(this.oOverlay);

		this.oMsgBox = document.createElement("div");
		this.oMsgBox.setAttribute('id','msgbox_msgbox');
		this.oMsgBox.style.position = 'absolute';
		this.oMsgBox.style.left = '0';
		this.oMsgBox.style.width = '100%';
    this.oMsgBox.style.zIndex = '100';
    this.oMsgBox.style.textAlign = 'center';
		
    this.oMsgBox.style.display = 'none';
    
    if(this.type == 3) {
				this.content = '<div style="width:250px; margin: 0 auto;">' +
		                  '<div style="padding:2px; color:#ffffff; background-color:#0000ff; text-align:center; font-weight:bold;">Obvestilo!</div>' + 
		                  '<div style="padding:5px; background-color:#66B3FF;">' +
		                  this.message +
		                  '<table width="240"><tr><td>';		
		}
		else {
				this.content = '<div style="width:250px; margin: 0 auto;">' +
		                  '<div style="padding:2px; color:#ffffff; background-color:#ff0000; text-align:center; font-weight:bold;">Opozorilo!</div>' + 
		                  '<div style="padding:5px; background-color:#ff9999;">' +
		                  this.message +
		                  '<table width="240"><tr><td>';		
		}
    
    if(this.type == 0 || this.type == 3) {
        this.content = this.content + '<button style="width:100%;" onClick="'+this.name+'.hide();">OK</button>';
    }
    if(this.type == 1 || this.type == 2) {
        this.content = this.content + '<button style="width:100%;" onClick="'+this.name+'.hide(1);">Da</button>' +
                                      '</td><td>' +
                                      '<button style="width:100%;" onClick="'+this.name+'.hide(-1);">Ne</button>';
    }
    if(this.type == 2) {
        this.content = this.content + '</td><td><button style="width:100%;" onClick="'+this.name+'.hide(0);">Cancel</button>';
    }
    this.content = this.content + '</td></tr></table>' +
                                  '</div></div>';
                            
    this.oMsgBox.innerHTML = this.content; 
		oBody.appendChild(this.oMsgBox);
		
		this.show = function() {
    		
        this.hideSelectBoxes();
    		this.hideFlash();
    
    		// stretch overlay to fill page and show
    		var arrayPageSize = this.getPageSize();
    		this.oOverlay.style.width = arrayPageSize[0] +"px";
    		this.oOverlay.style.height = arrayPageSize[1] +"px";
    		this.oOverlay.style.display = '';
    
    		// calculate top and left offset for the message box 
    		var arrayPageScroll = this.getPageScroll();
    		var lightboxTop = arrayPageScroll[1] + 200;
    		var lightboxLeft = arrayPageScroll[0];
    		this.oMsgBox.style.top = lightboxTop +"px";
    		this.oMsgBox.style.left = lightboxLeft +"px";
    		this.oMsgBox.style.display = '';
    }

    this.hide = function(answer) {
    		this.oMsgBox.style.display = 'none';
    		this.oOverlay.style.display = 'none';
    		this.showSelectBoxes();
    		this.showFlash();
    		// destroy
    		this.oOverlay = null;
    		this.oMsgBox = null;
    		divOverlay = document.getElementById('msgbox_overlay');
    		divOverlay.parentNode.removeChild(divOverlay);
    		divMsgBox = document.getElementById('msgbox_msgbox');
    		divMsgBox.parentNode.removeChild(divMsgBox);
    		if(answer == 1)
    		    this.YesClick();
    		else if(answer == 0)
    		    this.CancelClick();
    		else if(answer == -1)
    		    this.NoClick();
    }
    
    this.empty = function() {
        // function which do nothing
    } 

    //##########################################################################

    // funkcije za onemoogčanje elemetov, ki bi sekali skozi overlay
    // skrije vse selectboxe
    this.hideSelectBoxes = function(){
    	var selects = document.getElementsByTagName("select");
    	for (i = 0; i != selects.length; i++) {
    		selects[i].style.visibility = "hidden";
    	}
    }

    this.showSelectBoxes = function(){
    	var selects = document.getElementsByTagName("select");
    	for (i = 0; i != selects.length; i++) {
    		selects[i].style.visibility = "visible";
    	}
    }

    // skrije vse flash objekte
    this.hideFlash = function(){
    	var flashObjects = document.getElementsByTagName("object");
    	for (i = 0; i < flashObjects.length; i++) {
    		flashObjects[i].style.visibility = "hidden";
    	}
    
    	var flashEmbeds = document.getElementsByTagName("embed");
    	for (i = 0; i < flashEmbeds.length; i++) {
    		flashEmbeds[i].style.visibility = "hidden";
    	}
    }

    this.showFlash = function(){
    	var flashObjects = document.getElementsByTagName("object");
    	for (i = 0; i < flashObjects.length; i++) {
    		flashObjects[i].style.visibility = "visible";
    	}
    
    	var flashEmbeds = document.getElementsByTagName("embed");
    	for (i = 0; i < flashEmbeds.length; i++) {
    		flashEmbeds[i].style.visibility = "visible";
    	}
    }

    // getPageSize()
    // Returns array with page width, height and window width, height
    // Core code from - quirksmode.com
    // Edit for Firefox by pHaez
    //
    this.getPageSize = function(){
    	
    	var xScroll, yScroll;
    	
    	if (window.innerHeight && window.scrollMaxY) {	
    		xScroll = window.innerWidth + window.scrollMaxX;
    		yScroll = window.innerHeight + window.scrollMaxY;
    	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
    		xScroll = document.body.scrollWidth;
    		yScroll = document.body.scrollHeight;
    	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
    		xScroll = document.body.offsetWidth;
    		yScroll = document.body.offsetHeight;
    	}
    	
    	var windowWidth, windowHeight;
    	
    //	console.log(self.innerWidth);
    //	console.log(document.documentElement.clientWidth);
    
    	if (self.innerHeight) {	// all except Explorer
    		if(document.documentElement.clientWidth){
    			windowWidth = document.documentElement.clientWidth; 
    		} else {
    			windowWidth = self.innerWidth;
    		}
    		windowHeight = self.innerHeight;
    	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
    		windowWidth = document.documentElement.clientWidth;
    		windowHeight = document.documentElement.clientHeight;
    	} else if (document.body) { // other Explorers
    		windowWidth = document.body.clientWidth;
    		windowHeight = document.body.clientHeight;
    	}	
    	
    	// for small pages with total height less then height of the viewport
    	if(yScroll < windowHeight){
    		pageHeight = windowHeight;
    	} else { 
    		pageHeight = yScroll;
    	}
    
    //	console.log("xScroll " + xScroll)
    //	console.log("windowWidth " + windowWidth)
    
    	// for small pages with total width less then width of the viewport
    	if(xScroll < windowWidth){	
    		pageWidth = xScroll;		
    	} else {
    		pageWidth = windowWidth;
    	}
    //	console.log("pageWidth " + pageWidth)
    
    	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
    	return arrayPageSize;
    }

    //
    // getPageScroll()
    // Returns array with x,y page scroll values.
    // Core code from - quirksmode.com
    //
    this.getPageScroll = function(){
    
    	var xScroll, yScroll;
    
    	if (self.pageYOffset) {
    		yScroll = self.pageYOffset;
    		xScroll = self.pageXOffset;
    	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
    		yScroll = document.documentElement.scrollTop;
    		xScroll = document.documentElement.scrollLeft;
    	} else if (document.body) {// all other Explorers
    		yScroll = document.body.scrollTop;
    		xScroll = document.body.scrollLeft;	
    	}
    
    	arrayPageScroll = new Array(xScroll,yScroll) 
    	return arrayPageScroll;
    }
}

function msgbox() { // args[0] - text, args[1] - type (ok, yes/no, yes/no/cancel), args[1] - YES function, args[2] - NO function  
    text = arguments[0];
    
    type = ((arguments[1]) ? arguments[1] : 0);

    
    box = new message_box(text, type);
    
    if(type == 0) { // OK (opozorilo)
        box.show();
    }
    else if(type == 1) { // YES / NO
        YesFunction = ((arguments[2]) ? arguments[2] : box.empty);
        NoFunction = ((arguments[3]) ? arguments[3] : box.empty);
        box.YesClick = YesFunction;
        box.NoClick = NoFunction;
        box.show();
    }
    else if(type == 2) { // YES / NO / CANCEL
        YesFunction = ((arguments[2]) ? arguments[2] : box.empty);
        NoFunction = ((arguments[3]) ? arguments[3] : box.empty);
        CancelFunction = ((arguments[4]) ? arguments[4] : box.empty);
        box.YesClick = YesFunction;
        box.NoClick = NoFunction;
        box.CancelClick = CancelFunction;
        box.show();
    }
    else if(type == 3) { // OK (obvestilo)
        box.show();
    }
    
}

