/**
 * Document   : jsUtils
 * Created on : 14 juin 2010, 12:16:34
 * Author     : jsfavre
 *
 * des fonctions utilitaires ...
 *
 */


/**
 * supprime tout les childs de l'elem indiqué en param
 */
function removeChilds(item){
    item.innerHTML = '';
//    while (item.childNodes.length > 0) {
//        item.removeChild(item.childNodes.item(0));
//    }
}

/**
 * pour rattacher 1 même event à "n" items
 */
function addEventArrayItems(itemsArray, eventType, fonction) {
    for (var i = 0; i < itemsArray.length; i++){
        addEvent(itemsArray[i], eventType, fonction);
    }
}

/**
 * pour rattacher 1 event à un item
 * fonction compatible multi browser
 * (IE sortant du standard W3C car n'utilisant pas la fonction addEventListener(...))
 */
function addEvent(item, eventType, fonction) {
    if(item.addEventListener) {
        item.addEventListener(eventType, fonction, false); // sans capture
        return true;
    } else if (item.attachEvent) {
        var r = item.attachEvent("on" + eventType, fonction);
        return r;
    } else {
        return false;
    }
}

/**
 * Spécifique aux "Select object"
 * Sélectionne la ligne de la DropDownListBox (passée en param) dont value (passé en param) correspond à
 * l'attribut .value d'un des éléments de la liste
 * utilisation typique : lorsque les différents éléments de la liste déroulante correspondent à des rows de table de BD
 *                       et que l'on MAP le champ ID (avec unicité donc) des éléments de la Table à l'attribut
 *                       .value des éléments de la liste déroulante
 */
function setSelectedOption(selectObject, value){
    if (value == null || value == "") return;
    for (i = 0 ; i < selectObject.length ; i++) {
        if (selectObject.options[i].value == value) selectObject.selectedIndex = i ;
    }
}

/**
 * Spécifique aux "Select object"
 * Pour ajouter simplement un nouvel élément
 * à une liste déroulante en indiquant juste un ID et un libellé.
 */
function addOption(selectObject, idOptionObject, textOptionObject){
    if (selectObject==null) return selectObject;
    if (idOptionObject==null) return selectObject;
    if (textOptionObject==null) return selectObject;
    var optionObj = document.createElement('option');
    optionObj.value = idOptionObject;
    optionObj.text = textOptionObject;
    try {
        selectObject.add(optionObj,null); // standards compliant
    } catch(ex) {
        selectObject.add(optionObj); // IE only
    }
    return selectObject;
}

/**
 * Spécifique aux "Select object"
 * Simple convention = l'ID d'un "choix vide" est une string vide.
 */
function getOtionNoChoice(){
    return '';
}

/**
 * Spécifique aux "Select object"
 * Une simple convention pour avoir un choix vide ds une liste déroulante.
**/
function addOptionNoChoice(selectObj){
    addOption(selectObj, getOtionNoChoice(), '');
}

/**
 * Spécifique aux "Select object"
 *  Simple combo ...
 */
function clearAndPopulateWithOptionNoChoice(selectObj){
    removeChilds(selectObj);
    addOptionNoChoice(selectObj);
}

function getHeight(element){
    var height;
    if (element.offsetHeight) {
        height = element.offsetHeight;
    } else if (element.style.pixelHeight) {
        height = element.style.pixelHeight;
    }
    return height;
}

function geWidth(element){
    var width;
    if (element.offsetWidth) {
        width = element.offsetWidth;
    } else if (element.style.pixelWidth) {
        width = element.style.pixelWidth;
    }
    return width;
}

function FindPos(element) {
    var posX = 0, posY = 0;
    do {
        posX += element.offsetLeft;
        posY += element.offsetTop;
        element = element.offsetParent;
    } while( element != null );
    var pos = [];
    pos['X'] = posX;
    pos['Y'] = posY;
    return pos;
}
