//canter.js
/*
 * This function parses ampersand-separated name=value argument pairs from
 * the query string of the URL. It stores the name=value pairs in
 * properties of an object and returns that object. Use it like this:
 *
 * var args = getArgs( );  // Parse args from URL
 * var q = args.q || "";  // Use argument, if defined, or a default value
 * var n = args.n ? parseInt(args.n) : 10;
 */
function getArgs(href) {
    var args = new Object( );
    query = href;     // Get query string
    var pairs = query.split("&");                 // Break at ampersand
    for(var i = 0; i < pairs.length; i++) {
        var pos = pairs[i].indexOf('=');          // Look for "name=value"
        if (pos == -1) continue;                  // If not found, skip
        var argname = pairs[i].substring(0,pos);  // Extract the name
        var value = pairs[i].substring(pos+1);    // Extract the value
        value = decodeURIComponent(value);        // Decode it, if needed
        args[argname] = value;                    // Store as a property
    }
    return args;                                  // Return the object
}
function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}
 
var SiteCatalyst = {};
SiteCatalyst.registerEvent = function(eventDetails){
	var linkTrackVars = [];
	if (s === undefined)
		return;
	if (eventDetails.events !== undefined && eventDetails.events.length > 0)
	{
		s.linkTrackEvents = eventDetails.events;
		s.events = eventDetails.events;
		linkTrackVars.push("events");
	}
	if (eventDetails.eVars !== undefined && eventDetails.eVars.length > 0)
	{
		var evars = eventDetails.eVars.split(",");
		for (var e in evars)
		{
			s[evars[e]] = eventDetails.title ;
			linkTrackVars.push(evars[e]);
		}
	}
	s.linkTrackVars = linkTrackVars.join();
	s.tl(this,'o',eventDetails.title);
	return;
};

SiteCatalyst.reportItemAdded = function (Course) {
    s.products=Course;
    s.events="scAdd";
    s.linkTrackVars = 'products,events';
    s.linkTrackEvents = 'scAdd';
    s.tl('true','o','Item Added');
}
SiteCatalyst.reportItemRemoved = function (Course) {
    s.products=Course;
    s.events="scRemove";
    s.linkTrackVars = 'products,events';
    s.linkTrackEvents = 'scRemove';
    s.tl('true','o','Item Removed');
}
SiteCatalyst.reportCheckout = function (CourseList) {
    s.products=CourseList;
    s.events="scCheckout";
    s.linkTrackVars = 'products,events';
    s.linkTrackEvents = 'scCheckout';
    s.tl('true','o','Checkout');
}
SiteCatalyst.reportPurchase = function (CourseList, PurchaseID, State, Zip) {
    s.products=CourseList;
    s.events="purchase";
    s.purchaseID = PurchaseID;
    s.zip = Zip;
    s.state = State;
    s.linkTrackVars = 'products,events,purchaseID,zip,state';
    s.linkTrackEvents = 'purchase';
    s.tl('true','o','Purchase');
}

//OrderSummaryControl1_btnPlaceOrder,OrderSummaryControl1_btnPlaceOrder2
var CANTER = {};
CANTER.vars = {
    emailSubject: "subject line",
    emailContent: "content",
    buttonHTML: '<span class="jsLeft"></span><span class="jsRight"></span>',
    footerWrapperHTML: '<div id="jsFooterWrapper"></div>',
    iconHTML: '<span class="jsIcon"></span>',
    colorBarHTML: '<div class="grid_16"><div id="jsContentColorBar"></div></div>',
    cornerHTML: '<div class="jsCornerTR"></div><div class="jsCornerTL"></div><div class="jsCornerBL"></div><div class="jsCornerBR"></div>',
    slideshowHTML: '<div id="jsContentSlideshowNav"><p id="jsContentSlideshowControls" class="play"></p></div>',
    toolsHTML: '<a id="jsToolsEmail"></a><a id="jsToolsPrint"></a>',
    tabHTML: '<span class="jsTabRight"></span>',
    popupVideoHTML: '<div id="jsVideoPlayer" class="jsVideoPlayerLoader"><div id="jsVideoPlayerClose"></div></div><div id="jsVideoPlayerScreen"></div>',
    popupCloseHTML: '<div class="jsBoxBar"><span class="jsIcon"></span></div>'
};
CANTER.functions = {
    popup: function(b, f) {
        var e = {
            width: "800",
            height: "600",
            top: "0",
            left: "0",
            directories: "no",
            location: "no",
            resizeable: "yes",
            menubar: "no",
            toolbar: "no",
            scrollbars: "yes",
            status: "no"
        };
        var a = f.windowName || "new_window";
        var d,
        c = "";
        for (d in e) {
            c += (c === "") ? "": ",";
            c += d + "=";
            c += f[d] || e[d]
        }
        return window.open(b, a, c)
    }
};
function dynamicSelect(d, c) {
    if (document.getElementById && document.getElementsByTagName) {
        if (document.getElementById(d) && document.getElementById(c)) {
            var a = document.getElementById(d);
            var f = document.getElementById(c);
            var e = f.cloneNode(true);
            var b = e.getElementsByTagName("option");
            refreshDynamicSelectOptions(a, f, b);
            a.onchange = function() {
                refreshDynamicSelectOptions(a, f, b)
            }
        }
    }
}
function refreshDynamicSelectOptions(a, f, b) {
    while (f.options.length) {
        f.remove(0)
    }
    var e = /( |^)(select)( |$)/;
    var d = new RegExp("( |^)(" + a.options[a.selectedIndex].value + ")( |$)");
    if (a.options[a.selectedIndex].value !== "") {
        for (var c = 0; c < b.length; c++) {
            if (b[c].className.match(e) || b[c].className.match(d) || b[c].className == "walden" || b[c].className == "blank") {
                f.appendChild(b[c].cloneNode(true))
            }
        }
        f.disabled = false
    } else {
        for (var c = 0; c < b.length; c++) {
            if (b[c].className == "blank") {
                f.appendChild(b[c].cloneNode(true))
            }
        }
        f.disabled = true
    }
}
$(document).ready(function() {
    if ($.browser.safari) {
        $("body").addClass("isSafari")
    }
    if ($.browser.msie && parseInt($.browser.version) === 8) {
        $("body").addClass("isIE8")
    }
    if ($.browser.msie && parseInt($.browser.version) <= 8) {
    	$(".contentMain").addClass("clearfix");
    }
    
	$(".special-offers h3").click(function(){
    	$(this).nextAll(".content").slideToggle();
    });
	
    $(".universityInfo h3").click(function(){
    	$(this).nextAll(".universityContent").slideToggle();
    });
    
    $("#signInGlobal button").click (function(){
    	SiteCatalyst.registerEvent({events:'event2',title:'MyCanter Login'});
    });    
    $("body").addClass("wjs");
    $("p.button a").append(CANTER.vars.buttonHTML);
    $("#footer").wrap(CANTER.vars.footerWrapperHTML);
    $("p.faq, p.call, p.email, li.cart a, p.catalog a, p.back a, p.checkmark, h2.checkmark").prepend(CANTER.vars.iconHTML);
    $("a.info, a.infoDark").prepend(CANTER.vars.iconHTML).click(function(b) {
        b.preventDefault();
        var c = $(this).data("popup") || {};
        if ($(this).attr("target")) {
            c.windowName = $(this).attr("target")
        }
        var a = CANTER.functions.popup(this.href, c);
        $(this).data("windowObject", a)
    });
    $("h3 a:not(.info)").parent().append(CANTER.vars.iconHTML);
    $("h2.legend").prepend(CANTER.vars.iconHTML).click(function() {
        if ($(this).is(".jsLegendClosed")) {
            $(this).removeClass("jsLegendClosed");
            $(this).next().slideDown()
        } else {
            $(this).addClass("jsLegendClosed");
            $(this).next().slideUp()
        }
    });
    // open first legend by default on the My Courses page        
    if($('div.tabs h2.legend.defaultOpen').length > 0) {        
        $('div.tabs h2.legend:not(.defaultOpen)').each(function(){        
            $(this).addClass('jsLegendClosed');                     
            $(this).next().hide();        
        });                 
    }        
    // add close icon to sign in popup box        
    $('#signInGlobal').prepend(CANTER.vars.popupCloseHTML).find('span.jsIcon').click(function(){        
        $(this).parents('li:first').removeClass('hover');        
    });

    if ($("body.templateHome").size() === 1) {
        $("#contentCourseFinder").parent().after(CANTER.vars.colorBarHTML)
    }
    $("#contentSlideshow, .contentCourseFinder,  #contentCourseFinder, #downloadCourseCatalog, #signIn, div.nav, div.callout, div.courseContentRelated, h2.legend, div.boxHeader, div.confirmation, div.addToCart").append(CANTER.vars.cornerHTML);
    $("table.cart thead tr, table.courses thead tr").find("th:first").addClass("firstChild").end().find("th:last").addClass("lastChild");
    if ($("body.templateHome").size() === 1) {
        $("#navMain>ul>li").hoverIntent({
            sensitivity: 1,
            interval: 150,
            timeout: 400,
            over: function() {
                $(this).addClass("hover")
            },
            out: function() {
                $(this).removeClass("hover")
            }
        })
    }

    /* global navigation hover */        
    $('#navGlobal>ul>li>a#navGlobalLI3').click(function(){        
        $(this).parent().addClass('active');        
        $(this).parent().addClass('hover');        
        $('input:first', $(this).parent()).focus();        
        return false;        
    })              
    $('#navGlobal>ul>li').hoverIntent({            
        sensitivity: 1, /* number = sensitivity threshold (must be 1 or higher) */        
        interval: 150,  /* number = milliseconds for onMouseOver polling interval */        
        timeout: 2000,   /* number = milliseconds delay before onMouseOut */        
        over: function(){        
            if($(this).hasClass('active')) {        
                $(this).addClass('hover');                      
            }        
        },        
        out:function() {        
            $(this).removeClass('active');                      
            $(this).removeClass('hover');        
        }        
    });        
    /* add to cart button with multiple options */        
    $('div.addToCart.withOptions').hoverIntent({            
        sensitivity: 1, /* number = sensitivity threshold (must be 1 or higher) */        
        interval: 150,  /* number = milliseconds for onMouseOver polling interval */        
        timeout: 400,   /* number = milliseconds delay before onMouseOut */        
        over: function(){        
            $(this).addClass('hover');        
        },        
        out:function() {        
            $(this).removeClass('hover');        
        }        
    });        
        
    $("#contentSlideshow ul").before(CANTER.vars.slideshowHTML).cycle({
        speed: "fast",
        timeout: 8000,
        pager: "#jsContentSlideshowNav"
    }).prev().find("#jsContentSlideshowControls").click(function() {
        if ($(this).is(".play") === true) {
            $(this).removeClass("play").addClass("pause");
            $("#contentSlideshow ul").cycle("pause")
        } else {
            $(this).removeClass("pause").addClass("play");
            $("#contentSlideshow ul").cycle("resume")
        }
    });
    dynamicSelect("selectState", "selectUniversityPartner");
    $("div.contentTitle").append(CANTER.vars.toolsHTML).end().find("#jsToolsEmail").click(function() {
        location.href = "mailto:?subject=" + CANTER.vars.emailSubject + "&body=" + CANTER.vars.emailContent
    }).end().find("#jsToolsPrint").click(function() {
        window.print()
    });
    $('div.tabs:not(.static) div.tabsContent').hide();
    $("ul.tabsNavigation li").each(function(a) {
        $(this).append(CANTER.vars.tabHTML).click(function() {
    
            if(!$(this).parents('div.tabs').hasClass('static')) {
                
                $(this).parents("ul.tabsNavigation").find("li.active").removeClass("active");
                $(this).addClass("active");
                var c = $(this).find("a").attr("href");
                $(this).parents("div.tabs").find("div.tabsContent:visible").hide();
                $(c).show();
                return false
            }
            
        });
        if(!$(this).parents('div.tabs').hasClass('static')) {  
            if ($(this).is(".active")) {
                var b = $(this).find("a").attr("href");
                $(b).show()
            }
        }
    });
    $("#inputShippingSame").click(function() {
        if ($(this).attr("checked") === true) {
            $("#inputBillingAddressLine1").val($("#inputShippingAddressLine1").val()).attr("readonly", true);
            $("#inputBillingAddressLine2").val($("#inputShippingAddressLine2").val()).attr("readonly", true);
            $("#inputBillingCity").val($("#inputShippingCity").val()).attr("readonly", true);
            $("#inputBillingState").val($("#inputShippingState").val());
            $("#inputBillingPostalCode").val($("#inputShippingPostalCode").val()).attr("readonly", true);
            $("#inputBillingCountry").val($("#inputShippingCountry").val())
        } else {
            $("#inputBillingAddressLine1").attr("readonly", false);
            $("#inputBillingAddressLine2").attr("readonly", false);
            $("#inputBillingCity").attr("readonly", false);
            $("#inputBillingPostalCode").attr("readonly", false)
        }
    });
    $("a.media").click(function() {
        $(this).blur();
        $("body").append(CANTER.vars.popupVideoHTML);
        $("#jsVideoPlayerScreen").css("opacity", 0.7);
        var e = $(this).attr("class").replace("media ", "");
        var k = $(this).attr("href");
        var g = $(this).offset().left;
        var f = $(this).offset().top;
        var b = $(this).width() - 10;
        var i = $(this).height() - 10;
        if ($(this).find("img").size() === 1) {
            b = $(this).find("img").width() - 10;
            i = $(this).find("img").height() - 10;
            g = $(this).find("img").offset().left;
            f = $(this).find("img").offset().top
        }
        if (b < 1) {
            b = 1
        }
        if (i < 1) {
            i = 1
        }
        var j = parseInt(((e.match(/w:(\d+)/) || [])[1] || 0), 10);
        var d = parseInt(((e.match(/h:(\d+)/) || [])[1] || 0), 10);
        var a = parseInt($(window).width() / 2, 10) - parseInt((j / 2), 10);
        var m = parseInt($(window).scrollTop() + 140, 10);
        $("#jsVideoPlayer").css("width", b + "px").css("height", i + "px").css("top", f + "px").css("left", g + "px").css("display", "block").animate({
            width: j + "px",
            height: d + "px",
            left: a - 5 + "px",
            top: m - 5 + "px"
        },
        250,
        function() {
            $(this).append('<div class="getFlashPlayer"></a>').find("div.getFlashPlayer").click(function() {
                location.href = "http://www.adobe.com/go/EN_US-H-GET-FLASH"
            }).end().removeClass("videoPlayerLoader").find("div.getFlashPlayer").jmedia({
                version: "9,0"
            },
            {
                src: k + "?type=.swf",
                width: j,
                height: d,
                quality: "best"
            })
        });
        $("#jsVideoPlayerScreen, #jsVideoPlayerClose").click(function() {
            $("#jsVideoPlayer").addClass("videoPlayerLoader").css("height", $("#jsVideoPlayer").height()).html("").animate({
                width: b + "px",
                height: i + "px",
                top: f + "px",
                left: g + "px",
                opacity: 0.1
            },
            250,
            function() {
                $("#jsVideoPlayer, #jsVideoPlayerScreen").remove()
            })
        });
        return false
    });
    $("li:last-child").addClass("lastChild");
    $('li:first-child').addClass('firstChild');

    // Track product added to cart
    $("p.addToCart a,div.addToCart a").click (function (){
        var href = $(this).attr("href");
        var hrefSplit = href.split("?");
        var args = getArgs(hrefSplit[1]);
        SiteCatalyst.reportItemAdded(";"+ args.ProductID);
    });
    
    // Track product removed from cart
    $("a.delete").click (function(){ 
        //alert();
        SiteCatalyst.reportItemRemoved(";" + $(this).parent().parent().children("td:first-child").find("span:eq(1)").html());
    }); 
    
    // If we are on the order summary page, send SiteCatalyst cart events    
    if ($(".contentTitle > h2").html() == "Registration Center - Order Summary ")    
    {
    	var CourseList = "";
    	$(".grid_6.alpha .pad > p").each(function () {
		// Build string of this format: ";ProductID;Quantity;Price,;ProductID;Quantity;Price
		if (CourseList.length > 0) 
		{
			CourseList += ",;" + $(this).find("span:eq(1)").html();
		}
		else 
		{
			CourseList += ";" + $(this).find("span:eq(1)").html();
		}    		
    	});
    	 	
    	SiteCatalyst.reportCheckout(CourseList);
    }

    // If we are on the order confirmation page, send SiteCatalyst cart events    
    if ($(".contentTitle > h2").html() == "Registration Center - Order Confirmation")
    {
    	var CourseList = "";
    	
    	$(".grid_6.alpha .pad > p").each(function () {
    		// Build string of this format: ";ProductID;Quantity;Price,;ProductID;Quantity;Price
    		if (CourseList.length > 0) 
    		{
    			CourseList += ",;" + $(this).find("span:eq(1)").html() + ";1;" + $(this).find("span:eq(5)").html().replace("$", "");
    		}
    		else 
    		{
    			CourseList += ";" + $(this).find("span:eq(1)").html() + ";1;" + $(this).find("span:eq(5)").html().replace("$", "");
    		}    		
    	});
	//Retrieve State and Zip information
	var Location = $("#OrderConfirmation1_lblShippingCityStateZip").html().toString().split(",");
	var State = trim(Location[1]);
	var Zip = trim(Location[2]);
	
	//Use confirmation number as PurchaseID
	var PurchaseID = $("#OrderConfirmation1_lblOrderConfirmationNumber").html();
	
	SiteCatalyst.reportPurchase(CourseList, PurchaseID, State, Zip);    
    }
    
    //Hide text for labels with image backgrounds
    $("#PaymentControl1_lnkEdit,#PaymentControl1_lnkUseAddress,#PaymentControl1_lnkUsethisAddress").html("");
    
    $('.content tr:odd').addClass("alt");

});
