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[32] = 1; states[19] = 7; states[14] = 5; states[8] = 4; states[56] = 1; states[7] = 3; states[61] = 14; states[62] = 2; states[3] = 2; states[26] = 10; states[9] = 4; states[10] = 4; states[20] = 8; states[30] = 12; states[60] = 7; states[6] = 2; states[2] = 2; states[35] = 14; states[15] = 5; states[11] = 4; states[57] = 4; states[63] = 13; states[17] = 6; states[5] = 2; states[27] = 10; states[16] = 5; states[24] = 9; states[12] = 4; states[21] = 8; states[25] = 9; states[29] = 11; states[4] = 2; states[13] = 4; states[28] = 10; states[36] = 14; states[1] = 2; states[22] = 8; states[23] = 8; states[31] = 1; states[33] = 13; states[18] = 6; states[34] = 13; states[37] = 14; states[38] = 14; states[39] = 15; 
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] = "32,Elva"; cities[0][2] = "32,Elva"; cities[7] = new Array(); cities[7][0] = "19,Haapsalu"; cities[0][3] = "19,Haapsalu"; cities[5] = new Array(); cities[5][0] = "14,Jõgeva"; cities[0][4] = "14,Jõgeva"; cities[4] = new Array(); cities[4][0] = "8,Jõhvi"; cities[0][5] = "8,Jõhvi"; cities[1][1] = "56,Kallaste"; cities[0][6] = "56,Kallaste"; cities[3] = new Array(); cities[3][0] = "7,Kärdla"; cities[0][7] = "7,Kärdla"; cities[14][1] = "61,Karksi-Nuia"; cities[0][8] = "61,Karksi-Nuia"; cities[2] = new Array(); cities[2][0] = "62,Kehra"; cities[0][9] = "62,Kehra"; cities[2][1] = "3,Keila"; cities[0][10] = "3,Keila"; cities[10] = new Array(); cities[10][0] = "26,Kilingi-Nõmme"; cities[0][11] = "26,Kilingi-Nõmme"; cities[4][1] = "9,Kiviõli"; cities[0][12] = "9,Kiviõli"; cities[4][2] = "10,Kohtla-Järve"; cities[0][13] = "10,Kohtla-Järve"; cities[8] = new Array(); cities[8][0] = "20,Kunda"; cities[0][14] = "20,Kunda"; cities[12] = new Array(); cities[12][0] = "30,Kuressaare"; cities[0][15] = "30,Kuressaare"; cities[7][1] = "60,Lihula"; cities[0][16] = "60,Lihula"; cities[2][2] = "6,Loksa"; cities[0][17] = "6,Loksa"; cities[2][3] = "2,Maardu"; cities[0][18] = "2,Maardu"; cities[14][2] = "35,Mõisaküla"; cities[0][19] = "35,Mõisaküla"; cities[5][1] = "15,Mustvee"; cities[0][20] = "15,Mustvee"; cities[4][3] = "11,Narva"; cities[0][21] = "11,Narva"; cities[4][4] = "57,Narva-Jõesuu"; cities[0][22] = "57,Narva-Jõesuu"; cities[13] = new Array(); cities[13][0] = "63,Otepää"; cities[0][23] = "63,Otepää"; cities[6] = new Array(); cities[6][0] = "17,Paide"; cities[0][24] = "17,Paide"; cities[2][4] = "5,Paldiski"; cities[0][25] = "5,Paldiski"; cities[10][1] = "27,Pärnu"; cities[0][26] = "27,Pärnu"; cities[5][2] = "16,Põltsamaa"; cities[0][27] = "16,Põltsamaa"; cities[9] = new Array(); cities[9][0] = "24,Põlva"; cities[0][28] = "24,Põlva"; cities[4][5] = "12,Püssi"; cities[0][29] = "12,Püssi"; cities[8][1] = "21,Rakvere"; cities[0][30] = "21,Rakvere"; cities[9][1] = "25,Räpina"; cities[0][31] = "25,Räpina"; cities[11] = new Array(); cities[11][0] = "29,Rapla"; cities[0][32] = "29,Rapla"; cities[2][5] = "4,Saue"; cities[0][33] = "4,Saue"; cities[4][6] = "13,Sillamäe"; cities[0][34] = "13,Sillamäe"; cities[10][2] = "28,Sindi"; cities[0][35] = "28,Sindi"; cities[14][3] = "36,Suure-Jaani"; cities[0][36] = "36,Suure-Jaani"; cities[2][6] = "1,Tallinn"; cities[0][37] = "1,Tallinn"; cities[8][2] = "22,Tamsalu"; cities[0][38] = "22,Tamsalu"; cities[8][3] = "23,Tapa"; cities[0][39] = "23,Tapa"; cities[1][2] = "31,Tartu"; cities[0][40] = "31,Tartu"; cities[13][1] = "33,Tõrva"; cities[0][41] = "33,Tõrva"; cities[6][1] = "18,Türi"; cities[0][42] = "18,Türi"; cities[13][2] = "34,Valga"; cities[0][43] = "34,Valga"; cities[14][4] = "37,Viljandi"; cities[0][44] = "37,Viljandi"; cities[14][5] = "38,Võhma"; cities[0][45] = "38,Võhma"; cities[15][1] = "39,Võru"; cities[0][46] = "39,Võru"; 


/**
* 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("Имя не введено!");
            validated = false;
            element.focus();
            return;
        }
        else if (element_id=="new_user_family_name" && element.value.length<1)
        {
            alert("Фамилия не введено!");
            validated = false;
            element.focus();
            return;
        }
        else if (element_id=="new_user_email" && element.value.length<1)
        {
            alert("E-mail не введено!");
            validated = false;
            element.focus();
            return;
        }
        else if (element_id=="new_user_username" && element.value.length < 3)
        {
            alert("Имя пользователя    is_too_short!");
            validated = false;
            element.focus();
            return;
        }
        else if (element_id=="new_user_password")
        {
            if (element.value.length < 5)
            {
                alert("Пароль is_too_short!");
                validated = false;
                element.focus();
                return;
            }
            else if(element.value != document.getElementById("new_user_password2").value)
            {
                alert("Пароль and повторить пароль 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("Я согласен с Правилами Пользования!");
            if (rules_read)
            {
                element.checked = true;
            }
            else
            {
                validated = false;
                element.focus();
                return;
            }
        }
        else if(element_id=="companies_name" && element.value.length<1)
        {
            alert("Имя фирмы (торговая марка) не введено!");
            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;
        }
    }
}
