var flashReady = new Array();
var glo_stream_file_name;
var glo_stream_title;
var glo_stream_desc;
var glo_stream_id;
var glo_stream_context_id;
var glo_current_channel;
var glo_current_channel_id;
var glo_stream_url;
var glo_stream_category;
var glo_vod_mode    = 'vod';
var glo_live_mode   = 'live';
var glo_stream_netrating_url;
var playing_attr = "player";
//Thickbox global variables declaration
var emailThisHref = "/servlet/popupPage?view=emailThis";
var userFeedbackBoxHref = "/servlet/popupPage?view=userFeedbackBox";
var thickboxIframeEmail = "&TB_iframe=true&height=500&width=470&modal=true";
var thickboxIframeFeedBack = "&TB_iframe=true&height=475&width=500&modal=true";
var vodAdsController = "";
var vodAdsUrl = "/servlet/adsVideo/?stream=:contentBeanId&channel=:channelContentId";
var vodAdsUrl2 = "/servlet/adsVideo/?stream=";
var live_channel  ="live_channel";
var other_channel ="other_channel";
var tablive         = "tab_live";
var tabvod          = "tab_vod";
var tabmostrecent   = "tab_mostrecent";
var tabVodMostRecent= "tab_vod_mostrecent"
var rsSI="http://www.razor.tv";

////////////////////////////////////////////////////////////////////////////////
// initial configuration
var currTab         = tablive;
var totalTransPanel = 2;
var currentPlayingIndex = 0;
////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////
//to check is the videoBox fully loaded before update the global variable
var isVideoBoxFullyLoaded=false;
///////////////////////////////////////////////////////////////////////////

var glo_streamType = "";
var embedText = '';
function initComplete(player) {
    flashReady[player] = true;
}

//Function to update the stream from param
function loadComment() {
    $jq(document).ready(loadCommentInFirstLoad);
}

// change tab color
function changeTabsLayout(divname) {
   var divNames = new Array(tablive, tabvod, tabmostrecent);
   var spanLink;
   var spanNoLink;
   var div;
   var i;

   for(i=0; i<divNames.length; i++) {
    div = document.getElementById(divNames[i]);
    spanLink = document.getElementById(divNames[i]+"_link");
    spanNoLink = document.getElementById(divNames[i]+"_nolink");

    if(divname == divNames[i]) {
        currTab = divname;
        div.style.background = "#222222";
        spanLink.style.display = "none";
        spanNoLink.style.display = "block";
    } else {
            div.style.background = "#4C4C4C";
            spanLink.style.display = "block";
        spanNoLink.style.display = "none";
    }
   }
}

function appendParams(url, params){
    if (url.indexOf("?") >= 0) {
        var paramsPortion = url.substring(url.indexOf("?") + 1);
        if (paramsPortion.indexOf("=") >= 0) {
            return url + "&" + params;
        } else {
            return url + params;
        }
    } else {
        return url + "?" + params;
    }
}

// Javascript trim function
function trim(stringToTrim) {
    return stringToTrim.replace(/^\s+|\s+$/g,"");
}

function trimToFixedSize(stringToTrim, size){
    return stringToTrim.substring(0,size - 1) + "...";
}

function getRequestWithScript(url, div, _operation, _id) {
    var millis = new Date().getTime();
    var urlWithRnd = appendParams(url, "timestamp=" + millis);
    $jq.ajax({
        type: "GET",
        url: urlWithRnd,
        beforeSend: function(){
            $jq("#" + div).html("<div class='loading_red'></div>");
        },
        success: function(data){
        	if(_operation != undefined) {
        		showHashDiv(_operation, data, _id);
        	}else{
        		document.getElementById(div).innerHTML = data;
        		$jq( '#stream-content' ).children( ':visible' ).hide();
        		$jq( '#'+div ).show();
	            	evalJScript(data);
        	}
        }
    });
}

//For BBQ------------------------------
function showHashDiv(_operation, text, _id) {
	$jq( '#stream-content' ).children( ':visible' ).hide();
	
	if(_operation=='new'){
		showNew(text);
   	}else if(_operation=='override'){
   		showOverride(text, _id);
   	}
}

function showNew(text){
	$jq('.hashDiv:last-child').show();
	$jq('.hashDiv:last-child').empty().append(text);
}

function showOverride(text, _id) {
	$jq('.hashDiv[id=' + _id + ']').show();
	$jq('.hashDiv[id=' + _id + ']').empty().append(text);
}
//For BBQ------------------------------

function getRequestExcScript(url) {
    var millis = new Date().getTime();
    var urlWithRnd = appendParams(url, "timestamp=" + millis);
    $jq.ajax({
        type: "GET",
        url: urlWithRnd,
        success: function(data){
            evalJScript(data);
        }
    });
}

function postResponseWithScript(url, div) {
    $jq.ajax({
        type: "POST",
        url: url,
        beforeSend: function(){
            $jq("#" + div).html("<div class='loading_red'></div>");
        },
        success: function(data){
            document.getElementById(div).innerHTML = data;
            evalJScript(data);
        }
    });
}

function evalJScript(data){
  var scripts = getJavaScript(data);
    return evalJavaScript(scripts);
}

function getJavaScript(data){
    var script, scripts;
    scripts = [];
    var regexp = /<script[^>]*>([\s\S]*?)<\/script>/gi;
    while ((script = regexp.exec(data))) {
    scripts.push(script[1]);
    }
    return scripts;
}

function getAlertJavaScript(scripts){
  var alerts = [];
    for (i=0;i<scripts.length;i++) {
    if (scripts[i].indexOf('alert') != -1) {
        alerts.push(scripts[i]);
    }
    }
    return alerts;
}

function evalJavaScript(scripts){
  scripts = scripts.join('\n');
    if (scripts) (window.execScript) ? window.execScript(scripts) : window.setTimeout(scripts, 0);
  return true;
}

function getRequest(url, div) {
    var millis = new Date().getTime();
    var urlWithRnd = appendParams(url, "timestamp=" + millis);
    $jq.get(urlWithRnd, function(data){
        document.getElementById(div).innerHTML = data;
    });
}

function postRequest(url, div) {
    $jq.post(url,
        function(data){
        document.getElementById(div).innerHTML = data;
    });
}

function redirectTo(url) {
  window.location=url;
}

function getStreamNetratingURL(sStreamNetRatingUrl, sGlo_stream_category, sNetrating_stream_category) {
    if (sGlo_stream_category == "") {
        sStreamNetRatingUrl = sStreamNetRatingUrl.replace(sNetrating_stream_category);
    } else {
        if (sGlo_stream_category == "WHAT WILL YOU DEFEND") {
            sStreamNetRatingUrl = sStreamNetRatingUrl.replace(sNetrating_stream_category, "-CLIENT");
        } else if (sGlo_stream_category == "MOF DEBATE CHALLENGE") {
            sStreamNetRatingUrl = sStreamNetRatingUrl.replace(sNetrating_stream_category, "-CLIENT2");
        } else if (sGlo_stream_category == "VIDEO GREETINGS") {
            sStreamNetRatingUrl = sStreamNetRatingUrl.replace(sNetrating_stream_category, "-GENERAL");
        } else {
            sStreamNetRatingUrl = sStreamNetRatingUrl.replace(sNetrating_stream_category, "-" + sGlo_stream_category);
        }
    }
    return sStreamNetRatingUrl;
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

//switch the image's src
function swImg(imgId, str){
    $jq("#"+imgId).attr('src', str);
}

function changeTitle(newTitle)
{
    document.title="RAZORTV - "+ unescapeXML(newTitle);
}

//Unescape XML in javascript
function unescapeXML(stringToUnescaped){
    stringToUnescaped = stringToUnescaped.replace(/&lt;/g,"<");
    stringToUnescaped = stringToUnescaped.replace(/&gt;/g,">");
    stringToUnescaped = stringToUnescaped.replace(/&amp;/g,"&");
    stringToUnescaped = stringToUnescaped.replace(/&#039;/g,"'");
    stringToUnescaped = stringToUnescaped.replace(/&#034;/g,'"');
    return stringToUnescaped;
}

function loadScript(url)
{
    var s = document.createElement("script");
    s.type = "text/javascript";
    s.language = "javascript";
    s.src = url;
    document.getElementsByTagName("head")[0].appendChild(s);
}

function callAnalytics() {
    callNetRatings();
    callGoogleAnalytics();
}

function callNetRatings() {
    var strHref = window.location.href;
    var url;
    if (strHref.indexOf("?") > -1 ){
        url = strHref.substr(0, strHref.indexOf("?")).toLowerCase();
    }
    else {
        url = strHref;
    }
    if(self._rsEvent && self._rsCG) {
        _rsEvent(url, _rsCG);
    }
}

function callGoogleAnalytics() {
    if (self._gat && _gat._getTracker && self.gaJsUserId) {
        try {var pageTracker = _gat._getTracker(gaJsUserId);pageTracker._trackPageview();} catch(err) {}
    }
}

function changeIcon(e, type,iconlink) {
    var title = $jq(e.target).attr("name");
    if (title == null || title.indexOf("_icon") < 0) {
        title = $jq(e.target).parent(iconlink).attr("name");
    }
    var iconName = title;
    var mouseOverIconName = iconName + "_mouseover";
    var mouseOutIconName = iconName + "_mouseout";
    var toRemoveClass;
    var toAddClass;

    if (type == "mouseover") {
        toRemoveClass = mouseOutIconName;
        toAddClass = mouseOverIconName;
    } else if (type == "mouseout") {
        toRemoveClass = mouseOverIconName;
        toAddClass = mouseOutIconName;
    } else
        return;

    if ($jq(e.target).hasClass(iconName)) {
        $jq(e.target).removeClass(toRemoveClass);
        $jq(e.target).addClass(toAddClass);
    } else {
        $jq(e.target).children("." + iconName).removeClass(toRemoveClass);
        $jq(e.target).children("." + iconName).addClass(toAddClass);
    }
}

/**
 * The parameter disableOrHides is array object ,the key can contains anyone item in two series
 * series one :"disableall","disablesynopsis","disableemail","disablepoll","disableembed","disablecomment","disableshare","disablebnt"
 * series two :"hideall","hidesynopsis","hideemail","hidepoll","hideembed","hidecomment","hideshare","hidebnt"
 * each default value was false,If you want to disable one of them ,you should be set value "true" for it,such as
 * <code>
 * var disableOrHides = {disableall:true,disablesynopsis:true,hideall:true};
 * </code>
 */
function initSWF(contextPath,player,div,disableOrHides){
        var playerWidth = '576';
        var playerHeight = '385';

        var s1 = new SWFObject(contextPath + "/flashplayer/razortv2.swf",player,playerWidth,playerHeight,"8","#000000");
        s1.addParam("allowfullscreen","true");
        s1.addParam("allowscriptaccess","always");
        // wmode will crash ff2
            s1.addParam("wmode", "transparent");
        if(typeof(disableOrHides) != undefined &&  typeof(disableOrHides) == "object"){
            for(paramName in disableOrHides){
                var paramVal = disableOrHides[paramName];
                if(typeof(paramVal) != undefined){
                    s1.addVariable(paramName,paramVal);
                }
            }
        }

        s1.addVariable("player",player);
        s1.addVariable("buffer", glo_stream_buffer_time);
        s1.write(div);
}

function loadLiveSWF(contextPath, player, div, disableOrHides, streamId, topTitle){
    var playerWidth = '576';
    var playerHeight = '385';

    var s1 = new SWFObject(contextPath + "/flashplayer/razortv2.swf", player, playerWidth, playerHeight, "8", "#000000");
    s1.addParam("allowfullscreen","true");
    s1.addParam("allowscriptaccess","always");
    // wmode will crash ff2
    if($jq.browser.msie || $jq.browser.safari) {
        s1.addParam("wmode", "transparent");
    }

    s1.addVariable("videoid", streamId);
    s1.addVariable("playmode", glo_live_mode);
    s1.addVariable("id_lRes", streamLowResolution);
    s1.addVariable("id_hRes", streamHighResolution);
    s1.addVariable("toptitle", topTitle);
    s1.addVariable("player", player);
    s1.addVariable("buffer", glo_stream_buffer_time);
    s1.addVariable("file", liveStreamPath);
    s1.addVariable("warn_delay", glo_warn_delay);
    s1.addVariable("warn_timeout", glo_warn_timeout);

    if(typeof(disableOrHides) != undefined &&  typeof(disableOrHides) == "object"){
        for(paramName in disableOrHides){
            var paramVal = disableOrHides[paramName];
            if(typeof(paramVal) != undefined){
                s1.addVariable(paramName,paramVal);
            }
        }
    }

    s1.write(div);
}

function thisMovie(movieName) {
    if(navigator.appName.indexOf("Microsoft") != -1) {
        return window[movieName];
    } else {
        return document[movieName];
    }
}

//global variable
function jumpToAnchor(pageLevel) {
   var loginTip = "Please log in here";
   showToolTipWithPageLevel(pageLevel,loginTip);
   window.scrollTo(0,0);
}

//switching between different panels
function updateVideoSlide(panel, contentId){
    var commentPanel =$jq("#commentPanel");
    var embedPanel = $jq("#embedPanel");
    var sharePanel = $jq("#sharePanel");
    var playlist = $jq("#playlist");
    var ratingPanel = $jq("#ratingPanel");
    var pollPanel = $jq("#pollPanel");
    var emailPanel = $jq("#emailPanel");

    if (panel == 'commentPanel'){
       commentPanel.css("display","block");
       embedPanel.css("display","none");
       sharePanel.css("display","none");
       ratingPanel.css("display","none");
       pollPanel.css("display","none");
       emailPanel.css("display","none");
       playlist.css("display","none");
       showCommentPanel(contentId);
  }
    else if (panel == 'embedPanel'){
        playlist.css("display","none");
        embedPanel.css("display","block");
        sharePanel.css("display","none");
        ratingPanel.css("display","none");
        pollPanel.css("display","none");
        emailPanel.css("display","none");
        commentPanel.css("display","none");
        getVideoEmbedContent(contentId);
    }
    else if (panel == 'sharePanel'){
        commentPanel.css("display","none");
        sharePanel.css("display","block");
        playlist.css("display","none");
        embedPanel.css("display","none");
        ratingPanel.css("display","none");
        pollPanel.css("display","none");
        emailPanel.css("display","none");
        getSharePanelContent(contentId);
    }
    else if (panel == 'ratingPanel'){
        ratingPanel.css("display","block");
        commentPanel.css("display","none");
        sharePanel.css("display","none");
        playlist.css("display","none");
        embedPanel.css("display","none");
        pollPanel.css("display","none");
        emailPanel.css("display","none");
        updateRatingPanelContent(contentId);
    }
    else if (panel == 'pollPanel'){
        pollPanel.css("display","block");
        ratingPanel.css("display","none");
        commentPanel.css("display","none");
        sharePanel.css("display","none");
        playlist.css("display","none");
        embedPanel.css("display","none");
        emailPanel.css("display","none");
        updatePollThisHref(contentId);
    }
    else if (panel == 'emailPanel'){
        emailPanel.css("display","block");
        playlist.css("display","none");
        pollPanel.css("display","none");
        ratingPanel.css("display","none");
        commentPanel.css("display","none");
        sharePanel.css("display","none");
        embedPanel.css("display","none");
        updateEmailThisHref(contentId);
    }

    callAnalytics();
}

function hidePanel(panel){
    //alert(panel);
    var panel = $jq("#"+panel);
    var playList = $jq("#playlist");
    panel.css("display","none");
    playList.css("display","block");
}

function pauseTheVideo(player){
  switchPlay(player,"pause");
}

function resumeTheVideo(player){
  switchPlay(player,"resume");
}

function switchPlay(player,fun) {
  thisMovie(player).playFunction({fct:fun});
}

function videoURLEmail(contentId) {
     updateVideoSlide('emailPanel', "contentbean:" + contentId);
}

function videoEmbed(contentId) {
     updateVideoSlide('embedPanel', "contentbean:" + contentId);
}

function videoComment(contentId) {
     updateVideoSlide('commentPanel', "contentbean:" + contentId);
}

function videoShare(contentId) {
    updateVideoSlide('sharePanel', "contentbean:" + contentId);
}

function videoPoll(contentId) {
    updateVideoSlide('pollPanel', "contentbean:" + contentId);
}
function videoRate(contentId) {
    updateVideoSlide('ratingPanel', "contentbean:" + contentId);
}

/***
 * Play video main method
 */
function playVideo(xmlUrl, player){
  thisMovie(player).playVideo(xmlUrl);
}

function beforePlay(player, containerPrefix, videoId, relatedUrl, relatedContainerPrefix, analyticsUrl){
    //if at section page will changed synopsis for current playing video
    if($jq("#section_rating").get(0) != undefined){
        obtainRating("contentbean:" + videoId, true);
    }

    //Refresh related panel if applicable
    if($jq("#" + relatedContainerPrefix).get(0) != undefined){
        var params = "view=asRelatedVideos&player=" + player + "&relatedContainerPrefix=" + relatedContainerPrefix;
        var refreshRelatedUrl = appendParams(relatedUrl, params);
        postResponseWithScript(refreshRelatedUrl, relatedContainerPrefix);
    }

    //refresh black popup boxes
    $jq('div[id*="Panel"]').each(function(){
        var idVal = $jq(this).attr("id");
        if($jq(this).css("display") == "block"){
           updateVideoSlide(idVal,"contentbean:" + videoId);
        }
    });

    //Added highLight css to current playing video
    if(containerPrefix.indexOf('videoListPage') >= 0) {
        $jq("#" + containerPrefix + "_" + videoId).addClass("videoListBoxPageHighLight");
    }
    else if(containerPrefix.indexOf('playListBoxPage') >= 0) {
        $jq("#" + containerPrefix + "_" + videoId).addClass("playListBoxPageHighLight");
    }

    //Set scroll position
    if($jq("#" + containerPrefix + "_scroll").get(0) != undefined){
        setScrollPostion(containerPrefix,videoId);
    }
    
    
    //call analytics tagging
    getRequest(analyticsUrl, player + "_analytics");

}

function afterPlay(player, containerPrefix, videoId, analyticsUrl){
  //Deleted highLight css from current played video
  if(containerPrefix.indexOf('videoListPage') >= 0) {
    $jq("#" + containerPrefix + "_" + videoId).removeClass("videoListBoxPageHighLight");
  }else if(containerPrefix.indexOf('playListBoxPage') >= 0) {
    $jq("#" + containerPrefix + "_" + videoId).removeClass("playListBoxPageHighLight");
  }
}

function setScrollPostion(containerPrefix,videoId){
  var scrollDiv = $jq("#" + containerPrefix + "_scroll").get(0);

  var videoSize = $jq("a[id*='" + containerPrefix + "_']").size();
  var scrollHeight = $jq("#" + containerPrefix + "_" + videoId).height() * videoSize;
  var unitHeight = 0;

  if(videoSize>0 && videoSize > 4){
    unitHeight = (scrollDiv.scrollHeight - scrollDiv.clientHeight)/(videoSize - 4);
  }

  var index = 0;
  $jq("a[id*='" + containerPrefix + "_']").each(function(i){
    if($jq(this).attr("id") == containerPrefix + "_" + videoId){
      index = i;
      return false;
    }
  });

  var offset = unitHeight * index + 0.4*index;
  scrollDiv.scrollTop = offset;
}


function changeClass(bntId, removeStr, str){
   $jq("#" + bntId).removeClass(removeStr);
   $jq("#" + bntId).addClass(str);
}

function showPlayVideo(videoLink,player){
  //#razortv #razortvSection
  if($jq("#razortvArchive").length > 0){
  }else{
  	var pos=$jq("#topmast").position();
  	var top = pos.top;
    var left = pos.left;
    window.scrollTo(left,top);
  }
  playVideo(videoLink,player);
}
