function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

function extendOnClick(el, func) {
  var oldonclick = el.onclick;
  if (typeof el.onclick != 'function') {
    el.onclick = func;
  } else {
    el.onclick = function(evt) {
      oldonclick(evt, this);
      func(evt,this);
      return false;
    }
  }
}

addLoadEvent(popUpsAndTrackingFunctions);
//************************************
//functions to bring up external pop ups
//************************************
function popUpsAndTrackingFunctions()
{
  if (!document.getElementsByTagName) return false;
  var links = document.getElementsByTagName("a");
  var areas = document.getElementsByTagName("area");

  for(var i=0; i<areas.length; i++)
  {
      links[links.length] = areas[i];  
  }

  var count = 0;
  var links_temp = new Array();
  while(links[count] != null)
  {
    links_temp[count] = links[count];
    count = count+1;
  }
  links = links_temp;  
  
  for (var i=0; i<links.length; i++) 
  {
    var linkClassAttribute = links[i].className;
    var linkRelAttribute = links[i].getAttribute("rel");
     
    if(linkRelAttribute) 
    {     
        if (linkRelAttribute.indexOf("samewindow") != -1) 
          {
             if((linkClassAttribute.indexOf(" order") != -1) || 
                 (linkClassAttribute.indexOf(" promotion") != -1)|| 
                 (linkClassAttribute.indexOf(" featured") != -1))
             {
                   extendOnClick(links[i],stopDefault);
             }
          }
     }
      
    if(linkClassAttribute) 
    {
        var parsedClassAttribute = linkClassAttribute.split(" ");
        for(var j=0; j<parsedClassAttribute.length; j++)
        {
            if ( parsedClassAttribute[j] == "promotion")
            { 
                extendOnClick(links[i], getPromotionOmnitureVars);
            }

            if ( parsedClassAttribute[j] == "order")
            {
                extendOnClick(links[i], getOrderOmnitureVars);
            }
            
            if ( parsedClassAttribute[j] == "featured")
            {
                extendOnClick(links[i], getFeaturedOmnitureVars);
            }
        }       
    }
     
    if(linkRelAttribute)
    {
        var parsedLinkAttribute = linkRelAttribute.split(" ");
        for(var j=0; j<parsedLinkAttribute.length; j++)
        {
            if ( parsedLinkAttribute[j] == "player") 
            {
                extendOnClick(links[i],showPlayer);
             }
             else
             {
                if (parsedLinkAttribute[j] == "external") 
                {
                    extendOnClick(links[i],popUp);
                }                
             }
         }
     }      
  } 
}
//for links that are opening in the same window and requires tracking.
//The links opens the page before the tracking is completed. 
//Hence do chain actions - call promotion omniture tracking, stop default link behavior
// and then open the new link in the same window. 
function stopDefault(evt, link)
{
   if(!e) 
     var e = (window.event) ? window.event : evt;

    //e.cancelBubble is supported by IE - this will kill the bubbling process.
    e.cancelBubble = true;
    e.returnValue = false;

    //e.stopPropagation works only in Firefox.
    if (e.stopPropagation) {
        e.stopPropagation();
        e.preventDefault();
    }
}

function sameWindow(link)
{
    if(link == null)
      link = this;
    var winURL = link.getAttribute("href");
    setTimeout(function () {window.location.href=winURL;},100);
}

function openLinkInSameWindow(link)
{
    var linkClassAttribute = link.className;
    var linkRelAttribute = link.getAttribute("rel");  
    if( linkRelAttribute != null && linkClassAttribute != null )
    {
        if (linkRelAttribute.indexOf("samewindow") != -1 && ((linkClassAttribute.indexOf(" order") != -1) || 
                 (linkClassAttribute.indexOf(" promotion") != -1)|| 
                 (linkClassAttribute.indexOf(" featured") != -1)))
             {
                   sameWindow(link);
             }
    }
}

function getPromotionOmnitureVars(evt, link)
{
    if (link == null)
          link = this;
          
    var url = link.getAttribute("href");
    var parsedClassAttribute = link.className.split(" ");
    var uniqueId = parsedClassAttribute[0];
    if (isOmnitureExists())
    {
        sCode.trackOutboundClick(url, uniqueId);  
    }
    openLinkInSameWindow(link);
}

function getOrderOmnitureVars(evt, link)
{
     if (link == null)
          link = this;
    
    var url = link.getAttribute("href");
    var parsedClassAttribute = link.className.split(" ");
    var uniqueId = parsedClassAttribute[0];
    if (isOmnitureExists())
    {
        sCode.trackOutboundClickToBuy(url,uniqueId);
    }
    openLinkInSameWindow(link);
}

function getFeaturedOmnitureVars(evt, link)
{
    if (link == null)
          link = this;
          
    var url = link.getAttribute("href");
    var parsedClassAttribute = link.className.split(" ");
    var uniqueId = parsedClassAttribute[0];
    if (isOmnitureExists())
    {
        sCode.trackFeaturedContentClick(url, uniqueId);  
    }
    openLinkInSameWindow(link);
}
 
function isOmnitureExists()
{
    //s.pageName is passed in through omniture code. This is assuming
    //that omniture code exists on every page. It is currently inject thru treatments
    //hence currently omniture code does exist in every page. 
    if (s != null && (s.pageName.length != 0))
        return true;
    else return false;
}
 
function popUp(evt, link) 
{
  if(link == null)
    link = this;
  winURL = link.getAttribute("href");
  window.open(winURL,'_blank');
  return false;
}

//*********************
function showPlayer(evt, link) {
//*********************
if(link == null)
    link = this;
pURL = link.getAttribute("href");
displayWindow(pURL,"Player",620,460,"directories=0,location=0,menubar=0,resizable=0,scrollbars=0,status=0,titlebar=0,toolbar=0");
return false;
}

//****************************************
//End of function
//****************************************

//*********************
function displayWindow(theURL,winName,width,height,features) { //v3.1
//*********************
  var window_width = width;
  var window_height = height;
  var newfeatures= features;
  var window_top = (screen.height-window_height)/2;
  var window_left = (screen.width-window_width)/2;
  newWindow=window.open(''+ theURL + '',''+ winName + '','width=' + window_width + ',height=' + window_height + ',top=' + window_top + ',left=' + window_left + ','+ newfeatures + '');
  newWindow.focus();
}

//*********************
function MM_openBrWindow(theURL,winName,features) { //v2.0
//*********************
  window.open(theURL,winName,features);
}

//*********************
function mm_openbrwindow(theURL,winName,features) { //v2.0
//*********************
  window.open(theURL,winName,features);
}

//***************************************************
function popFull(url,name){
//***************************************************
var w = 480, h = 340;

if (document.all || document.layers) {
   w = screen.availWidth;
   h = screen.availHeight;
}else{
    w = screen.width;
    h = screen.height;
}

var url;
var popW;
var popH;

window.open(url,name,'width=' + w + ',height=' + h + ',top=0,left=0');
}

