var oldvalue = [];

$(function() {
    // вешаем тогглер на инпуты форм с классом togglable
	var allInputs = $("form.togglable :text, form.togglable :password, form.togglable textarea");
	for (var i=0; i < allInputs.length; i++) {
        formId = $(allInputs[i]).parents('form').attr('id');
        if (! oldvalue[formId]) {
            oldvalue[formId] = new Array();
        }
        oldvalue[formId][$(allInputs[i]).attr('name')] = $(allInputs[i]).val();
	}
	function toggleVal(event) {
		var target = $(event.target);
        var formId = $(target).parents('form').attr('id');
		switch(event.type) {
			case "focus" :
				if(target.val() == oldvalue[formId][target.attr('name')]) target.val('');
				break;
			case "blur"	:
				if ( !target.val() ) {
					target.val(oldvalue[formId][target.attr('name')]);
				}
				break;
		};
	}
	$("form.togglable :text, form.togglable :password, form.togglable textarea").bind('focus', toggleVal);
	$("form.togglable :text, form.togglable :password, form.togglable textarea").bind('blur', toggleVal);
    // автозаполняющиеся поля
    $.fn.extend({
        activate: function() {
            return this.focus().select();
        }
    });
	//биндим клик по кнопке открыть форму
	$(".openDialogForm").live("click", function (e) {
		closeDialogForm('fs_dialogForm');
		closeDialogForm('fs_login');
		var sizes = $(this).attr('rel').split(",");
		var width = (parseInt(sizes[0]) != 0) ? parseInt(sizes[0]): 100;
		var height = (parseInt(sizes[1]) != 0) ? parseInt(sizes[1]): 100;
		$.post(
			$(this).attr('href'),
			{},
			function(data) {
				$(data).appendTo("body");
				showDialogForm('fs_dialogForm', width, height);
			}
		);
    	return false;
	});
	//биндим клик по кнопке закрыть
	$(".closeDialogForm").live("mousedown", function (e) {
	    if ($(this).hasClass('fs_close')) {
    		$(this).removeClass('fs_closeHover');
    		$(this).addClass('fs_closeActive');
	    }
	});
	$(".closeDialogForm").live("mouseup", function (e) {
	    if ($(this).hasClass('fs_close')) {
    		$(this).removeClass('fs_closeActive');
    		$(this).addClass('fs_closeHover');
	    }
		setTimeout("closeDialogForm('fs_dialogForm');closeDialogForm('fs_login');", 200);
	});
	$(".closeDialogForm").live("mouseover", function (e) {
	    if ($(this).hasClass('fs_close')) {
    		$(this).addClass('fs_closeHover');
	    }
	});
	$(".closeDialogForm").live("mouseout", function (e) {
	    if ($(this).hasClass('fs_close')) {
    		$(this).removeClass('fs_closeHover');
	    }
	});
    /*
    var options = {
        success:   onAjaxSubmitForm,  // post-submit callback
        dataType:  'json'
    };
    */
    // вешаем ajax form submit
    bindSimpleAjaxForm();
    //добавляем затенение для всплывающих форм
    $('<div id="shadowBox"></div>').css({
        opacity: 0.4
    }).appendTo("body");

    $(document.body).keypress(function(e) {
        // убираем форму по нажатию escape
        if (e.keyCode == 27) {
            $('div[id^="fs_"]').each(function() {
                closeDialogForm($(this).attr('id'));
            });
        }
    });
    // инициализируем mp3players
    initMp3Player();
    initFlvPlayer();
    initFlvOpenVideo();

    $('table.table tr').each(function(i) {
        var j = i + 1;
        if (j % 2 == 0) {
            $(this).removeClass('even');
        } else {
            $(this).addClass('even');
        }
    });
});

    function initMp3Player()
    {
        // подгузка аудиоплееров
        $("img.tinymce_audio_player").each(function() {
            if ($(this).attr("title").replace(/\s/gi, "")) {
                // ищем рандомный id
                var i = 0;
                do {
                    randomId = "tinymce_audio_player_" + Math.round((Math.random(1, 1000) * 10));
                    i++;
                } while ($("#" + randomId).get(0) || i > 10);

                // устанавливаем рандомный id объекту
                $(this).attr('id', randomId).css({
                    zIndex : 100
                });

                // параметры для плей-листа
                title = $(this).attr('title');

                if (title.match(/^http:\/\/.*?/)) {
                    protocol = 1;
                } else if (title.match(/^https:\/\/.*?/)) {
                    protocol = 2;
                } else if  (title.match(/^ftp:\/\/.*?/)) {
                    protocol = 3;
                }

                file = title.replace('http://', '').replace('https://', '').replace('ftp://', '');

                // url плей-листа
                playlistUrl = '/playlist.php?file=' + file + '&protocol=' + protocol;

                swfobject.embedSWF("/flash/audio/mp3player.swf", randomId, "300", "100", "9.0.0", null,{},{
                    play: "true",
                    menu: "false",
                    loop: "true",
                    wmode: "transparent",
                    allowScriptAccess:"always",
                    flashVars: "playlistURL=" + playlistUrl
                },{});


            } else {
                $(this).remove();
            }
        });
    }

    /**
     * Инициализация flv-players
     */
    function initFlvPlayer ()
    {
        var randomId = "";
        var params = {};
        var flashparams = {
            menu: "false",
            wmode: "transparent",
            allowfullscreen: "true"
        };
        var flashvars = {};
        $("img[src$=/editor/plugins/media/img/trans.gif][title^=src:][class=justFlvVideo]").each(function() {
            // создаем уникальный id
            do {
                randomId = "randomId" + Math.round(Math.random() * 100);
            } while ($("#" + randomId).length);

            params = $(this).attr('title').split(',');
            url = params[0].substr(5);
            url = url.substr(0, url.length - 1);

            _width = $(this).attr('width');
            _height = $(this).attr('height');

            // создаем контейнер
            $('<div id="' + randomId + '" />').css({
                display: "block",
                width: _width,
                height: _height
            }).insertAfter(this);

            $(this).remove();
            // параметры флешки
            flashvars = {
                file: url,
                autostart: false
            };
            swfobject.embedSWF("/flash/mediaplayer/player2.swf", randomId, _width, _height, "9.0.115", "/i/flash/mediaplayer/expressInstall.swf", flashvars, flashparams, null);
        });
    }

    // показать тень при открытии бокса редактирования
    function showShadow (zIndex)
    {
        $("#shadowBox").css("z-index", (zIndex - 1))
                       .show();
    }

    // скрыть тень при закрытии бокса редактирования
    function hideShadow ()
    {
        $("#shadowBox").hide();
    }

    // открыть видео-ролик для просмотра
    function openVideo (flashvars)
    {
        if (typeof flashvars == 'string') {
            flashvars = eval(flashvars);
        }
        var str = flashvars.file;
        var regexp = /(http:\/\/www\.youtube\.com\/watch\?v=)/gim;
    	var matches = str.match(regexp);
    	var thisYouTubeLink = 0;
    	if (matches){
    		thisYouTubeLink = 1;
    		str = "http://www.youtube.com/v/" + str.replace(regexp,'');
    	}
    	if (thisYouTubeLink == 1){
    		var params = {
				wmode: "transparent", 
	        	src: str
	        };
    		swfobject.embedSWF(str, "flashPlayer", "404", "318", "9.0.115", "/i/flash/mediaplayer/expressInstall.swf", flashvars, params, null);
        } else {
        	var params = {
	            menu: "false",
	            wmode: "transparent",
	            allowfullscreen: "true"
	        };
        	swfobject.embedSWF("/flash/mediaplayer/player2.swf", "flashPlayer", "404", "318", "9.0.115", "/i/flash/mediaplayer/expressInstall.swf", flashvars, params, null);
        }
        showShadow(1000);
        $('div#flvPlayBox').show().center(true);
        return false;
    }

    // закрыть окно с роликом
    function closeVideo ()
    {
        $('div.play-video').hide();
        hideShadow();
        return false;
    }

    /**
     * Вешает просмотр flv-роликов и youtube-видео
     */
    function initFlvOpenVideo ()
    {
        var openVideoOn = false;
        $('a[href]').each(function() {
            href = $(this).attr('href');
            if (href.match(/^http:\/\/www\.youtube\.com\/watch\?v\=[a-z0-9_-]+$/i) || href.match(/\.flv$/i)) {
                $(this).click(function(e) {
                    e.preventDefault();
                    var flashvars = {
                        file: $(this).attr('href'),
                        autostart:false
                    };
                    openVideo(flashvars);
                });
                openVideoOn = true;
            }
        });

        // если есть ссылки с видео, и блок показа видео ещё не создан
        /**
        if (openVideoOn && $('div.play-video').length == 0) {
            $('<div class="play-video" style="display: none; position: absolute; top: 0; left: 250px; z-index: 1000;">'
                + '<a href="#" onclick="return closeVideo();">закрыть</a><br>'
                + '<div id="flashPlayer">'
                + '<p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>'
                + '</div></div>').appendTo(document.body);
        }
        */
    }


    function bindSimpleAjaxForm ()
    {

        var options = {
            success:   onAjaxSubmitForm,  // post-submit callback
            dataType:  'json',
            beforeSubmit: function (formdata, form) {
                if (typeof validateFormVars == 'function') {
                    return validateFormVars(formdata, form);
                } else {
                    return true;
                }
            }
        };
        // вешаем ajax form submit
        $('form.simpleform').ajaxForm(options);
    }

    function validateFormVars(formdata, form) {
        var formId = $(form).attr('id');
        // если форма является тогглабл
        if ($(form).hasClass('togglable')) {
            for (i=0; i < formdata.length; i++) {
                if (oldvalue[formId][formdata[i].name]) {
                    if ( oldvalue[formId][formdata[i].name] == formdata[i].value) {
                        formdata[i].value = '';
                    }
                }
            }
        }
        return true;
    }

    //функция открытия диалоговой формв
    function showDialogForm(formId, width, height, z_index)
    {
      if (!z_index) z_index = 1000;
      showShadow(z_index);
      var top = $(document).scrollTop() + ($(window).height() / 2 - height /2);
      var left = $(document).scrollLeft() + ($(window).width() / 2 - width /2);
      $('#' + formId).css(
        {
          top:  top + 'px',
          left:  left + 'px',
            width: width + 'px',
            height: height + 'px',
            display: "block",
            zIndex: z_index
          }
      );
      //высота дива с контентом
      $('#' + formId + ' div.fs_scroll').css('height', height - 84);
      //alert($('#' + formId + ' div.fs_scroll').css('height'));
      //делаем форму перемещаемой
      $('#' + formId).draggable(
        {
          handle: 'div.fs_dialogFormHead'
        }
      );

        // опции для ajax submit form
        var options = {
            success:   onAjaxSubmitForm,  // post-submit callback
            dataType:  'json'
        };
        // вешаем ajax form submit
        $('form.dialogform').ajaxForm(options);

    }
    //функция закрытия диалоговой формв
    function closeDialogForm(formId)
    {
      $('#' + formId).removeShadow();
      $('#' + formId).remove();
      hideShadow();
      return false;
    }

    function onAjaxSubmitForm(response, statusText, form) {
        if (statusText == 'success') {
            // если пользователь разлогинился, то перекидываем его на доступную страницу
            if (response.kernelLogout) {
                alert('К сожалению, Вы разлогинились.');
                return false;
                //doRedirect(response.redirectUrl);
            }

            if (response.submitOn) {
                if (response.redirectUrl) {
                    if (response.openerOn) {
                        window.opener.location = response.redirectUrl;
                        window.opener.location.reload();
                        window.close();
                    } else {
                        window.location = response.redirectUrl;
                    }
                } else if (response.reloadOn) {
                    if (response.subscribe && typeof reloadOn == 'function') {
                        closeDialogForm('fs_dialogForm');
                        reloadOn(window.location.href, response);
                    /*} else if (typeof reloadPage == 'function') {
                        // функция существует, ее можно вызывать
                        closeDialogForm('fs_dialogForm');
                        reloadPage(window.location.href, response);
                        */
                    } else {
                        window.location.reload();
                    }
                } else {
                    closeDialogForm('fs_dialogForm');
                    if (response.dirsTree) {
                        dirsTree = response.dirsTree;
                        buildDirsTree();
                    }
                }
            }
            if (response.errors) {
                // меняем капчу
                $(form).find('img[src*=antibot.php]:eq(0)').attr('src', '/antibot.php?u=' + Math.random());
                $(form).find('.fs_error, .error').empty();
                for (var ctrlErr in response.errors) {
                    $('#err_' + $(form).attr('id') + '_' + ctrlErr).html(response.errors[ctrlErr]).show();
                }
            }
        }
    }
    //функция показа формы авторизации
    function showAuthForm(data) {
        closeDialogForm('fs_login');
        $(data).appendTo("body");
        showDialogForm('fs_login', 459, 293, 20000);
    }

    function openAuthForm(url) {
      $.post(
        url,
        { t: (new Date).getTime()  },
        showAuthForm
      );
    }

    function openContentEditor(linkobj) {
      winobj=open($(linkobj).attr('href'),"editor","");
      winobj.focus();
    }

    function toggleLoginForgotForms ()
    {
        $("#fs-login-form").toggle();
        $("#fs-forgot-form").toggle();
        return false;
    }


    function doRedirect (url)
    {
        window.location.href = url;
    }