var MJXcontent = '';
var OAS_listpos = '';
var OAS_version = 11;
var OAS_sitepage = '';
var OAS_rn = '001234567890';
var OAS_rns = '1234567890';
OAS_rn = '' + Math.random();
OAS_rns = OAS_rn.substring(2, 11);
var OAS_query = document.location.search;
var pl = '';
var ms = '';
var lastLoadTime = null;
var PhxTags;
var phxLoopCount = 0;
var refreshing = false;

// Function that parses the RDB cookie version from the local RDB cookie
function getRDBVersion(cookie){
    var temp = '';
    if ( typeof cookie != 'undefined' && cookie.length > 0 ){
        temp= cookie.substring(0, 4);
        while (temp.indexOf(0) == '0'){
            temp = temp.substring(1, temp.length);
        }
    }
    return temp;
}

var RDB_cookie = getCookie('RDB');
var RDB_version = getRDBVersion(RDB_cookie);

// Called in the page-start header. Sends parameters and list of positions to phoenix and adds the mjx javascript to the page
function loadOASPositions(url, sitePage, pageName){
  if ( typeof positionList != 'undefined' && positionList != null && positionList != ''){
    saveOasParams(pageName, sitePage, url, '/profile', positionList);
    var oasUrl = prepareOASurl(url, sitePage, pageName, positionList, 'mjx');
    if ( oasUrl != null ){
      document.write('<scr' + 'ipt type=\"text/javascript\" src=\"' + oasUrl + '\"></scr' + 'ipt>');
    }
  }
}

/**
 * Prepares url with parameters and list of positions to phoenix to receive jsx javascript
 */
function prepareOASurl(url, sitePage, pageName, positionList, adType){	
  if(OAS_query.indexOf("?") != -1){
	  var OAS_escQryStr="?";
      var paramArray=OAS_query.substring(1, OAS_query.length).split("&");
 
      for(i=0; i<=paramArray.length-1; i++){
        var eachParam=paramArray[i].split("=");
        OAS_escQryStr+=escape(eachParam[0])+"="+escape(eachParam[1]);
        if(i < paramArray.length-1){ OAS_escQryStr+= "&"; }
      } 
    OAS_query= OAS_escQryStr;
   }
    if ( pageName.indexOf(' ') > -1){
      pageName = pageName.replace(/\s/g, '_');
    }
    if ( pageName==''){
      pageName = window.location.pathname.substring(1); //remove leading slash
    }
    var loc = top.location.href;
    if ( loc.indexOf('https') == -1 ){
        var OAS_query_str = '?';
        if (OAS_query.length > 200){
          OAS_query = OAS_query.substring(1);
          var deliminator = '&';
          var temp = [];
          temp = OAS_query.split('&');

          for (i=0;i<temp.length;i++){
            if (temp[i].toLowerCase().indexOf("communityid") > -1){
              OAS_query_str += temp[i] + deliminator;
            }
            if (temp[i].toLowerCase().indexOf("regid") > -1){
              OAS_query_str += temp[i] + deliminator;
            }
            if (temp[i].toLowerCase().indexOf("registrationid") > -1){
              OAS_query_str += temp[i] + deliminator;
            }
            if (temp[i].toLowerCase().indexOf("org_id") > -1){
              OAS_query_str += temp[i] + deliminator;
            }
            if (temp[i].toLowerCase().indexOf("group_id") > -1){
              OAS_query_str += temp[i] + deliminator;
            }
            if (temp[i].toLowerCase().indexOf("circle_id") > -1){
              OAS_query_str += temp[i] + deliminator;
            }
            if (temp[i].toLowerCase().indexOf("eventid") > -1){
              OAS_query_str += temp[i] + deliminator;
            }
          }
        } else {
          OAS_query_str = OAS_query;
        }
        var del = '&';
        if ( OAS_query_str.indexOf('?') == -1 ) {del = '?';}
        if ( OAS_query_str == '?' ){del = '';}
        if ( top.banner_id ){
          OAS_query_str += del + 'regID=' + (top.banner_id);
          del = '&';
        }
        if(top.banner_qscore ){
        	OAS_query_str += del + 'gs=' + top.banner_qscore;
        	del = '&';
        }
        if(top.banner_pageViewCount ){
        	OAS_query_str += del + 'pvc=' + top.banner_pageViewCount;
        	del = '&';
        }
        if ( top.banner_mt) {
          OAS_query_str += del + 'pL=' + (top.banner_mt.substring(0,1));
          del = '&';
        }
        if ( top.banner_ms) {
          OAS_query_str += del + 'mS=' + top.banner_ms;
        }

        OAS_rn = '' + Math.random();
        OAS_rns = OAS_rn.substring(2, 11);

        if ( typeof RDB_cookie == 'undefined'){
          RDB_cookie = top.getCookie('RDB');
        }
        var writeString = url + '/OASX/RQST/TYPE=' + adType + '/RDB=' + RDB_cookie + '/VERSION=' + RDB_version + '/ORIGIN=CM//' + sitePage + '/' + pageName + '/1' + OAS_rns + '@' + positionList + OAS_query_str;
        return writeString;
    }
    else return null;
}

function loadPositionList(){
  pList = '';
  var posArray = $('div.OAS');
  for ( var i = 0; i < posArray.length;i++){
    pList += posArray[i].id;
    if ( i != posArray.length - 1){
      pList += ',';
    }
  }
  return pList;
}

/**
 * clears the innerHTML, creates an iframe node and appends it to the parent node supplied
 */
function createIFrameChild(PhxAdDiv,Pos,PhxDivName){
	PhxAdDiv = window.parent.document.getElementById(Pos);
	PhxAdDiv.innerHTML = "";
	Phxiframe =  PhxDivName;

	var phxFrameElem;
	if (navigator.appName.indexOf("Microsoft") > -1) {
    phxFrameElem = window.parent.document.createElement('<iframe allowtransparency="true" name="'+Phxiframe+'" id="'+Phxiframe+'" class="PHX_IFRAME" src="about:blank" frameBorder="0" marginWidth="0" margintHeight="0" scrolling="no" >');
  }
	else {
    phxFrameElem = window.parent.document.createElement('iframe');
    phxFrameElem.name = Phxiframe;
    phxFrameElem.id = Phxiframe;
    phxFrameElem.src = "about:blank";
    phxFrameElem.className = "PHX_IFRAME";
    phxFrameElem.frameBorder = 0;
    phxFrameElem.marginWidth = 0;
    phxFrameElem.marginHeight = 0;
    phxFrameElem.scrolling = "no";
	}
	PhxAdDiv.appendChild(phxFrameElem);
}

function setJSXAds(positionList, profileBaseUrl, url, sitePage, pageName){
  if (typeof(PhxContent) == "undefined" || PhxContent == null ){
    if ( phxLoopCount >= 30 ){ // Consider this a timeout for phoenix
      return;
    }
    else if ( typeof(PhxContentError) != "undefined" && PhxContentError != null  ){
      // TODO: log client side script error and/or load static ad content
      return;
    }
    else {
      phxLoopCount++;
      setTimeout('setJSXAds(\'' + positionList + '\', \'' + profileBaseUrl + '\', \'' + url + '\', \'' + sitePage + '\', \'' + pageName + '\', true)', 500);
      return;
    }
  }
  else{
    PhxTags = PhxContent;
    var posArray;
    if ( typeof positionList != 'undefined' && positionList != null ){
      posArray = positionList.split(',');
    }
    else {
      posArray = loadPositionList().split(',');
    }
    for ( var i = 0; i < posArray.length; i++){
      var pos =  posArray[i];
      var oldDiv = null;
      var PhxDivName = "PHX_IFRAME_" + pos;
      PhxAdDiv = $('#' + pos)[0];

      if (PhxAdDiv) {
      	phxLoopCount=0;
    	PhxContent=null;
        createIFrameChild(PhxAdDiv,pos,PhxDivName);
        $('#' + PhxDivName)[0].src = profileBaseUrl + '/jsxAd.html';
      }
      else {
        setTimeout('setJSXAds(\'' + pos + '\', \'' + profileBaseUrl + '\', \'' + url + '\', \'' + sitePage + '\', \'' + pageName + '\', true)', 200);
      }
    }
  }
}

function loadAds(url, sPage, pName, profileUrl, positionList) {
  if ( !refreshing ){
    saveOasParams(pName, sPage, url, profileUrl, positionList);
  }
  else {
    $('#PhoenixScript').remove();
    PhxContent = null;
  }
  // prepare a script element with src = phoenix url
  var scr = document.createElement('script');
  scr.type = 'text/javascript';
  scr.id = "PhoenixScript";
  scr.src = prepareOASurl(url, sPage, pName, positionList, 'jsx');
  $('body').append(scr);
  setJSXAds(positionList, profileUrl, url, sPage, pName);
}

/**
 * main entry point into this js file
 * refreshes OAS ad positions enumerated (comma separated) in the positionList variable on current page
 */
function refreshOASAds(url, sitePage, pageName, profileBaseUrl, mintime, params) {
  refreshing = true;
  phxLoopCount = 0;
  PhxTags = null;
  var profileUrl
  var pList = $('#OASpositionList').val();
  if ( typeof pList == 'undefined' || pList == null){
    pList = positionList;
  }
  if ( typeof url == 'undefined' || url == null){
    url = $('#OASphoenixUrl').val();
  }
  if ( typeof sitePage == 'undefined' || sitePage == null){
    sitePage = $('#OASsitePage').val();
  }
  if ( typeof pageName == 'undefined' || pageName == null){
    pageName = $('#OASpageName').val();
  }
  var minLapseTime = 4000;
  if ( typeof params != 'undefined' && params != null ){
    params = params.split(':');
    for ( var i = 0; i < params.length; i++){
      var param = params[i].split('=');
      if ( param[0] == 'interval' ){ minLapseTime = parseInt(param[1]); }
      if ( param[0] == 'posList' ){ pList = param[1]; }
    }
  }

  var now = new Date();
  if (lastLoadTime != null){
    var curTime = now.getTime();
    if (curTime - lastLoadTime < minLapseTime){ return;}
    lastLoadTime = curTime;
  }else{
    lastLoadTime = now.getTime();
  }
  loadAds(url, sitePage, pageName, $('#OASprofileUrl').val(), pList);
}

/**
 * returns ad content from appropriate index of PhxTags array.
 * this function is called from /profile/jsxAd.html
 */
function getJSX_Content(PosName){
  if ( PhxTags != null ){
    if ( PhxTags.length == null ){
      PhxTags = top.PhxContent;
    }
    for (var i = PhxTags.length-1; i>=0; i--){
      if (PhxTags[i].name == PosName){
        if ( PhxTags[i].src.indexOf('empty.gif') > -1 ){
          $('#PHX_IFRAME_' + PosName).css('height', '0px');
        }
        return PhxTags[i].src;
      }
    }
    return '';
  }
  return;
}

function saveOasParams(pName, sPage, url, profileUrl, positionList){
  // save values in dom for add refresh
  var field = document.createElement('input');
  field.setAttribute('name', 'pageName');
  field.setAttribute('id', 'OASpageName');
  field.setAttribute('type', 'hidden');
  field.setAttribute('value', pName);
  $('body').append(field);
  field = document.createElement('input');
  field.setAttribute('name', 'sitePage');
  field.setAttribute('id', 'OASsitePage');
  field.setAttribute('type', 'hidden');
  field.setAttribute('value', sPage);
  $('body').append(field);
  field = document.createElement('input');
  field.setAttribute('name', 'phoenixUrl');
  field.setAttribute('id', 'OASphoenixUrl');
  field.setAttribute('type', 'hidden');
  field.setAttribute('value', url);
  $('body').append(field);
  field = document.createElement('input');
  field.setAttribute('name', 'profileUrl');
  field.setAttribute('id', 'OASprofileUrl');
  field.setAttribute('type', 'hidden');
  field.setAttribute('value', profileUrl);
  $('body').append(field);
  field = document.createElement('input');
  field.setAttribute('name', 'positionList');
  field.setAttribute('id', 'OASpositionList');
  field.setAttribute('type', 'hidden');
  field.setAttribute('value', positionList);
  $('body').append(field);
}

