/*
** wk.js - WK Javascript Library
** jgriffith
**
*/

(function($){

var WK = {
  
   ondomready: function() {
        WK.share();
        WK.sharefixes();
        WK.links();
        WK.campaigns();
        WK.mediaplex();
        $(".sharethis").each(function(){  WK.sharethis(this);}  );
        if (window.analytics) {analytics.save()}
   },

   share: function(){
        if(document.getElementById("expand")){ // look for expand on the page
           var item = document.getElementById("menu");
           item.className = "hide"; // hide this by default
           document.getElementById("expand").onclick = WK.toggle; // if it gets clicked, show or hide 
        } 
   },
   
    sharefixes: function(){
    	/*cleaning up some spacing issues from sharethis of aug 2011*/
        $("#main .clear").next("#comments").css("margin-top", "-7px");
        $("#main .clear").next(".box-signup").css("margin-top", "18px");
        $("#main .clear").next("#comment-form").css("margin-top", "-32px");
        $("#main .clear").next("#comment-form").css("background", "none");
        $("#main .clear").next("#related").css("margin-top", "-8px");
        $("#main .clear").next("#related").children(".additional").css("margin-top", "7px");
        $("#inset .faculty:last-child").css("margin-bottom", "0");
        $(".article #inset .faculty:last-child").css("margin-bottom", "23px");
        $("#main").children('h4:first').css("margin-top", "-10px");
        $("#main").children('h3:first').css("padding-top", "0");
        $("#main").children('h3:first').css("margin-top", "0");
        $("#main").children('h3:first').css("line-height", "98%");
    },    


   toggle: function(){
        var menu = document.getElementById("menu");
        if(menu.className == "show") {
            menu.className = "hide";
        } else{
            menu.className = "show";
        } 
        return false;
   }, 
   
   sharethis_count : 0,
    sharethis: function(node,options) {
        $container = $(node);
        if ($container.hasClass("rendered")) return;
        $container.addClass("rendered");

        var defaults = {url:document.location.href,
                        title:document.title,
                        label:"Share",
                        openStyle: "click",
                        sites:['facebook','linkedin','twitter'],
                        extraSites: {},
                        new_window: true
                        };
        options = $.extend(defaults,options)

        var html = "";
        var li = new Array();
        //li['delicious'] = '<li class="delicious"><a href="http://del.icio.us/post?&amp;url=$URL">Add to Del.ici.ous</a></li>';
        //li['digg'] ='<li class="digg"><a href="http://www.digg.com/submit?phase=2&amp;url=$URL">Digg this Article</a></li>';
        li['facebook'] ='<li class="facebook"><a href="http://www.facebook.com/share.php?u=$URL">Add to Facebook</a></li>';
        li['linkedin'] ='<li class="linkedin"><a href="http://www.linkedin.com/shareArticle?mini=true&url=$URL&amp;title=$TITLE&summary=&source=">LinkedIn</a></li>';
        li['mixx'] ='<li class="mixx"><a href="http://www.mixx.com/submit?page_url=$URL">Add to Mixx</a></li>';
        //li['reddit'] ='<li class="reddit"><a href="http://reddit.com/submit?url=$URL&amp;title=$TITLE">Add to Reddit</a></li>';
        li['technorati'] ='<li class="technorati"><a href="http://technorati.com/faves?add=$URL">Technorati Favorite</a></li>';
        li['stumbleupon'] ='<li class="stumbelupon"><a href="http://www.stumbleupon.com/submit?url=$URL">Stumble It!</a></li>';
        li['twitter'] ='<li class="twitter"><a href="http://twitter.com/home?status=$TITLE+$URL">Twitter</a></li>';
        li = $.extend(options.extraSites,li)

        for (var x=0;x<options.sites.length;x++){
           var site = options.sites[x];
           var h = li[site];
           var titleTemp = options.title;
           titleTemp = titleTemp.replace("—","--");
           h = h.replace("$URL",options.url);
           h = h.replace("$TITLE",escape(titleTemp));
           html += h
        }
        
        var toggle = '<a href="#" class="toggle">' + options.label + '</a>';
        $container.html('<div class="sharethis-container" id="sharethis-'+WK.sharethis_count+'">' + toggle + '<ul class="menu">'+html+"</ul></div>");
        WK.sharethis_count = WK.sharethis_count + 1;
        
        if (options.openStyle == "click") {
           $("a.toggle",$container).click(function() {
                                             $("ul.menu",$(this).parent()).toggle("fast").toggleClass("shareThisOpen");
                                             return false;
                                          });
           
           
           $("body").click(function(){
               $(".shareThisOpen").removeClass("shareThisOpen").hide();
           });

        }
        

        if (options.openStyle == "hover") {
        
           $container.sharethis_interval = null;
           var checksharethis_status = function($container) {
              if ($(".shareThisOpen",$container).size() == 0) {
                 $(".sharethis-container ul.menu",$container).hide("fast");
              }
              if ($container.sharethis_interval) window.clearInterval($container.sharethis_interval);
           }
           $("a.toggle,ul.menu",$container).data('container',$container);
           
           $("a.toggle",$container).click(function() { $container = $(this).data("container"); $(".shareThisOpen",$container).removeClass("shareThisOpen"); return false; } );
           $("a.toggle,ul.menu",$container).hover(function() {
                                             $container = $(this).data("container");
                                             $("ul.menu",$container).addClass("shareThisOpen").show("fast");
                                             return false;
                                          },
                                          function() {
                                             $container = $(this).data("container");
                                             $(".shareThisOpen",$container).removeClass("shareThisOpen");
                                             if ($container.sharethis_interval) window.clearInterval($container.sharethis_interval);
                                             $container.sharethis_interval=self.setInterval(function(){checksharethis_status($container)},500);
                                             return false;
                                          }
                                          );
        }

        $("ul li a",$container).click(function(){   
                                          analytics.view(this.href);
                                          if (options.new_window) { Core.new_window(this.href); return false; }
                                 })

    
    },    
   
   
   signupEvent: function() {
        $(document).ready(function(){
            analytics.event('wksignup');
        });
   },
   

    getParam: function(param,paramStr) {
        // gets a parameter value from the query string
        var query = paramStr || window.location.search.substring(1);
        var parms = query.split('&');
        for (var i=0; i<parms.length; i++) {
           var pos = parms[i].indexOf('=');
           if (pos > 0) {
              var key = parms[i].substring(0,pos);
              var val = parms[i].substring(pos+1);
              val = val.replace(/\+/g,' ');
              if (key == param) {
                return unescape(val)
            }
          }
       }
        return null
    },
   
    campaigns: function() {
        var c = WK.getParam('campaign');
        if (WK.getParam('mp')) { c = "wk-"+WK.getParam('mp') }
        if (c) {analytics.campaignStart(c)}
    },

    mediaplex: function(){
       var mpt = new Date();
       if (WK.isCurrentPage("/forms/newsletter.html")) {
           WK.img("http://altfarm.mediaplex.com/ad/bk/18425-129687-3840-0?SignUp_Page=1&mpuid=" + mpt.getTime() + "-" + mpt.getTimezoneOffset());
       } else if (WK.isCurrentPage("/forms/newsletter/thanks.html")) {
           WK.img("http://altfarm.mediaplex.com/ad/bk/18425-129687-3840-0?ThankYou_Page=1&mpuid=" + mpt.getTime() + "-" + mpt.getTimezoneOffset());
       } else if (WK.isCurrentPage("/item/6659.html")) {
           WK.img("http://altfarm.mediaplex.com/ad/bk/18425-129687-3840-0?Teaching_A_Lean_Startup_Strategy=1&mpuid=" + mpt.getTime() + "-" + mpt.getTimezoneOffset());
       } else if (WK.isCurrentPage("/item/6288.html")) {
           WK.img("http://altfarm.mediaplex.com/ad/bk/18425-129687-3840-0?Breakthrough_Inventions=1&mpuid=" + mpt.getTime() + "-" + mpt.getTimezoneOffset());
       } else if (WK.isCurrentPage("/item/6630.html")) {
           WK.img("http://altfarm.mediaplex.com/ad/bk/18425-129687-3840-0?Thinking_Too_Little=1&mpuid=" + mpt.getTime() + "-" + mpt.getTimezoneOffset());
       } else if (WK.isCurrentPage("/item/6665.html")) {
           WK.img("http://altfarm.mediaplex.com/ad/bk/18425-129687-3840-0?What_CEOs_Do=1&mpuid=" + mpt.getTime() + "-" + mpt.getTimezoneOffset());
       } else if (WK.isCurrentPage("/item/6420.html")) {
           WK.iframe("http://img-cdn.mediaplex.com/0/18425/universal.html?page_name=stimulus_surprise&Stimulus_Surprise=1&mpuid=");
       } else if (WK.isCurrentPage("/item/6496.html")) {
           WK.img("http://altfarm.mediaplex.com/ad/bk/18425-129687-3840-0?Clay_Christensens=1&mpuid=" + mpt.getTime() + "-" + mpt.getTimezoneOffset());
       } else if (WK.isCurrentPage("/item/6498.html")) {
           WK.img("http://altfarm.mediaplex.com/ad/bk/18425-129687-3840-0?It_Pays_To_Hire_Women=1&mpuid=" + mpt.getTime() + "-" + mpt.getTimezoneOffset());
       } else if (WK.isCurrentPage("/item/6545.html")) {
           WK.img("http://altfarm.mediaplex.com/ad/bk/18425-129687-3840-0?Taking_The_Fear_Out=1&mpuid=" + mpt.getTime() + "-" + mpt.getTimezoneOffset());
       } else if ($("body").hasClass("home")) {
           WK.img("http://altfarm.mediaplex.com/ad/bk/18425-129687-3840-0?Homepage=1&mpuid=" + mpt.getTime() + "-" + mpt.getTimezoneOffset());
       }
    },
    
    isCurrentPage: function(url){
       var loc = document.location.href.split("?")[0];
       return loc.indexOf("hbs.edu"+url) != -1;
    },
   
    imgs: [],
    img: function(src){
        var i = new Image(1,1);
        i.src = src;
        WK.imgs.push(i);
    },

    iframe: function(src) {
       $("body").append('<iframe height="1" width="1" frameborder="0" src="'+src+'">');
    },
    
   
   
   links: function() {
       //$("#mail a").click(function(){
           //if ( /\/(\d+.html)/.test(this.href)) {
              //analytics.view("/cgi-bin/friend/"+RegExp.$1);
           //}
       //});
       //RQD--11/21/11 launching to enable tracking for new share this
       $(".email a").click(function(){
           if ( /\/(\d+.html)/.test(this.href)) {
	      analytics.view("/cgi-bin/friend/"+RegExp.$1);
	   }
       });
       var links = document.getElementsByTagName('a');
       for (var x = 0;x < links.length; x++) {
           a = links[x];
   
           var pdf = false;
           if (a.href.search(/\.pdf$/) > -1) {pdf = true;}
           if (pdf) {
               if (a.className.indexOf('pdf') == -1) { a.className += ' pdf'; }
               a.onclick = pdf_popup;
           }
           

           if (a.className.indexOf('popup') > -1) { a.onclick = std_popup;}
          
           else if (a.className.indexOf('newSameWindow') > -1) { a.onclick = newSameWindow_popup; }
           else if (a.className.indexOf('new_window') > -1) { a.onclick = std_newwindow; }
   
           if (a.className.indexOf('external') > -1) { a.className += ' offsite'; }
           if (a.className.indexOf('pdf') > -1) { a.className += ' offsite'; }
           if (a.href.indexOf('http://www.hbs.edu') > -1 && a.className.indexOf('offsite') == -1) { a.className += ' offsite'; }
           if (a.href.indexOf('hbsp.') > -1 && a.className.indexOf('offsite') == -1) { a.className += ' offsite'; }
           
       }
   }
   
}

window.WK = WK;

$(document).ready(function(){WK.ondomready();});

})(jQuery);




/*
 *
 *  OLD CODE THAT WE SHOULD EVENTUALLY MOVE INTO THE ABOVE SECTION
 *
 */
 

function trace() {
}

function rewrite_emails(form) {
        if (form.e && form.e.value == 'hbswk') {
                form.e.value = form.e.value + '@hbs.edu';
        }
}

function stage_form(form){
    if (document.location.href.indexOf('webdev') > -1 || document.location.href.indexOf('webstage') > -1)
    {

        if (form.aTemplate) {
            form.aTemplate.value = form.aTemplate.value.replace(/http:\/\/hbswk\.hbs\.edu/,"http://webstage.hbswk.hbs.edu");
        }
        if (form.rTemplate) {
            form.rTemplate.value = form.rTemplate.value.replace(/http:\/\/hbswk\.hbs\.edu/,"http://webstage.hbswk.hbs.edu");
        }
        if (form.u) {
            form.u.value = form.u.value.replace(/http:\/\/hbswk\.hbs\.edu/,"http://webstage.hbswk.hbs.edu");
        }
    }
}

function ap_stopAll(num) {
    // noop
}


function checkEmail( theForm ) {
    /*    validate the email  */
    var emailId = theForm.email.value.toLowerCase();
    var cont = true;

    if ( emailId == null ||
         emailId.indexOf('@') <= 0 ||
         emailId.length < 5)
    {
        alert('Please enter a valid email address in the form X@X.X');
        cont = false;
    }
    return cont;
}

function checkCurrentEmail( theForm ) {
    /*    validate the email  */
    var emailId = theForm.CurrentEmail.value.toLowerCase();
    var cont = true;

    if ( emailId == null ||
         emailId.indexOf('@') <= 0 ||
         emailId.length < 5)
    {
        alert('Please enter a valid email address in the form X@X.X');
        cont = false;
    }
    return cont;
}


function clean_comments(form) {
    form["comment-x5"].value = clean_chars(form["comment-x5"].value);
}

function clean_chars(text) {
    var replacements = {
        "\xa0": " ",
        "\xa9": "(c)",
        "\xae": "(r)",
        "\xb7": "*",
        "\u2018": "'",
        "\u2019": "'",
        "\u201c": '"',
        "\u201d": '"',
        "\u2026": "...",
        "\u2002": " ",
        "\u2003": " ",
        "\u2009": " ",
        "\u2013": "-",
        "\u2014": "--",
        "\u2122": "(tm)"};
        for (key in replacements) {
          var rx = new RegExp(key, 'g');
          text = text.replace(rx,replacements[key])
        }
    return text
}




// finds a good spot on the screen to position the new window
function windowpos() {
    var x = window.screenX + 10 + Math.floor(Math.random()*41);
    var y = window.screenY + 10 + Math.floor(Math.random()*41);
    var pos = ",screenX="+x+",screenY="+y+",";
    return pos;
}

/// used for new window
function new_window(url) {
  nw = window.open(url, "newwindow"+Date().replace(/[^0-9]/g,''), 'width=800,height=650,directories=yes,toolbar=yes,location=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes'+windowpos());
  nw.focus();
  return false;
}

/// used for pop ups
function popup(url) {
  win = window.open(url,'popupwindow', 'width=475,height=500,resizable=yes,menubar=yes,location=yes,toolbar=yes,scrollbars=yes'+windowpos());
  win.focus()
  return false;
}

/// used for pdf documents
function new_window(url) {
  win = window.open(url,'popupwindow', 'width=800,height=600,resizable=yes,menubar=yes,location=yes,toolbar=yes,scrollbars=yes'+windowpos());
  win.focus()
  return false;
}

/// used for same new window pop ups
function newSameWindow(url) {
  win = window.open(url, 'popupwindow', 'width=800,height=500,resizable=yes,location=yes,toolbar=yes,menubar=yes,scrollbars=yes'+windowpos());
  win.focus()
  return false;
}

function pdf_popup() {
    //register_click_a(this);
    return new_window(this.href);
}

function std_popup() {
    return popup(this.href);
}

function std_newwindow() {
    return new_window(this.href);
}

function newSameWindow_popup() {
    return newSameWindow(this.href);
}

