/**
* jQuery-плагин. Карта московского метро.
* @version 1.0
* @author Баштанник Андрей, bashtannik@gmail.com 25/11/2009 Media Industrial LTD
* @license MIT
*/

(function($) {
// Индекс массива соответствует ID элемента Area на карте.
var st=Array();st['st55']="Речной вокзал";st['st60']="Водный стадион";st['st74']="Войковская";st['st75']="Сокол";st['st76']="Аэропорт";st['st62']="Динамо";st['st63']="Белорусская";st['st47']="Маяковская";st['st48']="Тверская";st['st44']="Охотный ряд";st['st152']="Театральная";st['st24']="Площадь революции";st['st33']="Третьяковская";st['st34']="Новокузнецкая";st['st31']="Павелецкая";st['st18']="Автозавдоская";st['st113']="Коломенская";st['st114']="Каширская";st['st147']="Кантемировская";st['st150']="Царицыно";st['st148']="Орехово";st['st151']="Домодедовская";st['st149']="Красногвардейская";st['st136']="Новогиреево";st['st135']="Перово";st['st137']="Шоссе энтузиастов";st['st130']="Авиамоторная";st['st122']="Площадь Ильича";st['st29']="Марксистская";st['st30']="Таганская";st['st178']="Трубная";st['st50']="Сухаревская";st['st179']="Сретенский бульвар";st['st49']="Тургеневская";st['st14']="Чкаловская";st['st155']="Курская";st['st123']="Римская";st['st167']="Крестьянская застава";st['st28']="Пролетарская";st['st165']="Дубровка";st['st21']="Кожуховская";st['st146']="Печатники";st['st142']="Волжская";st['st145']="Люблино";st['st143']="Братиславская";st['st144']="Марьино";st['st140']="Выхино";st['st138']="Рязанский проспект";st['st141']="Кузьминки";st['st139']="Текстильщики";st['st22']="Волгоградский проспект";st['st163']="Китай-город";st['st46']="Лубянка";st['st51']="Кузнецкий мост";st['st53']="Чеховская";st['st52']="Пушкинская";st['st61']="Краснопресненская";st['st65']="Баррикадная";st['st66']="Улица 1905 года";st['st64']="Беговая";st['st90']="Полежаевская";st['st78']="Октябрьское поле";st['st77']="Щукинская";st['st82']="Тушинская";st['st81']="Сходненская";st['st56']="Планерная";st['st176']="Строгино";st['st172']="Крылатское";st['st175']="Молодежная";st['st171']="Кунцевская";st['st174']="Славянский бульвар";st['st170']="Парк победы";st['st87']="Пионерская";st['st84']="Филевский парк";st['st88']="Багратионовская";st['st83']="Фили";st['st5']="Кутузовская";st['st4']="Студенческая";st['st184']="Международная";st['st185']="Выставочная";st['st158']="Киевская";st['st157']="Смоленская";st['st41']="Смоленская";st['st25']="Александровский сад";st['st40']="Арбатская";st['st156']="Арбатская";st['st23']="Библиотека им. Ленина";st['st42']="Боровицкая";st['st39']="Кропоткинская";st['st161']="Парк культуры";st['st35']="Октябрьская";st['st17']="Добрынинская";st['st36']="Полянка";st['st20']="Серпуховская";st['st19']="Тульская";st['st115']="Нагатинская";st['st97']="Нагорная";st['st99']="Нахимовский проспект";st['st98']="Севастопольская";st['st112']="Чертановская";st['st110']="Южная";st['st111']="Пражская";st['st181']="Ул. Академика Янгельса";st['st182']="Аннино";st['st183']="Бульвар Дмитрий Донского";st['st186']="Улица Старокачаловская";st['st187']="Улица Скобелевская";st['st188']="Бульвар Адмирала Ушакова";st['st189']="Улица Горчакова";st['st190']="Бунинская аллея";st['st108']="Новоясеневская";st['st109']="Ясенево";st['st103']="Теплый стан";st['st105']="Коньково";st['st107']="Беляево";st['st106']="Калужская";st['st102']="Новые черемушки";st['st104']="Профсоюзная";st['st95']="Академическая";st['st96']="Ленинский проспект";st['st16']="Шаболовская";st['st100']="Юго-западная";st['st101']="Проспект Вернадского";st['st93']="Университет";st['st169']="Воробьевы горы";st['st91']="Спортивная";st['st15']="Фрунзенская";st['st43']="Чистые пруды";st['st94']="Каховская";st['st92']="Варшавская";st['st128']="Бауманская";st['st129']="Электрозаводская";st['st127']="Семеновская";st['st173']="Партизанская";st['st132']="Измайловская";st['st133']="Первомайская";st['st131']="Щелковская";st['st45']="Красные ворота";st['st12']="Комсомольская";st['st6']="Проспект Мира";st['st54']="Цветной бульвар";st['st7']="Новослободская";st['st10']="Меделеевская";st['st72']="Савеловская";st['st70']="Дмитровская";st['st71']="Тимирязевская";st['st69']="Петровско-разумовская";st['st73']="Владыкино";st['st57']="Отрадное";st['st58']="Бибирево";st['st59']="Алтуфьево";st['st119']="Медведково";st['st118']="Бабушкинская";st['st121']="Свиблово";st['st120']="Ботанический сад";st['st68']="ВДНХ";st['st67']="Алексеевская";st['st9']="Рижская";st['st116']="Улица Подбельского";st['st117']="Черкизовская";st['st124']="Преображенская площадь";st['st126']="Сокольники";st['st125']="Красносельская";

    $.fn.mosMetro = function(options) {
            var defaults = {
                onSelect: function(station) { }, // Событие: Выбор станции
                onDeselect: function(station) { }, // Событие: Снятие выбора станции
                onClose: function(station) { } // Событие: Закрыть нажато
            };

            var opts = $.extend(defaults, options);

            /**
            * Удаляет прямоугольный контейнер, повторяющий форму станции на карте.
            * @param element DOMElement, контейнер DIV.
            */
            function deselectStation(element) {
                $(element).remove();
            }
            /**
            * Создает прямоугольный контейнер, повторяющий форму станции на карте.
            * @param id ID региона, для которого создается контейнер
            */     
            var parent=this;
            function selectStation(id) {
                var coords=$("#"+id).attr("coords");
                var exploded = coords.split(',');
                var x1=parseInt(exploded[0]);
                var y1=parseInt(exploded[1]);
                var x2=parseInt(exploded[2]);
                var y2=parseInt(exploded[3]);
                var w=x2-x1; // Width
                var h=y2-y1; // Height
                var l=x1; // Left
                var t=y1+h-9; // Top
                var prefix=$(parent).attr("id");//Префикс для снятия конфликтов ID у контейнеров.
                var div="<div id=\""+prefix+"-s-area-"+id+"\" class=\"jq-mosmetro-s-area\" style=\"top: "+t+"px; left: "+l+"px; width: "+w+"px; height: "+h+"px;\"></div>";
                $("#"+id).parent().append(div);
                $("#"+prefix+"-s-area-"+id).click(function() { 
                        deselectStation(this);
/* Здесь необходимо немного поебаться, потому что при клике уже на область выделения будет передаваться ID контейнера, который не может совпадать с ID региона. */
                        opts['onDeselect'](st[$(this).attr("id").split('-s-area-')[1]]); 
                    });
            }
/*  Загрузка HTML-структуры карты */
            this.load("js/mosmetro.html",function() {
                $(this).find("div > map > area").click(function() { // Установка обработчика события onClick для всех регионов стнаций метро
                    selectStation($(this).attr("id"));
                    opts['onSelect'](st[$(this).attr("id")]);
                    });
                $(this).find("#mosmetro-close-button").click(function() {  opts['onClose'](); });
                }); 

    };	
})(jQuery); 

