<!-- CBS Interactive Guangzu Wang gwang@cbs.com -->

// ajax form options

// move it to html template
if(typeof cgi_script=='undefined') 
    var cgi_script = '/cgi-bin/search/test_media_search.cgi';

//psp call
var psp_script = '/cgi-bin/search/test_psp.cgi?format=json'; 

var form_options = {
    url: cgi_script,
    //type: 'post',
    dataType: 'json',
    success: displayVideo
};

//this variable will contain all the json data by media_id: mid12345
var data_by_mid = {};

//var g_uid; 
//var g_pids;

// this global hold return data from ajax call
// the later call will overwrite the previous one 
var ajax_data;

var ajax_options ={
    url: psp_script,
    global: false,
    type: "GET",
    //data: ({psp_action: "get_ureg_id", user: aauser}),
    dataType: "json",
    async: false,
    success: function(data) {
        window.ajax_data = data;
    }
};


$(function(){
    // disable autocomplete
    // $("#tag_string1").autocomplete(cgi_script + "?school=" + school, {multiple: true, mustMatch: true, matchContains: false, autoFill:true});
    $("#date1").datepicker();
    $("#date2").datepicker();

    // hide navigation column, wide carousel
    set_layout('wide');

    $("#tabs").tabs();
    //$("#tabs").tabs({ event: 'mouseover', }).find(".ui-tabs-nav").sortable({axis:'x'});;    
    // setup cookies
    $.cookies.setOptions({
        expiresAt: new Date(2020, 1, 1)
    });

    // set default action and other weird stuff
    $('#tabs').bind('tabsselect', function(event, ui){
        var tab = $(ui.tab).attr('href');
        switch (tab){
            case '#tabs-1':
                $('#num_per_page').val(more_videos);
                $("#no_pager").val(1);
                $("#search_by").val('');
                $("#search_value").val('');
                $("#skip_recent").val('0');
                $("#video_search_form").ajaxSubmit(form_options);
                $("#skip_recent").val('');
                set_layout('wide');
                break;
            case '#tabs-2':
                $('#num_per_page').val(less_videos);
                $("#no_pager").val('');
                $('#'+last_sport_id).click();
                set_layout('narrow');
                break;
            case '#tabs-3':
                $('#num_per_page').val(less_videos);
                $("#no_pager").val('');
                set_layout('narrow');
                $('#' + last_type_id).click();
                break;
            case '#tabs-4':
                $('#num_per_page').val(more_videos);
                $("#no_pager").val('');
                $("#search_by").val('featured');
                $("#search_value").val('1');
                $("#video_search_form").ajaxSubmit(form_options);
                set_layout('wide');
                break;
            case '#tabs-5':
                $('#num_per_page').val(more_videos);
                $("#no_pager").val('');
                $("#search_by").val('is_free');
                $("#search_value").val('1');
                $("#video_search_form").ajaxSubmit(form_options);
                set_layout('wide');
                break;
            case '#tabs-6':
                $('#num_per_page').val(less_videos);
                $("#no_pager").val('1');
                $("#search_by").val('');
                $("#search_value").val('');
                $("#event_type").val('live_pre');
                $("#video_search_form").ajaxSubmit(form_options);
                $("#event_type").val('');
                set_layout('wide');
                break;
        }
    });

    function set_layout(type){
        if(type == 'narrow'){
            $('#vip-col-1, #col_spacer').show();
            $('#carousel').toggleClass('carousel-wide', false).toggleClass('carousel-narrow', true);
            $('#no-carousel-events').toggleClass('wide', false).toggleClass('narrow', true);
        }else if(type == 'wide'){
            $('#vip-col-1, #col_spacer').hide();
            $('#carousel').toggleClass('carousel-narrow', false).toggleClass('carousel-wide', true);
            $('#no-carousel-events').toggleClass('narrow', false).toggleClass('wide', true);

        }
    }

    // most recently video for the  first time
    $("#no_pager").val(1);

    // get url parameter string, for sport, channels, media_type, etc
    var search_by = $.url.param('search_by');
    var search_value = $.url.param('search_value');
    if(typeof search_by == 'string' && typeof search_value == 'string'){
        $("#search_by").val(search_by);
        $("#search_value").val(search_value);
        if(search_by == 'sport'){
            //last_type_id = search_value;
            $('#tabs').tabs('option','selected', 1);
            //$('#'+search_value).click();
        }
    }

    $("#skip_recent").val('0');
    var media_id = $.url.param('media') || $.url.param('media_id');
    $('#media_id').val(media_id);
    $("#video_search_form").ajaxSubmit(form_options);
    $("#skip_recent").val('');
    $('#media_id').val('');
    
    $("#no_pager").val('');
    
    // the link that return ajax search results
    $(".search-links a").click(function() {
        // put selected indicator
        $('.search-links li').removeClass('on');
        $(this).parent('li').addClass('on');
        
        //set cookies
        var search_name = this.name;
        var search_id   = this.id;
        if(search_name == 'sport'){
            $.cookies.set('last_sport', search_id);
            last_sport_id = search_id;
        }else if(search_name == 'channel_id' || search_name == 'media_type'){
            $.cookies.set('last_type', search_id);
            last_type_id = search_id;
        }

        $("#page_num").val("1");
        // don't combine w keyword search 
        $("#tag_string1").val('');

        // set search_by and search_value
        $("#search_by").val(search_name);
        // conside revise, reuse above search_id and deprecate href
        $("#search_value").val($(this).attr("href"));
        $("#video_search_form").ajaxSubmit(form_options);
        return false;
    });

    // text box search
    var do_tag_search = function(){
        if($('#tag_string1').val().length > 2){
            $("#search_by").val('');
            $("#search_value").val('');
            $("#page_num").val("1");
            //form_options.resetForm = true;
            $("#video_search_form").ajaxSubmit(form_options);
            $('.search-links li').removeClass('on');
        }else{
            $('#confirm_msg').text("Keyword need to be at least 3 characters long");
        }
        return false;
    };

    // keyword search
    $("#tag_btn").click(do_tag_search);

    // in case of a submit button, enter pressed
    $("#video_search_form").submit(do_tag_search);

    // advanced search
    $("#advanced_search").click(function(){
        $("#page_num2").val("1");
        $("#advanced_search_form").ajaxSubmit(form_options);
        return false;
    });    

    //reset advanced search form
    $("#reset_advanced_form").click(function(){
        $("#advanced_search_form").resetForm();
        return false;
    });

    // some utilities
    // open/close advanced search block
    $('#displayAdvancedSearch').toggle(function(){
         $('#displayAdvancedSearch').html('Advanced Search <<');
        $("#adv-search-form").slideDown('slow');
    }, function(){
         $('#displayAdvancedSearch').html('Advanced Search >>');
        $("#adv-search-form").slideUp('slow');
    });
    $("#closeAdvancedSearch").click(function(){
        $('#displayAdvancedSearch').click();
        return false;
    });

    // appending some
    //$("#holder-story-ad").append("#story-ad");
    //$("#holder-bannder").append("#banner");

    //make search items (sports, channels, media_types) sortable
    //$('.search-links').sortable();

    // a status for ajax call, conside progressbar
    $('#confirm_msg').ajaxStart(function(){
        $(this).text('Loading...');
    });

    // apply label to tags search boxes
    $('label.tags').labelOver('over');

    //hide adv-search-form when regular search is used
    $('#tag_string1').focus(function(){
        if( $('#adv-search-form').is(':visible') )
            $('#displayAdvancedSearch').click();
    });

    // play_media: clicked the media
    $('.play_media').live('click',function(){
        var mid = this.id;
        //get json data on the media just clicked
        var mid_data = data_by_mid[mid];
        if(is_playable(mid_data)){
            $('html, boby').animate({scrollTop:0}, 'slow');
            sendVideoToPlayer(mid_data);
        }

        return false;
    });

    function is_playable(mid_data){
        // for now, just play the video
        return true;
    
        var is_free = mid_data.is_free;
        // play the video
        var license_ids = mid_data.license_ids;
        if(license_ids  == null) return true;

        var mid = mid_data.media_id;
        // a cookie for media_id, another for playback url
        $.cookies.set("media_id", media_id);
        $.cookies.set("playback_url", location.href);
        $.cookies.set("license_ids", license_ids);

        // user reg cookie
        var aa_user = $.cookies.get('aauser');
        if(aa_user == null) {
            $("#login-user-link").click();
            return false; 
        }

        // now check cookie
        ajax_options.data = ({psp_action: "get_ureg_id", user: aa_user});
        $.ajax(ajax_options);
        var uid = ajax_data.ureg_id;
        var email = ajax_data.email;

        // invalid user
        if(uid == null) {
            logout(); 
            $("#login-user-link").click();
            return false; 
        }

        //new cookie
        $.cookies.set("uid", uid);
        $.cookies.set("email", email);

        // check sub cookie
        var user_subs = $.cookies.get('user_subs');
        
        //check user_subs against license ids
        ajax_options.data = ({psp_action: "check_user_subs", lids: license_ids, subs: user_subs, uid: uid});
        $.ajax(ajax_options);
        // update user_subs cookie
        user_subs = ajax_data.user_subs;
        if(user_subs != null) $.cookies.set('user_subs', user_subs);

        var is_sub = ajax_data.subscription;
        if(is_sub == 'Y') return true;

        //create cookie with ureg_id, email, product_id
        //$.cookies.set("pre_card",uid + "_" + email + "_" + pids);

        // credit card purchase
        $("#psp_subs_msg").dialog('open');
    }
 
    $("#psp_subs_msg").dialog({
        title: 'Premier Content',
        bgiframe: false,
        width: 550,
        height: 390,
        modal: true,
        autoOpen: false,
        draggable: false,
        resizable: false,
        closeOnEscape: true,
        buttons: {
            Close: function(){
                $(this).dialog('close');
            }
        }

    });


    

});



function killStorePortal(){
    $("#vip-store").hide();
}

// main call back function for display video data
function displayVideo(data){

//deep link
if(data.media != ""){
    loadVideoPlayer(data.media);
}else{
    loadVideoPlayer();
}

var event_type = data.event_type;
if(event_type == 'live_pre') {
    //alert("Live Event");
    var html_bk = "<table class='calendar-vip'>";
    if(data.rows.length == 0){
         html_bk += "<tr class='calendar-date-vip'><td colspan='4'>There are no upcoming events.</td></tr>";
    }

    for(var i=0; i<data.rows.length; i++){
        var day = data.rows[i];
        html_bk += "<tr class='calendar-date-vip'><td colspan='4'>" + day.events[0].media_date + "</td></tr>";
        html_bk += "<tr class='calendar-headers-vip'><td>Sport</td><td>opp/event</td><td>Time</td><td>Coverage</td></tr>";

        for(var j=0; j<day.events.length; j++) {
            var row = day.events[j];
            var title = row.subtitle;
            var media_date = row.media_date;
            var media_time = row.media_time;
            var media_id   = row.media_id;
            var school_code = row.school_code;
            var sport_code = row.sport;
            var sport_short_name = row.short_name;
            var gt_link = row.gt_partial_url;
            var is_video = row.is_video;
            var media_id = row.media_id;

            var mid_key = "mid"+media_id;
    
            var media_type = is_video == 1 ? 'video' : 'audio';
            var img_icon =  "http://grfx.cstv.com/schools/usc/graphics/usc-09-"+ media_type + "-bullet.gif";

            html_bk += "<tr class='calendar-body-vip'><td width='185'><a href='/sports/" + sport_code + "/" + school_code + "-" + sport_code + "-body.html'>" + sport_short_name + "</a></td><td>" + title + "</td><td>" + media_time + "</td><td>";


            // media link 
            html_bk += "<a href='#' class='play_media' id='" + mid_key + "'><img src='" + img_icon + "' alt='"+ media_type + "' height='12' width='19'></a>&nbsp;&nbsp; ";
            // gt link
            if(gt_link != null)
                html_bk += "<a href=\"JavaScript:window.open('"+ gt_link + "','GameTrackermbasebl','toolbar=no,resizeable=no,scrollbars=no,width=976,height=700'); void('');\"><Gametracker><img src='http://grfx.cstv.com/schools/usc/graphics/usc-09-gt-bullet.gif' alt='gt' width='19' height='12' /></a>"; 

            html_bk += "</td></tr>";
        }
    }
    html_bk += "</table>";
    $("#video_content").html(html_bk);
    $("#confirm_msg").html('');
    $("#pager_top, #pager").hide();
    $("#carousel").hide();
    $("#no-carousel-events").hide();    
}else{
    var html_bk = "";
    var car_html= "";
    for(var i=0; i<data.rows.length; i++){
        var row = data.rows[i];
        var thumb = row.thumbnail_url;
        var title = row.subtitle;
        var media_date = row.media_date;
        var media_time = row.media_time;
        var media_id   = row.media_id;
        var school_code = row.school_code;
        var sport_code = row.sport;
        var sport_short_name = row.short_name;
        //var sport_name = row.sport_info.sport_name;
        var opp_logo = row.opp_logo;
        var state_flag = row.state_flag;
        var is_video   = row.is_video;
        var is_free    = row.is_free;

        // add to data_by_mid
        var mid_key = "mid"+media_id;
        data_by_mid[mid_key] = row;

        // spin off js action from link
        if(is_video == 1){
            play_thumb  = "<img src='" + thumb + "' border='0' alt='Thumbnail-Launch Video' width='140' height=105>";
            play_icon = "<img src='http://grfx.cstv.com/graphics/schools-10-vip-btn-play-video.gif' border='0' alt='"+title+"' />";
            play_btn = "<img src='http://grfx.cstv.com/graphics/vip-10-btn-watch.gif' border='0' alt='"+title+"' />";
        } else {
            play_thumb  = "<img src='" + thumb + "' border='0' alt='Thumbnail-Launch Audio' width='140' height=105>";
            play_icon = "<img src='http://grfx.cstv.com/graphics/vip-10-icon-audio.gif' border='0' alt='"+title+"' />";
            play_btn = "<img src='http://grfx.cstv.com/graphics/vip-10-btn-listen.gif' border='0' alt='"+title+"' />";
        }

        var play_link = "<a href='#' class='play_media' id='" + mid_key + "'>";
        var play_link_end = "</a>";
        if(state_flag == "Pre-Game"){
                play_link ="";
                play_link_end = "";
        } 

        if(state_flag == "Archived"){
            html_bk += "<div class='vip-thumb-wrap'><div class='vip-photo-block'>" + play_link;

            // thumbnail
            if(opp_logo == 1) { html_bk += "<div class='opp_logo'>"; }
            html_bk += play_thumb;
            if(opp_logo == 1) { html_bk += "</div>"; }
            html_bk += "</a>";

            // icon
            html_bk += "<div class='vip-play-bt'>" + play_icon +"</div></div>";

            // play btn
            html_bk += "<div class='vip-thumb-content'>" + play_link + play_btn + "</a>";
            html_bk += "<h1>" + title + "</h1>"+ sport_short_name + " | " + media_date + "</div></div>";
        }else {
            // fill jcarousel with data
            car_html += "<li>";
            car_html += "<div class='vip-thumb-wrap-car";
            if(state_flag == "Pre-Game"){car_html += " off2";}
            car_html += "'><div class='vip-photo-block-car'>" + play_link;

            if(opp_logo == 1) { car_html += "<div class='opp_logo'>"; }
            car_html += play_thumb;
            if(opp_logo == 1) { car_html += "</div>"; }
            car_html += play_link_end;
            car_html += "<div class='vip-play-bt-car'>" + play_icon +"</div></div>";
            car_html += "<div class='vip-thumb-content-car'>" + play_link + play_btn + play_link_end;
            car_html += "<h1>" + title + "</h1>"+ sport_short_name + " | " + media_date + " " + media_time + "</div></div>";

            car_html += "</li>";

        }
        // end carousel
     
    }
    $("#video_content").html(html_bk);

    if(car_html !=""){
        $("#carousel").show();    
        $("#mycarousel").html(car_html);  
        $('#mycarousel').jcarousel();
        $("#no-carousel-events").hide();
    }else{
        $("#carousel").hide();  
        $("#no-carousel-events").show();
    }

    //confirm msg
    if(data.no_pager){
        $("#confirm_msg").html('');
    } else {
        $("#confirm_msg").html(data.total_records + " record(s) found.");
    }

    // set pager
    // no_pager is MOST RECENT
    if(data.total_pages > 1){
        $("#pager_top, #pager").show();
        if(data.advanced_form){ 
            $("#pager").pager({ pagenumber: data.page_num, pagecount: data.total_pages, buttonClickCallback: PagerClick2 });
            $("#pager_top").pager({ pagenumber: data.page_num, pagecount: data.total_pages, buttonClickCallback: PagerClick2 });
            $('#pager_top .page-number').wrapAll('<div class="page-number-wrapper" />');
            $('#pager .page-number').wrapAll('<div class="page-number-wrapper" />');
        }else{
            $("#pager").pager({ pagenumber: data.page_num, pagecount: data.total_pages, buttonClickCallback: PagerClick });
            $("#pager_top").pager({ pagenumber: data.page_num, pagecount: data.total_pages, buttonClickCallback: PagerClick });
            $('#pager_top .page-number').wrapAll('<div class="page-number-wrapper" />');
            $('#pager .page-number').wrapAll('<div class="page-number-wrapper" />');
        }
    }else{
        $("#pager_top, #pager").hide();
    }
} // end event_type if


}

// pager callback function
function PagerClick(num){
    $("#page_num").val(num);
    $("#video_search_form").ajaxSubmit(form_options);
    return false;
}

function PagerClick2(num){
    $("#page_num2").val(num);
    $("#advanced_search_form").ajaxSubmit(form_options);
    return false;
}

// a labelOver plugin
// by http://remysharp.com/2007/03/19/a-few-more-jquery-plugins-crop-labelover-and-pluck/#labelOver
jQuery.fn.labelOver = function(overClass) {
    return this.each(function(){
        var label = jQuery(this);
        var f = label.attr('for');
        if (f) {
            var input = jQuery('#' + f);
            
            this.hide = function() {
              label.css({ textIndent: -10000 })
            }
            
            this.show = function() {
              if (input.val() == '') label.css({ textIndent: 0 })
            }

            // handlers
            input.focus(this.hide);
            input.blur(this.show);
          label.addClass(overClass).click(function(){ input.focus() });
            
            if (input.val() != '') this.hide(); 
        }
    })
}


