geck.requireScript('js/jquery.easing.js');
geck.requireScript('js/jquery.simpletip.js');
geck.requireScript('js/jquery.timers.js');
geck.requireScript('js/jquery.ui.js');
geck.requireScript('js/jquery.alphanumeric.js');
geck.requireScript('js/i18n/jquery.ui.datepicker-'+lang.site+'.js');

$(function() {

    $.datepicker.setDefaults( $.datepicker.regional[ lang.site ] );

    //get all videos in intro wrapper
    var $introVideos  = $('#intro-videos');

    /**
     * Intro categories rotator
     */

    //if there is intro page, create menu rotator
    if ($introVideos.size()) {

        var size = 204;
        var $frame = $('.videos-frame', $introVideos);
        var $videos = $('.video',$frame);
        var lastMove = 'right';

        var stepRight = function() {
            var $video = $('.video:first',$frame);
            $frame.animate({left:-size}, 1000, 'easeInOutQuad', function() {
                $(this).css({left:0});
                $video.appendTo($frame);
            });
            lastMove = 'right';
            makeStep(15000);
        }

        var stepLeft = function() {
            $('.video:last',$frame).prependTo($frame);
            $frame.css({left:-size});
            $frame.animate({left:0}, 1000, 'easeInOutQuad');
            lastMove = 'left';
            makeStep(15000);
        }

        var makeStep = function (interval) {
            //stop interval
            $frame.stopTime();
            //create new interval
            $frame.oneTime(interval, function() {
                if (lastMove == 'right')
                    stepRight();
                else
                    stepLeft();
                
                makeStep(10000);
            });
        }

        $('.arrow-right', $introVideos).click( stepRight );
        $('.arrow-left',  $introVideos).click( stepLeft );

        $introVideos.hover( function() { $frame.stopTime();
        }, function() { makeStep(5000); });

        makeStep(7000);
    }
    
    $('#menu-top .menu-right').each( function() {
        var $input = $('.input.login, .input.password', this);
        var $button = $('.button.login');
        
        $input.css({display:'none'});
        $('span.button-text.fake',$button).css({display:'block'});
        $('input.button-text',$button).css({display:'none'});
        
        //$button.prependTo($fake);
        $button.click( function() {
            $input.show(700);
            $('span.button-text.fake',$button).css({display:'none'});
            $('input.button-text',$button).css({display:'block'});
        });
    });

    /**
     * Search autocomplete
     */
    $('#intro-search input[name=search], #toolbar-search input[name=search]').each( function() {
        //autocomplete with cache
        $(this).autocomplete({
            source: function(request, response) {
				$.ajax({
					url: baseUrl+'/',
                    type: 'post',
                    dataType: 'json',
					data: {autocomplete: request.term},
					success: function(data) {
                        response(data);
					}
				});
			},
			focus: function(event, ui) {
				$(this).val(ui.item.query);
				return false;
			},
            select: function(event, ui) {
                $(this).parents('form').submit();
            },
			minLength: 2
        }).keypress(function(event) {
            if (event.keyCode == 13) {
                $(this).select();
            }
        }).data('autocomplete')._renderItem = function( ul, item ) {
			return $('<li></li>')
				.data('item.autocomplete', item )
				.append( '<a><span class="query">' + item.query + '</span><span class="count">(' + item.count + ')</span></a>' )
				.appendTo( ul );
		};
        //autoselect
        $(this).focus();
    });
    
    $('#intro-menu .more').click( function() {
        $(this).animate({opacity:0},1200, function() {
            $(this).css({display:'none'});
        });
        $('#intro-menu').animate({marginLeft:155},1200,function() {
            $('#intro-menu .hidden')
                .css({display:'block',opacity:0})
                .animate({opacity:1},1200);
        });
    });

    /**
     * Login hints
     */
    $('.input.login, .input.password').each( function() {
        var $this = $(this);
        var $hint = $('.input-hint', $this);
        var $input = $('input', $this);

        $hint.css({display:'block'});

        $hint.click( function() {
            $input.focus();
        });

        $input.focus( function() {
            $hint.css({opacity:0});
        });

        $input.blur( function() {
            if ($input.val() == '')
                $hint.animate({opacity:1},1000);
        });
    });

    /**
     * Tooltips
     */

    //create tooltip for help buttons in form
    $('.Geck_Form .description .icon').each( function() {
        var content = $('.content', $(this).parent()).html();

        $(this).simpletip({
           // Configuration properties
           content: content,
           fixed: false,
           offset: [16,16]
        });
    });
    //create tooltip for video list and create facebook link
    $('.video').each( function() {
        var $this = $(this);

        /*
        //tooltip
        var description = $('.video-description',this).text();
        var date        = $('.video-date',this).html();
        var watch       = $('.video-watch',this).html();
        var favourite   = $('.video-favourite',this).html();
        var content
            = (description == '' ? '' : '<div class="description">' + description + '</div>' )
            + '<div class="meta">'
            + '<div class="line">' + date + '</div>'
            + '<div class="line">' + watch + '</div>'
            + '<div class="line">' + favourite + '</div>'
            + '</div>';

        if (content != '') {
            $(this).simpletip({
               // Configuration properties
               content: content,
               fixed: false,
               offset: [16,16],
               onBeforeShow: function() {
                   if ($('#btnLayoutSwitcher').hasClass('lines'))
                       this.disable();
               }
            });
        }
        */

//        //facebook share
//        $('.share-facebook a',this).click( function() {
//            window.open($(this).attr('href'),'sharer','toolbar=0,status=0,width=626,height=436');
//            return false;
//        })

        //favourite
        $('.favourite-add, .favourite-del',this).click( function() {
  
            var url, isAdd = $(this).hasClass('favourite-add');
            //update link and get url
            if (isAdd){
                $('.favourite-add',$this).removeClass('selected');
                $('.favourite-del',$this).addClass('selected');
                url = $('.favourite-add',$this).attr('href');
            } else {
                $('.favourite-add',$this).addClass('selected');
                $('.favourite-del',$this).removeClass('selected');
                url = $('.favourite-del',$this).attr('href');
            }

            //ajax call to update value on server
            $.ajax({url: url});

            //get count value (if is with % mark, skip other action)
//            var $value = $('.video-favourite .value',$this);
//            if ($value.text().indexOf('%') > -1)
//                return false;

            //get integer from value
//            var count = parseInt( $value.text() );
//            if (count.toString() == 'NaN')
//                count = 0;
//            //update value in html
//            count = count + (isAdd ? +1 : -1);
//            $value.text(count+'x');

            return false;
        });
    });

    /**
     * Advanced search
     **/
    $('#toolbar-adv').each( function() {
        var $thisForm = $(this);
        //hover effect
        $('.line', this).hover( function() { $('.icon',this).addClass('hover');    $('.label',this).addClass('hover');
        }, function() {                      $('.icon',this).removeClass('hover'); $('.label',this).removeClass('hover');});
        //line click
        $('.line', this).click( function() { $('.input',this).show(500); })
        //date input (create datepicker)
        $('.date .input input',  this).datepicker({ showAnim:'drop', maxDate:'+0d'});
        //$('.date input', this).datepicker({ showAnim:'drop', maxDate:'+0d'});
        //text input
        $('.date, .episode', this).each( function() {
            $('.frame',this).each( function() {
                //on click on frame set focus on input
                $(this).click( function() {
                    $('input',this).focus();
                });
                //update width
                var frameWidth = $(this).width();
                var textWidth = $('.frame-text',this).width();
                $('input',this).css({
                    'paddingLeft': textWidth + 10,
                    'width': (frameWidth - textWidth - 30)
                });
            });
        });
        $('.episode input',this).numeric();
        //now we have proper height, and can hide it
        $('.line.hidden .input').css({left:0, display:'none'});
        //language selector
        $('.language .radio', this).click( function() {
            if ($(this).hasClass('selected')) {
                $(this).removeClass('selected');
            } else {
                $(this).addClass('selected');
            }
            //get count of selected languages
            var countChecked = $('.language .radio.selected',$thisForm).size();
            //ensure least one selected language
            if (countChecked == 0) {
                $('.language .radio:first',$thisForm).addClass('selected');
            }
            //clear portal dialog
            $('#advanced-portals .portal').addClass('hidden');
            //get selected values, and show only portals for selected languages
            var input = [];
            $('.language .radio.selected').each(function() {
                var lang = $(this).attr('lang');
                input.push(lang);
                $('#advanced-portals .portal.'+lang).removeClass('hidden');
            });
            //make string from array of selected languages
            input = input.join(',');
            $('.language input').val( input);
            //update portals
            portalUpdate();
        });
        //update hidden portals acording to default/selected language
        $('#advanced-portals .portal').addClass('hidden');
        $('.language .radio.selected').each(function() {
            var lang = $(this).attr('lang');
            $('#advanced-portals .portal.'+lang).removeClass('hidden');
        });
        //category dialog
        $('.category',this).click( function() {
            $('#advanced-categories').dialog({minWidth:850, modal:true, buttons: [
                {text: geck.vars.advanced.use,    click: function() {$(this).dialog( "close" ); categoryUpdate()}},
                {text: geck.vars.advanced.cancel, click: function() {$(this).dialog( "close" );}}
            ]});
        });
        //portal dialog
        $('.portal',this).click( function() {
            $('#advanced-portals').dialog({minWidth:850, modal:true, buttons: [
                {text: geck.vars.advanced.use,    click: function() {$(this).dialog( "close" ); portalUpdate(); }},
                {text: geck.vars.advanced.cancel, click: function() {$(this).dialog( "close" );}}
            ]});  
        });
        //update input on confirmed change
        var categoryUpdate = function() {
            //var info  = '';
            var input = [];
            var names = [];
            $('#advanced-categories input:checked').each(function() {
                input.push( $(this).val() );
                var wrap = $(this).parents('.category');
                var name = $($('label',wrap).get(0)).text();
                if ($.inArray(name,names) < 0)
                    names.push( name );
            });
            var info = (names.length > 0)
                ? names.join(', ')
                : geck.vars.advanced.allVideos;

            $('.category input[type=hidden]',$thisForm).val(input.join(','));
            $('.category .frame-info',$thisForm).text( info );

        };
        //update input on confirmed change
        var portalUpdate = function() {
            var input = [];
            $('#advanced-portals .portal:not(.hidden) input:checked').each(function() {
                input.push( $(this).val() );
            });
            var info = (input.length > 0)
                ? geck.vars.advanced.portalsInfo + input.length
                : geck.vars.advanced.portalsWarn;

            input = (input.length == $('#advanced-portals .portal:not(.hidden) input').size())
                ? 'all' : input.join(',');
            
            $('.portal input[type=hidden]',$thisForm).val( input );
            $('.portal .frame-info',$thisForm).text( info );
        };
        //on change of any checkbox
        $('#advanced-categories input:checkbox').change( function() {
            //variables
            var $wrap = $(this).parent();
            var checked = $('> :checked', $wrap).size();

            //if is checked,
            if (checked) {
                $($wrap).addClass('selected');
            } else {
                $($wrap).removeClass('selected');
            }
        });
        //on change of any checkbox
        $('#advanced-portals input:checkbox').change( function() {
            //variables
            var $this = $(this);
            var $wrap = $(this).parent();
            var checked = $(':checked', $wrap).size();

            //is it check-all checkbox?
            if ($this.attr('id') == 'select-portal-all') {

                if (checked) {
                    $('#advanced-portals input:checkbox').attr('checked','checked').parent().addClass('selected');
                } else {
                    $('#advanced-portals input:checkbox').removeAttr('checked').parent().removeClass('selected');
                }
            //else it is common checkbox
            } else {

                //if is checked,
                if (checked) {
                    $($wrap).addClass('selected');
                } else {
                    $($wrap).removeClass('selected');
                }
            }
        });

        $('#button-advanced-search').click( function() {
            if ($('#advanced-form').css('display') == 'block') {
                $('#advanced-form').hide("blind", {direction: "vertical"}, 1000);
            } else {
                $('#advanced-form').show("blind", {direction: "vertical"}, 1000);
            }

            return false;
        });

        portalUpdate();
        categoryUpdate();
    });

    /**
     * Fast news (intro)
     */

    $('#fast-news, #video-of-week').each( function() {
        var $this = $(this);
        //show navigation
        $('.navigation',$this).css({display:'block'});
        $('.prev',$this).addClass('disabled');

        //previous button
        $('.prev',$this).click( function () {
            var $current = $('.item.selected',$this);
            var $prev = $current.prev('.item');

            if ($prev.size() > 0) {
                $prev.addClass('selected');
                $current.removeClass('selected');
                $('.next',$this).removeClass('disabled');

                if ($prev.prev('.item').size() == 0) 
                    $('.prev',$this).addClass('disabled');
            }
            return false;
        });

        //next button
        $('.next',$this).click( function () {
            var $current = $('.item.selected',$this);
            var $next = $current.next('.item');

            if ($next.size() > 0) {
                $next.addClass('selected');
                $current.removeClass('selected');
                $('.prev',$this).removeClass('disabled');

                if ($next.next('.item').size() == 0) 
                    $('.next',$this).addClass('disabled');
            }
            return false;
        });
    });

    /**
     * Editko in search (advertise)
     */
    $input = $('#search input[name=search]');
    $editko = $('#search #editko');

    if (undefined != geck.vars.editkoTitle ) {
        $input.css({display:'none'}).val( geck.vars.editkoInput );
        $editko.css({display:'block'}).text( geck.vars.editkoTitle );
    }

    $input.focus( function() {
        $editko.css({display:'none'});
    });

    $input.blur( function() {
        if (php.empty( $input.val() )) {
            $input.css({display:'none'}).val( geck.vars.editkoInput );
            $editko.css({display:'block'});
        }
    });

    $editko.click( function() {
        $input.css({display:'block'});
        $input.attr('value','');
        $input.focus();
    });

    /**
     * If there is tip for try YouTube, then blick the button
     */
    //alert($('.tryLookOnYoutube').size());
    if ($('.tryLookOnYoutube').size()) {
        setInterval(" $('#btnYoutube').toggleClass('selected'); ", 500);
    }

    /**
     * Final changes and fixes
     */
    //create tooltip wrapper
    $('.tooltip').each( function() {
        $(this).html('<div class="tooltip-content">' + $(this).html() + '</div>');
        $('<div class="tooltip-head"></div>').css('opacity',0.8).appendTo(this);
        $('<div class="tooltip-body"></div>').css('opacity',0.8).appendTo(this);
        $('<div class="tooltip-foot"></div>').css('opacity',0.8).appendTo(this);
        $('body').append(this);
    });
    
    fitScreen();
});

$(window).load(function () {
    fitScreen();
});




function fitScreen() {
    var siteHeight = $('#site').height();
    var docHeight = $(window).height();

    if (siteHeight < docHeight) {

        var oldMainHeight = $('#site-main').height();
        var newMainHeight = docHeight - siteHeight + oldMainHeight;

        $('#site-main').css({'minHeight': newMainHeight});
    }
}
