var opened_path = new Array();
var open_dir = new Array();
var img_expand = 'http://img.auto24.ee/images/common_elements/dir_expand.gif';
var img_collapse = 'http://img.auto24.ee/images/common_elements/dir_collapse.gif';
var split_delimiter = ",";
var states = new Array(); states[0] = 0; states[58] = 14; states[59] = 15; states[56] = 1; states[61] = 14; states[62] = 2; states[60] = 7; states[57] = 4; states[63] = 13; 
var cities = new Array(); cities[0] = new Array(); cities[14] = new Array(); cities[14][0] = "58,Abja-Paluoja"; cities[0][0] = "58,Abja-Paluoja"; cities[15] = new Array(); cities[15][0] = "59,Antsla"; cities[0][1] = "59,Antsla"; cities[1] = new Array(); cities[1][0] = "56,Kallaste"; cities[0][2] = "56,Kallaste"; cities[14][1] = "61,Karksi-Nuia"; cities[0][3] = "61,Karksi-Nuia"; cities[2] = new Array(); cities[2][0] = "62,Kehra"; cities[0][4] = "62,Kehra"; cities[7] = new Array(); cities[7][0] = "60,Lihula"; cities[0][5] = "60,Lihula"; cities[4] = new Array(); cities[4][0] = "57,Narva-Jõesuu"; cities[0][6] = "57,Narva-Jõesuu"; cities[13] = new Array(); cities[13][0] = "63,Otepää"; cities[0][7] = "63,Otepää"; 


/**
* Function
* Opens selected category
* @param int category_id
* @param string path_str
* @return void
*/
function open_category(category_id, path_str)
{
    if (!path_str.length) return false;

    var path = path_str.split(split_delimiter);
    var path_id = "path_";

    /* toggle directory */
    open_dir[category_id] = open_dir[category_id] ? false : true;

    /* open path */
    for (var i=0; i<path.length; i++)
    {
        var current_category_id = path[i];
        path_id += current_category_id;

        var dir_expand_img = document.getElementById('dir_img_' + current_category_id);
        var path_id_el = document.getElementById(path_id);

        if(!path_id_el)
        {
            continue;
        }


        if (open_dir[current_category_id])
        {
            dir_expand_img.src = img_collapse;
            path_id_el.style.display = "block";
        }
        else
        {
            dir_expand_img.src = img_expand;
            path_id_el.style.display = "none";
        }

        path_id += split_delimiter;
    }
}


/**
* Function
* Opens tree for given path
* @param string path
* @return void
*/
function open_tree(path_str)
{
    var categories = path_str.split(split_delimiter);

    for (var i=0; i<categories.length; i++)
    {
        open_category(categories[i], path_str);
    }
}


/**
* Function
* Sets the value of element
* @param string element_id
* @param string value
* @return void
*/
function set_element_value(element_id, val)
{
    var el = document.getElementById(element_id);
    el.value = val;
}


/**
* Function
* Disables/enables element
* @param string el_id
* @return false
*/
function toggle_disabled(el_id)
{
    var element = document.getElementById(el_id);

    if (element.style.display == "none")
    {
        element.disabled = false;
        element.style.display = "";
    }
    else
    {
        element.disabled = true;
        element.style.display = "none";
    }

    return false;
}


/**
* Function
* Validates form fields, on success submits the form
* @param object form
* @param string elements (separated by comma)
* @return bool
*/
function validate_form(form, elem_ids)
{
    var element, element_id;
    var elements = elem_ids.split(",");
    var validated = true;

    for (var i=0; i < elements.length; i++)
    {
        element_id = elements[i];
        element = document.getElementById(element_id);

        if (element_id=="new_user_name" && element.value.length<1)
        {
            alert("Etunimi is missing!");
            validated = false;
            element.focus();
            return;
        }
        else if (element_id=="new_user_family_name" && element.value.length<1)
        {
            alert("Sukunimi is missing!");
            validated = false;
            element.focus();
            return;
        }
        else if (element_id=="new_user_email" && element.value.length<1)
        {
            alert("Sähköposti is missing!");
            validated = false;
            element.focus();
            return;
        }
        else if (element_id=="new_user_username" && element.value.length < 3)
        {
            alert("Käyttäjätunnus is_too_short!");
            validated = false;
            element.focus();
            return;
        }
        else if (element_id=="new_user_password")
        {
            if (element.value.length < 5)
            {
                alert("Salasana is_too_short!");
                validated = false;
                element.focus();
                return;
            }
            else if(element.value != document.getElementById("new_user_password2").value)
            {
                alert("Salasana and salasana uudestaan dont_match!");
                validated = false;
                document.getElementById("new_user_password2").focus();
                return;
            }
        }
        else if (element_id=="new_user_rules_read" && element.checked==false)
        {
            var rules_read = confirm("Olen lukenut käyttöehdot ja hyväksyn ne!");
            if (rules_read)
            {
                element.checked = true;
            }
            else
            {
                validated = false;
                element.focus();
                return;
            }
        }
        else if(element_id=="companies_name" && element.value.length<1)
        {
            alert("Company name (trademark) is missing!");
            validated = false;
            element.focus();
            return;
        }
    }

    if (validated)
    {
        form.submit();
        return true;
    }
}


/**
* Function
* Changes the value of state according to city
* @param string city_el_id
* @param string state_el_id
* @return void
*/
function update_state_value(city_el_id, state_el_id)
{
    var citiesId = document.getElementById(city_el_id).value;
    var statesSelect = document.getElementById(state_el_id);
    statesSelect.value = states[citiesId];
}


/**
* Function
* Changes the options of city according to state
* @param string city_el_id
* @param string state_el_id
* @return void
*/
function update_city_options(city_el_id, state_el_id)
{
    var statesId = document.getElementById(state_el_id).value;
    var citiesSelect = document.getElementById(city_el_id);

    clearList(citiesSelect);

    addElement(citiesSelect, '', 0);

    for (i=0; i < cities[statesId].length; i++)
    {
        var city_data = cities[statesId][i].split(",");
        addElement(citiesSelect, city_data[1], city_data[0]);
    }
}



function addElement(list, text_in, value_in)
{
    var o = list.options;
    var nIdx;
    if (o.length < 0) nIdx = 0;
    else nIdx = o.length;

    o[nIdx] = new Option(text_in, value_in);
    list.disabled = false;
}


function clearList(list)
{
    var i = 0;
    var o = list.options;
    for (i = o.length; i >= 0; --i)
        o[i] = null;
        list.disabled = true;
}


/**
* Function
* Pops up confirmation dialog to change checkbox
* @param string checkbox_id
* @return void
*/
function confirm_checkbox(id, message)
{
    var checkbox = document.getElementById(id);

    if (checkbox.checked)
    {
        checkbox.checked = false;
        if (confirm(message))
        {
            checkbox.checked = true;
        }
    }
}
