var OrderManager = function(nameBaseElements) {
    if (nameBaseElements == null) {
        throw "Nome degli elementi non definito";
    }

    this.DIVISOR = "#";
    var name = null;

    var idElements = null;
    var idSelectedElements = null;
    var i = 0;
    var iSelected = 0;

    OrderManager(nameBaseElements);

    function OrderManager(nameBaseElements) {
        idElements = new Array();
        idSelectedElements =  new Array();
        name = nameBaseElements;
    }

    function get(idElement) {
        if (idElement == null)  return null;
        for (var e in idElements) {
            var elm = idElements[e];
            var obj = document.getElementById(name + elm);
            if ( typeof obj != 'object' ) {
                continue;
            }
            if (elm == idElement) {
                return obj;
            }
        }
        return null;
    }

    function doSelected() {
        idSelectedElements.length = 0;
        iSelected = 0;
        //ricerca degli elementi selezionati da spostare
        for (var e in idElements) {
            var elm = idElements[e];
            var obj = document.getElementById(name + elm);
            if ( typeof obj != 'object' ) {
                continue;
            }
            if (obj == null ) continue;
            if (obj.checked) {
                idSelectedElements[iSelected++] = elm;
            }
        }
    }

    this.add = function(idElement) {
        if (idElement == null) return;
        idElements[i++] = idElement;
        //idElements[0] = idElement;
    }

    this.moveUp = function(idElement) {
        if (idElement == null) return;

        doSelected();

        var ret = new Array();
        var iRet = 0;
        for (var e in idElements) {
            var elm = idElements[e];
            var obj = document.getElementById(name + elm);
            if ( typeof obj != 'object' ) {
                continue;
            }

            if (obj == null) continue;
            if (elm != idElement && !obj.checked) {
                ret[iRet++] = elm;
            } else if (elm == idElement) {
                for (var el in idSelectedElements) {
                    var  elmRet = idSelectedElements[el];
                    if ( typeof document.getElementById(name + elmRet) != 'object' ) {
                        continue;
                    }
                    ret[iRet++] = elmRet;
                }
                
                if(ret[iRet - 1] !=  elm) {
                    ret[iRet++] = elm;
                }
                
            }
        }
        idElements = ret;
    }

    this.getSelected = function() {
        doSelected();
        return this.getBuffer(idSelectedElements);
    }


    this.getBuffer = function(vector) {
        if (vector == null) {
            vector = idElements;
        }
        var ret = "";
        for (var e in vector) {
            var elm = vector[e];
            if (typeof elm != 'number') continue;
            if ( typeof document.getElementById(name + elm) != 'object' ) {
                continue;
            }
            ret += elm + this.DIVISOR;
        }
        return ret;
    }
}

//functions
function vf_getElementFromId(id_element) {
    var element;
    if(document.getElementById)
        element = document.getElementById(id_element);
    else
        element = document.all[id_element];
    return element;
}

function vf_orderElements(obj, id) {
    obj.moveUp(id);
    document.form.buffer.value = obj.getBuffer();
    document.form.action.value = "order";
    document.form.submit();
}

function vf_deleteElements(obj, id, text) {

    if (text == null) {
        text = "l'elemento"
    }

    var status = false;
    if (text == "video") {
        status = confirm("Attenzione!\nSei sicuro di voler sbiancare il video?");
    } else {
        status = confirm("Attenzione!\nSei sicuro di voler cancellare " + text + "?");
    }
    if (status) {
        document.form.buffer.value = id;
        document.form.action.value = "delete";
        document.form.submit();
    }
}

function vf_previewVideo(url, id, id3, name, file) {
    location.href = "Viewer?video_preview=true&file=" + file + "&" + url + "&name=" + name + "&id=" + id + "&id3=" + id3;
    //var pop= window.open("Viewer?cmd=area_video_preview&file=" + file,"area_video_preview",'toolbar=no,scrollbars=yes,width=550,height=420,top=50,left=50');
    pop.focus();
}

function vf_selectVideo(id) {
        document.form.buffer.value = id;
        document.form.action.value = "update";
        document.form.submit();
}

function vf_moveInHeader(id){
    var which = vf_getElementFromId(id);
    which.style.backgroundImage="url('images/header_menu_on_bg.jpg')";
    which.style.backgroundRepeat = 'repeat-x';
    which.style.color = '#132F08';
    which.style.cursor = "hand";
}

function vf_moveOutHeader(id){
    var which = vf_getElementFromId(id);
    which.style.backgroundImage="url('images/header_menu_bg.jpg')";
    which.style.color = 'white';
}

function vf_moveInMenu(id){
    var which = vf_getElementFromId(id);
    which.style.backgroundImage="url('images/menu_on_bg.jpg')";
    which.style.backgroundRepeat = 'repeat-x';
    which.style.color = '#2b548f';
}
function vf_moveOutMenu(id){
    var which = vf_getElementFromId(id);
    which.style.backgroundImage="url('images/menu_bg.jpg')";
}

function vf_preview_image(obj, objLib, id, divAreaButton, divArea) {
    if (obj.value != null && obj.value != '') {
        if (obj.value != objLib.value) {
            document.getElementById(divArea).innerHTML = '<div align="center">Anteprima veloce<br><img src="./azienda/videofarmacia/upload/'+id+'/images/' + obj.value + '" alt=""></div>';
            document.getElementById(divAreaButton).innerHTML = '<a href="./azienda/videofarmacia/upload/'+id+'/images/' + obj.value + '" rel="lightbox"><img src="images/icon_preview.gif" alt=""></a>';
        } else  {
            document.getElementById(divArea).innerHTML = '<div align="center">Anteprima veloce<br><img src="./azienda/videofarmacia/immagini/' + obj.value + '" alt=""></div>';
            document.getElementById(divAreaButton).innerHTML = '<a href="./azienda/videofarmacia/immagini/' + obj.value + '" rel="lightbox"><img src="images/icon_preview.gif" alt=""></a>';
        }
    } else {
        document.getElementById(divArea).innerHTML = '';
        document.getElementById(divAreaButton).innerHTML = '';
    }
}

function vf_cleanColorField(id) {
    var elm = vf_getElementFromId(id);
    elm.value = "";
    maskedHex(elm);
    elm.style.background = "white";
    
}

function vf_cleanPreviewField(id, beanPage) {
    var elm = vf_getElementFromId(id);
    vf_getElementFromId(id).value = "";
    vf_preview_image(document.getElementById("form_area_dati_detail_img"), document.getElementById("form_area_dati_detail_img_lib"), beanPage, 'form_area_dati_preview_button', 'form_area_dati_preview');
}


function vf_cleanStyleField(id) {
    var elm = vf_getElementFromId(id);
    elm.options[0] = new Option("Mantieni lo stile impostato nel canale", "", true, true);
}


function vf_submitFind(href) {
    var tipologiaCategoria = vf_getElementFromId("tipologia_categoria");
    var productName = vf_getElementFromId("product_name");
    location.href = href + "&tipologia_categoria="+ tipologiaCategoria.value + "&product_name=" + productName.value;
}

function vf_setImageLib(href, nome, img) {
    /*
    var select = vf_getElementFromId("form_area_dati_detail_img");
    alert(select.options[0]);
    */
    //href += "&product_name=" + nome != null ? nome : "" ;
    //href += "&image_lib=" + (nome != null ? "---" : "") + img;
    var _img = document.getElementById("form_area_dati_detail_img_lib");
    if (_img != null) {
        _img.value = '';
    }
    href += "&image_lib="  + img;
    if (nome != 'no_img_lib') {
        href += "&img_lib=" + img;
    }
    href += "&action_lib=insert";
    //alert(  nome +" " +href);
    location.href = href;
}

function vf_show_images_lib() {
    document.module.images_lib.value = document.getElementById("form_area_dati_detail_img_lib").value == document.getElementById("form_area_dati_detail_img").value;
    if (document.module.action.value == "modify" || document.module.action.value == "update") {
        document.module.action.value = "modify";
    } else {
        document.module.action.value = "new";
    }
    document.module.area_dati_images_lib.value = true;
    //alert(document.module.images_lib.value);
    document.module.submit();
}


var vobj;
function vf_noInput(obj, i) {
    if (i) {
        vobj = obj.value;
        alert("Impossibile modificare il campo Immagine manualmante");
    } else {
        obj.value = vobj;
    }
}
