﻿var popups = {};
var monthList = [ 'Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'];
var curDate = new Date();

var isiOS = ( navigator.userAgent.toLowerCase().search( /ipad|ipod|iphone/ ) != -1);

function htmlspecialchars_decode (string, quote_style) {
    // http://kevin.vanzonneveld.net
    // +   original by: Mirek Slugen
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Mateusz "loonquawl" Zalega
    // +      input by: ReverseSyntax
    // +      input by: Slawomir Kaniecki
    // +      input by: Scott Cariss
    // +      input by: Francois
    // +   bugfixed by: Onno Marsman
    // +    revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
    // +      input by: Ratheous
    // +      input by: Mailfaker (http://www.weedem.fr/)
    // +      reimplemented by: Brett Zamir (http://brett-zamir.me)
    // +    bugfixed by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: htmlspecialchars_decode("<p>this -&gt; &quot;</p>", 'ENT_NOQUOTES');
    // *     returns 1: '<p>this -> &quot;</p>'
    // *     example 2: htmlspecialchars_decode("&amp;quot;");
    // *     returns 2: '&quot;'
    var optTemp = 0,
        i = 0,
        noquotes = false;
    if (typeof quote_style === 'undefined') {
        quote_style = 2;
    }
    string = string.toString().replace(/&lt;/g, '<').replace(/&gt;/g, '>');
    var OPTS = {
        'ENT_NOQUOTES': 0,
        'ENT_HTML_QUOTE_SINGLE': 1,
        'ENT_HTML_QUOTE_DOUBLE': 2,
        'ENT_COMPAT': 2,
        'ENT_QUOTES': 3,
        'ENT_IGNORE': 4
    };
    if (quote_style === 0) {
        noquotes = true;
    }
    if (typeof quote_style !== 'number') { // Allow for a single string or an array of string flags
        quote_style = [].concat(quote_style);
        for (i = 0; i < quote_style.length; i++) {
            // Resolve string input to bitwise e.g. 'PATHINFO_EXTENSION' becomes 4
            if (OPTS[quote_style[i]] === 0) {
                noquotes = true;
            } else if (OPTS[quote_style[i]]) {
                optTemp = optTemp | OPTS[quote_style[i]];
            }
        }
        quote_style = optTemp;
    }
    if (quote_style & OPTS.ENT_HTML_QUOTE_SINGLE) {
        string = string.replace(/&#0*39;/g, "'"); // PHP doesn't currently escape if more than one 0, but it should
        // string = string.replace(/&apos;|&#x0*27;/g, "'"); // This would also be useful here, but not a part of PHP
    }
    if (!noquotes) {
        string = string.replace(/&quot;/g, '"');
    }
    // Put this in last place to avoid escape being double-decoded
    string = string.replace(/&amp;/g, '&');

    return string;
}
   
$.fx.step.opacityex = function(fx) {

/*	fx
Attribute			Type	Description

elem					DOM Element	The element being animated.

start					Number	The starting value of the CSS property being animated.
end					Number	The value the animation will end at.
now					Number	The value the animation is currently at.

pos					Number	Sweeps from 0.0 to 1.0 during the animation. Sort of like a ‘t’ value for interpolations.

options				Object	Some animations options.
options.curAnim	Object	Information about the current animation. For example, if you passed { opacity: 0, top: "+=16" } as the first parameter of animate, then they will be attributes of this object.
options.duration	Number	The duration that you passed to animate.

prop					String	The CSS property being varied (e.g. “opacity” or “top”).
state					Number	Which step of the animation we’re on. For example, if you made an animation that was moving 100px to the right over 100ms, and jQuery moves elements every 10ms, then there would be 10 states.
startTime			Number	The timestamp indicating what time the animation started.

unit					String	The unit of the CSS value being animated (e.g. “px” or “em”), if applicable.
*/

   if( fx.state == 0 ){
      fx.start = parseInt($.curCSS( fx.elem, 'opacity' ), 10)*100;

      fx.options.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+fx.end.src+'", sizingMethod="crop") Alpha(opacity=%opacity%);'

      fx.options.src = fx.end.src;
      fx.end         = fx.end.opacity;

      fx.delta = fx.end*100 - fx.start;

      fx.elem.style.backgroundImage = 'none';
   }

   fx.elem.style.filter = fx.options.filter.replace( /\%opacity\%/, fx.start + fx.delta * fx.pos );
};


$(function(){


  
   var $body = $('body').addClass('_js');

   var $templates = $('#htmltemplates');
   var $popupCalendar = $templates.find('._calendar');
   var $month;


   /* prepare */
   $month = $popupCalendar.find('._month');
   for(var i=0; i<monthList.length; i++ )
      $month.append( $('<li rel='+(i+1)+'><a href="#">'+monthList[i]+'</a></li>') );

   $templates.append( $popupCalendar );
   $body.append( $templates );
   /* prepare */

   function autohide(){
       // autohide
       var $fields = $('label._autohide ~ input, label._autohide ~ textarea');
       var hdr = function () { $('label[for="' + this.getAttribute('id') + '"]').toggle( this.value == ''); };

       $fields.live('focus', function () { $('label._autohide[for="' + this.getAttribute('id') + '"]').hide(); });
       $fields.live('blur', hdr);
       $fields.live('change', hdr);

       $fields.each(hdr);
   }

   autohide();

   // a
   $('a[href=#]').attr('href', 'javascript:void(0);');


   /* hands */
   $.ajaxSetup({ headers: { "X-CSRFToken" : $.cookie('csrftoken') } });


   // header
   (function(){

      //var path    = '/media/i/'
      //var imgList = [ 'bgPeople1.png', 'bgPeople2.png', 'bgPeople3.png', 'bgPeople4.png', 'bgProject.png' ];

      var time    = 9999;
      var aniTime = 555;


      var $head  = $('#header');
      var $block = $head.find('div.slogan');

      var $image = $block.find('img._image_slogan');
      var $text  = $block.find('span._text_slogan');
      var $back  = $head.find('div.bgPeople');

      var list = [];
      var n = 0;



      // init list
      $('#header div._headList div._headItem').each(function(){
         var $item = $(this);

         list.push( { image: $item.find('span._image').text()
                    , text: $item.find('span._text').text()
                    , bg: $item.find('span._background').text(),
                    link: $item.find('span._link').text()
         });

         (new Image()).src = list[list.length-1].bg;
      });
      
        $back.click( function() {
           if ($(this).attr('rel')) {
               window.location.href = $(this).attr('rel');
           }
        });   

      if( list.length < 2 )
         return;

      // cfg
      function getOpacityCfg( _val, _bgr ){

         if( typeof $.browser.msie == 'undefined' )
            return { opacity: _val };

         else
            return { opacityex: { opacity: _val, src: _bgr } };
      };


      // change
      function Change(){

         var cur  = n;

         n++;
         if( n == list.length )
            n=0;

         var next = n;


         if( list[cur].image != list[next].image )
            $image.animate( getOpacityCfg(0, list[cur].image ), aniTime );

         $text.slideUp( aniTime );
         $back.animate( getOpacityCfg(0, list[cur].bg ) , aniTime, function(){

            if( list[cur].image != list[next].image ){
               $image.css({backgroundImage: 'url('+list[next].image+')' });
               $image.animate({opacity: 1}, aniTime );
            }

            $text.text( list[next].text ).slideDown( aniTime );

            $back.css({ backgroundImage: 'url('+list[next].bg+')' });
            if (list[next].link) {
                $back.attr({ 'rel': list[next].link});
                $back.addClass('hand');
            } else {
                $back.removeAttr('rel');
                $back.removeClass('hand');
            }
            $back.animate( getOpacityCfg(1, list[next].bg ), aniTime, function(){
               setTimeout( Change, time );
            });
         });
      };


       //imageLoad({ src: $image.attr('src')
         //        , load: function(){
                     $image.css({ height: 115/*$image.outerHeight()*/, width: 400/*$image.outerWidth()*/ });
                     $image.css({ backgroundImage: 'url('+$image.attr('src')+')' }).attr({ src: '/media/i/pix.gif' });
                     setTimeout( Change, time );
         //       }
       //});

   })();

   // site map
   $('div.siteMapDoor').click( function(){
      var $door = $(this);


      $door.toggleClass('cur');
      $door.find('span').text( $door.hasClass('cur')?'Закрыть':'Карта сайта')
      $('div.siteMapBlock').stop(false, true).fadeToggle();


      $('div.popup').hide();
      for( var key in popups )
         popups[key].visible = false;
   });

   /* hands */

   (function(){
      // menu interaction
      var $menuTop = $('ul.menuTop');

      $menuTop.children('li:has(.subMenu)').mouseenter(function(){
         for( var key in popups )
            if( popups[key].visible )
               popups[key].block.stop(true).animate({top: 666 }, 333);

      }).mouseleave(function(){
         for( var key in popups )
            if( popups[key].visible )
               popups[key].block.stop(true).animate({top: 310 }, 333);
      });
   })();


   // search
   (function(){

      $('.searchBlock form').submit(function(ev){
         var $form = $(this);
         var $inp  = $form.find('#fsearch');


         if( $inp.val() == '' ){
            $inp.focus();
            ev.preventDefault();
         }
      });

   })();

   // calendary
   (function(){
      var $calendarTpl = $templates.find('div._calendar');

      var $blockData = $('dl.videoList, ul.albumList'); // achtung!!! alarm!!! must be xor selector
      var $preloader = $('<img style="float:center;" src="/media/i/preloader3.gif">').hide(); 


      $blockData.before( $preloader );

      // filter
      $('div.calendarDoor').each(function(){
         var $btn = $(this);

         var type     = $btn.attr('rel');
         var monthUrl = $btn.find('div._for_month').text();
         var dayUrl   = $btn.find('div._get_for_day').text();

         var clnd = new CalendarFrame({
              $tmpl: $calendarTpl
            , refreshDays: function(){
               clnd.$block.find('td').removeClass('cur');

               $.ajax({
                    url: monthUrl
                  , type: 'post'
                  , data: { type: type, year: clnd.cur.year, month: clnd.cur.month }
                  , dataType: 'json'
                  , success: function(_data){

                     if( _data.error == 0 ){
                        for(var i =0;i<_data.days.length; i++){
                           var $day = clnd.$block.find('._isDay[rel='+_data.days[i]+']')

                           $day.addClass('cur').html( '<a href="javascript:void('+_data.days[i]+')">' + $day.html() + '</a>' )
                        }
                     }
                  }
               });
            }
            , changeDate: function(){

               //$td.closest('._days').find('.cur').removeClass('cur');
               //$td.addClass('cur');

               if( ! clnd.$days.filter('[rel='+clnd.cur.day+']').is(':has(a)') )
                  return;

               $preloader.show();

               $.ajax({
                    url: dayUrl
                  , type: 'post'
                  , data: { type: type, year: clnd.cur.year, month: clnd.cur.month, day: clnd.cur.day }
                  //, dataType: 'json'
                  , success: function(_data){
                     var $dl = $(_data).filter('dl.videoList, ul.albumList'); // achtung!!! alarm!!! must be xor selector

                     $preloader.hide();

                     $blockData.replaceWith( $dl );
                     $blockData = $dl;
                  }
               });
            }
         });

         clnd.init();
         clnd.$block.css( $btn.offset() );

         $btn.click(function(){ clnd.$block.fadeIn(222); });
      });

   })();

   // share link
   (function(){
      var $block = $('div.shareLinkBlog');
      var $area  = $block.find('textarea');

      var $btn = $block.find('div.linkBlogDoor');
      var $container = $block.find('.linkBlog').css({zIndex:1000});

      var lnk = '<a href="' + window.location + '" target="_blank">' + $('._shareLinkTitle').text() + '</a>';


      // set link
      $area.val( lnk );
$btn.next().find('div.but').hide();
      $btn.click(function(){
         if( $container.is(':animated') )
            return;

         $container.slideToggle( 222, function(){
            if( $area.is(':visible') ){
               $area.focus();
               slct($area[0]);
            };
         });
      });      
      // $('body').html( '<a href="' + window.location + '" target="_blank">' + $('div.newsOneBlock h1:first').text() + '</a>' );
      ;
   })();


   // main news
   (function(){
      var $block  = $('div.opinionBlock');
      var $photos = $block.find('.foto img');
      var $news   = $block.find('ul li');

      var $line = $block.find('div.line');

      var spanClr = { active: '#ffffff', passive: '#000000' };
      var dfnClr  = { active: '#8FE1FF', passive: '#4D6B8D' };
      var time = 333;

      var $curLi = $news.eq(0);


      $news.each(function(i){
         var $li = $(this);
         var istop = $li.position().top;


         $li.mouseenter(function(){
            if( $li.hasClass('cur') )
               return;


            $curLi.find('span').stop(true, true).animate({'color': spanClr.passive }, time)
            .next('dfn').stop(true, true).animate({'color': dfnClr.passive  }, time);

            $li.find('span').stop(true, true).animate({'color': spanClr.active }, time)
            .next('dfn').stop(true, true).animate({'color': dfnClr.active }, time)

            $line.stop().animate({top: istop }, time, function(){
               //$li.switchSibClass('cur');
            });

            $li.switchSibClass('cur');
            $photos.hide().eq(i).show();

            $curLi = $li;
         });
      });
   })();


   // top lent
   (function(){
      // top
      var $block = $('#header .projectsLenta').unselectable();
      var $lent  = $block.find('.lenta');
      var $next  = $block.find('.next');


      $lent.css({ position:'relative' })

      // hide if < 4
      if( $lent.find('.block').length < 4 )
         $next.hide();

      else
         $lent.bind( (typeof $.browser.mozilla != 'undefined'?'DOMMouseScroll':'mousewheel'), function(ev){
            var dir = getWheelDir(ev.originalEvent);

            if( dir < 0 )
               next(1);
            else if( dir > 0 )
               prev(1);

            ev.preventDefault();
            ev.originalEvent.returnValue = false;
         });


      function next(_n){
         if( $lent.is(':animated') )
            return;

         $lent.animate({ left: -(220+20)*_n }, 333, function(){
            for(var i=0;i<_n;i++)
               $lent.find('.block:first').appendTo( $lent );

            $lent.css({left:0});
         });
      };


      function prev(_n){
         if( $lent.is(':animated') )
            return;

         for(var i=0;i<_n;i++)
            $lent.find('.block:last').prependTo( $lent );

         $lent.css({left: -(220+20)*_n});

         $lent.animate({ left: 0 }, 333 );
      };

      //
      $next.click(function(){ next(3) });

   })();


   // projects lenta
   (function(){
      var $block = $('#footerWrap .projectsLenta');
      var $lent  = $block.find('.lenta');
      var $pager = $block.find('ul.slider');
      var $li;

      //  какаето херня - пустой блок
      $lent.find('.block:last').detach();


      var blockQty = $lent.find('.block').length;
      var perPage = 6;
      var blockW = 240;
      var pageQty;
      var timeout;


      $lent.css({ position:'relative', left: 0 })

      $pager.delegate('li', 'click', function(i){
         var $li = $(this);

         $li.switchSibClass('cur');
         $lent.animate({left: -blockW*perPage*parseInt( this.getAttribute('rel'),10)}, 333 );
      });


      // build paginator
      function BuildNavi(){
         $pager.html('');
         pageQty = Math.ceil( blockQty / perPage );

         if( pageQty > 1 ){
            for(var i=0; i < pageQty; i++ ){
               $li = $('<li>&nbsp;</li>');
               $li.attr('rel', i);
               $pager.append( $li );
            };
         };
      };

      // remake lent view + set scroll
      // width 940 / 1420
      // margin-left 0 / 240
      function RemakeView(){
         var left = parseInt($lent.css('left'),10)*-1;
         $lent.closest('.lentaWrap').animate({ width: perPage==4?940:1420, marginLeft: perPage==4?0:-240 }, function(){
            $(this).toggleClass('small', perPage==4 );
         });

         $pager.find('li').eq( Math.floor( left/blockW/perPage )  ).addClass('cur');

      };


      // remake view by resize
      $(window).resize(function(ev){

         clearTimeout(timeout);
         timeout = setTimeout(function(){
            var w = $(document).width();
            var mode = w<1450?4:6;

            if( mode != perPage ){
               perPage = mode;

               BuildNavi();
               RemakeView();
            };

         }, 333 );
      });

      perPage = $(document).width()<1450?4:6;

      BuildNavi();
      RemakeView();

      $pager.find('li:first').addClass('cur');

   })();


   // photo gallery
   (function(){
      // var $block = $('div.photoBlock');
/*
      $('ul.albumList li').each(function(){
         var $li = $(this);

         $li.find('div.list a img').gallery({title: $li.find('div.name a').text() });
      });
*/
      $('div.photoBlock').delegate( 'ul.albumList li:not(._gallery) div.list a img', 'click', function(ev){
         var $img = $(this);
         var $li = $img.closest('li');


         ev.preventDefault();

         $li.addClass('_gallery');
         $li.find('div.list a img').gallery({title: $li.find('div.name a').text() });

         $img.click();
      });

      var $block = $('div.photoBlock ');

      $block.find('div.photoList img').gallery({title: $block.find('h1:first').text() });
   })();


   /* party / projects */
   (function(){
      var $types = $('ul.filtrProject._types'); // _types
      var $modes = $('ul.filtrProject.view');
      var $view  = $('div.projectsBlock');

      var $preloader = $('<div><center><img style="float:center;" src="/media/i/preloader3.gif"></center></div>');

      var type = $types.find('li.cur').attr('rel');
      var mode = ($modes.find('li.cur').find('div.icViewIcons').length == 1 ? 'icons' : 'list' );


      $types.find('li').click(function(){
         var $li = $(this);

         if( $li.hasClass('cur') )
            return;


         $(this).switchSibClass('cur');

         type = this.getAttribute('rel');

         GetProjectsList();
      });

      //
      $modes.find('li').click(function(){
         var $li = $(this);

         if( $li.hasClass('cur') )
            return;

         $(this).switchSibClass('cur');

         mode = ($li.find('div.icViewIcons').length == 1) ? 'icons' : 'list';

         GetProjectsList();
      });


      function GetProjectsList(){
         $view.empty().append( $preloader );

         $.post( '/party/projects/'
            , { type: type, mode: mode }
            , function( _data ){
               var $data = $(_data);

               $view.replaceWith( $data );
               $view = $data;
            }
         );
      };

   })();


   // Regional news
   (function(){

      var $pop; // = $('div.popuRegionBlock');
      var $newsBlock = $('div.newsListMain');
$pop = $('div.popup:has(div.popuRegionBlock)');

      if( $pop.length != 1 )
         return;

      // model
      var map  = new CMap();
      var news = new CNews();

      // view
      var rShow = 'fadeIn';
      var rHide = 'fadeOut';

      var $blockPreloader  = $('<img src="/media/i/preloader3.gif">');
      var $filterPreloader = $('<img src="/media/i/preloader3.gif">');

      // btn show\hide
      var $newsRegion = $newsBlock.find('a.newsRegion');
      var $newsAll    = $newsBlock.find('a.allNews');
      var $filterDoor = $newsBlock.find('div.regionNewsDoor');


      var $listBtn = $pop.find('li.regionList');
      var $mapBtn  = $pop.find('li.regionMap');

      var $news    = $newsBlock.find('div._newslist');
      var $popNews = $pop.find('dd._newsfiltered');


      // region map
      var $regionMap = $pop.find('dl.selectRegions dd.regionMap');

      var $map_regions = $regionMap.find('div.districtList');

      var $sectors = $pop.find('dd.regionMap div.map img.regionitem');
      var $imgmap  = $pop.find('dd.regionMap div.map img.regionmap');
      var $mapCtrl = $pop.find('#regionmapcontrol');


      // region list
      var $regionList = $pop.find('dl.selectRegions dd.regionList');

      var $list_districts = $regionList.find('.areaList li');

      var $list_regionList = $regionList.find('div.districtList');
      var $list_allRegions = $list_regionList.find('div.all span');
      var $list_regions    = $list_regionList.find('div:not(.all)').addClass('_regionList');


      // save settings
      var $btnSave  = $pop.find('div.action span.save'); // length == 2
      var $btnClear = $pop.find('div.action span.reset');
      var $slctAll  = $pop.find('div.action span.selectAll');

      // close btn
      var $close   = $pop.find('div.close');


      // create data
      function GetData(){
         var regList;
         var data = {};

         // districts list
         $list_districts.each(function(){
            data[ this.getAttribute('rel') ] = { name: this.innerHTML, regions: {} };
         });

         // region list
         for( var key in data ){
            regList = data[key].regions;

            $list_regionList.find('div[rel='+key+'] li').each(function(i){
               regList[ this.getAttribute('rel') ] = false;
            });
         };

         return data;
      };

      // refresh list data
      function RefreshList(){

         $list_regions.each(function(){
            var $regList = $(this);
            var districtId = $regList.attr('rel');

            if( districtId != null )
               $regList.find('li').each(function(){
                  var $region = $(this);
                  var id = this.getAttribute('rel');

                  if( id != null )
                     $region.toggleClass('cur', map.districts[ districtId ].regions[ this.getAttribute('rel') ] );
               });
         });

         // refresh view - ONLY
         if( map.all )
            $list_districts.addClass('cur');
         else
            $list_districts.filter('[rel='+map.cur+']').click(); // black bad magic
      };

      // refresh map data
      function RefreshMap(){

         $map_regions.filter('[rel='+map.cur+']').switchSibClass('_cur');


         $map_regions.each(function(){
            var $regList = $(this);
            var districtId = $regList.attr('rel');

            if( districtId != null )
               $regList.find(':not(.selectAllDistrict)').each(function(){
                  var $region = $(this);
                  var id = this.getAttribute('rel');

                  if( id != null )
                     $region.toggleClass('cur', map.districts[ districtId ].regions[ this.getAttribute('rel') ] );
               });
         });

         // refresh view - ONLY
         if( map.all ){
            $sectors.css({opacity:1});
         } else 
            $sectors.css({opacity:0}).filter('[rel='+map.cur+']').css({opacity:1});//
      };

      // switch view mode
      function SwitchRegions( _mode ){
         $listBtn.closest('li').toggleClass('cur', _mode == 'list');
         $mapBtn.closest('li').toggleClass('cur', _mode == 'map');

         if( _mode == 'list' ){
            RefreshList();
            $regionMap[rHide](333, function(){ $regionList[rShow](333); });

         } else if( _mode == 'map' ) {
            RefreshMap();
            $regionList[rHide](333, function(){ $regionMap[rShow](333); });
         }
      };


      /**/
      popups.regionNews = { visible: false, block: $pop };

      // set current
      map.cur = $list_districts.filter(':first').attr('rel');


      $pop.find('li').unselectable();

      $list_districts.removeClass('cur');
      $map_regions.css({zIndex:1000});

      $sectors.css({display: 'block', opacity: 0 });

      $btnClear.hide();
      //$slctAll.hide();
      $slctAll.text('Выбрать все');

/* CONSTROLS */
      // save settings
      $btnSave.click(function(){

         map.save();

         $filterDoor.text( map.getTitle() );

         $popNews.empty().append( $blockPreloader );
         $news.empty().append( $filterPreloader );


         news.getRegionalNews({ 
              map: map
            , load: function( _data ){
               var $ul = $(_data);


               if( $ul.find('li').length == 0 )
                  $ul.append('<li>Пусто</li>');

               $popNews.empty().append( $ul.clone(true) );
               $news.empty().append( $ul.clone(true) );

            }
         });
      });

      // regional news
      $newsRegion.click(function(){
         news.mode = 'regional';
         news.save();

         // view
         $newsRegion.closest('div.list').addClass('select');
         $filterDoor.show();

         $news.empty().append( $filterPreloader );

         news.getRegionalNews({ 
              map: map
            , load: function( _data ){
               var $ul = $(_data);

               if( $ul.find('li').length == 0 )
                  $ul.append('<li>Пусто</li>');

               $popNews.empty().append( $ul.clone(true) );
               $news.empty().append( $ul.clone(true) );
            }
         });
      });

      // all news 
      $newsAll.click(function(){
         news.mode = 'all';
         news.save();

         // view
         $newsRegion.closest('div.list').removeClass('select');
         $filterDoor.hide();

         $news.empty().append( $filterPreloader );

         news.getAllNews({ 
              map: map
            , load: function( _data ){
               var $ul = $(_data);

               if( $ul.find('li').length == 0 )
                  $ul.append('<li>Пусто</li>');

               $news.empty().append( $ul.clone(true) );
            }
         });
      });

      // cancel
      $btnClear.click(function(){ console.log('clear'); });

      $slctAll.click(function(){
         map.all = true;

         $btnSave.eq(0).click();

         RefreshMap();
         RefreshList();
      });

      // switch view mode
      $listBtn.click(function(){ SwitchRegions('list'); });
      $mapBtn.click(function(){ SwitchRegions('map'); });

      // show hide map
      $filterDoor.click(function(){ popups.regionNews.visible = true; $pop.fadeIn(333); });
      $close.click(function(){ popups.regionNews.visible = false; $pop.fadeOut(333); });

/* CONSTROLS */

/* MAP */
      // checkitem map
      $map_regions.find('li').click(function(){
         var $li = $(this);

         var regions = map.districts[map.cur].regions;
         var stt;

         // select all
         if( $li.hasClass('selectAllDistrict') ){
            stt = ($li.siblings(':not(.cur)').length > 0); //

            $li.siblings().toggleClass('cur', stt);
            map.setAllReg( map.cur, stt );

         // check
         } else {
            $li.toggleClass('cur');
            regions[$li.attr('rel')] = $li.hasClass('cur');
         }
      });

      $map_regions.mouseleave(function(){ $(this).hide(); });


      // regions
      $mapCtrl.find('area').click(function(ev){
         var $area = $(this);


// uncheck cur         
map.setAllReg( map.cur, false );
         map.cur = this.getAttribute('rel');
         map.all = false;

         $sectors.not('[rel='+map.cur+']').animate({opacity:0}, 333);

         $map_regions.hide();
         $map_regions.filter('[rel='+map.cur+']').css({top:ev.layerY-75,left: ev.layerX-5 }).show();

      }).mouseenter(function(ev){
         var n = this.getAttribute('rel');

         //$sectors.eq(n-1).css({opacity:1});
         $sectors.filter('[rel='+n+']').stop(false,true).animate({opacity:1}, 333);

      }).mouseleave(function(ev){
         var n = this.getAttribute('rel');


         if( !map.all && map.cur != n )
            //$sectors.eq(n-1).css({opacity:0});
            $sectors.filter('[rel='+n+']').stop(/*false,true*/).animate({opacity:0}, 333);

      });
/* MAP */

/* LIST */
      // select destrict
      $list_districts.click(function(){
         var $curList;
         var $li = $(this);
         var mode;
         var className;


         if( !map.all && $li.hasClass('cur') )
            return;

// uncheck cur   : indus code
// bag on load - reset regions to false
if( $list_regionList.find(':visible li').length > 0 ){         
   map.setAllReg( map.cur, false );
   $list_regionList.find(':visible li').removeClass('cur');
}

         mode = this.getAttribute('rel');
         className = /reg\d+/.exec( this.className );
         map.cur = mode;
         map.all = false;

         // set cur district
         $(this).switchSibClass('cur');

         $list_regions.hide(); //filter(':visible').hide();
         $curList = $list_regions.filter('div[rel='+mode+']');
         $curList.show();

         $list_regionList[0].className = $list_regionList[0].className.replace( /reg\d+/, className );

      });

      // select all
      $list_allRegions.click(function(){
         var $curList = $list_regionList.find(':visible');
         var $lis = $curList.find('li');

         var stt = ($lis.filter(':not(.cur)').length > 0); // if exist not checked


         $lis.toggleClass('cur', stt);
         map.setAllReg( map.cur, true );
      });

      // check region
      $list_regions.find('li').click(function(){
         var $li = $(this);
         var id  = $li.attr('rel');

         $(this).toggleClass('cur');
         map.districts[map.cur].regions[id] = $li.hasClass('cur');
      });

/* LIST */

/* init */
      map.init( {data : GetData()} );
      map.load();

      // if not exist
      if( map.cur == null )
         map.cur = 1; /* black magic 1 - id центральный регион */ //$list_districts.eq(0).attr('rel');

      $filterDoor.text( map.getTitle() );

      RefreshList();
      RefreshMap();


      news.load();
      if( news.mode == null )
         news.mode = 'all'


      if( news.mode == 'regional' )
         $newsRegion.click();

      else if( news.mode == 'all' )
         $newsAll.click();

/* init */

   })();


   // mini button
   (function(){
      var $block = $('.actionBlock');

      var $mail  = $block.find('.mailBlock');
      var $share = $block.find('.shareLinkBlock');
      var $bm    = $block.find('.favorite');


      function AddBookmark( _title, _url ){
        try {
            window.external.AddFavorite(_url, _title);

        } catch(er){
            try {
                window.sidebar.addPanel(_title, _url, "");

            } catch(er){
                if  (typeof(window.opera)=="object" ) {
                    var $a = $('<a></a>');

/*                    $a.appendTo($('body'));

                    $a.attr({url: _url, title: _title, rel: 'sidebar' })
                    $a.click(function(){alert(1);});
                    $a.click();*/

                } else {
                    alert('Нажмите Ctrl-D чтобы добавить страницу в закладки');
                }
            }
        }

        return false;
     };

      $bm.click(function(){
         AddBookmark( document.title, window.location );
      });

      $('body').click(function(){
         $mail.hide();
         $share.hide();
      });

      $mail.click( function(ev){ ev.stopPropagation(); } );
      $share.click( function(ev){ ev.stopPropagation(); } );


      function popupview( _cfg ){
         var mode = 0;
         var hidetimeout;

         //
         function show(){
            if( hidetimeout != null )
               clearTimeout( hidetimeout );

            if( mode == 0 )
               _cfg.show();

            mode = 1;
         };


         //
         function hide(){
            hidetimeout = setTimeout( function(){ _cfg.hide(); hidetimeout = null; }, 222 );
            mode = 0;
         };


         _cfg.controls.mouseenter( function(){ show(); }).mouseleave(function(ev){ hide(); });
      };

      // black magic
      $mail.find('input').mouseleave(function(ev){
         ev.stopPropagation();
      });

      // controls
      popupview({
           controls: $block.find('.mail').add( $mail )
         , show: function(){ $mail.fadeIn(222); $share.hide(); }
         , hide: function(){ $mail.fadeOut(222); }
      });

      popupview({
           controls: $block.find('.shareLink').add( $share )
         , show: function(){ $share.fadeIn(222); $mail.hide(); }
         , hide: function(){ $share.fadeOut(222); }
      });
    
    //reception form
    var $enterBlock = $('dl.treatment dd div.enterBlock');
    var enterPopup = $enterBlock.find('div.enter');
      
    popupview({
        controls: $enterBlock.find('span._enterspan').add( enterPopup )
        , show: function(){ enterPopup.fadeIn(222);  }
        , hide: function(){ enterPopup.fadeOut(222); }
    });
    
    $enterBlock.find('span._exitspan').click( function() {
        window.location.href = "/logout/";
    });
    
    $('#id_district').change( function() {
        if ($(this).val() != '999') {
            alert('Shit!');
        } else {
        }
    });
    
    $enterBlock.find("div.password form dl.wrap dd div.close").click( function() {
        $enterBlock.find("div.password").fadeOut(222);
    });
    
    $('a._forgot_pass').click( function() {
        $enterBlock.find("div.password").fadeIn(222);
    });
    
    $('dl.treatment dd div.messageBlock div.wrap div.close').click( function() {
        $(this).parent().parent().fadeOut(222);
    });

      // exec
      $mail.find('form').submit(function(ev){
         var $form = $(this);
         var $inp = $form.find('#fmailfriend');


         ev.preventDefault();


         if( !/[a-zA-Z0-9_]+@[a-zA-Z0-9_^.]+.[a-zA-Z]{2,4}/.test( $inp.val() ) ){
            alert('Некорректная почта.');
            $inp.focus();
            return;
         }

         $mail.hide();

         $.ajax({
              url: $form.attr('action')
            , type: $form.attr('method')
            , data: $form.serialize()
            , success: function(){ lert('Сообщение отправлено.'); }
         });

      });

      $share.find('a').attr('target', '_blank').click(function(ev){ $share.hide(); })

   })();


   // video
   (function(){
      var $video = $('.videoBlockMain');
      var $block = $('div.popup._video');

if( $block.length != 1 ) return;

      var $header = $block.find('div.popupVideoBlock h2:first');
      var $list = $block.find('.lastVideo ul.list');
      var $videoItems = $list.find('li');

      var $next  = $block.find('.down');
      var $prev  = $block.find('.up').addClass('hide');

      var $navi  = $block.find('div.sliderBlock');
      var $pages = $navi.find('div.slider span');
      var size = $pages.length;

      var $preloader = $('<li><center><img src="/media/i/preloader3.gif" style="width:43px;height:11px;"></center></li>').css({ textAlign: 'center' });
      var page = 0;
      var curVideo = $list.find('li:first').attr('rev');


      var $shareBlock = $('ul.linksNet2');

      var shareData = {
           url: ''
         , title: 'Единая Россия'
         , description: ''
      };

      var tt = 'http://twitter.com/home?status=%description% %url%';
      var vk = 'http://vkontakte.ru/share.php?url=%url%&title=%description%';
      var lj = 'http://www.livejournal.com/update.bml?subject=%title%&event=%description%<br><a>%url%</a>';
      var li = 'http://www.liveinternet.ru/journal_post.php?action=n_add&cnurl=%url%';
      var mail = 'http://connect.mail.ru/share?url=%url%&title=%title&description=%description%'; // &imageurl=%image%
      var ya = 'http://my.ya.ru/posts_add_link.xml?URL=%url%&title=%title%';
      var ok = 'http://www.odnoklassniki.ru/dk?st.cmd=addShare&st.s=1&st._surl=%url%';


      popups.video = { visible: false, block: $block };

      // get hdr
      function shareHdr( _tpl ){
         return function(){
            // get data

            var $active = $videoItems.filter('.cur');


            shareData.url = encodeURIComponent( window.location + $active.find('._video_url').text() );
            shareData.description = $('._shareLinkTitle').text();

            var link = _tpl.replace( /\%url\%/, shareData.url )
            .replace( /\%title\%/, shareData.title )
            .replace( /\%description\%/, shareData.description )


            window.open( link );
         };
      };

      $shareBlock.find('span._link').click(function(){
         var $block = $('#_linkBlock');
         var $active = $videoItems.filter('.cur');

         var lnk = '<a href="' + window.location + $active.find('._video_url').text() + '" target="_blank">' + $('._shareLinkTitle').text() + '</a>';

         $block.find('textarea').val( lnk );
$block.find('div.but').hide();
         $block.fadeToggle(333);

      });

      $shareBlock.find('.twitter').click( shareHdr(tt) );
      $shareBlock.find('.vk').click( shareHdr(vk) );
      $shareBlock.find('.lj').click( shareHdr(lj) );
      $shareBlock.find('.ll').click( shareHdr(li) );
      $shareBlock.find('.mailru').click( shareHdr(mail) );
      $shareBlock.find('.yandex').click( shareHdr(ya) );
      $shareBlock.find('.odnoklassniki').click( shareHdr(ok) );

      
      /* video popup */
      var videoApi;
      var playerCfg = {

           'width': '608'
         , 'height': '342'
         //, 'streamer': 'mms://live.rfn.ru/news' //mms://scry.dubuque.k12.ia.us:1755'
         //, 'file': 'http://live.rfn.ru/news'
         // 'image': "/media/userdata/videos/splash/2011/06/08/a7ffbb7fd9692d86d8af90e9d55b6a2b.announce.jpeg"
         , 'skin': '/media/skins/stormtrooper.zip'
         //'flashplayer': "/media/swf/player.swf"
         , 'modes': ( isiOS ? [{type: 'html5'}] : [{type: 'flash', src: '/media/swf/player.swf'}] ) // check isiOS - 4 testing video
         , 'plugins' : {
             'googlytics-1': true
             , 'viral': {
                   'oncomplete' : false
                 , 'onpause' : false
             }
          }
      };

      var $item = $list.find('li.cur');

      if( $item.find('._rtmp').length){
          playerCfg.file     = $item.find('._rtmp ._file').text();
          playerCfg.streamer = $item.find('._rtmp ._streamer').text();
          videoApi = jwplayer('jwplayer').setup( playerCfg );
      } else if($item.find('._transcode').length) {
          $('#jwplayer').html(htmlspecialchars_decode($item.find('._transcode').html()));
      }else{
          playerCfg.file = $item.attr('rel');
          videoApi = jwplayer('jwplayer').setup( playerCfg );
      }

// isiOS
      // insert video
      //if( !isiOS )
      /*else
         $('#jwplayer').replaceWith( $('<video controls="yes" preload="none" src="' 
                                      + $list.find('li.cur').attr('rel') 
                                      + '" poster="'+ $list.find('li.cur img:first').attr('src') 
                                      + '"style="width:600px;height:340px;">')
         );
*/

      $video.find('dd').click(function(ev){
         $block.fadeIn(333);

         ev.preventDefault();
         popups.video.visible = true;
      });


      $block.find('.close').click(function(){
         $block.fadeOut(333);
         popups.video.visible = false;
      });


      $list.delegate('li', 'click', function(){
         var $li = $(this);
         var $player;

         var rtmp;
         var prm = {};


         if( $li.hasClass('cur') )
            return;


         $('#_linkBlock').fadeOut(333);

         $li.switchSibClass('cur');
         curVideo = $li.attr('rev');//page*4+$list.find('li').index( $li );

         $rtmp = $li.find('._rtmp');
         $code = $li.find('._transcode');


         $header.html( '&laquo;'+$li.find('dfn').text()+'&raquo;' );

         var $wrapper = $('#jwplayer_wrapper');
         if($wrapper.length){
            $wrapper.attr('id','jwplayer');
         } 

         if($rtmp.length){
            prm.streamer = $rtmp.find('._streamer').text();
            prm.file     = $rtmp.find('._file').text();
         }else if($code.length){
             $('#jwplayer').html(htmlspecialchars_decode($code.html()));
             return;
         }else{
            prm.file  = $li.attr('rel');
            prm.image = $li.find('img').attr('src');
         }

         $('#jwplayer').html('');

         var c = playerCfg;

         c.file =  prm.file;
         c.autostart =  true;

         videoApi = jwplayer('jwplayer').setup( c );
         $player = $('#jwplayer');

         if( !isiOS ){

         } else {

				videoApi.load(prm.file);
				videoApi.play();

            /*$player[0].setAttribute('src', prm.file );
            $player[0].setAttribute('poster', prm.image );
            $player[0].load();
            $player[0].play();*/
         };

      });

/* lent */

      //$list.after( $preloader );

      if( size < 2 )
         $navi.children('div').hide();

      $block.find('.sliderBlock').unselectable();

      $list.css({ height: $list.find('li').length*96 });

      function ShowPage( _n ){
         // navi
         $pages.eq(_n).switchSibClass('cur');
         $next.removeClass('hide');
         $prev.removeClass('hide');

         if( _n == 0 )
            $prev.addClass('hide');
         else if( _n == (size-1) )
            $next.addClass('hide');


         $list.html('');
         $list.append( $preloader );

         $.ajax({
              url: $list.attr('rel')
            , type: 'post'
            , data: { n: _n }
            , dataType: 'json'
            , success: function(_data){
               //if( _data.success == true )
                  $list.html( _data.html );

                  $list.animate({ height: $list.find('li').length*96 });

                  $list.find('li[rev='+curVideo+']').addClass('cur');
                  // if( Math.floor(curVideo/4) == page )
                     // $list.find('li').eq(curVideo%4).addClass('cur');
            }
         });
      };

      $next.click(function(){ if(page<(size-1)){ page++; ShowPage(page); } })
      $prev.click(function(){ if(page>0){ page--; ShowPage(page); } })
      $pages.each(function(i){ $(this).click(function(){ page=i; ShowPage(page); }); });

   })();


   /* rules */
   // charter
   (function(){
      var $block = $('div._rules');

      var $struct = $block.find();

      var $parts = $block.find('.typical');
      var $curPart = $parts.filter(':first');

      var $navi = $('div.navigation')
      var $prev = $navi.find('.backward');
      var $next = $navi.find('.forward');

      var $list = $('ul._charter');


      if( $list.find('li').length < 2 ){
         $navi.hide();
         return;
      }


      $prev.hide();

      // navigation
      $list.delegate('li a', 'click', function(ev){
         var $a = $(this);
         var $li = $a.parent('li');
         var i = $list.find('li').index( $li );

         if( $li.hasClass('_cur') )
            return;

         // prev btn
         if( i == 0 )
            $prev.hide();
         else
            $prev.show();

         // next btn
         if( i == ($list.find('li').length-1) )
            $next.hide();
         else
            $next.show();

         $li.switchSibClass('_cur');

         $body.animate({scrollTop: 350+'px'}, 333 );

         $curPart.fadeOut(222, function(){
            $curPart = $parts.filter('[rel='+$li.attr('rel')+']');
            $curPart.fadeIn(222);
         });

      });


      $prev.click(function(){
         var $a = $list.find('li._cur').prev().find('a');

         $a.click();
         $body.animate({scrollTop: 350+'px'}, 333 );

         window.location = $a.attr('href');
      });

      $next.click(function(){
         var $a = $list.find('li._cur').next().find('a');

         $a.click();
         $body.animate({scrollTop: 350+'px'}, 333 );

         window.location = $a.attr('href');
      });



      var hash = window.location.hash.replace(/^#/, '');

      if( hash != '' )
         $list.find('li a[href$=#'+hash+']').click();
   })();


   // voiting
   (function(){
       var $block = $('dl.votingBlock');


       $block.find('form :radio').click(function(){
          var $inp   = $(this);
          var $form  = $inp.closest('form');
          var isData = {};


          isData[$inp.attr('name')] = $inp.val();

          $.ajax({
             url: $form.attr('action')
             , type: $form.attr('method')
             , data: isData
             , dataType: 'json'
             , success: function( _data ){
                var $counter = $block.find('div.counter span');

                if( _data.error == 0 ){
                   // hide description + voiting controls
                   $block.find('div.descr').slideUp(333);
                   $block.find('form').slideUp(333);

                   // change count
                   $counter.hide().text( _data.count );
                   $counter.fadeIn(333);
                } else if(_data.error == 1){
                   alert('Во время отправки Вашего голоса произошла ошибка, попробуйте проголосовать позже.');
                }
             }
          });
       });

   })();


   // photo day
   (function(){
      var $block = $('dl.photoDay');

      var $link = $block.find('a._view');
      var $descr = $block.find('div._view');


      $('dl.photoDay ul.week li').click(function(){
         var $li = $(this);
         var $content = $li.find('.content');

         var $newLink = $content.find('a').clone(true)
         var $newDescr = $content.find('.descr').clone(true);


         $li.switchSibClass('cur');
         $link.replaceWith( $newLink );
         $descr.replaceWith( $newDescr );

         $link = $newLink;
         $descr = $newDescr;
      });
   })();


   // press
   (function(){

      $('dl.peopleList div.list div.block').mouseenter(function(){
         $(this).addClass('hover');
      }).mouseleave(function(){
         $(this).removeClass('hover'); 
      });

      var $lasts = $('dl.peopleList div.list div.block:nth-child(7) span.name');


      $lasts.each(function(i){
         var $span = $(this);

         $span.css({ left: 40 - parseInt($span.outerWidth(),10) });
      });
   })();

   // join 
   (function(){
      // div.ok span.star
      // div.error

      var $block = $('div.onlineBlock.iForm dl.list');
      var $fields = $block.find('div.field');

      var $calendarTpl = $templates.find('div._calendar');

      var $errList;


      // init
      $fields.removeClass('ok error');

      // $fields.filter(':has(span.star)').each(function(){
         // var $fld = $(this);
         // var $inp = $fld.find('input:first');
         // var stt = ($inp.val() != '');

         // $inp.parent().toggleClass( 'ok', stt ).toggleClass( 'error', !stt );
      // });

      $errList = $('.errorlist li .name');

      if( $errList.length > 0 ){
         $body.animate({scrollTop: $('div.onlineBlock').offset().top+'px'}, 333 ); 

         $errList.each(function(){
            var $el = $(this);
            var id = 'id_' + $el.text();

            $('#'+id).closest('.field').addClass('error');
         });
      }
      // string
      $block.find('#id_firstname, #id_patronymic').keyup(function(ev){
         var $inp = $(this);
         var stt;

         if( ev.keyCode == 37 || ev.keyCode == 39 )
            return;

         this.value = this.value.replace( /^\s+|[^a-zA-Zа-яА-Я\s]/g, '' );

         stt = !(/[^a-zA-Zа-яА-Я]/.test( $inp.val() )) && this.value != '';

         if( $inp.siblings('span.star').length == 1 )
            $inp.parent().toggleClass( 'ok', stt ).toggleClass( 'error', !stt );
      });


      $block.find('#id_lastname, #id_city, #id_street').keyup(function(ev){
         var $inp = $(this);
         var stt;

         if( ev.keyCode == 37 || ev.keyCode == 39 )
            return;

         this.value = this.value.replace( /^\s+|^\-*[^a-zA-Zа-яА-Я0-9\s]/g, '' );

         stt = !(/[^a-zA-Zа-яА-Я0-9\-\s]/.test( $inp.val() )) && this.value != '';

         if( $inp.siblings('span.star').length == 1 )
            $inp.parent().toggleClass( 'ok', stt ).toggleClass( 'error', !stt );
      });

      // numbers
      $block.find('#id_house, #id_building, #id_flat, #id_home_phone, #id_job_phone, #id_mobile_phone, #id_post_index').keyup(function(){
         var $inp = $(this);
         var max = $inp.attr('maxlength');
         var stt;

         if( ev.keyCode == 37 || ev.keyCode == 39 )
            return;

         this.value = this.value.replace( /[^0-9]/g, '' );

         if( max != null )
            this.value = this.value.substr(0,max);

         stt = !(/[^0-9]/.test( $inp.val() )) && this.value != '';

         if( $inp.siblings('span.star').length == 1 )
            $inp.parent().toggleClass( 'ok', stt ).toggleClass( 'error', !stt );
      });
/*
      // phones (numbers + '-' )
      $block.find('#id_home_phone, #id_job_phone, #id_mobile_phone').keyup(function(){
         this.value = this.value.replace( /[^0-9-]/g, '' ).replace(/-{2,}/g, '-');
      });
*/

      // pasport
      $block.find('#id_passport_index, #id_passport_serie, #id_passport_number').keyup(function(){
         var $inp = $(this);
         var max  = $inp.attr('maxlength');


         this.value = this.value.replace( /[^0-9]/g, '' );

         if( max != null )
            this.value = this.value.substr(0,max);

      }).blur(function(){
         var $inp = $(this);
         var max  = $inp.attr('maxlength');
         var stt  = !($inp.val() == '' || this.value.length < max);

         $inp.parent().toggleClass( 'ok', stt ).toggleClass( 'error', !stt );
      });


      // mails
      $block.find('#id_email').keyup( function(){
         var $inp = $(this);

         $inp.parent().toggleClass('error', !/^[A-z0-9._-]+@[A-z0-9.-]+\.[a-zA-Z]{2,9}$/.test( $inp.val() ) );
      });

/**/

      // get\set
      function AttachClndr( _$btn ){

         var clnd = new CalendarFrame({
              $tmpl: $calendarTpl
            , changeDate: function(){
               var $prnt;

               clnd.$days.removeClass('cur').filter('[rel='+clnd.cur.day+']').addClass('cur');

               $prnt = _$btn.parent();

               $prnt.find('.year').val( clnd.cur.year );
               $prnt.find('.month').val( clnd.cur.month );
               $prnt.find('.day').val( clnd.cur.day );

               $prnt.find('input[type=hidden]').val( clnd.cur.day + '.' + clnd.cur.month + '.' + clnd.cur.year );
               //console.log( clnd.cur.day+'.'+clnd.cur.month+'.'+clnd.cur.year );
            }
         });

         clnd.init();
         clnd.$block.css( _$btn.offset() );

         _$btn.click(function(){ clnd.$block.fadeIn(222); });

         return clnd;
      };


      var $personal = $block.find('dd.personal');

      var personalCalendarFrame = AttachClndr( $personal.find('.calendarDoor') );
      personalCalendarFrame.$block.css({cursor:'default'});

      var personalCalendar = new Calendar({ $day: $personal.find('.day') 
         , $month: $personal.find('.month')
         , $year: $personal.find('.year')
         , ChangeDate: function(){

            var isDate = { year: parseInt($personal.find('.year').val(),10)
                         , month: parseInt($personal.find('.month').val(),10)
                         , day: parseInt($personal.find('.day').val(),10)
            };

            $personal.find('#id_birthdate').val( isDate.day + '.' + isDate.month + '.' + isDate.year );
            personalCalendarFrame.setDate( isDate );
            personalCalendarFrame.$days.removeClass('cur').filter('[rel='+personalCalendarFrame.cur.day+']').addClass('cur');
         }
      });


      var $pasport = $block.find('dd.passport');

      var pasportCalendarFrame = AttachClndr( $pasport.find('.calendarDoor') );
      pasportCalendarFrame.$block.css({cursor:'default'});

      var pasportCalendar = new Calendar({ $day: $pasport.find('.day') 
         , $month: $pasport.find('.month')
         , $year: $pasport.find('.year')
         , ChangeDate: function(){
            $pasport.find('#id_passport_date').val( $pasport.find('.day').val() + '.' + $pasport.find('.month').val() + '.' + $pasport.find('.year').val() );
         }
      });



      $('dd.crazy input:radio').click(function(){
         $(this).closest('ul').find('#id_future_join').val( this.value );
      });

   })();


   /* another black magic */
   (function(){
      /**/
      var $iframe = $('#pollFrame');


      // postMessage
      if( typeof top.postMessage == "function" ){
         function listener(event){
            if ( event.origin !== 'http://golos.er.ru' )
               return;

            $iframe.css({height: parseInt(event.data,10) + 10 }); 
         }

         if (window.addEventListener)
             window.addEventListener( 'message', listener,false);
         else 
             window.attachEvent( 'onmessage', listener);

      // document domain
      } else {

         document.domain = document.domain; // ya ya

         $iframe.bind('load', function(){
            var h = $iframe.contents().find('dl.votingBlock.block').outerHeight()+10; // +10 Ola prosila

            $iframe.css({height: h }); 
         });
      }

   })();


   // regional news
   (function(){
      var $block = $('dl.structureBlock:has(dd._regionnews)');

      if( $block.length != 1)
         return;

      var $newsData = $('div.newsOneBlock');
      var $districtList = $block.find('ul.list');

      var reg_rul  = $districtList.attr('rel');;
      var news_url = $block.find('dd._regionnews').attr('rel');

      var $preloader = $('<img src="/media/i/preloader3.gif">');


      $newsData.find('dl.newsList').before( $preloader.hide() );
      $districtList.children('li:first').addClass('_loaded _cur');

      $districtList.children('li').click(function(){
         var $liDis = $(this);
         var $regList = $liDis.find('ul');

         if( $liDis.hasClass('_cur') )
            return;

         // view
         $liDis.switchSibClass('_cur');
         $districtList.find('li ul').slideUp(333);


         // data
         if( !$liDis.hasClass('_loaded') ){
            $regList.show();
            $liDis.addClass('_loaded');

            $.ajax({
               url: reg_rul
               , type: 'post'
               , data: { district: $liDis.attr('rel') }
               , dataType: 'json'
               , success: function( _data ){
                  var $list =  $(_data.html);
/*
                  $regList.slideUp(222, function(){
                     $regList.replaceWith( $list );
                     $list.slideDown(222);
                  });*/

                  $regList.replaceWith( $list );
               }
            });
         } else
            $regList.slideDown(333);
      });

      // region
      $districtList.delegate('li._loaded li', 'click', function(ev){
         var $li = $(this);

         if( $li.hasClass('_cur') )
            return;

         // view
         $li.switchSibClass('_cur');


         $preloader.show();

         $.ajax({
            url: news_url
            , type: 'post'
            , data: {region: this.getAttribute('rel') }
            , dataType: 'json'
            , success: function( _data ){

               $preloader.hide();
               $newsData.find('dl.newsList').replaceWith( $(_data.html) );

            }
         });

      });

   })();


   //inserted gallery
   (function(){

      function AttachLent( _$block, _title ){ // 4 110+10
         var $next   = _$block.find('div.next');
         var $lent   = _$block.find('div.lenta');
         var $blocks = $lent.find('div.block');


         $lent.css({ position: 'relative', left: 0 });

         if( $blocks.length > 4 ){

            $next.click(function(){
               $lent.animate({ left: -120 }, 222, function(){
                  $lent.find('div.block:first').appendTo( $lent );
                  $lent.css({ left: 0 });
               });
            });

         } else {
            $next.hide();

         }

         $blocks.find('img').gallery({ title: _title });
         
         // black magic
         _$block.delegate('div.block > span', 'click', function(){
            $(this).next('a').children('img').click();
         });
      };


      //
      $('img._gallerySlot').each(function(){
         var $img = $(this);
         var title = $img.attr('title');


         $.ajax({
              url: '/get_gallery_content/'
            , type: 'post'
            , data: { id: $img.attr('rel') }

            , dataType: 'json'
            , success: function( _data ){
               var $lentBlock = $(_data.html);


               $img.replaceWith( $lentBlock, title );
               AttachLent( $lentBlock, title );
            }
         });
      });

   })();
   
   //subscribe
   (function(){
       $pop = $('div.popup2:has(div.popuSubjectBlock)');
       $("div.subscrip dl.list dd div.column ul.check li label span").click( function() {
           var slug = $(this).prev().attr('value');
           $.ajax({
                'type': 'post',
                'url':'.',
                'data': {  
                    'slug': slug
                },
                'success': function(data) {
                   $pop.fadeIn(333);
               }
           });
       });
       
       $("#all_projects").click( function() {
            if ($(this).is(":checked")) {
                $("div.column1._projects input[type=checkbox]").prop({'checked': true});
            } else {
                $("div.column1._projects input[type=checkbox]").prop({'checked': false});
            }
       });
       
       $pop.find("div.close").click( function() {
           $pop.fadeOut(333);
       });
   })();


   (function(){

       var $teaserblocks = $('.teaser_loader');

       $teaserblocks.each(function(i){

           var $block  = $teaserblocks.eq(i);
           var $parent = $block.parent();
           var teaser_class = $block.attr('rel');
           var $preloader = $('<center><img style="float:center;" src="/media/i/preloader3.gif"></center><br><br>');

           $.ajax({
                url: '/load_teaser/'+teaser_class,
                type: 'get',
                async:true,
                dataType: 'html',
                beforeSend: function(){
                    $block.replaceWith($preloader);
                },
                success: function( _data ){
                    $parent.html(_data);
                }
          });

       });


   })();


   (function(){

       var $wrapper = $('._ajaxLoadTopics');

       function loadTopics(){

           var $content = $wrapper.find('._topicsList');

           var $preloader = $('<center><img style="float:center;" src="/media/i/preloader3.gif"></center>');

           $.ajax({
                url: '/forum/load_topics',
                type: 'get',
                async:true,
                dataType: 'html',
                beforeSend: function(){
//                    $content.prepend($preloader);
                },
                success: function( _data ){
                    $content.html(_data);
                },
                complete: function(){
//                    $preloader.remove();
                }
           });
       }

       if($wrapper.length){
           window.setInterval(loadTopics,5000);
       }

   })();

   (function(){

       var $themeBlock    = $('.themeOne');
       var $commentsBlock = $('.commentBlock',$themeBlock);

       $themeBlock.delegate('.addCommentDoor','click',function(){

           var $door     = $(this);
           var themeId   = $('#topicId').val();
           var $parent   = $door.parent();
           var $existing = $parent.find('._commentForm');

           if($door.hasClass('close'))
           {
               if($existing.length)
               {
                   $existing.remove();
               }

               $door.find('span').text('Комментировать');
               $door.removeClass('close');
           }
           else
           {
               var data = {}

               if($door.attr('rel')){
                   data.parent_id = $door.attr('rel');
               }

               $.ajax({
                    url: '/forum/ajax_comment/'+themeId,
                    type: 'get',
                    data : data,
                    async:true,
                    dataType: 'html',
                    success: function( _data ){
                        var $form     = $(_data);

                        if($existing.length)
                        {
                            $existing.replaceWith($form)
                        }
                        else
                        {
                            $form.insertAfter($door);
                        }

                        $door.addClass('close');
                        $door.find('span').text('Не комментировать');
                    }
               });
           }
       });


       $themeBlock.delegate('._commentForm','submit',function(){

           var $form = $(this);

           $.ajax({
                url: $form.attr('action'),
                type: 'post',
                async:true,
                data : $form.serialize(),
                dataType: 'html',
                beforeSend:function(){
                    var $preloader = $('<center><img style="float:center;" src="/media/i/preloader3.gif"></center>');
                    $form.find('input:submit').replaceWith($preloader);
                },
                success: function( _data ){
                    var $data = $(_data);
                    $form.replaceWith($data);
                    autohide();
                    if(!$data.find('input').length){
                        var $door = $data.siblings('.addCommentDoor').eq(0);
                        $door.find('span').text('Комментировать');
                        $door.removeClass('close');
                    }
                }
           });

           return false;
       });

   })();


   (function(){

       var $uploadForm = $('#_photoUpload');
       var $photo      = $('#_photoImg');
       var $form       = $('#_sheetForm');
       var $preloader  = $('#_sheetPreloader');
       var $input      = $('#id_photo');

       $input.change(function(){
           $uploadForm.submit();
           $input.val('');
       });

       $uploadForm.iframePostForm({
           json:true,
           post: function(){
               $preloader.show();
           },
           complete : function(response){
               if(response.success){
                   $photo.attr('src',response.url);
                   $form.append('<input type="hidden" name="photo" value="'+response.url+'">');
               }else{
                   alert(response.errors);
               }

               $preloader.hide();
           }
       });

   })();

/*
   // themes\plot switcher
   (function(){

      var $block = $('#container2 div.themesBlock');
      var theme = { btn: $block.find('div.theme div.subj, div.theme > dl dt') , frame: $block.find('div.theme') };
      var plot  = { btn: $block.find('div.subject div.subj, div.subject > dl dt') , frame: $block.find('div.subject') };

      //theme.frame.css({position:'absolute', top:0, left: 0}).show();
      //plot.frame.css({position:'absolute', top:0, left: 0}).show();


      theme.btn.click(function(){

         theme.frame.find('ul').fadeOut(333,function(){
            theme.frame.hide();
            plot.frame.show().find('ul').fadeIn(333);
         });

      });

      plot.btn.click(function(){

         plot.frame.find('ul').fadeOut(333,function(){
            plot.frame.hide();
            theme.frame.show().find('ul').fadeIn(333);
         });
      });

   })();
*/
});

// /media/css/main.css
// /media/css/style.css

