/* management javascript */
function update_time(el, input_name)
{
    var hour = document.getElementById(input_name+"_hour").value;
    var minute = document.getElementById(input_name+"_minute").value;
    var input = document.getElementById(input_name);
    input.value = hour+":"+minute;
    input.focus();
    return true;
}

function update_datetime(el, input_name)
{
    var input = document.getElementById("input_"+input_name);
    var date = document.getElementById("DPC_"+input_name).value;
    var time = document.getElementById("time_"+input_name).value;
    input.value = date + " " + time;
    return true;
}

var popup_action_url = false;
var popup_http = false;
function popup(header, msg, action_url)
{
    var popup = document.getElementById('popup');
    var popup_header = document.getElementById('popup_header');
    var popup_msg = document.getElementById('popup_msg');
    var popup_yesno = document.getElementById('popup_yesno');
    var popup_yes = document.getElementById('popup_yes');
    var popup_no = document.getElementById('popup_no');
    var popup_ok = document.getElementById('popup_ok');
    var popup_box = document.getElementById('popupbox');
    var body = document.getElementsByTagName('body')[0];
    popup_header.innerHTML = header;
    popup_msg.innerHTML = msg;

    var popup_normal = document.getElementById('popup_normal');
    var popup_page = document.getElementById('popup_page');
    var popup_close = document.getElementById('popup_close');
    popup_close.style.display = 'none';
    popup_normal.style.display = 'block';
    popup_page.style.display = 'none';
    popup_page.innerHTML = '';

	var popup_pagesize = popup_get_pagesize();
	var popup_pagescroll = popup_get_scroll();

    var popup_top = popup_pagescroll[1] + ((popup_pagesize[3] - 35 - 600) / 2);
    var popup_left = ((popup_pagesize[2] - 478) / 2);

	// set height of Overlay to take up whole page and show
	popup.style.height = (popup_pagesize[1] + 'px');
	popup.style.display = 'block';
    popup_box.style.top = (popup_top < 0) ? "0px" : popup_top + "px";
    popup_box.style.left = (popup_left < 0) ? "0px" : popup_left + "px";
    popup_box.style.display = 'block';


    if(action_url) {
        popup_action_url = action_url;
        popup_yesno.style.display = 'block';
        popup_yes.disabled = '';
        popup_no.disabled = '';
        popup_ok.style.display = 'none';
        popup.style.display = 'block';
        popup_no.focus();
    } else {
        popup_action_url = false;
        popup_yesno.style.display = 'none';
        popup_ok.style.display = 'block';
        popup.style.display = 'block';
        popup_ok.focus();
    }
}

function popup_page(url)
{
    var popup = document.getElementById('popup');
    var body = document.getElementsByTagName('body')[0];

    var popup_normal = document.getElementById('popup_normal');
    var popup_page = document.getElementById('popup_page');
    var popup_close = document.getElementById('popup_close');
    var popup_box = document.getElementById('popupbox');
    popup_close.style.display = 'block';
    popup_normal.style.display = 'none';
    popup_page.style.display = 'block';

	var popup_pagesize = popup_get_pagesize();
	var popup_pagescroll = popup_get_scroll();

    var popup_top = popup_pagescroll[1] + ((popup_pagesize[3] - 35 - 600) / 2);
    var popup_left = ((popup_pagesize[2] - 478) / 2);

    popup_page.innerHTML = '<div style=\"margin: auto; background-image: url(layout/img/loading.gif); width: 16px; height: 16px;\"></div>';

	// set height of Overlay to take up whole page and show
	popup.style.height = (popup_pagesize[1] + 'px');
	popup.style.display = 'block';
    popup_box.style.top = (popup_top < 0) ? "0px" : popup_top + "px";
    popup_box.style.left = (popup_left < 0) ? "0px" : popup_left + "px";
    popup_box.style.display = 'block';

    // start AJAX call
    popup_http.onreadystatechange = popup_http_event;
    popup_http.open('GET', url, true);
    popup_http.setRequestHeader("Connection", "close");
    popup_http.send(null);
}

function popup_data(data)
{
    var popup = document.getElementById('popup');
    var body = document.getElementsByTagName('body')[0];

    var popup_normal = document.getElementById('popup_normal');
    var popup_page = document.getElementById('popup_page');
    var popup_close = document.getElementById('popup_close');
    var popup_box = document.getElementById('popupbox');
    popup_close.style.display = 'block';
    popup_normal.style.display = 'none';
    popup_page.style.display = 'block';

	var popup_pagesize = popup_get_pagesize();
	var popup_pagescroll = popup_get_scroll();

    var popup_top = popup_pagescroll[1] + ((popup_pagesize[3] - 35 - 600) / 2);
    var popup_left = ((popup_pagesize[2] - 478) / 2);

    // set height of Overlay to take up whole page and show
    popup.style.height = (popup_pagesize[1] + 'px');
    popup.style.display = 'block';
    popup_box.style.top = (popup_top < 0) ? "0px" : popup_top + "px";
    popup_box.style.left = (popup_left < 0) ? "0px" : popup_left + "px";
    popup_box.style.display = 'block';

    popup_page.innerHTML = data;
}

/**
 * Get size of page
 * @return array() pagewidth, pageheight, windowwidth, windowheight
 */
function popup_get_pagesize() {
    var popup_x_scroll;
    var popup_y_scroll;

    if (window.innerHeight && window.scrollMaxY) {
        popup_x_scroll = document.body.scrollWidth;
		popup_y_scroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){
		popup_x_scroll = document.body.scrollWidth;
		popup_y_scroll = document.body.scrollHeight;
	} else {
		popup_x_scroll = document.body.offsetWidth;
		popup_y_scroll = document.body.offsetHeight;
	}

	var popup_win_width, popup_win_height;
	if (self.innerHeight) {
		popup_win_width = self.innerWidth;
		popup_win_height = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) {
		popup_win_width = document.documentElement.clientWidth;
		popup_win_height = document.documentElement.clientHeight;
	} else if (document.body) {
		popup_win_width = document.body.clientWidth;
		popup_win_height = document.body.clientHeight;
	}

	if(popup_y_scroll < popup_win_height){
		popup_page_height = popup_win_height;
	} else {
		popup_page_height = popup_y_scroll;
	}

	if(popup_x_scroll < popup_win_width){
		popup_page_width = popup_win_width;
	} else {
		popup_page_width = popup_x_scroll;
	}

	popup_pagesize = new Array(popup_page_width,popup_page_height,popup_win_width,popup_win_height)
	return popup_pagesize;
}
/**
 * Get scroll of page
 * @return int y-scroll-height
 */
function popup_get_scroll() {
	var popup_y_scroll;

	if (self.pageYOffset) {
		popup_y_scroll = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){
		popup_y_scroll = document.documentElement.scrollTop;
	} else if (document.body) {
		popup_y_scroll = document.body.scrollTop;
	}

	popup_pagescroll = new Array('',popup_y_scroll)
	return popup_pagescroll;
}

function popup_http_event()
{
    var ie7 = (document.all && !window.opera && window.XMLHttpRequest);
    var popup_page = document.getElementById('popup_page');
    if(popup_http.readyState == 4) {
        if(popup_http.status == 200) {
            popup_page.innerHTML = popup_http.responseText;
            try {
                if (typeof DatePickerControl.init == 'function') {
                    DatePickerControl.init();
                }
            } catch (e) {}
            if (ie7)
                popup_init();
        } else {
            popup_page.innerHTML = 'Error '+this.status+' occured.';
        }
    }
}

function popup_close()
{
    var popup = document.getElementById('popup');
    var popup_box = document.getElementById('popupbox');
    popup_box.style.display = 'none';
    popup.style.display = 'none';
    var body = document.getElementsByTagName('body')[0];
    body.style.overflowY = 'auto';
    body.style.overflowX = 'auto';
}

function popup_action(yes)
{
    var popup = document.getElementById('popup');
    var popup_yes = document.getElementById('popup_yes');
    var popup_no = document.getElementById('popup_no');
    var popup_box = document.getElementById('popupbox');
    var body = document.getElementsByTagName('body')[0];

    if(popup_action_url) {
        popup_yes.disabled = 'disabled';
        popup_no.disabled = 'disabled';
        if(yes) {
            window.location = popup_action_url;
            return false;
        }
    }

    popup.style.display = 'none';
    popup_box.style.display = 'none';
    body.style.overflow = 'auto';
    return false;
}

function popup_init()
{
    var body = document.getElementsByTagName('body')[0];

    // nice trick to dynamically initialize stuff which affect <body>
    if(typeof(body) == 'undefined') {
        setTimeout('popup_init()', 500);
        return;
    }

    if( typeof XMLHttpRequest == "undefined" ) XMLHttpRequest = function() {
        try { return new ActiveXObject("Msxml2.XMLHTTP.6.0") } catch(e) {}
        try { return new ActiveXObject("Msxml2.XMLHTTP.3.0") } catch(e) {}
        try { return new ActiveXObject("Msxml2.XMLHTTP") } catch(e) {}
        try { return new ActiveXObject("Microsoft.XMLHTTP") } catch(e) {}
        throw new Error( "This browser does not support XMLHttpRequest." )
    };

    popup_http = new XMLHttpRequest;
}

// converts all form input/textarea/select/whatever fields into a POST request
var popup_post_values = false;
function popup_submit(form)
{
    var popup_page = document.getElementById('popup_page');
    popup_post_values = new Array();

    popup_post_recurse(form);

    popup_page.innerHTML = '<div style=\"margin: auto; background-image: url(layout/img/loading.gif); width: 16px; height: 16px;\"></div>';

    // now we should have all input fields in form_values
    var post = '';
    for(var i in popup_post_values) {
        post += i + '=' + encodeURIComponent(popup_post_values[i]);
        post += '&';
    }

    // TODO: make GET work too
    popup_http.onreadystatechange = popup_http_event;
    popup_http.open(form.getAttribute('method'), form.getAttribute('action'), true);
    popup_http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    popup_http.setRequestHeader("Content-length", post.length);
    popup_http.setRequestHeader("Connection", "close");
    popup_http.send(post);

    try { event.returnValue = false; } catch(e) { }
    return false;
}

// ok, this is not a really good one (yet), so update this if you use more complicated forms
// not implemented: <select>
function popup_post_recurse(el)
{
    if(el.tagName == 'INPUT' || el.tagName == 'TEXTAREA') {
        if(el.name) {
            if((el.type == 'checkbox' && el.checked == true) || el.type != 'checkbox')
                popup_post_values[el.name] = el.value;
        }
    }

    if(el.tagName == 'SELECT') {
        /* will this work with IE? */
        try {
            popup_post_values[el.name] = el.options[el.selectedIndex].value;
        } catch(e) { }
    }

    var count = el.childNodes.length;
    for(var i=0;i<el.childNodes.length;i++) {
        popup_post_recurse(el.childNodes[i]);
    }
}

popup_init();
