//=================================================================================
//===  Winster Scripts
//=================================================================================

var MONTH_NAMES=new Array('January','February','March','April','May','June','July','August','September','October','November','December','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
var DAY_NAMES=new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sun','Mon','Tue','Wed','Thu','Fri','Sat');
function LZ(x) {return(x<0||x>9?"":"0")+x}

function formatDate(date,format) {
	format=format+"";
	var result="";
	var i_format=0;
	var c="";
	var token="";
	var y=date.getYear()+"";
	var M=date.getMonth()+1;
	var d=date.getDate();
	var E=date.getDay();
	var H=date.getHours();
	var m=date.getMinutes();
	var s=date.getSeconds();
	var yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,H,KK,K,kk,k;
	// Convert real date parts into formatted versions
	var value=new Object();
	if (y.length < 4) {y=""+(y-0+1900);}
	value["y"]=""+y;
	value["yyyy"]=y;
	value["yy"]=y.substring(2,4);
	value["M"]=M;
	value["MM"]=LZ(M);
	value["MMM"]=MONTH_NAMES[M-1];
	value["NNN"]=MONTH_NAMES[M+11];
	value["d"]=d;
	value["dd"]=LZ(d);
	value["E"]=DAY_NAMES[E+7];
	value["EE"]=DAY_NAMES[E];
	value["H"]=H;
	value["HH"]=LZ(H);
	if (H==0){value["h"]=12;}
	else if (H>12){value["h"]=H-12;}
	else {value["h"]=H;}
	value["hh"]=LZ(value["h"]);
	if (H>11){value["K"]=H-12;} else {value["K"]=H;}
	value["k"]=H+1;
	value["KK"]=LZ(value["K"]);
	value["kk"]=LZ(value["k"]);
	if (H > 11) { value["a"]="PM"; }
	else { value["a"]="AM"; }
	value["m"]=m;
	value["mm"]=LZ(m);
	value["s"]=s;
	value["ss"]=LZ(s);
	while (i_format < format.length) {
		c=format.charAt(i_format);
		token="";
		while ((format.charAt(i_format)==c) && (i_format < format.length)) {
			token += format.charAt(i_format++);
			}
		if (value[token] != null) { result=result + value[token]; }
		else { result=result + token; }
		}
	return result;
	}

function trim(stringToTrim) {
    return stringToTrim.replace(/^\s+|\s+$/g,"");
}

//=================================================================================
//=== This section is called by Flex so it is an API and needs to be kept in synch 
//=== with the Flex source code.  See WinsterExternalInterface
//=================================================================================

function openWindow(url, target, modifiers) {
   //alert(url);
   open(url,target,modifiers);
}



function bookmarkPage() {
//	if ((typeof window.sidebar == "object") && (typeof window.sidebar.addPanel == "function")) {
	if (window.sidebar) {
	   alert("Please press CTRL+D or the Bookmarks menu to bookmark this page");
	   //window.sidebar.addPanel(document.title, location.href, "");
	} else if (window.external) {
		window.external.addFavorite(location.href, document.title);
	} else {
	   alert("Please use the Bookmarks menu to bookmark this page");
		//Something else that we don't know yet
	}
}

function refreshPage() {
	window.location.reload(true);
}

var waitingForThankYouImageToLoad = false;
function thankYouImageHasLoaded() {
    log("thankYouImageHasLoaded");
    waitingForThankYouImageToLoad = false;
}
function thankYouImageWaitHasTimedOut() {
    log("thankYouImageWaitHasTimedOut");
    thankYouImageHasLoaded();
}
function thankYouImageOnLoad(evt) {
    log("thankYouImageOnLoad");
    thankYouImageHasLoaded();
}
function thankYouImageOnError(evt) {
    log("thankYouImageOnError");
    thankYouImageHasLoaded();
}

var backgroundWindow;
function closeBackgroundWindow() {
    if (backgroundWindow != null) {
        backgroundWindow.close();
    }
}
function loadUrlInBackground(backgroundUrl) {
    backgroundWindow = window.open(backgroundUrl,"background","width=1,height=1,menubar=no,resizable=no,toolbar=no,alwaysLowered=yes");
    if (backgroundWindow != null) {
    	backgroundWindow.blur();
        window.focus();
    }
    setTimeout("closeBackgroundWindow()",1000);
}

function hitPartnerWithDynamicImage(partnerUrl) {
       var partnerImage = new Image();
       //most browsers
       partnerImage.onload = thankYouImageOnLoad;
       partnerImage.onerror = thankYouImageOnError;
       //IE 6 and 7
       partnerImage.onreadystatechange = function() {
          log("in thankYouWindow.partnerImage.onreadystatechange.  readyState = "+this.readyState);
          if (this.readyState == 'complete') {
             thankYouImageHasLoaded();
          }
       }
       //if all else fails, move on after 5 seconds
       setTimeout("thankYouImageWaitHasTimedOut()", 5000); 
       partnerImage.src = partnerUrl;
}




//////////////////////////////////////////////////////March 18, 2009 done.  BEGIN

/*
 * 
 function hitPartnerUrlOnRegLog(s) {
 if (window.console) {
    	window.console.log(s);
    } else {
    	alert(s);
    }
}    
*/
    
// ref: http://www.dynamicdrive.com/forums/showthread.php?t=27081
function getreq() { // returns false if exists
	if(window.ActiveXObject) { // if IE
		try {
			//alert("hitPartnerUrlOnReg:ActiveXObjectMsxml2.XMLHTTP");
		return new ActiveXObject("Msxml2.XMLHTTP");
	} catch(e) {
		try {
			//alert("hitPartnerUrlOnReg:ActiveXObjectMicrosoft.XMLHTTP");
		return new ActiveXObject("Microsoft.XMLHTTP");
		} catch(e) {
		return;
			}
		}
	} else if(window.XMLHttpRequest) { // if Mozilla, Safari, etc.
		//alert("hitPartnerUrlOnReg:XMLHttpRequest");
		return new XMLHttpRequest();
		}
}


function AjaxEonreadystatechange() { 

          switch ( ajaxreq.readyState ){
          	case 0: // request not initialized
          			//alert("not init. in hitPartnerUrlOnReg.partnerImage.onreadystatechange.  readyState = "+ajaxreq.readyState);
          			break;
          	case 1: // request set up
          			//alert("set up. in hitPartnerUrlOnReg.partnerImage.onreadystatechange.  readyState = "+ajaxreq.readyState);
          			break;
          	case 2: // request sent
          			//alert("sent. completein hitPartnerUrlOnReg.partnerImage.onreadystatechange.  readyState = "+ajaxreq.readyState);
          			break;
          	case 3: // in process
          			//alert("in process. completein hitPartnerUrlOnReg.partnerImage.onreadystatechange.  readyState = "+ajaxreq.readyState);
          			break;
          	case 4: // complete
          			//alert(" complete.AjaxEonreadystatechange  readyState = "+ajaxreq.readyState);
          			break;
          	default:
          			//alert("in hitPartnerUrlOnReg.partnerImage.onreadystatechange.  not recognized. readyState = "+ajaxreq.readyState);
          }
          
}


function onloadPartnerURL() {
//	alert("onloadPartnerURL");
}

/**
 * hit a winter page, e.g. for an error log
 */
function hitWinsterPage(url) {
		
//alert("in hitWinsterPage fcn. url:" + url );		
  ajaxreq =  getreq();
				

  if ( ajaxreq != null ){

	//alert("in hitWinsterPage. req not null" );
		
	ajaxreq.onreadystatechange = AjaxEonreadystatechange;	
	
	//alert("in hitWinsterPage. before open to get:" + url);
	ajaxreq.open("GET",url,true);

	  
	//alert("in hitWinsterPage. before send " + url);
	ajaxreq.send(null);
    //alert("status:| " + ajaxreq.statusText + "| after send----------" + url + " responseText: " + ajaxreq.responseText) ;
	     	

  } else {
   hitPartnerUrlOnRegLog("Your browser does not support XMLHTTP.");
  }


}

var partnerURLSave = null;
var userIDSave = null;

function onerrorPartnerURL() {
	
	var logErrorURL = "OPpixelhiterror.jsp?partnerUrl=" + partnerURLSave ;
	if (userIDSave  != null ){
		logErrorURL += "&userID=" + userIDSave;
	}
	
//	alert("befpre hit err page:"+ logErrorURL);
	hitWinsterPage( logErrorURL );
//	alert("after hit err page:"+logErrorURL);

}

function completePartnerURL() {
//	alert("***completePartnerURL");
} 


function hitPartnerUrl(partnerUrl,userID) {	
	
	
		partnerURLSave = partnerUrl;
		userIDSave = userID;
		
       var partnerImage = new Image();

       partnerImage.onload = onloadPartnerURL;
       partnerImage.onerror = onerrorPartnerURL;


       //IE 6 and 7
       partnerImage.onreadystatechange = function() {
          //log("in hitPartnerUrlOnReg.partnerImage.onreadystatechange.  readyState = "+this.readyState);
          if (this.readyState == 'complete') {
             completePartnerURL();
          }
       }
       partnerImage.src = partnerURLSave;
       
//       alert("src:" + partnerImage.src);  
        
}


///////////////////////////////////////////////////////March 18, 2009 done.  END

function hitPartnerUrlOnReg(partnerUrl,userID) {
	
		if ( partnerUrl.indexOf('JSCRIPT_') == -1 ) {
			hitPartnerUrl(partnerUrl,userID);
		} else {
			runPartnerMktJScript(partnerUrl,userID);
		}	
	
}

////May 15, 2009  Friday
function runPartnerMktJScript(partnerURL,userID) {	
	//alert("start running  partner mkt jscript" );  
	if ( partnerURL == 'JSCRIPT_YAHOO_MKT'){
		runYahooMktJScript(partnerURL,userID);
	} else  if ( partnerURL == 'JSCRIPT_GOOGLE_MKT'){
		runGoogleMktJScript(partnerURL,userID);
	} else  if ( partnerURL == 'JSCRIPT_ASK_MKT'){
		runAskMktJScript(partnerURL,userID);
	} else  if ( partnerURL == 'JSCRIPT_BL_MKT'){
		runBLMktJScript(partnerURL,userID);
	} else  if ( partnerURL == 'JSCRIPT_MS_MKT'){
		runMSMktJScript(partnerURL,userID);
	} else  if ( partnerURL == 'JSCRIPT_AOL_MKT'){
		runAOLMktJScript(partnerURL,userID);
	} else  if ( partnerURL == 'JSCRIPT_MI_MKT'){
		runMSAdCtrJScript(partnerURL,userID);
	} 
	
	//alert("done running  partner mkt jscript" );
}


function runYahooMktJScript(partnerURL,userID) {	
	
	createIFrame('yahooMkt');  // creates a hidden transparent iframe
	
	var yhIFrame = document.getElementById('yahooMkt');	
	var iframe = document.createElement("iframe");    
	iframe.src = "../partner/yahooReg.jsp";
	yhIFrame.appendChild(iframe);
	              
}

function runGoogleMktJScript(partnerURL,userID) {	
	
	createIFrame('googleMkt');  // creates a hidden transparent iframe
	
	var goIFrame = document.getElementById('googleMkt');	
	var iframe = document.createElement("iframe");    
	iframe.src = "../partner/googleReg.jsp";
	goIFrame.appendChild(iframe);
	              
}

function runAskMktJScript(partnerURL,userID) {	
	
	createIFrame('askMkt');  // creates a hidden transparent iframe
	
	var goIFrame = document.getElementById('askMkt');	
	var iframe = document.createElement("iframe");    
	iframe.src = "../partner/askReg.jsp";
	goIFrame.appendChild(iframe);
	              
}

function runBLMktJScript(partnerURL,userID) {	
	
	createIFrame('blMkt');  // creates a hidden transparent iframe
	
	var goIFrame = document.getElementById('blMkt');	
	var iframe = document.createElement("iframe");    
	iframe.src = "../partner/bluelithiumReg.jsp";
	goIFrame.appendChild(iframe);
	              
}

function runMSMktJScript(partnerURL,userID) {	
	
	createIFrame('msMkt');  // creates a hidden transparent iframe
	
	var goIFrame = document.getElementById('msMkt');	
	var iframe = document.createElement("iframe");    
	iframe.src = "../partner/microsoftReg.jsp";
	goIFrame.appendChild(iframe);
	              
}

function runMSAdCtrJScript(partnerURL,userID) {	
	
	createIFrame('msadctr');  // creates a hidden transparent iframe
	
	var goIFrame = document.getElementById('msadctr');	
	var iframe = document.createElement("iframe");    
	iframe.src = "../partner/microsoftAdCtrReg.jsp";
	goIFrame.appendChild(iframe);
	              
}



function runAOLMktJScript(partnerURL,userID) {	
	
	createIFrame('aolMkt');  // creates a hidden transparent iframe
	
	var goIFrame = document.getElementById('aolMkt');	
	var iframe = document.createElement("iframe");    
	iframe.src = "../partner/aolReg.jsp";
	goIFrame.appendChild(iframe);
	              
}

function thankYouWindow(partnerID, partnerUrl) {
    if (false && partnerUrl != null && trim(partnerUrl) != "") {
       waitingForThankYouImageToLoad = true;
       hitPartnerWithDynamicImage(partnerUrl);
    } else {
       tyWidow = window.open("../landing/thankyou.jsp?partnerID="+partnerID,"thankyou","width=480,height=420,menubar=no,resizable=no,toolbar=no,alwaysLowered=yes");
//       tyWindow.blur();
       window.focus();
    }
}

var isCoverLifted = false;
function liftLoaderCover() {
   //aDiv = document.getElementById('loaderCover');
   //aDiv.style.visibility="hidden"; //"hidden"; "visible"
   
   playDiv = document.getElementById('GameC1Main');
   playDiv.style.width="100%";
   playDiv.style.height="100%";

   isCoverLifted = true;
}

function noteSurveyClicked() {
    document.getElementById('GameC1Main').noteSurveyClicked();
}

//=================================================================================
//=================================================================================
//=================================================================================

var launchTime = formatDate(new Date(),"yyyy-MM-dd_HH:mm:ss");
var loadIteration = 0;
var pollerDelay = 5000;
var loaderPage = "play";
function loaderPoller(sourcePage) {
   //alert("Poller: "+loadIteration+" from: "+launchTime);
   if (sourcePage != null) {
      loaderPage = sourcePage;
   }
   
   var iterationTime = formatDate(new Date(),"yyyy-MM-dd_HH:mm:ss");
   var iterationImage = new Image();
   iterationImage.src = "/flex/assets/info.png?launchId="+launchTime+"&iteration="+loadIteration+"&iterationTime="+iterationTime+"&isCoverLifted="+isCoverLifted+"&loaderPage="+loaderPage;

   //loaderImage = document.getElementById('loaderImage');
   //if ( (loadIteration > 0) && (loaderImage != null) ) {
   	  //loaderImage.src = iterationImage.src;
   //}   

   loadIteration++;
   
   if (!isCoverLifted && (loadIteration < 48)) {
      setTimeout("loaderPoller()",pollerDelay);
      //pollerDelay = pollerDelay * 2;
      //if (pollerDelay > 
   }
}


function clickedLoader() {
   liftLoaderCover();
   
   window.open('../about.jsp?from=play.jsp','_blank');
}

//=======================
//IFrame support
//=======================
function createIFrame(frameID) {
    var bodyID = document.getElementsByTagName("body")[0];
    var newDiv = document.createElement('div');
    newDiv.id = frameID;
    newDiv.style.position ='absolute';
    newDiv.style.backgroundColor = 'transparent'; 
    newDiv.setAttribute("security",'restricted');
    newDiv.style.border = '0px';
    newDiv.style.visibility = 'hidden';
    bodyID.appendChild(newDiv);
}

function moveIFrame(frameID, iframeID, x,y,w,h) { 
    var frameRef=document.getElementById(frameID);
    frameRef.style.left=x;
    frameRef.style.top=y;
    var iFrameRef=document.getElementById(iframeID);
    iFrameRef.width=w;
    iFrameRef.height=h;
}

function hideIFrame(frameID) {
    document.getElementById(frameID).style.visibility='hidden';
}

function showIFrame(frameID) {
    document.getElementById(frameID).style.visibility='visible';
}

function loadIFrame(frameID, iframeID, url) {
    document.getElementById(frameID).innerHTML = "<iframe id='"+iframeID+"' src='"+url+"' frameborder='0' MARGINWIDTH='0' MARGINHEIGHT='0' SCROLLING='NO'></iframe>"; 
}

function loadDivContent(frameID, iframeID, content) {
    document.getElementById(frameID).innerHTML = "<div id='"+iframeID+"' frameborder='0'>"+content+"</div>";
}

function removeIFrame(frameID) {
    var meframey = document.getElementById(frameID);
    var meframeyParent = meframey.parent;
    if (meframeyParent!=null) meframeyParent.removeChild(meframey);
    else document.getElementsByTagName('BODY')[0].removeChild(meframey);
}

//=======================
//Voxant support
//=======================

function playNext() {
  var movie = getMovieByEmbed("swfclipf11");
  if (movie != null) {
    try {
      movie.playNextItem("playlistItemComplete");
    } catch(err) {
      movie=null;
    }
  }
  if (movie != null) return;
  movie = getMovieByElementId("swfclipf11");
  if (movie != null) {
    try {
      movie.playNextItem("playlistItemComplete");
    } catch(err) {
      movie=null;
    }
  }
  if (movie != null) return;
  movie = getMovieByWindowOrDocument("swfclipf11");
  if (movie != null) {
    try {
      movie.playNextItem("playlistItemComplete");
    } catch(err) {
      movie=null;
    }
  }
  if (movie != null) return;
  movie = getMovieByScopedWindowOrDocument("swfclipf11");
  if (movie != null) {
    try {
      movie.playNextItem("playlistItemComplete");
    } catch(err) {
      movie=null;
    }
  }
}


function pause1Cast() {
   //var voxantIFrame = document.getElementById("vVoxantIFrame");
   //voxantIFrame.pause1Cast();
   var movie = getMovie("loopembed");
   movie.pause1Cast();
}

function play1Cast() {
   //var voxantIFrame = document.getElementById("vVoxantIFrame");
   //voxantIFrame.play1Cast();
   getMovie("loopembed").play1Cast();
}

function getMovie(movieName) {
  var result = getMovieByEmbed(movieName);
  if (result != null) return result;
  result = getMovieByElementId(movieName);
  if (result != null) return result;
  result = getMovieByWindowOrDocument(movieName);
  if (result != null) return result;
  result = getMovieByScopedWindowOrDocument(movieName);
  return result;
}

function getMovieByEmbed(movieName) {
 var embeds = document.getElementsByTagName( 'embed' );
 for(var i=0;i<embeds.length;i++){
   if(embeds.item(i).getAttribute( 'id' ) == movieName ){
     return embeds.item(i);
   }
 }
 return null;
}

function getMovieByElementId(movieName) {
 var movie = document.getElementById(movieName);
 return movie;
}

function getMovieByWindowOrDocument(movieName) {
 var movie;
 if (navigator.appName.indexOf ("Microsoft") !=-1) {
   movie = window[movieName];
 } else {
   movie = document[movieName];
 }
 return movie;
}


function getMovieByScopedWindowOrDocument(movieName) {
 var movie;
 var scope = top.frames["vVoxantIFrame"];
 if (scope != null) {
   if (navigator.appName.indexOf ("Microsoft") !=-1) {
     movie = scope.window[movieName];
   } else {
     movie = scope.document[movieName];
   }
 }
 return movie;
}


function playlistItemPlaying() {
  //var cubediv = document.getElementById("cubeDiv");
  //cubediv.style.visibility = 'visible'; 
}

function playlistItemComplete() {
  //var cubediv = document.getElementById("cubeDiv");
  
  getMovie("GameC1Main").notePlayMovieFinished();
  
  //MLF: Don't care about hiding
  //cubediv.style.visibility = 'hidden';
}

function interstitialFinished() {
  getMovie("GameC1Main").interstitialFinishedCallback();
}


//====================================
//SpotXchange support
//====================================

function showNextSpotXchange() {
   //getMovie("spotXchange").playNextItem("playlistItemComplete");
   //playlistItemPlaying();
}



