//<![CDATA[
function pad(s, l) {
    return( l.substr(0, (l.length - s.length)) + s );
}
function browserDetection() {
    var agent = navigator.userAgent.toLowerCase();
    this.userAgent = agent;
    this.isSafari = agent.indexOf("safari") != -1 || agent.indexOf("mediamid") != -1;
    this.isIE = agent.indexOf("msie") != -1;
    this.isMozilla = !this.isSafari && agent.indexOf("gecko") != -1;
    this.isKonqueror = agent.indexOf("konqueror") != -1;
    this.isOpera = agent.indexOf("opera") != -1;
}

var browserInfo = new browserDetection();

/**
 * Returns the seconds in the mm:ss format.
 * @param seconds seconds
 */
function formatTime(seconds) {
    var result = "";
    var remaining = Math.floor(seconds);

    if (seconds > 3600) {
        result += pad((Math.floor(remaining / 3600)).toString(), "00") + ":";
        remaining = remaining % 3600;
    }

    result += pad((Math.floor(remaining / 60)).toString(), "00") + ":";
    remaining = remaining % 60;

    result += pad(remaining.toString(), "00") + "";

    return result;
}

/**
 * To set the focus, when a form is loaded
 * for example:
 *      quicksearch
 *      create account
 *      Login
 *      extended search, ...
 */
function setFocus(form, field) {
    try{
        if(!getObj(field).disabled)
            document.form.field.focus();
    }catch(e) {
        try {
            var fieldElement = getObj(field);
            if(fieldElement)
                setTimeout("document.getElementById('" + fieldElement.id + "').focus();",5);   // FF2 workaround for focus
            else {
                var formElement = getObj(form);
                var length = formElement.elements.length;
                var element;
                var end = false;
                var i = 0;
                while(!end) {
                    if(formElement.elements[i].type != "hidden" && formElement.elements[i].id) {
                        end = true;
                        element = formElement.elements[i];
                    } else {
                        i++;
                    }
                }
                var elementField = getObj(element.id);
                elementField.focus();
            }
        } catch(e) {
            // DO Nothing
        }
    }
}

function getObj(name) {
    if (document.getElementById) {
        return document.getElementById(name);
    } else if (document.all) {
        return document.all[name];
    } else if (document.layers) {
        return getObjNN4(document,name);
    }
    else {
        return null;
    }
}

/**
 * The Position of Screenview and Detail-View
 * Just for right bottom and left bottom position
*/
function setScreenviewPos(id, timeOut) {
    var globalDiv = getObj(id);
    var preview = globalDiv.getElementsByClassName("preview")[0];
    var pic = preview.getElementsByTagName("img")[0];
    var properties = globalDiv.getElementsByClassName("propertiesMo")[0];

    if(!timeOut) {
        window.setTimeout("setScreenviewPos('"+id+"', true)", 500);
        return null;
    }
    // If there is not enough space to pos the divs
    if(globalDiv.clientWidth <= (pic.clientWidth + properties.clientWidth)) {
        // do nothing
    } else {
        var propertiesTop = pic.clientHeight - properties.clientHeight;
        var propertiesWidth = globalDiv.clientWidth - pic.clientWidth - 20;
        if(propertiesTop > 0)
            properties.style.top = propertiesTop + "px";
        if(propertiesWidth > 0)
            properties.style.width = propertiesWidth + "px";
    }
    return "";

}

/**
 * To set the height of tree and content
*/
function setTreeHeight() {
    try {
        var content = getObj("content");
        var tree = getObj("topictree");
        var searchHeight = getObj("quicksearch").clientHeight;
        var contentHeight = (content.clientHeight + searchHeight);
        var treeHeight = (tree.clientHeight);
        if(contentHeight > treeHeight)
            tree.style.height = contentHeight + "px";
        if (treeHeight < 400 & contentHeight < 400)
            tree.style.height = "400px";
    } catch(e) {
        // Do nothing
    }
}

function displayCartMsg(message) {
    // find cart content div
    var cartContentDiv = document.getElementById("cartContent");
    var messageWithBr = "<br/><br/><br/><br/><br/><br/><br/><br/>" + message + "<br/><br/><br/><br/><br/><br/><br/><br/>";
    if (cartContentDiv != null) {
        var cartMessageDiv = document.createElement('div');
        cartMessageDiv.setAttribute('id','cartMessageDiv');;
        cartMessageDiv.innerHTML=messageWithBr;
        cartContentDiv.appendChild(cartMessageDiv);
    }
    else {
            alert("div with ID 'cartContent' used to display cart messages " +
                "was not found on this page!");
    }
    window.scrollTo(0,0);
    return true;
}

function removeAmb(str) {
    return unescape(str).replace(/\&amp;/g,'&');
}
function addAmb(str) {
    return unescape(str).replace(/\&/g,'&amp;');
}

function showToolbar() {
    setCookie("footerPresence", "opened", 30);
    $("#toolbarOpener").css('display','none');
    $("#toolbar").slideDown();

    return false;
}

function hideToolbar() {
    setCookie("footerPresence", "closed", 30);
    $("#toolbar").slideUp();
    $("#toolbarOpener").css('display','block');

    return false;
}

function openSelectImageDialog(fieldNumber) {
    $("#modalIframeId").attr("src", "instance/selectImage.xhtml?fieldNumber="+fieldNumber);
}

function hideselectlist() {
    var is_ie5_5 = null;
    var is_ie6 = null;

    try {
        var is_major = parseInt(navigator.appVersion);
        is_ie5_5 = ((is_major == 4) && (browserInfo.userAgent.indexOf("msie 5.5") != -1));
        is_ie6 = ((is_major == 4) && (browserInfo.userAgent.indexOf("msie 6.") != -1) );
    } catch(e) {
        // do nothing
    }
    try {
        if (is_ie5_5 || is_ie6) {
            var selectLists = null;
            selectLists = document.getElementsByTagName('select');
            for (var i = 0; i < selectLists.length; i++)
                selectLists[i].style.visibility = 'hidden';
        }
    } catch(e) {
        // do nothing
    }
}

function showselectlist() {
    var is_ie5_5 = null;
    var is_ie6 = null;

    try {
        var is_major = parseInt(navigator.appVersion);
        is_ie5_5 = ((is_major == 4) && (browserInfo.userAgent.indexOf("msie 5.5") != -1));
        is_ie6 = ((is_major == 4) && (browserInfo.userAgent.indexOf("msie 6.") != -1) );
    } catch(e) {
        // do nothing
    }
    try {
        if (is_ie5_5 || is_ie6) {
            var selectLists = null;
            selectLists = document.getElementsByTagName('select');
            for (var i = 0; i < selectLists.length; i++)
                selectLists[i].style.visibility = 'visible';
        }
    } catch(e) {
        // do nothing
    }
}

function removeParameterFromUrl(url, parameterName) {
    var newParameters = "";
    var tempArray = url.split("?");
    var baseURL = tempArray[0];
    var additionalURL = tempArray[1];
    var temp = "";
    if (additionalURL) {
        tempArray = additionalURL.split("&");
        for (var i in tempArray) {
            if (tempArray[i].indexOf(parameterName + "=") == -1) {
                newParameters += temp + tempArray[i];
                temp = "&";
            }
        }
    }
    return baseURL + "?" + newParameters;
}

function addAttributeAutosuggest(queryString, attributeName, mandatorId) {
    $(queryString)
        // don't navigate away from the field on tab when selecting an item
        .bind("keydown", function(event) {
            if ((event.keyCode === $.ui.keyCode.TAB || event.keyCode === $.ui.keyCode.ENTER) && $(this).data("autocomplete") != null) {
                if (typeof  $(this).data("autocomplete").menu.active != 'undefined' && $(this).data("autocomplete").menu.active != null) {
                    event.preventDefault();
                }
            }
        })
        .autocomplete({
            source: function(request, response) {
                $.ajax({
                    url: "instance/attributeAutosuggest.jsp?property="+attributeName+"&mandatorId="+mandatorId,
                    dataType: "json",
                    data: {inputText: request.term},
                    success: function(data) {
                        response($.map(data.results, function(item) {
                            return {
                                label: item.value,
                                value: item.value
                            };
                        }));
                    }
                });
            },
            minLength: 2,
            focus: function() {
                // prevent value inserted on focus
                return false;
            }
        });
}

//]]>

