function selectAllProducts()
{
    var fl = $('folder_listing');
    fl_inputs = $A(fl.getElementsByTagName('input'));
    fl_inputs.each(function(f_input) { f_input.checked = 'checked'; });
}

function deselectAllProducts()
{
    var fl = $('folder_listing');
    fl_inputs = $A(fl.getElementsByTagName('input'));
    fl_inputs.each(function(f_input) { f_input.checked = ''; });
}

function selectStarredProducts()
{
    var fl = $('folder_listing');
    fl_inputs = $A(fl.getElementsByTagName('input'));

    fl_inputs.each(function(f_input) {

        // get the relevant product id
        var prod_id = f_input.id.match(/\d+/);

        // get the img object
        var star_img = $('star_img_' + prod_id);

        // check if it's starred
        if (Element.hasClassName(star_img, 'star_off')) {
            f_input.checked = '';
        } else {
            f_input.checked = 'checked';
        }
   });
}


function toggleCollection()
{
    // set fo_type
    var new_fo_type = 1 - fo_type;

    var pars = 'opt=set_folder_type&fo_id=' + fo_id + '&fo_type=' + new_fo_type;

    // make ajax request
    var myAjax = new Ajax.Request(
                            ajax_url,
                            {
                                method: 'get',
                                parameters: pars,
                                onComplete: toggleCollectionComplete
                            });
}


function toggleCollectionComplete(originalRequest)
{
    try {
        eval("var result = "+originalRequest.responseText);
    } catch(exception) {
        alert(exception);
        alert(originalRequest.responseText);
        return;
    }

    if (result.status == 1) {

        fo_type = result.data.fo_type;

        // success
        if (fi = $('folder_image')) {

            if (fo_type == 1) {
                var src = '/images/ae_folder_large_on.gif';
            } else {
                var src = '/images/folder_large_on.gif';
            }
            fi.src = src;
        }

    } else {
        alert('Error: ' + result.message);
    }
}




 function initFolderView(){
     makeEditable('folder_header', 'input');
     makeEditable('folder_desc', 'textarea');
 }

 function makeEditable(id, type){

    var obj = $(id);
    if (obj) {
        Event.observe(obj, 'click', function(){edit(obj, fo_id, type)}, false);
        Event.observe(obj, 'mouseover', function(){showAsEditable(obj)}, false);
        Event.observe(obj, 'mouseout', function(){showAsEditable(obj, true)}, false);

        if (obj.innerHTML == "") {
            obj.innerHTML = "click here to edit";
        }

    }
 }

 function showAsEditable(obj, clear){
     if (!clear){
          Element.addClassName(obj, 'editable');
     }else{
          Element.removeClassName(obj, 'editable');
     }
 }


function edit(obj, fo_id, type){

    Element.hide(obj);

    var content = obj.innerHTML;

    content = content.replace(/<br>/ig, "\n");

    // create the textarea
    if (type == 'input') {
        var input ='<div id="' + obj.id + '_editor"><input id="' + obj.id + '_edit" name="' + obj.id + '" style="width:400px;margin-bottom: 2px;" value="' + content + '" /><br />';
    } else {
        var input ='<div id="' + obj.id + '_editor"><textarea id="' + obj.id + '_edit" name="' + obj.id + '" rows="8" cols="60" style="width: 600px; height: 200px;">' + content + '</textarea><br />';
    }

    // create the buttons
    var button = '<input id="' + obj.id + '_save" type="image" src="/images/button_save.gif" value="SAVE" /> <input id="' + obj.id + '_cancel" type="image" src="/images/button_cancel.gif" value="CANCEL" /></div>';

    new Insertion.After(obj, input+button);

    Event.observe(obj.id+'_save', 'click', function(){saveChanges(obj, fo_id)}, false);
    Event.observe(obj.id+'_cancel', 'click', function(){cleanUp(obj)}, false);

 }

function cleanUp(obj, keepEditable){
     Element.remove(obj.id+'_editor');
     Element.show(obj);
     if (!keepEditable) showAsEditable(obj, true);
 }

function saveChanges(obj, fo_id){
     var new_content = escape($F(obj.id+'_edit'));

     obj.innerHTML = "Saving...";
     cleanUp(obj, true);

     var success = function(t){editComplete(t, obj);}
     var failure = function(t){editFailed(t, obj);}

     var pars = 'opt=update_folder&id=' + obj.id + '&fo_id=' + fo_id + '&content=' + new_content;
     var myAjax = new Ajax.Request(
                                    ajax_url,
                                    {
                                    method:'get',
                                    parameters:pars,
                                    onSuccess:success,
                                    onFailure:failure
                                    });

 }

 function editComplete(t, obj){

    var result;
    if (result = getData(t)) {
        obj.innerHTML = result.data.new_content;
        showAsEditable(obj, true);
    }
 }

 function editFailed(t, obj){
     obj.innerHTML = 'Sorry, the update failed.';
     cleanUp(obj);
 }


 Event.observe(window, 'load', initFolderView, false);
