function setfirmcoords (coordparams)
{
    if (GBrowserIsCompatible())
    {

        var map = new GMap2(document.getElementById('coords_map'));
        map.addControl(new GSmallMapControl());
        map.setCenter(new GLatLng(54.320548,48.441293), 12);

        tinyIcon = new GIcon();
        tinyIcon.image = "/public/images/firms/marker_default.png";
        tinyIcon.shadow = "/public/images/firms/marker_shadow.png";
        tinyIcon.iconSize = new GSize(32, 32);
        tinyIcon.shadowSize = new GSize(62, 31);
        tinyIcon.iconAnchor = new GPoint(16, 32);
        tinyIcon.infoWindowAnchor = new GPoint(16, 1);

        if (coordparams)
        {
            coordparams = coordparams.substr(1, coordparams.length-2);
            coordArray = coordparams.split('][');
            if (coordArray.length > 0)
            {
                coordItem = coordArray[0].split('|');
                eval('map.setCenter(new GLatLng('+coordItem[0]+'), 14);');
                for (i in coordArray)
                {
                    coordItem = coordArray[i].split('|');
                    eval('var marker = new GMarker(new GLatLng('+coordItem[0]+'),{icon:tinyIcon,draggable:true});');
                    var html = '<p><span id="map_msg">Данные успешно сохранены</span><table id="map_table" border="0"><tr><td><b>Адрес:</b></td><td><input type="text" id="map_address" value="'+(coordItem[1] ? coordItem[1] : '')+'" /></td></tr><tr><td><b>Телефон:</b></td><td><input type="text" id="map_phone" value="'+(coordItem[2] ? coordItem[2] : '')+'" /></td></tr><tr><td colspan="2" align="center"><input type="button" value="Сохранить" onclick="saveData('+marker.getPoint().lat()+','+marker.getPoint().lng()+',$(\'#map_address\').val(),$(\'#map_phone\').val());return false;"/><br /><br /></td></tr></table></p>';

                    map.addOverlay(marker);
                    marker.bindInfoWindow(html);

                    GEvent.trigger(marker, 'click');
                    GEvent.addListener(marker, 'dragstart',
                        function ()
                        {
                            var coords = '['+marker.getPoint().lat()+','+marker.getPoint().lng();
                            var start = $('#coords').val().indexOf(coords);
                            var end = $('#coords').val().indexOf(']', start);
                            if ($('#coords').val().length > coords.length)
                            {
                                $('#coords').val($('#coords').val().substr(0, start)+$('#coords').val().substr(end+1));
                            }
                            else $('#coords').val('');

                            map.removeOverlay(marker);
                        }
                    );
                }
            }
        }

        GEvent.addListener(map.getInfoWindow(),'closeclick',
            function()
            {
                closeBool = true;
            }
        );

        GEvent.addListener(map,'click',
            function (marker, point)
            {
                if (marker)
                {
                    var coords = marker.getPoint().lat()+','+marker.getPoint().lng();
                    var start = $('#coords').val().indexOf(coords);
                    var end = $('#coords').val().indexOf(']', start);
                    var coordsStr = '';
                    var coordsArr = new Array();
                    if (start!=-1) coordsStr = $('#coords').val().substr(start,(end-start));
                    coordsArr = coordsStr.split('|');
                    var html = '<p><span id="map_msg">Данные успешно сохранены</span><table id="map_table" border="0"><tr><td><b>Адрес:</b></td><td><input type="text" id="map_address" value="'+(coordsArr[1] ? coordsArr[1] : '')+'" /></td></tr><tr><td><b>Телефон:</b></td><td><input type="text" id="map_phone" value="'+(coordsArr[2] ? coordsArr[2] : '')+'" /></td></tr><tr><td colspan="2" align="center"><input type="button" value="Сохранить" onclick="saveData('+marker.getPoint().lat()+','+marker.getPoint().lng()+',$(\'#map_address\').val(),$(\'#map_phone\').val());return false;"/><br /><br /></td></tr></table></p>';
                    if (map.getInfoWindow().isHidden() && !closeBool) marker.openInfoWindow(html);
                }
                else
                {
                    var marker = new GMarker(point, {icon:tinyIcon,draggable:true});
                    var html = '<p><span id="map_msg">Данные успешно сохранены</span><table id="map_table" border="0"><tr><td><b>Адрес:</b></td><td><input type="text" id="map_address"/></td></tr><tr><td><b>Телефон:</b></td><td><input type="text" id="map_phone"/></td></tr><tr><td colspan="2" align="center"><input type="button" value="Сохранить" onclick="saveData('+marker.getPoint().lat()+','+marker.getPoint().lng()+',$(\'#map_address\').val(),$(\'#map_phone\').val());return false;"/><br /><br /></td></tr></table></p>';

                    map.addOverlay(marker);
                    if (map.getInfoWindow().isHidden()) marker.openInfoWindow(html);

                    GEvent.addListener(marker, 'dragstart',
                        function ()
                        {
                            var coords = '['+marker.getPoint().lat()+','+marker.getPoint().lng();
                            var start = $('#coords').val().indexOf(coords);
                            var end = (start != -1 ? $('#coords').val().indexOf(']', start) : -1);
                            if ($('#coords').val().length > coords.length)
                            {
                                $('#coords').val($('#coords').val().substr(0, start)+$('#coords').val().substr(end+1));
                            }
                            else $('#coords').val('');
                            map.removeOverlay(marker);
                        }
                    );
                }
                closeBool = false;
            }
        );
    }
    else
    {
        $('#coords_block').hide();
    }
}

function saveData(lat, lng, addr, phone)
{
    var coords = lat+','+lng;
    var full_coords = lat+','+lng+(addr ? '|'+addr : '')+(phone ? '|'+phone : '');
    var start = $('#coords').val().indexOf(coords);
    var end = $('#coords').val().indexOf(']', start);

    if (start != -1) $('#coords').val($('#coords').val().substr(0, start)+full_coords+$('#coords').val().substr(end));
    else $('#coords').val($('#coords').val()+'['+full_coords+']');

    $('#map_table').css('display','none');
    $('#map_msg').css('display','block');
}

function changeStreets(id)
{
    $('#address_street').empty();
    $('#address_street').html('<option>Подождите пожалуйста, идет загрузка ...</option>');
    $.getJSON(
            '/firms/town/'
        , {'id': id}
        , function(data)
        {
            $('#address_street').empty();
            if (data.street == '')
            {
                $('#address_street').html('<option>Выберите город ...</option>');
            }
            else
            {
                $.each(data.street, function(i) {$('#address_street').append('<option value="'+i+'">'+data.street[i]+'</option>')});
            }
        }
    );
}

function changeCategory(id)
{
    $('#sub_category').empty();
    $('#sub_category').html('<option>Подождите пожалуйста, идет загрузка ...</option>');
    $.getJSON(
            '/firms/getcategory/'
        , {'id': id}
        , function(data)
        {
            $('#sub_category').empty();
            if (data.street == '')
            {
                $('#sub_category').html('<option>Выберите категорию ...</option>');
            }
            else
            {
                $.each(data.subcategory, function(i) {$('#sub_category').append('<option value="'+i+'">'+data.subcategory[i]+'</option>')});
            }
        }
    );
}

function Print_checkbox_if_changeCategory(id)
{
    $('#sub_category').empty();
    $('#sub_category').html('Подождите пожалуйста, идет загрузка ...');
    $.getJSON(
            '/firms/getcategory/'
        , {'id': id}
        , function(data)
        {
            $('#sub_category').empty();
            if (data.street == '')
            {
                $('#sub_category').html('Выберите категорию ...');
            }
            else
            {
                $.each(data.subcategory, function(i) 
		{
		    if (i==0)
			$('#sub_category').append(data.subcategory[i]);
		    else
			$('#sub_category').append('<label><input type="checkbox" name="sub_cat[]" value="'+i+'" />'+data.subcategory[i] + '</label><br />')
		});
            }
        }
    );
}

function warningFirm(id, error)
{
    $('*.firm-form').css('border', '1px solid #CCC');
    $('#firm_error').html(error);
    $('#firm_error').css('color', 'red');
    $('#' + id).focus();
    $('#' + id).select();
    $('#' + id).css('border', '1px solid red');
}

function getDescLength()
{
    $('#descHint').html('Общее описание деятельности организации' + ($('#description').val().length && $('#description').val().length < 350 ? ' (введите <strong>' + (350 - $('#description').val().length) + '</strong> символов)' : ''));
}

function checkFirm()
{
    if (!$('#firmName').val())
    {
        warningFirm('firmName','Вы не заполнили поле "Название фирмы"!');
        return false;
    }
    else
    {
        $.get(
            '/firms/getname/'
            , {'input': $('#firmName').val()}
            , function(data)
            {
                if (!data)
                {
                    warningFirm('firmName','Фирма с таким названием уже есть в каталоге!');
                    return false;
                }
            }
        );
    }
    if ($('#address_index').val() && !$('#address_index').val().toLowerCase().match(/^([0-9]){6}$/))
    {
        warningFirm('address_index','Поле "Индекс" может содержать только 6 цифр!');
        return false;
    }
    if ($('#address_town').val() == 0)
    {
        warningFirm('address_town','Вы не выбрали значение в поле "Город"!');
        return false;
    }
    if ($('#address_home').val() && !$('#address_home').val().toLowerCase().match(/^([0-9]){1,3}([а-в]){0,1}]*$/))
    {
        warningFirm('address_home','Поле "Дом" может содержать только цифры и буквы <strong>"а б в"</strong>!');
        return false;
    }
    if ($('#address_office').val() && !$('#address_office').val().toLowerCase().match(/^[0-9]*$/))
    {
        warningFirm('address_office','Поле "Офис" должно содержать только цифры!');
        return false;
    }
    if ($('#firmCategory').val() == 0)
    {
        warningFirm('firmCategory','Вы не выбрали значение в поле "Категория"!');
        return false;
    }

   // if ($('#sub_category').val() == 0)
   // {
   //     warningFirm('firmCategory','Не отмечена ни одна подкатегория');
   //     return false;
   // }

    var idcheck = 0;
    $("#sub_category input:checked").each(function(i) {
        idcheck++;
    });
    if (idcheck == 0)
    {
        warningFirm('firmCategory','Не отмечена ни одна подкатегория');
        return false;
    }
/*
    if ($('#tags').val()) && !$('#tags').val().toLowerCase().match(/^([a-zA-Zа-яА-ЯёЁ0-9]{1})+((([a-zA-Zа-яА-ЯёЁ0-9\- ]{1,}[\,]{1}[\ ]{0,}){1}){0,})+([a-zA-Zа-яА-ЯёЁ0-9\-]+)$/))
    {
        warningFirm('tags','Вы неверно заполнили поле "Теги"!');
        return false;
    }
*/
    if ($('#telephone').val() && !$('#telephone').val().toLowerCase().match(/^[0-9\+\-\(\)\,\ ]*$/))
    {
        warningFirm('telephone','Поле "Телефон" должно содержать только цифры и символы "<strong>( ) - ,</strong>"!');
        return false;
    }
    if ($('#fax').val() && !$('#fax').val().toLowerCase().match(/^[0-9\-\(\)\,\ ]*$/))
    {
        warningFirm('fax','Поле "Факс" должно содержать только цифры и символы "<strong>( ) - ,</strong>"!');
        return false;
    }
    if ($('#email').val() && !$('#email').val().toLowerCase().match(/^([a-z0-9][a-z0-9\-_+.]*)+@([a-z0-9][a-z0-9\-]*\.)+(com|net|org|info|biz|name|gov|[a-z]{2})$/))
    {
        warningFirm('email','Вы неверно заполнили поле "E-mail"!');
        return false;
    }
    if ($('#site').val() && !$('#site').val().toLowerCase().match(/^(https?\:\/\/){0,1}(www\.){0,1}([a-zа-яё0-9][a-zа-яё0-9\-]*\.)+(com|net|org|info|biz|name|gov|рф|[a-z]{2})(\/){0,1}(([a-z0-9\%\~\-\_]+[\.]*)*[a-z0-9\%\~\-\_]+\/)*(([a-z0-9\%\~\-\_]+[\.]*)*[a-z0-9\%\~\-\_]*[a-z0-9\?\=&]*)*$/))
    {
        warningFirm('site','Вы неверно заполнили поле "Сайт"!');
        return false;
    }
    if ($('#link_price').val() && !$('#link_price').val().toLowerCase().match(/^(https?\:\/\/){0,1}(www\.){0,1}([a-z0-9][a-z0-9\-]*\.)+(com|net|org|info|biz|name|gov|[a-z]{2})(\/){0,1}(([a-z0-9\%\~\-\_]+[\.]*)*[a-z0-9\%\~\-\_]+\/)*(([a-z0-9\%\~\-\_]+[\.]*)*[a-z0-9\%\~\-\_]*[a-z0-9\?\=&]*)*$/))
    {
        warningFirm('link_price','Вы неверно заполнили поле "Прайс-лист"!');
        return false;
    }
    if ($('#link_logotype').val())
    {
        var logoArr = $('#link_logotype').val().toLowerCase().split('.');
        var logoExt = logoArr[logoArr.length-1];
        if (logoExt != 'jpg' && logoExt != 'gif')
        {
            warningFirm('link_logotype','В поле "Логотип" выберите файл с расширением JPG или GIF!');
            return false;
        }
    }
    if ($('#description').val().length < 350)
    {
        warningFirm('description','Поле "Описание" должно содержать не менее 350 символов' + ($('#description').val().length && $('#description').val().length < 350 ? ' (введено ' + (350 - $('#description').val().length) + ')' : '') + '!');
        return false;
    }
    if (!$('#comment_captcha').val())
    {
        warningFirm('comment_captcha','Не заполнено поле кода картинки!');
        return false;
    }
    $('#firmForm').submit();
}

