// Скрипт, обрабатывающий событие onload документа

var AJAX_LIST_SRC 		= '/js/ajaxList.js';
var SLIDE_SRC 				= '/js/slide.js';
var MODAL_WIN_SRC 		= '/js/modalWin.js';
var PROFILE_LAYER_SRC = '/js/profileLayer.js';
var TIPS_SRC 					= '/js/tips.js';
var MAIL_SRC					= '/js/mail.js';
var DESKTOP_SRC				= '/js/desktop.js';
var WIKI_SRC					= '/js/wiki.js';
var SHOP_SRC					= '/js/shop.js';
var TABS_SRC					= '/js/tabs.js';
var FIRSTPAGE_SRC			= '/js/firstPage.js';
var GROUP_SRC					= '/js/group.js';
var SUGGESTION_SRC		= '/js/suggestion.js';

var CALENDAR_LIB_SRC	= '/js/lib/cal.js';
var LASSO_LIB_SRC			= '/js/lib/lasso.js';

window.addEvent('domready', function() {
	
 
 include_once(MODAL_WIN_SRC);
	
	// выбиралка стран
	if ($('countryId'))
	{ 
		// связные выпадающие списки. пока не выбрано значение из списка, все нижеследующие недоступны
		var linkedLists = new Array( $('cityId'), $('instituteId'), $('facultetId'), $('groupId') );
		
		include_once(AJAX_LIST_SRC, function() 
		{	
			//события на список групп и вузов вешаем до инита всех списков
			if( groupIdList = $('groupId') )
			{
				groupIdList.onDisable = function() { $('newGroup').setStyle('display', 'none') };
				groupIdList.onEnable  = function() { $('newGroup').setStyle('display', 'inline') };
			}
			if( instituteIdList = $('instituteId') )
			{
				instituteIdList.onDisable = function() { $('newVuz').setStyle('display', 'none') };
				instituteIdList.onEnable  = function() { $('newVuz').setStyle('display', 'inline') };
			}
				
			initLists(linkedLists);
			
			$('countryId').addEvent('change',  function() {
				resetLists(linkedLists.slice(0));
				var countryId = this.options[this.selectedIndex].value; 
				refreshItemListHtml( $('cityId'), '/ajax/getCityListHtml', 'countryId', countryId);
			});
			
		});
	}
	
	/* СТУДЕНТ */
	
	// выбиралка городов для вузов
	if ($('cityId') && $('instituteId'))
	{ 
		$('cityId').addEvent('change',  function() {
			resetLists( linkedLists.slice(1) );
			var cityId = this.options[this.selectedIndex].value; 
			refreshItemListHtml( $('instituteId'), '/ajax/getInstituteListHtml', 'cityId', cityId);
			//ссылку на добавление вуза обновляем после смены города
			if ( createNewVuz = $('createNewVuz'))
			{
				createNewVuz.href = '/registration/addVuz?cityId='+cityId;
			}

		});
	}
	
	// выбиралка вузов
	if ($('instituteId') && $('facultetId'))
	{ 
		$('instituteId').addEvent('change',  function() {
			resetLists( linkedLists.slice(2) );
			var instituteId = this.options[this.selectedIndex].value; 
			refreshItemListHtml( $('facultetId'), '/ajax/getFacultetListHtml', 'instituteId', instituteId);
		});
	}
	
	// выбиралка факультетов
	if ( $('facultetId') && $('groupId') && $('instituteId'))
	{ 
		var facultetList = $('facultetId');
		var facultetId   = facultetList.options[facultetList.selectedIndex].value;
		
		// события для списка факультетов
		facultetList.addEvent('change',  function() {
			resetLists( linkedLists.slice(3) );
			facultetId = this.options[this.selectedIndex].value; 
			refreshItemListHtml($('groupId'), '/ajax/getGroupListHtml', 'facultetId', facultetId);
		});
		
		//нет события на загрузку, т.к. код из скрипта используется в событии юзера
		include_once(MODAL_WIN_SRC);
		
		//создать новую группу
		$('createNewGroup').addEvent('click',  function(e) 
		{
			e.stop();
			showModal(400, 550);
			
			// заполняем модальное окно	
			new Request.HTML(
			{
				url: '/registration/addGroup', 
				update: $('modalWinBody'),
				// баг в новой версии мутулза
				isSuccess: function() { return true },
				onRequest: function() { $('modalWinBody').set('html', 'Загрузка...') },
				onSuccess: function() { initForm() }
			}).get({'facultetId': facultetId});	
		});

	}
	
	/* ШКОЛЬНИК */
	
	// выбиралка городов для школ
	if ($('cityId') && $('schoolId'))
	{
		var cityList = $('cityId');
		var cityId   = cityList.options[cityList.selectedIndex].value;
		
		$('cityId').addEvent('change',  function() {
			resetLists( linkedLists.slice(1) );
			cityId = this.options[this.selectedIndex].value; 
			refreshItemListHtml( $('schoolId'), '/ajax/getSchoolListHtml', 'cityId', cityId);
		});
		
		include_once(MODAL_WIN_SRC);
		
		$('createNewSchool').addEvent('click',  function(e) 
		{
			e.stop();	
			showModal(400, 350);
			
			// заполняем модальное окно	
			new Request.HTML(
			{
				url: '/registration/addSchool', 
				update: $('modalWinBody'),
				// баг в новой версии мутулза
				isSuccess: function() { return true },
				onRequest: function() { $('modalWinBody').set('html', 'Загрузка...') }
			}).get({'cityId': cityId});	
		});
	}
	
	// выбиралка класса из школы
	if ($('classId') && $('schoolId'))
	{ 
		var schoolList = $('schoolId');
		var schoolId   = schoolList.options[schoolList.selectedIndex].value;
		
		$('schoolId').addEvent('change',  function() {
			resetLists( linkedLists.slice(1) );
			schoolId = this.options[this.selectedIndex].value; 
			refreshItemListHtml( $('classId'), '/ajax/getClassListHtml', 'schoolId', schoolId);
		});
		
		include_once(MODAL_WIN_SRC);
		
		$('createNewClass').addEvent('click',  function(e) 
		{
			e.stop();		
			showModal(400, 350);

            schoolList = $('schoolId');
            schoolId   = schoolList.options[schoolList.selectedIndex].value;
			
			// заполняем модальное окно	
			new Request.HTML(
			{
				url: '/registration/addClass', 
				update: $('modalWinBody'),
				// баг в новой версии мутулза
				isSuccess: function() { return true },
				onRequest: function() { $('modalWinBody').set('html', 'Загрузка...') }
			}).get({'schoolId': schoolId});	
		});
	}
	
	
	/* отображение юзеров на слайде КТО НА ФОТО */
	if($('imgSrc'))
	{
    include_once(SLIDE_SRC);
	}
		
	/**
	 *	Глобальная форма аутентификации
	 **/
	if ($('authForm'))
	{
		$('authSubmit').addEvent('click', function(e){
			e.stop();
			$('authForm').getElement('form').submit();
		});	
	}

	/**
	 * Глобальный поиск. Замена текста, выпадающее меню категорий поиска
	 */
	if( $('globalSearch') )
	{
		//При клике на поиск очищаем поле
		var query				= $('query');
		var form				= $('globalSearch').getElement('form');
		var type				= form.getElement('select');
		var defaultText = query.getProperty('placeholder');

		query.toggle = function()
		{
			if(this.hasClass('tip'))
			{
				this.value = '';
				this.removeClass('tip');
				this.isEmpty = true;
			}
			else
			{
				this.isEmpty = (this.value == '');
				this.value = this.isEmpty ? defaultText : this.value;
				if(this.isEmpty)
				{
					this.addClass('tip');
				}
			}
		}

		type.show = function(){this.setStyle('display', 'block')};
		type.hide = function(){this.setStyle('display', 'none')};

		//инициализация
		query.value = query.value ? query.value : defaultText;

		query.addEvent('focus', function(){
			this.toggle();
			//type.show()
		});
		query.addEvent('blur', function() { 
			this.toggle();
			if(this.isEmpty)
			{
				//type.hide();
			}
		});

		type.addEvent('change',		function(){ query.focus() });
		type.addEvent('focus',		function(){ this.fireEvent('click'); } );

		//доклеиваем action
		form.addEvent('submit', function(e){
			this.action = this.action + '/' + type.getSelected()[0].value;
			//убираем текст по-умолчанию, если ничего не ввели
			query.toggle();
			//снимаем выделение в списке => отменяем передачу его как гет-параметра
			type.selectedIndex = -1;
		});
	}

	/* Аякс-обновлялка моих сервисов */
	if( $('myServiceWrapper') )
	{
		var myService	= $('myService');
		var wrapper		= $('myServiceWrapper');
		var updater		= $('myServiceUpdater');

		/**
		 * Аякс-индикатор. Задержка отмены анимации на 500 мсек.
		 */
		updater.delayId = null;
		updater.startAnimate = function(){ this.addClass('wating') };
		updater.stopAnimate	 = function(){ this.removeClass('wating') };
		updater.start = function(){ $clear(this.delayId); this.startAnimate(); };
		updater.stop	= function(){ this.delayId = (function(){this.stopAnimate()}).delay(500, this);  };
		/**
		 * Самодостаточный метод обновления. Можно вызывать из любого скрипта
		 */
		myService.update = function(){
			var items		= this.getElement('ul');
			var updater	= $('myServiceUpdater');			
			new Request.HTML(
			{
				url: '/user/ajaxGetMyService',
				update: items,
				evalScripts: false,
				// баг в новой версии мутулза
				isSuccess: function() { return true },
				onRequest: function() { updater.start(); },
				onSuccess: function() { updater.stop(); }
			}).get();
		};

		//рамочка
		updater.addEvent('mouseover', function(e){ wrapper.addClass('hover');	});
		updater.addEvent('mouseout', function(e){ wrapper.removeClass('hover');	});
		//обновление
		updater.addEvent('click', function(e){ e.stop(); myService.update(); });
	}
	
	/**
	 * Ролловер на главной странице тура
	 */
	if($('tourIndex'))
  {
    $$('#tourIndex a img').each(function(img) 
    {   
      var baseUrl     = img.getProperty('src');
      var rolloverUrl = img.getProperty('rollover');
      //предзагрузка роловера в кэш
      (new Image()).src = rolloverUrl;
      
      img.addEvent('mouseenter', function() { this.base = baseUrl; this.src = rolloverUrl; });
      img.addEvent('mouseleave', function() { this.src = this.base });
    });
  }
    

	
	// Удлинялка в высоту поле для комментирования
	if ($$('.commentTextField').length>0)
	{
				var textFields = $$('.commentTextField');

        var ctrlPressed = false;
        var focusedText;

        Event.Keys.ctrl = 17;

				textFields.each(function(textField)
				{
            textField.addEvent('focus', function(event)
            {
                focusedText = this;
            });

            textField.addEvent('keydown', function(event)
            {
                if (event.key == "ctrl")
                {
                    ctrlPressed = true;
                }
                else if (event.key == 'enter' && ctrlPressed == true && this == focusedText)
                {
                    var form = this.getParent('form');

                    $('id_'+form.name).click();
                }
            });

			textField.addEvent('keyup', function(event)
			{
				
				var str = textField.value;
                strokesCount = str.split("\n").length;
                strokesCount += str.length/42;

				if (strokesCount>2)
				{
					textField.tween('height',strokesCount*19+'px');
				}
				else
				{
					textField.tween('height','50px');
				}

                if (event.key == "ctrl")
                {
                    ctrlPressed = false;
                }
				
			});
			
			textField.tween('height','50px');
			
		});
		
	}
	
	
	//Показывалка городов в событиях
	
	if ($('eventsCityList'))
	{
		cityList = $('eventsCityList');

		chooseBut = $('cityChooserButton');
		
		chooseBut.addEvent('click', function(event){
			
			cityList.setStyle('display','block');
			
			cityList.setStyle('top', chooseBut.getStyle('top').toInt()+20+'px');
			//cityList.setStyle('left', event.client.x-180+'px');
		});

        closeEventsCityList = function()
        {
            $('eventsCityList').setStyle('display','none');
        }
	}
	
	//Подсказки - Tips
  	include_once(TIPS_SRC);

    //Показывалка мест в событиях

    if ($('placeInputField'))
    {
        $('placeInputField').setAttribute('autocomplete', 'off')

        $('placeInputField').addEvent('keyup', function()
        {
            if (this.value.length >= 3)
            {
                var query = $('placeInputField').value.toString();
                var url = '/place/placeHTMLList/?query='+query;
                
                getPlacesList(url);
            }

        });

        function getPlacesList(url)
        {
            var ajax = new Request.HTML(
            {
                url: url,
                update: $('placesListContent'),
                // баг в новой версии мутулза
                isSuccess: function() { return true },
                onSuccess: function() { },
                onRequest: function()
                {

                }
            })
            
            ajax.get();
        }
    }

    // Добавлялка писем в favorits
    if ($$('.favoriteButton').length > 0)
    {
        var buttons = $$('.favoriteButton');
        buttons.each(function(button){
            
            button.addEvent('click',function(event)
            {
                var messageId = button.id;

                var url = '/mail/changeFavorite/'+messageId+'/';

                new Request.HTML(
                {
                    url: url,
                    // баг в новой версии мутулза
                    isSuccess: function() { return true },
                    onSuccess: function() { changeFavoriteStar(button) },
                    onRequest: function()
                    {

                    }
                }).get();
            });

        });

        changeFavoriteStar = function(button)
        {
            var isEnabled = button.hasClass('enabled');
            if (isEnabled)
            {
                button.removeClass('enabled');
                button.addClass('disabled');
            }
            else
            {
                button.removeClass('disabled');
                button.addClass('enabled');
            }
        }
    }

    // Голосовалка за пользователя
    
    if ($('ratingMenu'))
    {
        cantVote = function()
        {
            alert('Голосовать можно раз в неделю, либо у вас не хватает голосов');
        }

        operateButtons = function()
        {
            
            if ($('ratingPlusDisabled') && $('ratingMinusDisabled'))
            {
                var plusButtonDisabled = $('ratingPlusDisabled');
                var minusButtonDisabled = $('ratingMinusDisabled');

                plusButtonDisabled.addEvent('click', function() {

                    if (this.hasClass('selfUser'))
                    {
                        alert('Вы не можете голосовать за себя');
                    }
                    else
                    {
                        cantVote();
                    }

                });

                minusButtonDisabled.addEvent('click', function() {

                    if (this.hasClass('selfUser'))
                    {
                        alert('Вы не можете голосовать за себя');
                    }
                    else
                    {
                        cantVote();
                    }
                });
            }

            if ($('ratingPlus') && $('ratingMinus'))
            {
                var plusButton = $('ratingPlus');
                var minusButton = $('ratingMinus');

                plusButton.addEvent('click', function(event) {
                    if (this.id == 'ratingPlus') showRatingWindow('Increase');
                });

                minusButton.addEvent('click', function(event) {
                    if (this.id == 'ratingMinus') showRatingWindow('Decrease');
                });
            }
        }

        operateButtons();

       // var sendButton  = $('sendRating');
       // var cancelButton  = $('cancelRating');

        function showRatingWindow(type)
				{
						if (type=='Increase')
						{
								$('userRatingIncreaseWindow').setStyle('display','block');
								$('userRatingIncreaseWindow').setStyle('left', '300px');
								$('userRatingIncreaseWindow').setStyle('top', '200px');
								var sendButton  = $('sendRating1');
								var cancelButton  = $('cancelRating1');
	    
						}
						else
						{
								$('userRatingDecreaseWindow').setStyle('display','block');
								$('userRatingDecreaseWindow').setStyle('left', '300px');
								$('userRatingDecreaseWindow').setStyle('top', '200px');
								var sendButton  = $('sendRating2');
								var cancelButton  = $('cancelRating2');
						}


						cancelButton.addEvent('click', function(event) {
								hideRatingWindow(); return false
						} );


						sendButton.addEvent('click', function(event) {
								if (type=='Increase')
										var ratingMessage = $('ratingMessageText1').value;
								else
										var ratingMessage = $('ratingMessageText1').value;
								var url = '/rating/ajax'+type+'/user/'+$('ratingUserId1').innerHTML;

								new Request.HTML(
								{
										url: url,
										update: $('ratingCountValue'),
										// баг в новой версии мутулза
										isSuccess: function() {
												return true
										},
										onSuccess: function() { },
										onComplete: function() {
												hideRatingWindow(); updateVotesCount(); disableButtons();
										},
										onRequest: function()
										{
												hideRatingWindow();
										}
								}).post({
										message: ratingMessage
								});
								return false;
						});
				}

        function hideRatingWindow()
        {
	    $('userRatingIncreaseWindow').setStyle('display','none');
	    $('userRatingDecreaseWindow').setStyle('display','none');
            operateButtons();
        }

				function disableButtons()
				{
						var plusButton = $('ratingPlus');
						var minusButton = $('ratingMinus');
						plusButton.removeEvent('click', function(){});
						minusButton.removeEvent('click', function(){});
						plusButton.id = 'ratingPlusDisabled';
						minusButton.id = 'ratingMinusDisabled';
				}
    }
    
    /**
        Голосовалка за посты комменты и т.д.
    **/
    if ($$('.ratingActions').length>0)
    {
        function operateButtons()
        {
            $$('.ratingActions').each( function(actions)
            {
                var ratingButton = actions.getChildren('.ratingButton');

                var canVote = actions.hasClass('cantVote') ? false : true;
                var smallRating = actions.hasClass('smallRating') ? true : false;

                if (actions.hasClass('selfObject'))
                {
                    ratingButton.addEvent('click', function(event)
                    {
                        alert('Вы не можете голосовать за то, что было создано вами');
                        return false;
                    });
                }
                else if (canVote)
                {
                    ratingButton.addEvent('click', function(event){

                        var url = this.href;

                        var splited = url.split('/');
                        var objectName = splited[splited.length-2];
                        var objectId = splited[splited.length-1];

                        parentObject = this.getParent();
                        parentObject.addClass('cantVote');

                        new Request.HTML(
                        {
                                  url: url,
                            // баг в новой версии мутулза
                            isSuccess: function() { return true },
                            onSuccess: function() { },
                               update: $('objectRatingCount_'+objectName+'_'+objectId),
                           onComplete: function() { operateButtons(); updateVotesCount(); },
                            onRequest: function()
                            {

                            }
                        }).get();

                        return false;

                    });
                }
                else
                {
                     if (smallRating)
                     {
                        ratingButton.addEvent('click', function(event){
                            alert('У вас не достаточно голосов');
                            return false;
                         });
                     }
                     else
                     {
                         ratingButton.addEvent('click', function(event){
                            alert('Голосовать можно раз в неделю');
                            return false;
                         });
                     }
                }

            });
        }

        operateButtons();
    }


    /** 
        Выводилка сообщения о том, что у пользователя мало рейтинга
    **/

    if ($('ratingMessageWindow'))
    {

        showRatingMessage = function()
        {
            $('ratingMessageWindow').tween('top',window.getScroll().y);
        }

        setRatingMessagePosition = function()
        {
            var topPosition = document.body.getScroll().y;
            $('ratingMessageWindow').tween('top','-60');
        }

        $('ratingMessageWindow').addEvent('mouseenter',function(){
            clearTimeout(hideMessageTOUT);
        })

        $('ratingMessageWindow').addEvent('mouseleave',function(){
            hideMessageTOUT = setTimeout('setRatingMessagePosition()',2000);
        })

        buttons = $$('.ratingMessageButton');

        buttons.each(function(button)
        {
            button.addEvent('click', function(event)
            {
                showRatingMessage();
                hideMessageTOUT = setTimeout('setRatingMessagePosition()',2000);
                return false;
            });

        });
    }

    updateVotesCount = function()
    {
        new Request.HTML(
        {
                  url: '/rating/ajaxVotesCount/',
            // баг в новой версии мутулза
            isSuccess: function() { return true },
            onSuccess: function() { },
               update: $('userVotesCount'),
           onComplete: function() { },
            onRequest: function()
            {

            }
        }).get();
    }


    window.addEvent('load', function(){

        if ($$('.blogText').length>0)
        {

            $$('.blogText').each(function(blogText){

                images = blogText.getElements('img');

                images.each(function(image){

                    image.setStyle('display', 'block');
                    var imageSize = image.getSize();
                    maxWidth = 650;

                    if (imageSize.x>maxWidth)
                    {
                        scale = maxWidth/imageSize.x;

                        image.setStyle('height',Math.round(imageSize.y*scale));
                        image.setStyle('width',maxWidth);
                    }
                });

            });
        }

        if ($$('.benchContent').length>0)
        {
            $$('.benchContent').each(function(benchContent){

                images = benchContent.getElements('img');

                images.each(function(image){

                    maxWidth = benchContent.getSize().x-10;
                    image.setStyle('display', 'block');
                    var imageSize = image.getSize();

                    if (imageSize.x>maxWidth)
                    {
                        scale = maxWidth/imageSize.x;

                        image.setStyle('height',Math.round(imageSize.y*scale));
                        image.setStyle('width',maxWidth);
                    }
                });

            });
        }

        if ($$('.text').length>0)
        {
            $$('.text').each(function(text){

                images = text.getElements('img');

                images.each(function(image){

                    maxWidth = text.getSize().x-10;
                    image.setStyle('display', 'block');
                    var imageSize = image.getSize();

                    if (imageSize.x>maxWidth)
                    {
                        scale = maxWidth/imageSize.x;

                        image.setStyle('height',Math.round(imageSize.y*scale));
                        image.setStyle('width',maxWidth);
                    }
                });

            });
        }

				if ($$('.commentValue').length>0)
        {
            $$('.commentValue').each(function(text){

                images = text.getElements('img');

                images.each(function(image){

                    var maxWidth = text.getSize().x-10;
                    image.setStyle('display', 'block');
                    var imageSize = image.getSize();

                    if (imageSize.x>maxWidth)
                    {
                        scale = maxWidth/imageSize.x;

                        image.setStyle('height',Math.round(imageSize.y*scale));
                        image.setStyle('width',maxWidth);
                    }
                });

            });
        }
  });

  /**
	Показывалка интересов пользователя
  **/
  if($('interestsButton'))
	{
		$('interestsButton').addEvent('click', function(event)
		{
			var userId = this.getAttribute('userId');
			showModal(715,500, function(){

				var url = '/ajax/userInterests/'+userId;

				new Request.HTML(
				{
					url: url,
					update: $('modalWinBody'),
					// баг в новой версии мутулза
					isSuccess: function() { return true },
					onRequest: function() { $('modalWinBody').set('html', 'Загрузка...') },
					onSuccess: function() { initForm() }
				}).get();
			});

		});

	}


	if( $('desktopWindow') )
	{
		include_once(DESKTOP_SRC);
	}


dropDownBtns = $$('.dropDownBtn');
if (dropDownBtns.length >0)
{
	dropDownBtns.each(function(item)
	{
		item.addEvent('click', function(event){
		var obj = $(item.getProperty('menu'));
		var display =  obj.getStyle('display');

		if (display == 'none')
		{
			obj.setStyle('display', 'block');
			var parent = item.getParent();
			var coordX = 0;
			if (parent.get('class') =='user')
			{
				coordX = parent.getPosition().x - parseInt(obj.getStyle('width')) + parseInt(parent.getStyle('width'));
			}
			else
			{
				coordX = item.getPosition().x - parseInt(obj.getStyle('width')) + parseInt(item.getStyle('width'));
			}

			obj.setStyle('left', coordX);

			var dd = $('coverDiv');
			dd.setStyle('height', parseInt(document.documentElement.clientHeight));
			dd.setStyle('display', 'block');
			dd.addEvent('click', function(event)
			{
				dropDownBtns = $$('.dropDownBtn');
				dropDownBtns.each(function(item)
				{
					var obj = $(item.getProperty('menu'));
					obj.setStyle('display', 'none');
				});
				dd.setStyle('display', 'none');
			}
			);

		}
		else
		{
			obj.setStyle('display', 'none');
		}

	});
})};

});
