var TamedCMS_files_ready = [];

TamedCMS_getHTTPObject = function () {
    var req = false;
    // branch for native XMLHttpRequest object
    if(window.XMLHttpRequest) {
        try {
            req = new XMLHttpRequest();
        }
        catch(e) {
            req = false;
        }
        // branch for IE/Windows ActiveX version
    }
    else if(window.ActiveXObject) {
        try {
            req = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch(e) {
            try {
                req = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch(e) {
                req = false;
            }
        }
    }
    return req;
}

TamedCMS_include_js = function (file) {
    oHttp = TamedCMS_getHTTPObject();
    if (oHttp.readyState != 0) {
        oHttp.abort();
    }
    oHttp.open("get", file , true);
    oHttp.onreadystatechange = function () {
        if (oHttp.readyState == 4) {
            var html_doc = document.getElementsByTagName("head")[0];
            var js = document.createElement("script");
            js.type="text/javascript";
            js.text = oHttp.responseText;
            if (!document.all) {
                js.innerHTML = oHttp.responseText;
            }
            html_doc.appendChild(js);

            TamedCMS_files_ready.push = file;
        }
    }
    oHttp.send(null);
}

TamedCMS_parseJSON = function(input, error_id, exit_func){

    /*var found = false;
    for (file in TamedCMS_files_ready) {
        if (TamedCMS_files_ready[file] == '/js/TamedCMS/json2.js') {
            found = true;
            break;
        }
    }

    if(!found){

        setTimeout(function(){
            TamedCMS_parseJSON(input, error_id, exit_func);
        }, 1);

    } else {*/

        TamedCMS_parseJSON_exec(input, error_id, exit_func);
   /* }*/


}

TamedCMS_parseJSON_exec = function(input, error_id, exit_func){

    try{

        var obj = JSON.parse(input);
    
        for(var row in obj) {

            var element = document.getElementById(row);
            if(element){

                if('value' in element){
                    element.value = obj[row];
                } else if('innerHTML' in element){
                    element.innerHTML = obj[row];
                }else {
                    throw 'element: ' + row + ' must have a value or innerHTML to set.'
                }
            } else {

                throw 'element: ' + row + ' not found.'
            }
        }
    } catch (e) {
        if(error_id){
            var error_element = document.getElementById(error_id);

            error_element.innerHTML = 'Error: ' + e + ' ' + input;

        }
    }

    if(exit_func){
        exit_func();
    }

}

TamedCMS_request = function(input, error_id, exit_func){

    var input = encodeURIComponent(input);

    var xmlHttp = TamedCMS_getHTTPObject();

    xmlHttp.onreadystatechange=function(){

        if(xmlHttp.readyState==4 && xmlHttp.status == 200){

            var rt = xmlHttp.responseText;
            TamedCMS_parseJSON(rt, error_id, exit_func);

        }

    }
    
    xmlHttp.open("POST","/index.php",true);

    //Send the proper header information along with the request
    xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlHttp.setRequestHeader("Content-length", input.length);
    xmlHttp.setRequestHeader("Connection", "close");

    xmlHttp.send('TamedCMS_module_input=' + input );

}

TamedCMS_init = function(obj){

    try{

        var error_id = '';

        var output = '<xml>';

        for(var row in obj) {

            if(row=='error_id'){
                error_id = obj[row];
            } else {

                output += '<' + row + '>' + obj[row] + '</' + row + '>';
            }
        }

        output += '</xml>';

        if(obj.module.charAt(obj.module.length-1) != '/'){

            TamedCMS_request(output, error_id);
        }
        
    } catch (e) {

        if(obj.error_id){
            var error_element = document.getElementById(obj.error_id);

            error_element.innerHTML = 'Error: ' + e + ' ' + output;

        }
    }

}

TamedCMS_save = function(module, method, form_id, error_id){

    var input = '<xml><module>' + module + '</module><method>' + method + '</method><action>save</action><load_template>no</load_template>';

    var form = document.getElementById(form_id);
    if(form){
        var num_of_elements = form.elements.length;

        var include = 'no';

        for (var j=0; j<num_of_elements; j++) {

            var element = form.elements[j];


            if(element.type){

                var val = '';

                if(element.type == 'text' || element.type == 'hidden' || element.type == 'textarea' || element.type == 'password'){

                    include = 'yes';
                    val = element.value;
                }
                else if (element.type == 'checkbox' && element.checked == true) {
                    include = 'yes';
                    val = element.value;
                }
                else if (element.type.indexOf("select") > -1) {
                    var index = element.selectedIndex;

                    if(index > -1){
                        val = element.options[index].value
                    }

                    if (val) {
                        include = 'yes';
                    }
                }

                if(include == 'yes'){

                    input += '<field><name><![CDATA[' + element.name + ']]></name><val><![CDATA[' + val + ']]></val></field>\n';

                }

                include = 'no';
            }

        }
    }

    input += '</xml>';
    
    TamedCMS_request(input, error_id);


}

TamedCMS_delete = function(module, method, form_id, error_id, message){

    var x = confirm(message);
    if(x){

        var input = '<xml><module>' + module + '</module><method>' + method + '</method><action>delete</action><load_template>no</load_template>';

        var form = document.getElementById(form_id);
        if(form){
            var num_of_elements = form.elements.length;

            for (var j=0; j<num_of_elements; j++) {

                var element = form.elements[j];

                if(element.type){

                    if(element.name == 'id'){

                        input += '<id>' + element.value + '</id>';
                    }

                    if(element.type == 'text' || element.type == 'hidden' || element.type == 'textarea' || element.type == 'password'){

                        element.value = "";
                    }
                    else if (element.type == 'checkbox' && element.checked == true) {
                        element.checked = false;
                    }
                    else if (element.type.indexOf("select") > -1) {
                        element.selectedIndex = -1;
                    }

                }

            }
        }

        input += '</xml>';

        TamedCMS_request(input, error_id);
    }

}

TamedCMS_cover_select = function(select_id, cover_id){

    var cover_element = document.getElementById(cover_id);
    var select_element = document.getElementById(select_id);
    var index = select_element.selectedIndex;

    if(index > -1){
        cover_element.value = select_element.options[index].value;
    }

}

TamedCMS_pop_up = function(pop_up_id, overlay_id, message_id, display){

    var pop_up_element = document.getElementById(pop_up_id);
    pop_up_element.style.display = display;

    var overlay_element = document.getElementById(overlay_id);
    overlay_element.style.display=display;

    document.getElementById(message_id).innerHTML = '';

}

TamedCMS_choose = function(from_id, to_id, pop_up_id, overlay_id, message_id){
    var from_element = document.getElementById(from_id);

    var to_element = document.getElementById(to_id);
    
    to_element.value = from_element.innerHTML;
    
    TamedCMS_pop_up(pop_up_id, overlay_id, message_id, 'none');
}

TamedCMS_debug = function (message){
    var x = confirm(message);
    if(x){

        throw "exit";

    }

}

if (navigator.appName=="Microsoft Internet Explorer"&&parseFloat(navigator.appVersion)<8){
    //TamedCMS_include_js("/js/TamedCMS/IE8.js");
}

//TamedCMS_include_js("/js/TamedCMS/json2.js");
