function fnShowProps(obj /*, objName*/)
{
    //  var escape = (encodeURI ? encodeURI : encodeURIComponent );
    var objName="obj";
    var result = "";
    for (var i in obj)
    {
        result += objName + ".<b>" + i + "</b> = " + obj[i] + "<hr/>";
    }
    var wnd = open("about:blank");
    if(wnd)
    {  wnd.document.write(result);}
    //  alert(result);
};

//return ID of selected checkboxes
function CheckedValues(formName, chkboxesName)
{
    var item, s='';
    for (i = 0; i < document.forms[formName].elements.length; i++)
    {
        item = document.forms[formName].elements[i];
        if ((item.type=='checkbox') && (item.name.toUpperCase()==chkboxesName.toUpperCase()) && item.checked && !item.disabled)
        {
            s+=(s!==''?',':'')+item.value;
        }
    }
    return s;
};

function js_in_array(needle, in_array)
{
    for(var i in in_array)
    {
        if (in_array[i] == needle)
        {
            return true;
        }
    }

    return false;
};

//checks if any select item has been selected twice
function CheckFields()
{
    req_fields_ok = true;
    j = 1;
    arr = [];
    var fieldsList = document.getElementById('fieldsList'); //a auto-generated SELECT. It's value must be taken into account
    if(null !== fieldsList && null !== Fields[fieldsList.value])
    {
        Fields[fieldsList.value].s = 0;
    }
    for(var i in Fields)
    {
        if (Fields[i].s == 1)
        {
            if ( js_in_array(i, req_fields) )
            {
                req_fields_ok = false;
                arr[arr.length] = j++ + '. ' + Fields[i].d;
            }
        }
    }
    if(!req_fields_ok)
    {  return confirm(requiredMess + '\n\n' + arr.join('\n') + '\n\n' + areYouSure);}
    else
    {  return req_fields_ok;}
};

function set_correspondence_automatically()
{
    var temp_div;
    var temp_input;
    var feed_category_name;
    var i,j;
    for(i in arr_feed_all_columns)
    {
        if (arr_feed_to_db_columns[i] !== '')
        {
            temp_div = document.getElementById(arr_feed_all_columns[i]);
            temp_input = document.getElementById('trgNames['+arr_feed_all_columns[i]+']');
            if (temp_div !== null && temp_input !== null && temp_input.value == '-1' && !in_array(arr_feed_to_db_columns[i], arr_existing_mapping))
            {
                temp_div.innerHTML='<b class="menu_item_active">'+Fields[arr_feed_to_db_columns[i]].d+'</b>';
                temp_input.value = arr_feed_to_db_columns[i];
            }
        }
    }
};

function in_array(value, arr)
{
    for(i in arr)
    {
        if(arr[i] == value)
        {  return true;}
    }
    return false;
};

function set_categories_correspondences_automatically()
{
    var temp_select;
    var i,j;
    for(i in arr_feed_to_db_categories)
    {
        if (arr_feed_to_db_categories[i] !== '')
        {
            temp_select = document.getElementById("cat["+i+"]");
            if (temp_select !== null && temp_select.options[temp_select.selectedIndex].value == '-1')
            {
                for (j=0;j<temp_select.options.length;j++)
                {
                    if (temp_select.options[j].value == arr_feed_to_db_categories[i])
                    {
                        temp_select.options[j].selected = "selected";
                        temp_select.style.backgroundColor = "#ccc";
                    }
                }
            }
        }
    }
};

//select item in previous <select>
function prevSelect(srcObj)
{
    S=document.getElementById(srcObj);
    if(S.firstChild.tagName=="SELECT")
    {  return S.firstChild;}
    else
    {  return null;}
};

//makes cursor an arrow
function defaultCursor()
{
    document.body.style.cursor='default';
};

//what to do when onMouseUp
function regMouseUp()
{
    document.body.onmouseup = defaultCursor;
};

//starts in body.onload
function PageLoaded()
{
    regMouseUp();
    //window.onerror = alert;
};

function checkCommentForm(msg)
{
    with(document)
    {
        if(getElementById('Author')===null || getElementById('Comment')===null ||
        getElementById('id')===null || getElementById('Author').value==='' ||
        getElementById('Comment').value==='')
        {
            alert(msg);
            return false;
        }
    }
};

function checkCommentNewForm(msg)
{
    with(document)
    {
        if(getElementById('Comment')===null ||
        getElementById('Comment').value==='' || getElementById('theme')===null || getElementById('theme').value==='')
        {
            alert(msg);
            return false;
        }
    }
};

function checkAddKarmaCatForm(msg)
{
    with(document)
    {
        if(getElementById('name')===null ||
        getElementById('name').value==='')
        {
            alert(msg);
            return false;
        }
    }
};

function checkEditKarmaCatForm(msg)
{
    with(document)
    {
        if(getElementById('name_upd')===null ||
        getElementById('name_upd').value==='')
        {
            alert(msg);
            return false;
        }
    }
};

function checkTellFriendForm (msg)
{
    var f = document.forms['tellfriend'];
    var o = {
        author: f.author,
        friend_name: f.friend_name,
        friend_email: f.friend_email
    };

    for (var n in o) {
        if (!o[n] || o[n].value == '') {
            alert(msg);
            return false;
        }
    }
};


function getParam(sParamName)
{
    var Params = location.search.substring(1).split("&");
    var variable = '';
    for (var i = 0; i < Params.length; i++)
    {
        if (Params[i].split("=")[0] == sParamName)
        {
            if (Params[i].split("=").length > 1) {variable = Params[i].split("=")[1];}
            return variable;
        }
    }
    return '';
};

function required_fields_check_status()
{
    var selected_status;
    var select_status = document.getElementById("f[status]");
    if (String(select_status) != "undefined")
    {
        selected_status = select_status.options[select_status.selectedIndex].value;
        if(!is_required_fields_ok && selected_status == '2')
        {
            if (confirm(requiredMess + '\n\n' + areYouSure))
            {
                return true;
            }
            else
            {
                select_status.options[0].selected = true;
            }
        }
        else
        {return true;}
    }
};

function  required_fields_check()
{
    if(!is_required_fields_ok)
    {
        if (confirm(canNotUpload + '\n\n' + DoYouWantDetermine))
        {
            location.href=goToDetermine;
            return false;
        }
        else {return false;}
    }
    else  {return true;}
};

function  boutique_check(alert_text)
{
    var obj = document.getElementById('f[id_boutique]');
    if(obj !== null && obj.value == '-1')
    {
        alert(alert_text);
        obj.focus();
        return false;
    }
    else { return required_fields_check();}
};

function  currency_check(alert_text)
{
    var obj = document.getElementById('f[default_currency]');
    if(obj !== null && obj.value == '-1')
    {
        alert(alert_text);
        obj.focus();
        return false;
    }
    else { return required_fields_check();}
};

function  country_check(alert_text)
{
    var obj = document.getElementById('f[default_country_id]');
    if(null !== obj && '' === obj.value)
    {
        alert(alert_text);
        obj.focus();
        return false;
    }
    else {return required_fields_check();}
};

function objDetect (obj) {
    if (document.all) {
        val = document.all(obj);
    }
    else if (document.getElementById) {
        val = document.getElementById(obj);
    }
    else if (document.layers) {
        val = document.layers(obj);
    }
    if (val) {return val;}
    else {return false;}
};

function cs(obj, Fields)
{
    createSelect(Fields, obj.id, obj.parentNode.getElementsByTagName('input')[0].value);
};

function saveData(id_container)
{
    var input, select, activeOption, text;
    var container = document.getElementById(id_container);
    if(null!==container)
    {
        input = container.parentNode.getElementsByTagName('input')[0];
        select = container.getElementsByTagName('SELECT')[0];
        if(null !== select)
        {
            activeOption = select.options[select.selectedIndex];
            if(null!== input && -1!=input.value)
            {  Fields[input.value].s=1;}
            input.value = activeOption.value;
            //alert(input.value)
            text = activeOption.text;
            while (container.firstChild)
            {  container.removeChild(container.firstChild);}
            if(-1==activeOption.value)
            {  container.innerHTML = text;}
            else
            {  container.innerHTML = text.bold();}
            if(-1!=activeOption.value)
            {  Fields[activeOption.value].s=0;}
        }
        activeDivID = "";
    }
};

function createSelect(arr, id_container, active_value)
{
    var container = document.getElementById(id_container);
    if(null===container)
    {
        return 0;
    }

    if("SELECT"==container.firstChild.nodeName)
    {  return 0;}

    if(""!==activeDivID)
    {  saveData(activeDivID);}

    activeDivID = id_container;

    var selectedIndex = 0;
    var sel = document.createElement("select");
    var gr1 = document.createElement("optgroup");
    gr1.label = _predefined;
    var gr2 = document.createElement("optgroup");
    gr2.label = _user_defined;

    sel.id = 'fieldsList';
    sel.name = sel.id;

    var opt = new Option(_select, -1);
    sel.options.add(opt);

    active_value = active_value.toLowerCase();
    var k = 1;
    for(var i in arr)
    {
        if(1==arr[i].s || i.toLowerCase()==active_value)
        {
            opt = document.createElement("OPTION");
            opt.text = arr[i].d;
            opt.innerHTML = arr[i].d;
            opt.value = i;

            if(i.toLowerCase()==active_value)
            {  selectedIndex = k;}

            if(1==arr[i].p)
            {  gr1.appendChild(opt);}
            else
            {  gr2.appendChild(opt);}
            k++;
        }
    }
    while (container.firstChild)
    {  container.removeChild(container.firstChild);}

    if(gr1.childNodes.length > 0)
    {  sel.appendChild(gr1);}
    if(gr2.childNodes.length > 0)
    {  sel.appendChild(gr2);}
    container.appendChild(sel);

    sel.selectedIndex = selectedIndex;

    return 1;
};


function addEngine(name, cat)
{
    if ((typeof window.sidebar == "object") && (typeof window.sidebar.addSearchEngine == "function"))
    {
        window.sidebar.addSearchEngine
        (
        "http://"+document.location.host+"/comparella.src",
        "http://"+document.location.host+"/images/comparella.png",
        name,
        cat    );
    }
    else
    {
        alert("Sorry, you need a Mozilla-based browser to install a search plugin.");
    }
};

function switch_box(x)
{
    var victim = document.getElementById('victim' + x);
    var pic = document.getElementById('triangle'  + x);
    if(null !== victim)
    {
        victim.style.display = ('none' == victim.style.display ? 'block' : 'none');
        if(null !== pic)
        {  pic.src = '/images/' + ('none' == victim.style.display ? '' : 'open') + 'triangle.gif';}
    }

};

function check_adv_search_form()
{
    var Manufacturer = document.getElementById('Manufacturer');
    var Model = document.getElementById('Model');
    var Description = document.getElementById('Description');
    var Boutique = document.getElementById('Boutique');
    if((null === Manufacturer || Manufacturer.value==='') &&
    (null === Model || Model.value==='') &&
    (null === Description || Description.value==='') &&
    (null === Boutique || Boutique.value==='') )
    {
        return false;
    }
    else
    {
        return true;
    }
    return false;
};

function update_HTML(id, text)
{
    var cell = document.getElementById(id);
    if(cell) {
        cell.innerHTML = text;
    }
};

function add_nil(str, len)
{
    len = (len ? len : 2);
    str = str.toString();
    str = (len > str.length ? "0" + str.toString() : str );
    return str;
};

function update_time(oDate, prefix)
{
    oDate.setSeconds( oDate.getSeconds()+1 );
    container.innerHTML = prefix + ' ' + add_nil(oDate.getDate()) + '.' + add_nil(oDate.getMonth()) + '.' + oDate.getFullYear() + ' ' + add_nil(oDate.getHours()) + ':' + add_nil(oDate.getMinutes()) + ':' + add_nil(oDate.getSeconds());
};

function update_price(quantity, unit_price, fee, id_target, suffix)
{
    suffix = suffix || ' suffix';
    target = document.getElementById(id_target);
    if( null != target && target.innerHTML)
    {
        target.innerHTML = format(quantity * unit_price + fee, 2) + suffix;
    }
};

function format(val, precision)
{
    var multiplier = '1';

    for (var i = 0; i < precision; i++) multiplier += '0';

    return Math.round(val * multiplier) / multiplier;
};

