var thevid;
var stop;
var _size = '320x240';

// to load archived stories
function loadarchivedstory() {
  var archivexml = document.URL.substring(document.URL.indexOf('?')+1, document.URL.length);
  if (archivexml.match(/\.xml$/)) { loadfile( archivexml, loadarchivedxml );  }
}

function loadarchivedxml( xml ) {
  var xmlo = xml2obj( xml );
  if( !xmlo.xml ) { return; }
  _append(_getel( 'title' ), _newtext(xmlo.xml.title.value));
  _getel( 'story' ).innerHTML = xmlo.xml.story.value.replace(/\r?\n/g, '<br>');

  var jsdate = new Date( );
  jsdate.setTime( xmlo.xml.date.value*1000 );
  formatteddate = jsdate.toUTCString();

  _append(_getel( 'date' ), _newtext(formatteddate));
}

var donevid = 0;
function selectvideo( val, franchise, vid_id, stopimg, a, b, c, d, size ) {
  if( donevid ) return;
  donevid = 1;
  if( val == 'none' ) return;
  stop = stopimg;
  thevid = val;
  if( size ) _size = size;
  loadfile( "/template/cgi-bin/wcm/wcm_video.pl?pop=getads&loc="+curstation+"&v="+vid_id+'&f='+franchise, gotads );
}

function gotads( xml ) {
  var xmlo = xml2obj( xml );
  
  if( !xmlo.xml ) createvideo2( thevid, '', '', stop );
  else {
    var text = xmlo.xml.val ? xmlo.xml.val.value : ',';
    var ads = text.split(',');
    createvideo2( thevid, ads[0], ads[1], stop, 0, xmlo.xml.beforet.value, xmlo.xml.aftert.value, 1, _size );
  }
}

function createvideo( vid, ops ) {
  createvideo2( vid, ops['preroll']||'', ops['postroll']||'', ops['stopimg']||'', ops['nocontrols']||0, ops['pretype']||'',ops['posttype']||'', ops['autoplay']||0, ops['size']||0 );
}

function createvideo2( val, ad1, ad2, stopimg, nocontrols, prerolltype, postrolltype, autoplay, size ) {
  if( !size ) size = '320x240';
  var xstart    = size.indexOf( 'x' );
  var width     = size.substring( 0, xstart );
  var height    = size.substr( xstart + 1 ) * 1;// + 20;
  var ads = genads( ad1, ad2, prerolltype, postrolltype );
  createvid2( val + '.flv', width, height, '', stopimg, ads, 0 );
}
function rvid( num ) {
  return Math.floor(Math.random()*num);
}
function mixup(arr) {
  if( !arr ) return 0;
  var tmp, cur, i = arr.length;
  
  while( --i ) {
    cur = Math.floor( Math.random() * ( i + 1 ) );
    tmp = arr[ cur ];
    arr[ cur ] = arr[ i ];
    arr[ i ] = tmp;
  }

  return arr;
}

function genads( ad1, ad2, beforetype, aftertype ) {
  var ads_before = ad1.split('^');
  var ads_after  = ad2.split('^');
  var before = [];
  var after  = [];
  var b1, b2, a1, a2;
  switch( beforetype ) {
    case 'linked':
      var vid = rvid( ads_before.length );
      b1 = b2 = a1 = a2 = vid;
      break;
    case 'mixed': ads_before = mixup( ads_before );
    case 'all':
      b1 = a1 = 0;
      b2 = ads_before.length - 1;
      a2 = ads_after.length - 1;
      break;
    case 'rand':
      b1 = b2 = rvid( ads_before.length );
      break;
  }
  switch( aftertype ) {
    case 'mixed': ads_after = mixup( ads_after );
    case 'all':
      a1 = 0;
      a2 = ads_after.length;
      break;
    case 'rand':
      a1 = a2 = rvid( ads_after.length );
      break;
  }
  
  for( var i = b1; i <= b2; i++ ) {
    var val = ads_before[i];
    if( val && val != 'noad' ) {
      var str = curstation + '/' + ads_before[ i ];
      before.push( str.substr( 0, str.length - 4 ) );
    }
    else before.push( 'noad' );
  }
  for( var i = a1; i <= a2; i++ ) {
    var val = ads_after[i];
    if( val && val != 'noad' ) {
      var str = curstation + '/' + ads_after[ i ];
      after.push( str.substr( 0, str.length - 4 ) );
    }
    else after.push( 'noad' );
  }
  
  return { before: before, after: after };
}
function createvid2(vid, wid, heg, id, stopimg, ads, autop ) {
  var el = _getel(id||'vidwin');
  _clear( el );
  //var im = _newimg( stopimg );
  //el.appendChild( im );
  var mp4 = 0;
  if( typeof(_mp4) != 'undefined' ) {
    mp4 = _mp4;
  }
  
  vid = fixvid( vid );
  if( mp4 ) vid = 'mp4:'+vid+'.mp4';
  var vidlist = [];
  if( ads.before ) {
    for( var i=0;i<ads.before.length;i++ ) {
      var ad1 = ads.before[ i ];
      if( mp4 && ad1 != 'noad' ) ad1 = 'mp4:'+ad1+'.mp4';
      if( ad1 != 'noad' ) vidlist.push( { url: ad1, onStart: function(clip) { this.getControls().enable( { scrubber: false } ); } } );
    }
  }
    vidlist.push( { url: vid, onStart: function(clip) { this.getControls().enable( { scrubber: true  } ); } } );
  if( ads.after ) {
    for( var i=0;i<ads.after.length;i++ ) {
      var ad2 = ads.after[ i ];
      if( mp4 && ad2 != 'noad' ) ad2 = 'mp4:'+ad2+'.mp4';
      if( ad2 != 'noad' ) vidlist.push( { url: ad2, onStart: function(clip) { this.getControls().enable( { scrubber: false } ); } } );
    }
  }
  vidlist[0].autoPlay = true;
  var myflowkey = '#@bba3eed06912fbc0186';
  if( typeof( _flowkey ) != 'undefined' ) {
    myflowkey = _flowkey;
  }
  var back;
  if( stopimg.indexOf(' ') == -1 ) {
    back = {
      background: 'url(' + stopimg + ') no-repeat 50pct 50pct' // this does not work with spaces
      //backgroundImage: 'url(' + stopimg + ')'
      //backgroundRepeat: 'no-repeat',
      //backgroundPosition: '50pct 50pct'
    }
  }
  else {
    back = {
      //background: 'url(' + stopimg + ') no-repeat 50pct 50pct'
      backgroundImage: 'url(' + stopimg + ')'
      //backgroundRepeat: 'no-repeat',
      //backgroundPosition: '50pct 50pct'
    }
  }
  var ob = $f( el, { src:"/template/flashplayers/fpcomm/swf/flowplayer.commercial.swf", wmode: 'transparent', width: wid, height: heg }, {
    plugins:  { 
      rtmp: {                                 
        url: '/template/flashplayers/fpcomm/swf/flowplayer.rtmp.swf', 
        netConnectionUrl: 'rtmp://fms.sbgnet.com/vod'
      },
      controls: {
        volume: true,
        time: false,
        autoHide: 'always'
      }
    },
    canvas: back,
    play: {
      url: '/template/wcm/imgs/galscroll/movieicon.png',
      width: 50,
      height: 50,
      replayLabel: null
    },
    clip: {
      autoPlay: true,
      provider: 'rtmp',
      scaling: 'scale',
      width: wid,
      height: heg
    },
    playlist: vidlist,
    key: myflowkey
  });
}

function fixvid( file ) {
  if( !file || file == 'noad' ) return '';
  var ext = file.substring( file.length -4  );
  if( ext != '.mp4' ) { file = curstation + '/' + file.substring( 0, file.length - 4 ); }
  else { file = 'mp4:' + curstation + '/' + file; }
  return file;
}

function _newimg( url ) {
  var img = document.createElement('img');
  img.src = url;
  return img;
}
function _newtext( text )  { return document.createTextNode( text );      }
function _newel( name )    { return document.createElement( name );       }
function _getel( id )      { return document.getElementById( id );        }
function _del( domObject ) { domObject.parentNode.removeChild(domObject); }
function _append( loc ) {
  var len = arguments.length;
  if (! loc) { return; }
  for( var i = 1; i < len; i++ ) { loc.appendChild( arguments[ i ] ); }
  return loc;
}
function _clear( domObject ) {
  while( domObject.firstChild ) { domObject.removeChild( domObject.firstChild ); }
}

function loadfile( filename, callback, server ) {
  var rand_tmp = new String( Math.random() );
  var id       = rand_tmp.substring( 2, 11 );
  var XMLobj;
  
  XMLobj = createxml( callback );
  
  if( !XMLobj ) return 0;

  filename += ( filename.indexOf( '?' ) != -1 ) ? '&' : '?'; //allow for parameters in fname
  filename += id;
  if( !XMLobj.diff ) XMLobj.load( filename );
  else {
    XMLobj.open( 'GET', filename );
    XMLobj.send();
  }
  return 1;
}

// Create XML Request Object
function createxml( callback ) {
  var xmlDoc;
  
  if ( document.implementation && document.implementation.createDocument ) {
    xmlDoc        = document.implementation.createDocument( "", "", null );
    //xmlDoc.onload = responsereg.bind( { callback: callback, xmlobj: xmlDoc } );
    xmlDoc.addEventListener("load", responsereg.bind( { callback: callback, xmlobj: xmlDoc } ), false );
    if( !xmlDoc.load ) xmlDoc = 0;
  }
  else if ( window.ActiveXObject ) {
    xmlDoc = new ActiveXObject( "Microsoft.XMLDOM" );
    xmlDoc.onreadystatechange = responseie.bind( { callback: callback, xmlobj: xmlDoc } );
  }
  if( !xmlDoc && XMLHttpRequest ) {
    xmlDoc = new XMLHttpRequest;
    xmlDoc.onreadystatechange = responseie.bind( { callback: callback, xmlobj: xmlDoc } );
    xmlDoc.diff = 1;
  }
  xmlDoc.async = "false";

  return xmlDoc;
}

function responseie() {
  if( this.xmlobj.readyState == 4 ) response( this.xmlobj, this.callback );
}
function responsereg() {
  response( this.xmlobj, this.callback );
}
function response( xmlobj, callback ) {
  if( xmlobj.responseXML ) xmlobj = xmlobj.responseXML;
  callback( xmlobj );
}

// [some function].bind( newthis )
// Creates a reference to [some function] with the scope of newthis
Function.prototype.bind = function() {
  var __method = this,
      args     = arg2A( arguments ),
      object   = args.shift();
  return function() {
    return __method.apply( object, args.concat( arg2A( arguments) ) );
  }
}

function arg2A( arg ) {
  var ar = new Array;
  for( var i = 0; i < arg.length; i++ ) {
    ar.push( arg[ i ] );
  }
  return ar;
}

function xml2obj(A) {
  var B={},C={},D=[];if(A.attributes){if(A.attributes.length){for(var k=0;k<A.attributes.length;
  k++){var E={};B[A.attributes[k].nodeName]=E;E.value=A.attributes[k].nodeValue;E.att=1;}}};if(
  allTextChildren(A)){B.value='';for(var i=0;i<A.childNodes.length;i++){B.value+=A.childNodes[i]
  .nodeValue;}}else if(A.childNodes.length){var F,G='';for(var i=0;i<A.childNodes.length;i++
  ){F=A.childNodes[i];if(F.nodeType==4)G=F.nodeValue;if(F.nodeType!=1)continue;if(!C[F.nodeName]
  ){C[F.nodeName]=[];D.push(F.nodeName);}C[F.nodeName].push(F);};if(G){B.value=G;}else for(var i
  =0;i<D.length;i++){var H=D[i];var I=C[H].length;if(I>1||C['multi_'+H]){B[H]=[];for(var i2=0;i2
  <I;i2++){B[H].push(xml2obj(C[H][i2]));}}else B[H]=xml2obj(C[H][0]);}}return B;
}
    
//Returns true iff all children of the node are text nodes
function allTextChildren( node ) {
  if( !node.childNodes        ) return 0;// Possibly not normal node
  if( !node.childNodes.length ) return 0;// No children
  for( var i = 0; i < node.childNodes.length; i++) {
    if( node.childNodes[ i ].nodeType != 3 ) return 0;// A non-text child
  }
  return 1;
}

function _getbyclass( find, rootel ) {
  rootel = rootel || document.body;
  find = ' ' + find + ' ';
  var els = rootel.getElementsByTagName('*'), found = [];
  for( var i = 0; i < els.length; i++ ) {
    var check = ' ' + els[i].className + ' ';
    if( check.indexOf( find ) != -1 ) found.push( els[ i ] );
  }
  return found;
}

function arg2A(arg){
var ar=new Array;
for(var i=0;i<arg.length;i++){
ar.push(arg[i]);
}
return ar;
}
Function.prototype.bind=function(){
var __method=this,
args=arg2A(arguments),
object=args.shift();
return function(){
return __method.apply(object,args.concat(arg2A(arguments)));
}
}
