/**********************************************************************
**                                                                   **
**  config.js                                                        **
**                                                                   **
**  Copyright jigmik.no/jigmik.com                                   **
**                                                                   **
**  All rights reserved. Any reuse or copy of this code only after   **
**  written consent from jigmik.no/jigmik.com.                       **
**                                                                   **
***********************************************************************
**                                                                   **
**  Bug, n:                                                          **
**            Son of a glitch                                        **
**                                                                   **
***********************************************************************/

var http_request = false;

var url = null;
var action_url = null;
var module = "";
var action = "";
var id = "";
var p_id = -1;

var formId = "";
var fromContent = "";
var reloadAll = true;
var saved_action = "foldercontent";

/**
   Creates XMLHttpRequest object, and assigns it to global variable http_request

   @return XMLHttpRequest object or false on failure
*/
function getRequestObject()
{
    if (window.XMLHttpRequest) // opera, firefox, mozilla
        {
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType)
                http_request.overrideMimeType('text/xml');
        }
    else if (window.ActiveXObject) // internet explodes
        {
            try
                {
                    http_request = new ActiveXObject("Msxml2.XMLHTTP");
                }
            catch (e)
                {
                    try
                        {
                            http_request = new ActiveXObject("Microsoft.XMLHTTP");
                        }
                    catch (e)
                        {
                            alert('Error: Cannot connect to server');
                            return false;
                        }
                }
        }
    if (!http_request)
        {
            alert('Error: Cannot connect to server');
            return false;
        }
    // display wait
    waitDiv = document.getElementById('wait');
    if (waitDiv)
        waitDiv.style.display="block";
    return http_request;
}


///////////////////////////////////////////////////////////////

/**
   Creates a new 'div' to write a form into

   @param _id DOM id for the created 'div'
   @param parentid DOM id for where the 'div' will be placed
   @return the created 'div' DOM element
*/
function writeFormDiv(_id, parentid)
{
    // set global variable
    formId = _id;

    // remove div if exist
    tmpDiv = document.getElementById(formId);
    if (tmpDiv != null)
        {
            htmlBody = document.getElementById(parentid);
            htmlBody.removeChild(tmpDiv);
        }

    // create element
    formDiv = document.createElement('div');
    formDiv.setAttribute('id', formId);

    // add to DOM
    htmlBody = document.getElementById(parentid);
    htmlBody.appendChild(formDiv);

    return formDiv;
}

/**
   Creates a 'div' containing close button for a form

   @param formDiv DOM element where close button is placed
   @return the created 'div' containing the buttons
*/
function writeCloseButton(formDiv, hideShadow)
{
   // create element
    buttonDiv = document.createElement('div');
    buttonDiv.setAttribute('id', 'form_action');

    a = document.createElement('a');
    if (hideShadow)
        a.setAttribute('href', "javascript:close('"+ formDiv.getAttribute('id') + "');hideShadow();" );
    else
        a.setAttribute('href', "javascript:close('"+ formDiv.getAttribute('id') + "');" );
    a.setAttribute('title', babel_close);
    a.appendChild(document.createTextNode('X'));
    buttonDiv.appendChild(a);

    // add to DOM
    formDiv.appendChild(buttonDiv);
    return buttonDiv;
}

/**
   Creates a 'div' containing close button for a form (like 'save', 'close' etc)

   @param buttonArray array of javascript functions and labels
   @param formDiv DOM element where buttons is placed
*/
function writeFormButtons(_buttonArray, formDiv)
{
   // create element
    buttonDiv = document.createElement('div');
    buttonDiv.setAttribute('id', 'form_buttons');
    // add buttons

    //    alert(_buttonArray[0]);// + " " + _buttonArray.length);
    for (var i in _buttonArray)
        {
            /*
          a = document.createElement('input');
            a.setAttribute('type', 'submit');
            a.setAttribute('action', 'javascript:' + i + '();');
            a.setAttribute('onClick', i + '();');
            a.setAttribute('class', 'button4');
            a.setAttribute('value', _buttonArray[i]);

            */
          a = document.createElement('a');
          a.setAttribute('href', 'javascript:' + i + '();');
          //          a.setAttribute('class', 'button4');
          a.appendChild(document.createTextNode(  _buttonArray[i] ));



            //            a.appendChild(document.createTextNode(_buttonArray[i]));
            buttonDiv.appendChild(a);
        }
    // close button
    a = document.createElement('a');
    a.setAttribute('href', "javascript:close('"+ formDiv.getAttribute('id') + "');hideShadow();" );
    a.setAttribute('title', babel_close);
    a.appendChild(document.createTextNode(babel_close));
    buttonDiv.appendChild(a);

    // add to DOM
    formDiv.appendChild(buttonDiv);
}

function addFormDirect(_pid, _module, p_element)
{
    jmbuttons = new Array();
    jmbuttons['save'] = babel_save;
    jmbuttons['reset'] = babel_reset;

    reloadAll = false;
    if (typeof(_pid) == "number")
        {
            p_id = _pid;
        }
    else
        {
            _module = _pid;
            _pid = null;
        }
    if (_module != "none")
        {
            formDiv = writeFormDiv('form', 'jm');
            writeCloseButton(formDiv, true);
            showForm(formurl, _module, 'insert',  _pid, writeurl, formDiv, 'form_content');
            writeFormButtons(jmbuttons, formDiv);
            if (p_element)
                {
                    tmp = document.getElementById(p_element);
                    ypos = findPosY(tmp);
                    formDiv.style.top=ypos + "px";
                    formDiv.style.marginTop="0";
                }
        }
}



function addForm(_pid, p_element)
{
    jmbuttons = new Array();
    jmbuttons['save'] = babel_save;
    jmbuttons['reset'] = babel_reset;

    reloadAll = true;
    if (typeof(_pid) == "number")
        {
            p_id = _pid;
            select = document.getElementById('newcont');
            _module = select.options[select.selectedIndex].value;
            select.selectedIndex = 0;
        }
    else
        {
            _module = _pid;
            _pid = null;
        }
    if (_module != "none")
        {
            formDiv = writeFormDiv('form', 'jm');
            writeCloseButton(formDiv, true);
            showForm(formurl, _module, 'insert',  _pid, writeurl, formDiv, 'form_content');
            writeFormButtons(jmbuttons, formDiv);
            if (p_element)
                {
                    tmp = document.getElementById(p_element);
                    ypos = findPosY(tmp);
                    formDiv.style.top=ypos + "px";
                    formDiv.style.marginTop="0";
                }
        }
}


function editForm(_module, _id, _reloadAll, p_element)
{
    reloadAll = _reloadAll;
    jmbuttons = new Array();
    jmbuttons['save'] = babel_save;
    jmbuttons['reset'] = babel_reset;

    formDiv = writeFormDiv('form', 'jm');
    writeCloseButton(formDiv, true);
    showForm(formurl, _module, 'update',  _id, writeurl, formDiv, 'form_content');

    writeFormButtons(jmbuttons, formDiv);
    if (p_element)
        {
            tmp = document.getElementById(p_element);
            ypos = findPosY(tmp);
            formDiv.style.top=ypos + "px";
            formDiv.style.marginTop="0";
        }
}

function delForm(_module, _id, _reloadAll, p_element)
{
    reloadAll = _reloadAll;
    jmbuttons = new Array();
    jmbuttons['save'] = babel_del;

    formDiv = writeFormDiv('form', 'jm');
    writeCloseButton(formDiv, false);
    showForm(boxurl, _module, 'deleted', _id, writeurl, formDiv, 'form_content');

    warningDiv = document.createElement('div');
    warningDiv.setAttribute('class', 'del');
    warningDiv.appendChild(document.createTextNode(delwarning));
    formDiv.appendChild(warningDiv);

    writeFormButtons(jmbuttons, formDiv);


    if (p_element)
        {
            tmp = document.getElementById(p_element);
            xpos = findPosX(tmp);
            ypos = findPosY(tmp);
            formDiv.style.left=xpos + "px";
            formDiv.style.top=ypos + "px";
            formDiv.style.margin="0";
        }
}


function showForm(_url, _module, _action, _id, _action_url, formDiv, _formContent)
{
    //    hideEditBox();

    showShadow();
    // set global variables
    url = _url;
    module = _module;
    action = _action;
    id = _id;
    action_url = _action_url;
    formContent = _formContent;

    // create div
    formContentDiv = document.createElement('div');
    formContentDiv.setAttribute('id', formContent);

    formDiv.appendChild(formContentDiv);

    parameters = "module=" + _module + "&action=" + _action;
    if (_id != null)
        parameters = parameters + "&page=" + _id;
    http_request = getRequestObject();

    if (http_request)
        {
            http_request.onreadystatechange = getFormContent;
            http_request.open('POST', _url, true);
            http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
            http_request.setRequestHeader("Content-length", parameters.length);
            http_request.setRequestHeader("Connection", "close");
            http_request.send(parameters);
        }
}

/**
   Gets the content for a form using XMLHttpRequest object (AJAX)
*/
function getFormContent()
{
    if (http_request.readyState == 4)
        {
            hideWait();
            if (http_request.status == 200)
                {
                    content = document.getElementById(formContent);
                    content.innerHTML = http_request.responseText;

                    // set css property
                    formDiv = document.getElementById(formId);
                    formDiv.style.display="block";
                    if (document.getElementById('newcont'))
                        {
                            document.getElementById('newcont').disabled=true;
                            document.getElementById('newcont').style.visibility="hidden";
                        }
                    //                    document.getElementById('jm').style.visibility="hidden";
                }
            else
                {
                    alert(http_request.status + " " + http_request.statusText + "\n" +
                          http_request.getResponseHeader("errormsg"));
                    if (reloadAll) {
                        hideShadow();
                    }


                }
        }
}

/**
  Hides a 'div'

  @param name DOM id of 'div' to hide
*/
function close(name)
{
    formDiv = document.getElementById(name);
    if (formDiv)
        {
            formDiv.style.display="none";

            parentNode = formDiv.parentNode;
            parentNode.removeChild(formDiv);

            // set css property
            if (name == "form" && document.getElementById('newcont'))
                {
                    document.getElementById('newcont').disabled=false;
                    document.getElementById('newcont').style.visibility="visible";
                }
    //    document.getElementById('jm').style.visibility="visible";
        }
}

/**
   Resets the content of a form
*/
function reset()
{
    formDiv = document.getElementById('form');
    showForm(url, module, action, id, action_url, formDiv, 'form_content');
}


/**
   Creates a string containg all POST data from a form, using the fields 'id' attribute.

   @return strings to send as POST parameter
*/
function gatherPostValues()
{
    post_str  = "module=" + module + "&action=" + action;
    if (id != null)
        post_str = post_str +  "&page=" + id ;
    input = document.getElementById('form_content').getElementsByTagName('input');
    for (i=0; i < input.length; i++)
        {
            if (input[i].getAttribute('id') == "name" && input[i].value == "")
                {
                    alert("Please set a name or heading");
                    input[i].style.border="1px solid red";
                    return;
                }
            else if (input[i].getAttribute('id') == "email" && input[i].value == "")
                {
                    alert("Please set an email adress");
                    input[i].style.border="1px solid red";
                    return;
                }
            if (input[i].getAttribute('type') == "radio" && !input[i].checked)
                continue;
            else if (input[i].getAttribute('type') == "checkbox")
                post_str = post_str + "&" + input[i].getAttribute('id') + "=" + input[i].checked;
            else
                post_str = post_str + "&" + input[i].getAttribute('id') + "=" + input[i].value;
        }

    input = document.getElementById('form_content').getElementsByTagName('textarea');
    for (i=0; i < input.length; i++)
        post_str = post_str + "&" + input[i].getAttribute('id') + "=" + encodeURIComponent(input[i].value);

    input = document.getElementById('form_content').getElementsByTagName('select');
    for (i=0; i < input.length; i++) {
        //        post_str = post_str + "&" + input[i].getAttribute('id') + "=" + input[i].value;
        tmpindex = input[i].selectedIndex;
        tmpvalue = input[i].options[tmpindex].value;
        post_str = post_str + "&" + input[i].getAttribute('id') + "=" + tmpvalue;
    }
    return post_str;
}


function save()
{
    upload = document.getElementById('fileupload');
    if (upload)
        // upload file using normal POST submit
        {
            file = document.getElementById('file');
            if (file && file.value == "")
                {
                    alert("No file selected");
                    file.style.border="1px solid red";
                    return;
                }
            upload.submit();
        }
    else
        // upload data using AJAX
        {
            input = document.getElementById('form_content').getElementsByTagName('input');
            parameters = gatherPostValues();
            if (!parameters)
                return;
            http_request = getRequestObject();

            http_request.onreadystatechange = saved;
            http_request.open('POST', action_url, true);
            http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
            http_request.setRequestHeader("Content-length", parameters.length);
            http_request.setRequestHeader("Connection", "close");
            http_request.send(parameters);
        }
}

function saved()
{
    if (http_request.readyState == 4)
        {
            hideWait();
            if (http_request.status == 200)
                {
                    if (http_request.getResponseHeader("msg") && http_request.getResponseHeader("msg") != "")
                        {
                            alert(http_request.getResponseHeader("msg"));
                        }
                    hideShadow();
                    close(formId);
                    if (reloadAll)
                        {
                            window.location.reload();
                        }
                    else
                        {
                            if (typeof(p_id) == "number")
                                {
                                    getFolderContent(saved_action, p_id);
                                }
                            else
                                {
                                    getFolderContent(p_id, null);
                                }
                        }
                }
            else
                {
                    alert(http_request.status + " " +  http_request.statusText + "\n" +
                          http_request.getResponseHeader("errormsg"));
                }
        }
}


///////////////// folder content ///

function getFolderContent(_action, _id, _hide)
{
    //    hideEditBox();

    all_a = document.getElementById('foldertree').getElementsByTagName('a');
    for (i=0; i < all_a.length; i++)
        {
            li = all_a[i].parentNode;
            if (li.getAttribute('id'))
                {
                    all_a[i].style.fontWeight='normal';

                }
        }



    if (_action == "foldercontent" || _action == "content" )
        {
            _action = "foldercontent";
            p_id = Number(_id);
            parameters = "module=content&action=" + _action + "&page=" + _id;

            cur_fol = document.getElementById('folder_' + _id);
            if (cur_fol)
                {
                    aref = cur_fol.getElementsByTagName('a')[0];
                    aref.style.fontWeight='bold';

                    submenu = cur_fol.getElementsByTagName('ul')[0];
                    img = cur_fol.getElementsByTagName('img')[0];

                    if (_hide && submenu.style.display=='block')
                        {
                            submenu.style.display='none';
                            img.src = "icns/plus.png";
                        }

                    else
                        {
                            submenu.style.display='block';
                            //img.src = "icns/folder_open.png";
                            img.src = "icns/sub.png";
                        }
                }
        }
    else
        {
            parameters = "module=" + _action + "&action=config";

            p_id = _action;

        }


    all_a = document.getElementById('foldertree').getElementsByTagName('a');
    for (i=0; i < all_a.length; i++)
        {
            li = all_a[i].parentNode;
            if (li.getAttribute('id'))
                {
                    if (li.getAttribute('id') == 'folder_' + p_id  && li.getAttribute('id') != 'folder_' + _id)
                        {
                            cur_fol = document.getElementById('folder_' + p_id);
                            if (cur_fol)
                                {
                                    submenu = cur_fol.getElementsByTagName('ul')[0];
                                    submenu.style.display = 'block';
                                    img = li.getElementsByTagName('img')[0];
                                    img = cur_fol.getElementsByTagName('img')[0];
                                    img.src = "icns/sub.png";
                                }
                        }
                }
        }


    // send AJAX request
    http_request = getRequestObject();
    if (http_request)
        {
            http_request.onreadystatechange = folderContent;
            http_request.open('POST', foldercontenturl, true);
            http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
            http_request.setRequestHeader("Content-length", parameters.length);
            http_request.setRequestHeader("Connection", "close");
            http_request.send(parameters);
        }
}

function folderContent()
{
    if (http_request.readyState == 4)
        {
            hideWait();
            if (http_request.status == 200)
                {
                    if (http_request.getResponseHeader("editForm"))
                        editForm(http_request.getResponseHeader("editForm"), null, true, "foldertree");
                    else
                        {
                            content = document.getElementById('foldercontent');
                            content.innerHTML = http_request.responseText;
                        }
                }
            else
                alert(http_request.status + "\n" + http_request.statusText);
        }
}


////////// slide show ////////////

function getSlide(slideUrl, cont_id)
{
    parameters = "module=news&page=" + cont_id;

  // send AJAX request
    http_request = getRequestObject();
    if (http_request)
        {
            http_request.onreadystatechange = showSlide;
            http_request.open('POST', slideUrl, true);
            http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
            http_request.setRequestHeader("Content-length", parameters.length);
            http_request.setRequestHeader("Connection", "close");
            http_request.send(parameters);
        }
}


function showSlide()
{
    if (http_request.readyState == 4)
        {
            hideWait();
            if (http_request.status == 200)
                {
                    content = document.getElementById('slideshow');
                    content.innerHTML = http_request.responseText;
                }
            else
                alert(http_request.status + "\n" + http_request.statusText);
        }
}


///////////////// edit box ////////

/*
function hideEditBox()
{
    boxDiv = document.getElementById('editBox');
    if (boxDiv)
        {
            tmp_p = boxDiv.parentNode;
            tmp_p.removeChild(boxDiv);
            //            editBox_id = null;
        }
}


var editBox_id = null;
function editBox(_module, _id)
{
    editBox_id = _id;
    setTimeout("editBoxDelayed('"+_module + "'," + _id + ")", 300);
    //    editBoxDelayed(_module, _id);
}

function keepBox(_id)
{
    editBox_id = _id;
}

function editBoxDelayed(_module, _id)
{
    if (editBox_id == _id)
        {
            // send AJAX request
            parameters = "module=" + _module + "&action=box&page=" + _id + "&tools=true";
            http_request = getRequestObject();
            if (http_request)
                {
                    http_request.onreadystatechange = getEditBox;
                    http_request.open('POST', boxurl, true);
                    http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
                    http_request.setRequestHeader("Content-length", parameters.length);
                    http_request.setRequestHeader("Connection", "close");
                    http_request.send(parameters);
                }
        }
}

function getEditBox()
{
    if (http_request.readyState == 4)
        {
            if (http_request.status == 200)
                {
                    boxDiv = document.getElementById('editBox');
                    if (boxDiv)
                        {
                            tmp_p = boxDiv.parentNode;
                            tmp_p.removeChild(boxDiv);
                        }
                    td = document.getElementById("content_" + editBox_id);

                    xpos = findPosX(td) + 100;
                    ypos = findPosY(td);

                    // create element
                    boxDiv = document.createElement('div');
                    boxDiv.setAttribute('id', 'editBox');
                    //                    boxDiv.setAttribute('onmouseexit', 'hideEditBox()');
                    boxDiv.style.left = xpos + 'px';
                    boxDiv.style.top = ypos + 'px';

                    boxDiv.innerHTML = http_request.responseText;

                    // add to DOM
                    body = document.getElementById('jm');
                    body.appendChild(boxDiv);
                }
            else
                alert(http_request.status + "\n" + http_request.statusText);
        }
}
*/
///////////////// select form /////

var sel_formId = "";
var sel_url = "";
var sel_module = "";
var sel_formContent = "";
var sel_id = "";
var sel_action_url = "";
var sel_reloadAll = true;
function selectForm(_p_id, _module, _id, _reloadAll, p_element)
{
    // set global variable
    sel_formId = 'select';
    sel_id = _id;
    sel_action_url = writeurl;
    sel_module = _module;
    sel_formContent = 'select_content';
    sel_reloadAll = _reloadAll;

    // remove div if exist
    tmpDiv = document.getElementById(sel_formId);
    if (tmpDiv != null)
        {
            htmlBody = document.getElementById(_p_id);
            htmlBody.removeChild(tmpDiv);
        }

    // create element
    formDiv = document.createElement('div');
    formDiv.setAttribute('id', sel_formId);

    if (p_element)
        {
            tmp = document.getElementById(p_element);
            xpos = findPosX(tmp);
            ypos = findPosY(tmp);
            formDiv.style.left=xpos + "px";
            formDiv.style.top=ypos + "px";
        }

    // add to DOM
    htmlBody = document.getElementById(_p_id);
    htmlBody.appendChild(formDiv);

    writeCloseButton(formDiv, false);

    // create div
    formContentDiv = document.createElement('div');
    formContentDiv.setAttribute('id', sel_formContent);

    formDiv.appendChild(formContentDiv);

    // send AJAX request
    if (_module == 'textareaimg')
        parameters = "module=image&action=src";
    else
        parameters = "module=" + _module;

    http_request = getRequestObject();
    if (http_request)
        {
            http_request.onreadystatechange = sel_getFormContent;
            http_request.open('POST', selecturl, true);
            http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
            http_request.setRequestHeader("Content-length", parameters.length);
            http_request.setRequestHeader("Connection", "close");
            http_request.send(parameters);
        }
}

function sel_getFormContent()
{
    if (http_request.readyState == 4)
        {
            hideWait();
            if (http_request.status == 200)
                {
                    content = document.getElementById(sel_formContent);
                    content.innerHTML = http_request.responseText;

                    // set css property
                    formDiv = document.getElementById(sel_formId);
                    formDiv.style.display="block";
                }
            else
                {
                    alert(http_request.status + "\n" + http_request.statusText);
                }
        }
}

function selectCont(_module, _id, _target)
{
    if (sel_module == "image")
        {
            imgInput = document.getElementById('img');
            imgInput.value = _id;

            img = document.getElementById('thumb');
            img.setAttribute('src',  _target);
            close('select');
        }
    else if (sel_module == "textareaimg")
        {
            textarea = document.getElementById(textarea_id);
            formatSelection(textarea, "[img " + _target + "]", "", true);
            close('select');
        }
    else if (sel_module == "textareaurl")
        {
            textarea = document.getElementById(textarea_id);
            if (_module == -1)
                {
                    formatSelection(textarea, "[a index.php?module=" + _id + "&action=view" +"]", "[/a]");
                }
            else
                {
                    formatSelection(textarea, "[a index.php?module=" + _module + "&action=view&page=" +
                            _id +"]", "[/a]");
                }
            close('select');
        }
    else if (sel_module == "selcontenturl" )
        {
            selInput = document.getElementById('sel_module');
            selInput.value = _module;

            selInput = document.getElementById('sel_module_id');
            selInput.value = _id;

            spanId = document.getElementById('sel_module_display');
            spanId.innerHTML = "<em>" +  _target + "</em>";

            nameId = document.getElementById('name');

            if (nameId)
                {
                    if (nameId.value == "")
                        nameId.value = _target;
                }

            close('select');
        }
    else
        {
            formId = sel_formId;
            if (sel_module == "move")
                {
                    saved_action = "foldercontent";
                    parameters = "module=" + _module + "&action=moved&page=" + _id + "&confirm_id=" + sel_id;

                }
            else
                {
                    parameters = "module=" + sel_module + "&action=select&page=" + _id + "&p_id=" + sel_id;
                    saved_action = sel_module;
                }

            // send AJAX request
            http_request = getRequestObject();
            if (http_request)
                {
                    http_request.onreadystatechange = saved;
                    http_request.open('POST', sel_action_url, true);
                    http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
                    http_request.setRequestHeader("Content-length", parameters.length);
                    http_request.setRequestHeader("Connection", "close");
                    http_request.send(parameters);
                }
        }
}

/**
   Removes image from  input with 'id' = thumb

   @param txt image 'alt' attribute
*/
function removeImg(txt)
{
    imgInput = document.getElementById('img');
    imgInput.value = "";
    img = document.getElementById('thumb');
    img.setAttribute('src',  "");
    img.setAttribute('alt',  txt);
}


/////////////////////////////////////////////

/**
   Sends module, action and id to be performed serverside (using AJAX)

   @param _module
   @param _action
   @param _id
   @param _reloadAll if true reload whole page, if false only admin part
*/
function doAction(_module, _action, _id, _reloadAll)
{
    parameters = "module=" + _module + "&action=" + _action + "&page=" + _id;
    reloadAll = _reloadAll;
    saved_action = _module;

    http_request = getRequestObject();

    http_request.onreadystatechange = saved;
    http_request.open('POST', writeurl, true);
    http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
    http_request.setRequestHeader("Content-length", parameters.length);
    http_request.setRequestHeader("Connection", "close");
    http_request.send(parameters);
}



var domId;

function get(_module, _action, _id, _domId)
{
    module = _module;
    action = _action;
    parameters = gatherPostValues();
    //    alert(parameters);
    if (_id != null)
        {
            parameters = parameters + "&page=" + _id;
        }
    http_request = getRequestObject();
    domId = _domId;
    http_request.onreadystatechange = writeDOM;
    http_request.open('POST', geturl, true);
    http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
    http_request.setRequestHeader("Content-length", parameters.length);
    http_request.setRequestHeader("Connection", "close");
    http_request.send(parameters);
}

function writeDOM()
{
    if (http_request.readyState == 4)
        {
            hideWait();
            if (http_request.status == 200)
                {
                    content = document.getElementById(domId);
                    content.innerHTML = http_request.responseText;
                }
            else
                {
                    alert(http_request.status + " " +  http_request.statusText + "\n" +
                          http_request.getResponseHeader("errormsg"));
                }
        }

}


function hideWait()
{
    // display wait
    waitDiv = document.getElementById('wait');
    if (waitDiv)
        waitDiv.style.display="none";

}

function showShadow()
{
    // display wait
    _div = document.getElementById('shadow');
    if (_div)
        _div.style.display="block";
}

function hideShadow()
{
    // display wait
    _div = document.getElementById('shadow');
    if (_div)
        _div.style.display="none";

}



/////////////////////////////////////////////

var shown = false;

function showDiv(id)
{
    if (shown)
        {
            hideDiv(id);
        }
    else
        {
            document.getElementById(id).style.display="block";
            shown = true;
        }
}

function hideDiv(id)
{
    shown = false;
    document.getElementById(id).style.display="none";
}


function showMenu(id)
{
    _el = document.getElementById(id);
    /*
    xpos = findPosX(_el);
    ypos = findPosY(_el);

    _el.style.left=xpos + "px";
    _el.style.top=ypos + "px";
    */
    _el.style.display="block";

}

function hideMenu(id)
{
    document.getElementById(id).style.display="none";
}


function showSpan(parentid)
{
    _parent = document.getElementById(parentid);
    _parent.getElementsByTagName('span')[0].style.visibility="visible";
}

function hideSpan(parentid)
{
    _parent = document.getElementById(parentid);
    _parent.getElementsByTagName('span')[0].style.visibility="hidden";
}




function expandList( _id )
{
    cur_fol = document.getElementById( _id);
    if (cur_fol)
        {
            submenu = cur_fol.getElementsByTagName('ul')[0];
            img = cur_fol.getElementsByTagName('img')[0];
            if (submenu.style.display=='block')
                {
                    submenu.style.display='none';
                    img.src = "icns/plus.png";
                }
            else
                {
                    submenu.style.display='block';
                    img.src = "icns/sub.png";
                }
        }
}




///////////////////////////////////////////////////////////
//
// By Peter-Paul Koch & Alex Tingle
// from http://blog.firetree.net/2005/07/04/javascript-find-position/
//

  function findPosX(obj)
  {
    var curleft = 0;
    if(obj && obj.offsetParent)
        while(1)
        {
          curleft += obj.offsetLeft;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj && obj.x)
        curleft += obj.x;
    return curleft;
  }

  function findPosY(obj)
  {
    var curtop = 0;
    if(obj && obj.offsetParent)
        while(1)
        {
          curtop += obj.offsetTop;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj && obj.y)
        curtop += obj.y;
    return curtop;
  }





////////////////// WYSIWYG EDITOR ///////////////////////////////////

/*
function insertatCursor(myField, myValue)
{
    //IE support
    if (document.selection) {
        myField.focus();

        sel = document.selection.createRange();
        sel.text = myValue;
    }

    //Mozilla/Firefox/Netscape 7+ support
    else if (myField.selectionStart  ||  myField.selectionStart == '0')
        {
        var startPos = myField.selectionStart;
        var endPos = myField.selectionEnd;
        myField.value = myField.value.substring(0, startPos)+ myValue+ myField.value.substring(endPos, myField.value.length);
        }
    else
        {
            myField.value += myValue;
        }
}
*/


    function formatSelection(field, starttag, endtag, noInput)
{
    //IE
    if (document.selection) {
        var selected = document.selection.createRange().text;
        if (selected == "" && !noInput)
            selected = prompt("Skriv inn tekst:", "");
        field.focus();
        sel = document.selection.createRange();

        if (selected || noInput)
            sel.text = starttag + " " +  selected + " " + endtag + " ";
    }

    //Mozilla/Firefox/Netscape 7+ support
    else if (field.selectionStart  ||  field.selectionStart == '0')
        {
            var selected = "";
            var start = Number(field.selectionStart);
            var end = Number(field.selectionEnd);
            if (start != end)
                {
                    selected = field.value.substring(field.selectionStart, field.selectionEnd);
                }
            else if (!noInput)
                {
                    selected =  prompt("Skriv inn tekst:", "");
                }
            if (selected || noInput)
                {
                    field.value =
                        field.value.substring(0, field.selectionStart)
                        + starttag + " " + selected + " " + endtag +
                        field.value.substring(field.selectionEnd, field.value.length) + " ";
                }
        }
}


function bold(id)
{
    textarea = document.getElementById(id);
    formatSelection(textarea, "[b]", "[/b]");
}


function italic(id)
{
    textarea = document.getElementById(id);
    formatSelection(textarea, "[i]", "[/i]");
}


function underline(id)
{
    textarea = document.getElementById(id);
    formatSelection(textarea, "[u]", "[/u]");
}

function anchor(id)
{
    textarea = document.getElementById(id);
    url = prompt("Lenke til", "http://");
    formatSelection(textarea, "[a " + url + "]", "[/a]");
}

function anchorintern(id)
{
    textarea_id = id;
    selectForm('form', 'textareaurl', null, reloadAll, null);
}

function mailto(id)
{
    textarea = document.getElementById(id);
    url = prompt("Skriv inn epost adresse", "e-postadresse");
    formatSelection(textarea, "[a mailto:" + url + "]", "[/a]");
}

var textarea_id = null;

function picture(id)
{
    textarea_id = id;
    selectForm('form','textareaimg', null, reloadAll, null);
}



/////////////////// CHARACTER COUNTER ///////////////////////////


function limitText(form_id, count_id, limitNum) {
        limitField = document.getElementById(form_id);
        count_id =  document.getElementById(count_id);
        if (limitField.value.length > limitNum) {
                limitField.value = limitField.value.substring(0, limitNum);
        } else {
                count_id.innerText = limitNum - limitField.value.length;
        }
}
