/*

* CONFIG

*/

var override = true; //true als alert, prompt and confirm overschreven mogen worden
var maxShine = 60; //de maximum doorzichtigheid van de shine
var framespeed = 600;//speed for each frame in the fade effect

/*
* ACTUAL CODE
*/

function opacity(id, inout, max, callback) {

    var max = max || 100;

    

    var speed = Math.round(window.framespeed / 100);

    var timer = 0;

    if(inout=="out") {

        for(i = max; i > 0; i--){

            setTimeout("changeOpac(" + i + ",'" + id + "', "+ callback +")",(timer * speed));

            timer++;

        }

    } else if(inout=="in") {

        for(i = 0; i <= max; i++){

            setTimeout("changeOpac(" + i + ",'" + id + "', "+ callback +")",(timer * speed));

            timer++;

        }

    }

}

 

//change the opacity for different browsers

function changeOpac(opacity, id, callback) {

    if(document.getElementById(id))

    {

        var object = document.getElementById(id).style;

        object.opacity = (opacity / 100);

        object.MozOpacity = (opacity / 100);

        object.KhtmlOpacity = (opacity / 100);

        object.filter = "alpha(opacity=" + opacity + ")";

        

        if(opacity == 1)

        {

            if(typeof callback == 'function') {

                callback();

            } 

        }

    }

}

 

function getWindowHeight() {

  var windowHeight = 0;

            

  if (typeof(window.innerHeight) == 'number')

    windowHeight = window.innerHeight;

            

  else {

                        

    if (document.documentElement && document.documentElement.clientHeight)

      windowHeight = document.documentElement.clientHeight;

                        

    else {

      if (document.body && document.body.clientHeight)

        windowHeight = document.body.clientHeight; }; };

                                               

  return windowHeight;

};

 

function getWindowWidth() {

  var windowHeight = 0;

            

  if (typeof(window.innerWidth) == 'number')

    windowWidth = window.innerWidth;

            

  else {

                        

    if (document.documentElement && document.documentElement.clientWidth)

      windowWidth = document.documentElement.clientWidth;

                        

    else {

      if (document.body && document.body.clientWidth)

        windowWidth = document.body.clientWidth; }; };

                                               

  return windowWidth;

};

 

function createWindow(id)
{

    if(!document.getElementById(id))
    {

    	var overlay = document.createElement('div');
		overlay.className = 'overlay';

        var windowDiv = document.createElement('div');
		windowDiv.className = 'window';
		windowDiv.id = id;

            

            var closeButton = document.createElement('button');

            closeButton.className = 'close';

            closeButton.innerHTML = 'Sluit';

                        

            windowDiv.innerHTML = id;

            windowDiv.appendChild(closeButton);

            overlay.appendChild(windowDiv);

      

        document.body.appendChild(overlay);

    }

  

    //create shine

    if(document.getElementById('oldShine')) //reuze existing shine

    {
changeOpac(0, 'oldShine');
            document.getElementById('oldShine').id = 'shine';

    }

    else

    {

            var shine = document.createElement('div');

            shine.id = 'shine';

            document.body.appendChild(shine)

    }

    

    opacity('shine', 'in', window.maxShine);

    

    //hoogte en breedte krijgen van window

    var windowheight = getWindowHeight()

    var windowwidth = getWindowWidth()

    

    //hoogte en breedte krijgen van element

    var elementheight = document.getElementById(id).offsetHeight;

    var elementwidth = document.getElementById(id).offsetWidth;

    

    //blok verticaal centeren

    document.getElementById(id).style.marginTop = "50px";

 

    //corrections for IE

    if(document.all)

    {

        document.getElementById('shine').style.height = windowheight;

        document.getElementById('shine').style.width = windowwidth;

            document.getElementById(id).style.marginLeft = (windowwidth/2 - elementwidth/2) + "px";

            

            if(window.IE6) //disable selectboxes for IE 6

            {

                var nodes = document.getElementsByTagName('select');

                for(var i=0; i < nodes.length; i++)

                {

                        nodes[i].disabled = 'disabled';

                }

                

                //enable selects in the window

                var nodes = document.getElementById(id).getElementsByTagName('select');

                for(var i=0; i < nodes.length; i++)

                {

                        nodes[i].disabled = null;

                }

            }

    }

    

    //enable all close buttons, inputs and links

    var nodes = document.getElementById(id).getElementsByTagName('*');

    for(var i=0; i < nodes.length; i++)

    {

            if(nodes[i].className == 'close')

            {

                nodes[i].onclick  = closeWindow;

            }

    }

    

    //window tonen

    document.getElementById(id).parentNode.style.top= "0px";

    document.getElementById(id).parentNode.onclick = closeShimWindow;

    globalActiveModalWindow = id;

}

 

function closeShimWindow(e)
{

    var event = e || window.event;
    var target = event.target ? event.target : event.srcElement;

    if(target.className == 'overlay')
    {

            closeWindow();

    }

}

 

function closeWindow(){

    document.getElementById(globalActiveModalWindow).parentNode.style.top= "-10000px";
    document.getElementById('shine').id = 'oldShine'

    opacity('shine', 'out', window.maxShine, function(){ //define callback

        document.getElementById(globalActiveModalWindow).parentNode.style.top= "-10000px";

        document.getElementById('shine').id = 'oldShine'

        

        if(window.IE6) //enable selectboxes for IE 6

        {

            //enable selects in the body

            var nodes = document.getElementsByTagName('select');

            for(var i=0; i < nodes.length; i++)

            {

                nodes[i].disabled = null;

            }

        }

    });
    return false;//in case of a link
}
	if(override){
		window.alert = function(id){
		createWindow(id)
	}
}
