function addNewFolder()
{
    // get name input
    var name_input = document.getElementById('folder_name');

    if (name_input) {

        // check for valid string
        if(/^[A-z0-9 '-]+$/.test(name_input.value)) {

            var pars = 'opt=add_folder&folder_name=' + name_input.value;

            // make ajax request
            var myAjax = new Ajax.Request(
                                    ajax_url,
                                    {
                                        method: 'get',
                                        parameters: pars,
                                        onComplete: addNewFolderReponse
                                    });
        } else {
            name_input.style.backgroundColor = "red";
        }
    }
}

function addNewFolderReponse(originalRequest)
{

    // this should create a data object
    //alert(originalRequest.responseText);
    //return;

    try {
        eval("var result = "+originalRequest.responseText);
    } catch(exception) {
        alert(exception);
    }

    if (result.status == 1) {

        var data = result.data;

        // clear the form value
        var name_input = document.getElementById('folder_name');
        if (name_input) {
            name_input.value = '';
        }

        // update the folders
        updateFolderListing();

    } else {
        alert('TODO: error');
    }
}



function addProductToFolder(pr_id)
{
    var pars = 'opt=add_product_to_folder&pr_id=' + pr_id + '&fo_id=' + active_folder_id;

    // make ajax request
    var myAjax = new Ajax.Request(
                            ajax_url,
                            {
                                method: 'get',
                                parameters: pars,
                                onComplete: addProductToFolderResponse
                            });
    return false;

}

function addProductToFolderResponse(originalRequest)
{

    try {
        eval("var result = "+originalRequest.responseText);
    } catch(exception) {
        alert(exception);
        alert(originalRequest.responseText);
    }

    if (result.status == 1) {

        var data = result.data;

        var fo = $('folder_' + data.fo_id);
        if (fo) {
            fo.setAttribute('ae:fo_count', data.fo_count);
        }

        // update active folder
        changeActiveFolder();

        // highlight product
        Element.addClassName("p_" + data.pr_id, "f");
    }

}



function updateFolderListing()
{

    var pars = 'opt=get_folder_list';

    // make ajax request
    var myAjax = new Ajax.Request(
                            ajax_url,
                            {
                                method: 'get',
                                parameters: pars,
                                onComplete: updateFolderListingResponse
                            });
}

function updateFolderListingResponse(originalRequest)
{
    try {
        eval("var result = "+originalRequest.responseText);
    } catch(exception) {
        alert(exception);
        alert(originalRequest.responseText);
    }
    if (result.status == 1) {

        var fl = $('folder_list');
        fl.innerHTML = '';

        if (fl) {
            var data = result.data;
            for (var i = 0; i < data.length; i++) {
    		   var o = document.createElement("OPTION");
    		   o.text  = data[i].text;
    		   o.value = data[i].value;
    		   o.id    = data[i].id;
    		   active_folder_id = data[i].fo_id;

    		   if (data[i].selected) {
    		       o.selected = 'selected';
    		   }

    		   fl.options[i] = o;
            }
        }
    }

    // update active folder
    changeActiveFolder();
}


// changes the active folder
function changeActiveFolder()
{

    // get folder list
    var fl = $('folder_list');

    if (fl) {

        var f_option = fl.options[fl.selectedIndex];
        var f_id = f_option.value;

        // update global folder id
        active_folder_id = f_id;

        // make ajax request
        var pars = 'opt=change_active_folder&fo_id=' + f_id;
        var myAjax = new Ajax.Request(
                                ajax_url,
                                {
                                    method: 'get',
                                    parameters: pars,
                                    onComplete: changeActiveFolderResponse
                                });
    } else {
        alert('no folder list!');
    }
}

function changeActiveFolderResponse(originalRequest)
{

    try {
        eval("var result = "+originalRequest.responseText);
    } catch(exception) {
        alert(exception);
        alert(originalRequest.responseText);
    }

    if (result.status == 1) {

        var data = result.data;

        // change folder link
        var fl = document.getElementById('folder_link');
        fl.href = data.href;

        // change title
        var ft = document.getElementById('folder_title');
        if (ft) {
            ft.innerHTML = data.fo_title;
        }

        // change folder count
        var fc = document.getElementById('folder_count');
        if (fc) {
            fc.innerHTML = data.fo_count;
        }

        try {
            highlightButtons(data.pr_ids);
        } catch (e) {
            // do nothing
        }

        // highlight product
        Element.addClassName("prod_" + data.pr_id, "flagged");
    }

}

function folderSideBarInit()
{
    // add on submit event
    var add_ff = $('add_folder_form');
    if (add_ff) {
        add_ff.onsubmit = function() { addNewFolder(); return false; };
    }

    // add onchange event to folder drop down
    var fl = $('folder_list')
    if (fl) {
        Event.observe(fl, 'change', function() {changeActiveFolder();}, false);
    }
}

Event.observe(window, 'load', function() {folderSideBarInit();}, false);
