// very important, update users session with resolution, browser and os
$(function(){
	
    /* check flash version */
    var f_version = swfobject.getFlashPlayerVersion();
    if(f_version.major < 9){
        var base = $('base').attr('href');
        var no_javascript_page = $('#no_javascript_page');
        if(no_javascript_page.length > 0){}
        else{
            window.location = base + 'no_javascript';
        }
    }
	
    var c_data = getCookie('c_data');
    var hour = new Date().getHours();

    if(c_data != hour){
        $.ajax({
            type: "POST",
            url: "ajax/user_data/",
            data: {
                s_width: screen.width,
                s_height: screen.height,
                browser: $.browser.name,
                os: $.os.name,
                local_time: hour,
                video_id: $('#videoId').text()
            },
            dataType: 'json',
            async: true,
            success:function(data){
                if(data['status'] == 1){
                    setCookie('c_data', hour, 58);
                    if(data['liked']) {
                        $('a.likeLink').addClass('disabled');
                    }
                }
            },
            error:function(err){}
        });
    }
    
    $(window).resize(function() {
        var blockUIw = $('div.blockUI.blockMsg.blockPage');
        if(blockUIw.length > 0){
            var w = parseInt($(window).width());
            var nw = w-340;

            if(w < 1150 && w > 450){
                blockUIw.animate({
                    left: nw
                },1);
            }
        }
    });

    /* if video has been removed */
    var removedVidJson = $('#removedVidJaon');
    var videoRemovedMessage = $('#videoRemovedMessage');
    if(videoRemovedMessage.length > 0 && removedVidJson.length > 0){
        var vidJson = eval('vidJson = ' + removedVidJson.html());
        setTimeout(function(){
            window.location = vidJson['next'];
        }, 3000);
    }
});

/*
jQuery.fn.selText = function() {
    var obj = this[0];
    if ($.browser.msie) {
        var range = document.body.createTextRange();
        range.moveToElementText(obj);
        range.select();
    } else if ($.browser.mozilla || $.browser.opera) {
        var selection = obj.ownerDocument.defaultView.getSelection();
        var range = obj.ownerDocument.createRange();
        range.selectNodeContents(obj);
        selection.removeAllRanges();
        selection.addRange(range);
    } else if ($.browser.safari) {
        var selection = obj.ownerDocument.defaultView.getSelection();
        selection.setBaseAndExtent(obj, 0, obj, 1);
    }
    return this;
}
*/

function sendLikeData(video_id, liked){
    if(video_id == null || video_id == 'undefined'){
        video_id = document.getElementById('videoId').innerHTML;
    }
    var hour = new Date().getHours();
    $.ajax({
        type: "POST",
        url: "ajax/like",
        data: {
            vid:video_id,
            state: _vPlayer.state,
            duration: _vPlayer.duration,
            elapsed: _vPlayer.time,
            l: liked, //was like button cliked
            s_width: screen.width,
            s_height: screen.height,
            browser: $.browser.name,
            os: $.os.name,
            local_time: hour
        },
        dataType: 'json',
        success:function(data){
            if(data['status'] == 1){
                return true;
            }else{
                return false;
            }
        }
    });
}

/* viedeo Player object */
var _vPlayer = {
    player:null,
    time:null,
    duration:null,
    state:null,
    completed_sent: false,

    init: function(){},
    monitor: function (obj){
        if(this.duration == null){
            this.duration = obj.duration;
        }
        this.time = obj.elapsed
        this.state = obj.state
        if(this.state == 'completed' && this.completed_sent == false ){
            this.completed_sent = true;
            this.time = this.duration;
            sendLikeData(null, false);
            /* set timer and go next after 5 seconds */
            setTimeout(function(){
                window.location = $('div.nextVideo a').attr('href');
            }, 5000);
        }
    }
}

$(function(){
    var video_id = $('#videoId').text();

    /* load flash */
    var flashHolder = $('#flashHolder');
    if(flashHolder.length > 0){
        var flashvars = {
            videoId: video_id,
            allowscriptaccess: 'always',
            qualityPref: "medium",
            statePollFunction: "_vPlayer.monitor",
            accentColor: '0xff0000',
            autoPlay: "true"
        };
        var params = {
            base: ".",
            menu: "false",
            allowfullscreen: "true",
            allowscriptaccess: "always",
            wmode: 'transparent'
        };
        swfobject.embedSWF("flash/RoulettePlayer.swf", "flashHolder", "640", "384", "9.0.0","scripts/expressInstall.swf", flashvars, params, {});
    }

    /* next link clicked */
    var nextClicked = false;
    $('.nextVideo a').click(function(){
        if(nextClicked == false){
            nextClicked = true;
            $(this).addClass('focus');
            $.ajax({
                type: "POST",
                url: "ajax/next_click",
                data: {
                    vid:video_id,
                    state: _vPlayer.state,
                    duration: _vPlayer.duration,
                    elapsed: _vPlayer.time
                },
                dataType: 'text'
            });
        }
    });

});

$(function(){
    var likeLink = $('.likeLink');
    var video_id = $('#videoId').text();
    var disabled = false;

    if(likeLink.length > 0 && video_id.length > 2 && likeLink.not('.disabled')){
        likeLink.click(function(e){
            e.preventDefault();
            if(disabled == false){
                $(this).addClass('disabled');
                sendLikeData(video_id, true);
                disabled = true;
            }
        });
    }
});

$(function(){
    /* user clicks on top 10 video div */
    var top = $('.top10');
    if(top.length > 0){
        $('.top10Block', this).live('click', function(e){
            e.preventDefault();
            $(this).addClass('clikcked');
            window.location=$('.videoUrl', this).text();
        });
    }

    /* flagg this video clicked */
    var flagLink = $('a.flagVideoLink');
    var was_flaged = false;
    if(flagLink.length > 0){
        flagLink.click(function(e){
            e.preventDefault();
            if(was_flaged == false){
                was_flaged = true;
                var video_id = $('#videoId').text();
                $.ajax({
                    type: "POST",
                    url: "ajax/flag_video",
                    data: {
                        vid:video_id
                    },
                    dataType: 'json',
                    async: false,
                    success:function(data){
                        if(data['status'] == 1){
                            flagLink.replaceWith(data['reply_text']);
                        }else if(data['status'] == 0){
                            was_flaged = false;
                        }
                    },
                    error:function(err){}
                });
            }
        });
    }

/*
    var copyShortlinkUrl = $('a.copyShortUrl');
    copyShortlinkUrl.click(function(e){
        e.preventDefault();
        copyShortlinkUrl.selText();
    });
    */
});

$(function() {

    /* my videos page filter */
    var filter_sort = $('#myVideosSortFilterSelect');
    //var filter_form = $('#myVideosFilterForm');

    if(filter_sort.length > 0){
        filter_sort.change(function(){
            /* this is where the magic happens
             * somehow filter_form.submit(); doesn't work
            */
            $.ajax({
                type: "POST",
                url: "ajax/set_sort_filter",
                data: {
                    sort: filter_sort.val()
                },
                dataType: 'json',
                async: false,
                success:function(data){
                    window.location.reload();
                },
                error:function(err){}
            });
        });
    }

    $('a.cancel').live('click', function(e){
        e.preventDefault();
        $.unblockUI();
        if($(this).is('.closeReload')){
            window.location.reload();
        }
    });
    $('.blockOverlay').live('click', function(){
        $.unblockUI();
    });

    var left_side = $('body').width();
    var JQ_signin = $('.signInBlock.singInUi');

    if(JQ_signin.length > 0){
        var signinForm = $('#signinForm');

        var signinformlink = $('.signinformlink');
        var signinsubmitlink = $('.signinsubmitlink');
        var upload_link = false;
        var userVideoFeedAppended = false;
        var ajaxLoader = $('.ajaxLoaderGif');

        if(signinsubmitlink.length > 0 && signinForm.length > 0){
            /* sign in form submited */
            signinForm.submit(function(){
                var username = $('input[name="username"]', this);
                var password = $('input[name="password"]', this);
                var remember = $('input[name="remember"]', this);
                var captchaInput = $('input[name="captcha"]', this);
                var signInErrMssgHolder = $('div.signInErrMssgHolder');
                var submit = true;

                if(username.val().length == 0 || password.val().length == 0){
                    submit = false;
                    ajaxLoader.hide();
                }

                if(submit == true){
                    var usernamePass = $('#usernamePass', this);
                    var captchaImage = $('#captchaImage', this);
                    var youtubeCaptcha = $('#youtubeCaptcha', this);
                    var captchaToken = $('#captchaToken', this);
                   
                    signInErrMssgHolder.hide();
                    ajaxLoader.show();
                    
                    $.ajax({
                        type: "POST",
                        url: "ajax/sign_in",
                        data: {
                            name:username.val(),
                            pass:password.val(),
                            rem: remember.is(":checked"),
                            cpt: captchaToken.val(),
                            cpi: captchaInput.val(),
                            upload_l: upload_link
                        },
                        dataType: 'json',
                        async: true,
                        success:function(data){
                            if(data['status'] == 1){
                                if(data['redirect'] == 1){
                                    window.location = data['redirect_url'];
                                }else{
                                    window.location.reload();
                                }
                            }else if(data['status'] == 4){ // captcha
                                usernamePass.hide();
                                captchaImage.attr('src', data['c_url']);
                                captchaToken.val(data['c_token']);
                                youtubeCaptcha.show();
                                ajaxLoader.hide();
                            }else{ //fail
                                signInErrMssgHolder.show();
                                youtubeCaptcha.hide();
                                usernamePass.show();
                                captchaImage.attr('src', '');
                                captchaToken.val('');
                                captchaInput.val('');
                                ajaxLoader.hide();
                            }
                        },
                        error:function(err){}
                    });
                }
                return false;
            });
            signinsubmitlink.click(function(e){
                e.preventDefault();
                signinForm.submit();
            });
        }

        if(signinformlink.length > 0){
            signinformlink.click(function(e){
                e.preventDefault();
                if($(this).is('.upload_link')){
                    upload_link = true;
                }
                if(JQ_signin.length > 0){
                    left_side = $('body').width();
                    $.blockUI({
                        centerY: 0,
                        backgroundColor: '#000',
                        opacity: 0.5,
                        message: JQ_signin,
                        css: {
                            top: '88px',
                            left: left_side-340-(left_side-1000)/2+'px',
                            display: 'block',
                            width: '300px',
                            height: '300px',
                            background: 'url(../images/bg_popup.gif) 0 0 no-repeat',
                            border: 'none',
                            cursor: 'default'
                        }
                    });
                }
            });
        }
    }

    /* show users video feed */
    var JQ_videFeed = $('.signInBlock.userVideoFeedUi.show');

    if(JQ_videFeed.length > 0){
        userVideoFeedAppended = true;
        left_side = $('body').width();
        $.blockUI({
            centerY: 0,
            backgroundColor: '#000',
            opacity: 0.5,
            message: JQ_videFeed,
            css: {
                top: '88px',
                left: left_side-340-(left_side-1000)/2+'px',
                display: 'block',
                width: '300px',
                height: '300px',
                background: 'url(../images/bg_popup.gif) 0 0 no-repeat',
                border: 'none',
                cursor: 'default'
            }
        });
    }
    
    /* ************* when user clicks on his username show his video feed ************** */
    
    $('.addVideoLinkUi').click(function(e){
        e.preventDefault();
        if(userVideoFeedAppended == true){
            showUserFeedUi();
        }else{
            $.ajax({
                type: "POST",
                url: "ajax/get_user_video_feed",
                data: {},
                dataType: 'json',
                async: false,
                success:function(data){
                    if(data['status'] == 1){
                        $('body').append(data['videoFeedHtml']);
                        userVideoFeedAppended = true;
                        showUserFeedUi();
                    }
                },
                error:function(err){}
            });
        }
    });
      
    function showUserFeedUi(){
        var content = $('.signInBlock.userVideoFeedUi');
        left_side = $('body').width();
        $.blockUI({
            centerY: 0,
            backgroundColor: '#000',
            opacity: 0.5,
            message: content,
            css: {
                top: '88px',
                left: left_side-340-(left_side-1000)/2+'px',
                display: 'block',
                width: '300px',
                height: '300px',
                background: 'url(../images/bg_popup.gif) 0 0 no-repeat',
                border: 'none',
                cursor: 'default'
            }
        });
    }
    

    /* user clicks on one of his video in users video feed Ui */
    var oneVideos = $('.videoHolder .oneVideo');
    oneVideos.live('click', function(e){
        e.preventDefault();
        if($('img.videoAdded', this).length == 0){
            $(this).toggleClass('active');
        }
    });

    /* add video from user video feed */
    $('.signInBlock .addVideofromVideoFeed').live('click', function(e){
        e.preventDefault();
        var ajaxLoader = $('.ajaxLoaderGif');
        var error_mssg = $('.userVideoFeedUi .vnotseErrMssgHolder');
        error_mssg.hide();

        var videos = $('.signInBlock .oneVideo.active');
        if(videos.length > 0){

            var vids = '';
            videos.each(function(){
                vids += $('.videoId', this).text() + ';';
            });

            ajaxLoader.show();
            $.ajax({
                type: "POST",
                url: "ajax/add_video",
                data: {
                    video: vids
                },
                dataType: 'json',
                async: true,
                success:function(data){
                    ajaxLoader.hide();
                    if(data['status'] == 1){
                        var videos_l = data['videos'].length;
                        if(videos_l > 0){
                            for(var i=0;i<videos_l;i++){
                                $('.videoId.vid_'+data['videos'][i]).parent().
                                find('.info').append('<p><img src="images/popstar_roulette2.gif" alt="" /></p>');
                            }
                        }
                        $('.signInBlock.userVideoFeedUi').hide();
                        $('.blockUI.blockMsg .userVideoFeedUi').hide();
                        $('.blockUI.blockMsg').prepend(data['submited_html']);
                        $('.signInBlock.videoSubmitedUi').show();
                    }else{
                        window.location.reload();
                    }
                },
                error:function(err){}
            });
        }else{
            error_mssg.show();
        }
    });

    /* remove video from video feed */
    var removeUserVideoLinks = $('.oneVideo2 .oneVideoRemove a.removeUserVideo');
    if(removeUserVideoLinks.length > 0){
        removeUserVideoLinks.click(function(e){
            e.preventDefault();

            var classNames = $(this).attr('class').split(' ');
            var s_class = 'videoToRemove__';
            var s_class_l = s_class.length;
            var cl_l = classNames.length;

            for(var i=0; i<cl_l;i++){
                if(classNames[i].substr(0, s_class_l) == s_class){
                    var code = classNames[i].substr(s_class_l);

                    /* update remove confirmation dialog */
                    var parent = $('.removeUserVideo.'+s_class+code).parents('.oneVideo');
                    var anc = $('.oneVideoTitle a:first', parent);

                    var removeUi = $('.signInBlock.removeVideoConfirmUi');
                    if(removeUi.length > 0){
                        /* show confirmation dialog */
                        var vTit = $('.removeVideoTitleLink', removeUi);
                        vTit.text(anc.text());
                        vTit.attr('href', anc.attr('href'));

                        var left_side = $('body').width();
                        var top_side = 88;
                        if(removeUi.hasClass('center')){
                            left_side = left_side/2-150;
                            top_side = 186;
                        }else{
                        //left_side = left_side-340-(left_side-1000)/2;
                        }
                        $.blockUI({
                            centerY: 0,
                            backgroundColor: '#000',
                            opacity: 0.5,
                            message: removeUi,
                            css: {
                                top: top_side+'px',
                                left: left_side+'px',
                                display: 'block',
                                width: '300px',
                                height: '300px',
                                background: 'url(../images/bg_popup.gif) 0 0 no-repeat',
                                border: 'none',
                                cursor: 'default'
                            }
                        });

                        /* delete user video link clicked */
                        $('a.confirmRemoveUserVideo').click(function(e){
                            e.preventDefault();
                            var ajaxLoader = $('.ajaxLoaderGif');
                            ajaxLoader.show();
                            $.ajax({
                                type: "POST",
                                url: "ajax/remove_user_video",
                                data: {
                                    vid: code
                                },
                                dataType: 'json',
                                async: true,
                                success:function(data){
                                    ajaxLoader.hide();
                                    window.location.reload();
                                },
                                error:function(err){}
                            });
                        });
                    }
                }
            }
        });
        
        /* add hover effect to dashboard videos */
        var vvids = $('div.oneVideo2Holder');

        vvids.hover(function(){
            $(this).addClass('hover');
        }, function(){
            $(this).removeClass('hover');
        });

        vvids.find('a:not(.removeUserVideo)').click(function(){
            $(this).parents('.oneVideo2Holder').addClass('active');
        });
    }
    
    
    /* recent uploads more button. Like twitter :) */
    var more_recent_uploads = $('#more_recent_uploads:first');
    var before_more_videos_holder = more_recent_uploads.parents('.more_videos_holder:first');


    function load_more_recent_videos(page, full){
        page = parseInt(page);
        $.ajax({
            type: "POST",
            url: "ajax/recent_uploads",
            data: {
                p: page,
                f: full
            },
            dataType: 'json',
            async: true,
            success:function(data){
                if(data['status'] == 1){
                    before_more_videos_holder.before(data['message']);
                    if(data['final'] == true){
                        more_recent_uploads.remove();
                    }else{
                        more_recent_uploads.attr('rel', page+1);
                        more_recent_uploads.removeClass('locked');
                    }
                    if(full == true){
                        var offset = parseInt(more_recent_uploads.offset().top);
                        more_recent_uploads.attr('rel', page+1);
                        $(window).scrollTop(offset);
                    }
                }else if(data['status'] == 3){
                    more_recent_uploads.remove();
                }  
            },
            error:function(err){}
        });
    }

    
    
    if(more_recent_uploads.length > 0){
        more_recent_uploads.click(function(e){
            e.preventDefault();
            if($(this).is('.locked')){
                return false;
            }
            $(this).addClass('locked');
            var page = parseInt($(this).attr('rel'));
            window.location.hash = '#more,' + page;
            load_more_recent_videos(page, false);
        });
    }

    var myFile = document.location.toString();
    if (myFile.match('#')) { // the URL contains an anchor
        var myAnchor = '#' + myFile.split('#')[1];
        if (myAnchor.match('more')){
            myAnchor = myAnchor.replace('#', '').split(',');
            if(IsInt(myAnchor[1])){
                load_more_recent_videos(myAnchor[1], true);
            }
        }
    }
	
    /* share dropdown */
			
    $('.reportShareLink a').click(function(e){

        $('#socialShare').show();
        $('#emailShare').hide();
        e.preventDefault();
        var left_side = $('body').width();
        var offset = $('.reportShareLink').offset();
			
        $.blockUI({
            centerY: 0,
            backgroundColor: '#000',
            opacity: 0.5,
            message: $('.shareUi'),
            css: {
                top: offset.top+34+'px',
                left: (left_side-480-(left_side-1000)/2)+'px',
                display: 'block',
                width: '300px',
                height: '300px',
                background: 'url(../images/bg_popup.gif) 0 0 no-repeat',
                border: 'none',
                cursor: 'default'
            }
        });

    });

/* share dropdown */	
	
    
    
});


function log(mssg){
    if(typeof console == 'undefined'){
        return false;
    }else{
        console.log(mssg);
        return true;
    }
}

function getCookie(c_name){
    if (document.cookie.length>0){
        c_start=document.cookie.indexOf(c_name + "=");
        if (c_start!=-1){
            c_start=c_start + c_name.length+1;
            c_end=document.cookie.indexOf(";",c_start);
            if (c_end==-1) c_end=document.cookie.length;
            return unescape(document.cookie.substring(c_start,c_end));
        }
    }
    return false;
}
function setCookie(c_name,value,expire){
    var exdate=new Date();
    exdate.setMinutes(exdate.getMinutes()+expire);
    document.cookie=c_name+ "=" +escape(value)+
    ((expire==null) ? "" : ";expires="+exdate.toUTCString());
}

function IsInt(sText){
    if(sText == undefined || sText == null){
        return false;
    }

    var ValidChars = "0123456789";
    var IsNumber=true;
    var Char;
    var l = sText.length;
    for (i = 0; i < l && IsNumber == true; i++){
        Char = sText.charAt(i);
        if (ValidChars.indexOf(Char) == -1){
            return false;
        }
    }
    return true;
}



// share & bookmarks box control
$(function() {
    $("#share input[name='shorten']").change(function(){
        var replace_url = '';
        var search_url = '';
        if ($(this).attr('checked')) {
            replace_url = $("#share input[name='short_url']").val();
            search_url = $("#share input[name='normal_url']").val();
        } else {
            replace_url = $("#share input[name='normal_url']").val();
            search_url = $("#share input[name='short_url']").val();
        }
        $("#share input[name='active_url']").val(unescape(replace_url));
        $.each($("#share .links a"), function(k, v){
            $(v).attr('href', $(v).attr('href').replace(search_url, replace_url));
        });
    });

    $("#share input[name='active_url']").click(function(){
        $(this).select();
    });

    $("a.emailShare").click(function(e){
        e.preventDefault();
        $('#socialShare').hide();
        $('#emailShare').show();
    });
    $("a.sharecancellink").click(function(e){
        e.preventDefault();
        $('#emailShare').hide();
        $('#socialShare').show();
    });
    $('a.sharesubmitlink').click(function(e){
        e.preventDefault();
        $.ajax({
            cache:false,
            dataType:'json',
            data:$('form#emailShareForm').serialize(),
            type:'POST',
            url:$('form#emailShareForm').attr('action'),
            beforeSend:function(){
                $('form#emailShareForm').attr('disabled','disabled');
                $('form#emailShareForm .signInErrMssgHolder').hide();
            },
            error:function(){
                $('form#emailShareForm').removeAttr('disabled');
                alert('Error!');
            },
            success:function(response){
                $('form#emailShareForm').removeAttr('disabled');
                if(response.completed){
                    $('#emailShare').hide();
                    $('#socialShare').show();
                }else if(!response.valid){
                    alert('All fields are required.');
                }else{
                    alert('Error!');
                }
            }
        });
    });
});
