
google.load("jquery", "1");

// utilities

function log(msg)
{
  try {
    window.console.log(msg);
  } catch(e) {
    
  };
}

function contains(a, obj)
{
  var i = a.length;
  while (i--) {
    if (a[i] === obj) {
      return true;
    }
  }
  return false;
}

function lmap(func, arr) {
  var min = arr.length;
  var result = [];
  for(var i=1;i<arguments.length;i++) {
    var arlen = arguments[i].length;
    if(arlen < min) {
      min = arlen;
    }
  }
  for(var i=0;i<min;i++) {
    var elems = [];
    for(var argno=1;argno<arguments.length;argno++) {
      elems.push(arguments[argno][i]);
    }
    result.push(func(elems));
  }
  return result;
}

// sitecatalyst

function isLoc(loc){
  // Do case insensitive check of loc against URI action
  var re = new RegExp('action='+loc, 'i');
  if(document.location.href.match(re)) return true;

  if(loc=='ShoppingCart' && ($("i:contains('Online Payment Processing')").length!=0))
    return true;
  if(loc=='SignUp' && ($('#signUpSentinel').length!=0))
    return true;
  if(loc=='Registered' && ($('#registeredSentinel').length!=0))
    return true;
  if(loc=='Subscription' && window.location.href.match(/iProdId=\d+/))
    return true;
  if(loc=='Purchased' && ($('.orderStatus').length!=0))
    return true;
  if(loc=='NewsLetter' && ($('.NewsLetterPage').length!=0))
    return true;
  return false;
}


function wait(msecs)
{
    var start = new Date().getTime();
    var cur = start
        while(cur - start < msecs)
        {
            cur = new Date().getTime();
        }
} 

// Gets called by https://secure.edweek.org/js/sc_ew.js in s_doPlugins after s_code finishes running 
function doAfterSC() {
    //alert('doAfterSC');
    maybeRedirect();
}

function maybeRedirect()
{
    if(redirect_location){
        log('maybeRedirect using ' + redirect_location);
        if(typeof(redirect_location) == 'object'){
            redirect_location.submit();
        }else{
            window.location.href = redirect_location;
        }
    }
}

function triggerSc() {
  s.channel="myaccount";
  s.server="myaccount.edweek.org";
  s.pageName='/'+s.channel+'/'+ document.title;
  var s_code=s.t();
  if(s_code)
    document.write(s_code);
}

function debugSc()
{
  log("loc: " + window.location.search);
  log("events: " + s.events);
  log('products: ' + s.products);
  log('s.prop17: ' + s.prop17 + ", eVar17: " + s.eVar17);
  log('s.prop18: ' + s.prop18 + ', eVar18: ' + s.eVar18);
  log('redirect_location: ' + redirect_location);
}

function scCheckout()
{
  s.events = 'scCheckout';
  triggerSc();
  debugSc();
}

function scAddEvent(event){
  s.events=s.apl(s.events, event, ',', 1);
}

function scAddProduct(product){
  if(s.products == undefined) {
    s.products = '';
  }
  if(typeof(product) != 'undefined'){
    var existing_products = s.products.split(';');
    if(!contains(existing_products, product.toString())){
      s.products += ';' + product.toString();
    }
  }
}

function prodAddEvent(target, name, product)
{
  s.linkTrackVars = 'events,products';
  s.linkTrackEvents = 'scAdd';
  s.events = 'scAdd';
  s.products = ';' + product;
  s.tl(target, 'o', name);
  log('click ' + name);
  log('events: ' + s.events);
  log('products: ' + s.products);
}

// for some reason it gets fired more then once on some pages

var hasFired = false;
function main(){
  if(hasFired)
    return;
  hasFired=true;

  if(isLoc('StoreFront')) {
    log('Location: StoreFront');
    scAddEvent('prodView');
    $('a.productId').map(function(i, node){ scAddProduct(node.name); });
    $('.productTab').map(function(i, node) {
                           var productId = $('a.productId', node).attr('name');
                           //var cb = function() {
                           //  prodAddEvent(this, 'Add to Cart', productId);
                           //};
                           //$("input[value='Add to Cart']", node).click(cb);
                         });
  }else if(isLoc('ProductDisplay')) {
    log('Location: ProductDisplay');
    var productId = $('.productId').attr('name');
    scAddEvent('prodView');
    scAddProduct(productId);
    var cb = function() {
      prodAddEvent(this, 'Add to Cart', productId);
    };
    $("input[value='Add to Cart']").click(cb);
  }else if(isLoc('AddToCart')) {
    log('Location: AddToCart');
    scAddEvent('scAdd');
    scAddProduct(PickedItem);
  }else if(isLoc('ShoppingCart')) {
    log('Location: ShoppingCart');
    scAddEvent('scView');
    $('.productId').map(function(i, node){ scAddProduct(node.name); });
  //}else if(isLoc('SignUp')) {
  //  log('Location: SignUp');
  //  scAddEvent('event9');
  }else if(isLoc('Subscription')) {
    log('Location: Subscription');
    var prodid = $('input[name="iProdId"]').val();
    if(!prodid){
      prodid = $('input[name="PickedItem"]').val();
    }  
    scAddEvent('prodView');
    scAddProduct(prodid);
  }else if(isLoc('Registration')) {
    log('Location: Registration');
    scAddEvent('event6');
  }else if(isLoc('Registered')) {
    log('Location: Registered');
    scAddEvent('event7');
    s.prop17=s.eVar17='';
    if(typeof(sc_newsletters) != "undefined" && sc_newsletters.length > 0){
        scAddEvent('event10');
        s.prop17=s.eVar17=sc_newsletters;
        s.prop18=s.eVar18=sc_newsletters;
    }
  }else if(isLoc('Purchased')) {
    log('Location: Purchased');
    scAddEvent('purchase');
    scAddEvent('event8');
    // remember me when i'm gone --phf
    lmap(function(a) {
           scAddProduct(
             [$(a[0]).attr('name'),
              $(a[1]).text(),
              $(a[2]).text()].join(','));
         },
         $('.productId'),
         $('.productQty'),
         $('.productTotal'));
    s.purchaseID = $('.orderId').text();
    s.state = $('.orderState').text();
    s.zip = $('.orderZip').text();
  }else if(isLoc('NewsLetter')) {
    log('Location: Newsletter');
    if(typeof(sc_newsletters) != "undefined" && sc_newsletters.length > 0){
        scAddEvent('event10');
        s.prop18=s.eVar18=sc_newsletters;
    }
  }
    
  log('---- triggerSc() ----------------------------');
  triggerSc();
  log('---- debugSc()');
  debugSc();
  log('---------------------------------------------');
  //maybeRedirect();
  //if(typeof(captchaPage) != "undefined" && captchaPage == 1){
  //  document.AddToCart.submit();
  //}
}

google.setOnLoadCallback(main);
