if(typeof(discover) === 'undefined') {
	var discover = {};
}

/**
 * Get More Calendar Tabs
 *
 * @author Dana Carlson (dcarlson@mcdpartners.com)
 */

discover.getMoreCalendar = (function () {

	var init = function (config) {
		
	  	/**
		*Constants to be manually updated when calendar is changed
		*/
		
		//What tab place is the special tab located in? Keep quotation marks.
		var specialTab = config.specialTab || "4";
		 
		//What tab is active on page load?
		var activeTabOnPageLoad = config.activeTabOnPageLoad || 5;
			
		//Please assign the tab urls to the appropiate tabs
		var signedUpCodes = config.signedUpCodes || {
			//"tab1" : "cbb_q4groceries.htm",
			"tab1" : "",
			"tab2" : "",
			"tab3" : "ACTG08",
			"tab4" : "ACTG09",
			"tab5" : "ACTG10"
		}; 
		
	
	  /**
		* Classes are added or removed according to assigned active tab and total number of tabs
		*/
		mcd.dom.removeClass("calendar-background", "hide");	
		mcd.dom.removeClass("tab" + specialTab, "tab");
		mcd.dom.addClass("tab" + specialTab, "tab-special");
		
		mcd.dom.removeClass("gutter-section" + specialTab, "gutter-section");
		mcd.dom.addClass("gutter-section" + specialTab, "gutter-section-special");
	
	
	  /**
		* Sign Up Now Links in the Tab Content are populated here.
		*/
		
		for (var i = 1; i <= 5; i++) {
			var submitButton = document.getElementById("tab-content" + i);
			submitButton = submitButton.getElementsByTagName("a");
			for (var j = 0; j < submitButton.length; j++) {
				if (mcd.dom.hasClass(submitButton[j], "submit")) {
					var number = "tab" + i;
					submitButton[j].href = "https://www.discovercard.com/cardmembersvcs/rewards/app/getMore?promoCode=" + signedUpCodes[number];
					//submitButton[j].href = "https://www.discovercard.com/cardmembersvcs/rewards/app/cbbPromotion?promoCode=" + signedUpCodes[number];
					//submitButton[j].href = "https://www.discovercard.com/cardmembersvcs/loginlogout/app/signin?" + signedUpCodes[number];
					//submitButton[j].href = "misc/redirect/" + signedUpCodes[number];
					
				}	
			}
		}
		
	
		//get query string
		var query = window.location.search;
	
	
	  /**
		* If there is a query string attached to the url on pageload the declared
		* active tab is changed to reflect that.
	    */
		if(query){
			var splitQuery = query.split('?promoCode=');
			splitQuery = splitQuery[1];
			if(splitQuery) {
			if(splitQuery.indexOf('&') != -1) {
				splitQuery = splitQuery.split('&');
				splitQuery = splitQuery[0];
				}
			}
			if (splitQuery == signedUpCodes.tab1) {
				var activeTabOnPageLoad = 1;
				}
			else if (splitQuery == signedUpCodes.tab2) {
				var activeTabOnPageLoad = 2;
				}
			else if (splitQuery == signedUpCodes.tab3) {
				var activeTabOnPageLoad = 3;
				}
			else if (splitQuery == signedUpCodes.tab4) {
				var activeTabOnPageLoad = 4;
				}
			else if (splitQuery == signedUpCodes.tab5) {
				var activeTabOnPageLoad = 5;
				}
			};
		
		// configures and positions overlay
		mcd.Overlay.manager.init({
			"security-overlay" : {
				position: {y:200,x:553},
				terminators : {
					"close" : function () {
						return true; 
					}
				}
			}
		});
		
	  /**
		* Function that loops through the number of tabs looking for a match. This
		* will show and hide the correct tabs by adding and removing classes.
		* 
		* @param {number} num
		*/
		var activateTab = function(num){
	
			for (var i = 1; i <= 5; i++){
				if (i === num){
					mcd.dom.removeClass("tab-content" + i, "hide");
					mcd.dom.removeClass("tab" + i, "tab");
					mcd.dom.addClass("tab" + i, "tab-active");
					
					// the smaller tab gets different class names
					if (specialTab == i) {
						mcd.dom.removeClass("tab" + i, "tab-special");
						mcd.dom.removeClass("tab" + i, "tab-active");
						mcd.dom.addClass("tab" + i, "tab-special-active");
					}
	
					mcd.dom.addClass("gutter-section" + i, "active");
					
					// the smaller tab gets different class names				
					if (specialTab == i){
						mcd.dom.removeClass("bottom-gutter", "bottom-gutter" + i);
						mcd.dom.addClass("bottom-gutter", "bottom-gutter-special" + i);
					}
					
					else {
						mcd.dom.removeClass("bottom-gutter", "bottom-gutter-special" + specialTab);
						mcd.dom.addClass("bottom-gutter", "bottom-gutter" + i)
					};
					
					// in this instance we need to specify a different bgimage
					if (specialTab == 4 && i == 3) {
						mcd.dom.removeClass("bottom-gutter", "bottom-gutter3");
						mcd.dom.addClass("bottom-gutter", "bottom-gutter3-active4");
					};
		
					mcd.dom.addClass("calendar-background", "tab" + i);		
					if (document.getElementById("disclosure-tab" + i)){
						mcd.dom.removeClass("disclosure-tab" + i, "hide");
					}
				}
				
				else {
					mcd.dom.addClass("tab-content" + i, "hide");
					mcd.dom.removeClass("tab" + i, "tab-active");
					mcd.dom.addClass("tab" + i, "tab");
					
					if (specialTab == i) {
						mcd.dom.removeClass("tab" + i, "tab");
						mcd.dom.removeClass("tab" + i, "tab-special-active");
						mcd.dom.addClass("tab" + i, "tab-special");
					}
					
					// in this instance we need to specify a different bgimage
					if (specialTab == 4 && i == 3) {
						mcd.dom.addClass("bottom-gutter", "bottom-gutter3");
						mcd.dom.removeClass("bottom-gutter", "bottom-gutter3-active4");
					};
					
					mcd.dom.removeClass("gutter-section" + i, "active");
					mcd.dom.removeClass("bottom-gutter", "bottom-gutter" + i);
	
					mcd.dom.removeClass("calendar-background", "tab" + i);
					
					if (document.getElementById("disclosure-tab" + i)) {
						mcd.dom.addClass("disclosure-tab" + i, "hide");
					}
				}
			}
		};
		
	  /**
		* Function that adds and removes clases if tab is active or not on mouseover. 
		* 
		* @param {number} num
		*/
		var mouseOverTab = function(num){
	
			
			if (!mcd.dom.hasClass("tab" + num, "active")) {
				mcd.dom.addClass("tab" + num, "on");
				mcd.dom.addClass("gutter-section" + num, "on");
			};
			
			if (mcd.dom.hasClass("tab" + num, "tab-special")) {
				mcd.dom.removeClass("tab" + num, "tab-special");
				mcd.dom.removeClass("tab" + num, "on");
				mcd.dom.addClass("tab" + num, "tab-special-on");
			}
		};
		
		var mouseOverTab = function(num){
			mcd.dom.addClass("gutter-section" + num, "on");
			
			//remove and apply a separate set of classes for ie6
			if (mcd.dom.hasClass("tab" + num, "tab-special")) {	
				mcd.dom.removeClass("tab" + num, "tab-special");
				mcd.dom.addClass("tab" + num, "tab-special-on");
			}
			
			else {	
				mcd.dom.addClass("tab" + num, "on");
			};
		};
		
		var mouseOutTab = function(num){
			mcd.dom.removeClass("gutter-section" + num, "on");
			
			//remove and apply a separate set of classes for ie6
			if (mcd.dom.hasClass("tab" + num, "tab-special-on")) {
				mcd.dom.removeClass("tab" + num, "tab-special-on");
				mcd.dom.addClass("tab" + num, "tab-special");
			}
			
			else {
				mcd.dom.removeClass("tab" + num, "on");
			};
		};
		
	  /**
		* Call to function 
		* 
		* @param {number} activeTabOnPageLoad
		*/
		activateTab(activeTabOnPageLoad);
		
	  /**
		* Loops through and adds event for each tab, changing
		* tab status and hiding all open overlays
		* 
		*/
		for (var i = 1; i < 6; i++) {
			if (document.getElementById("tab" + i)) {
				mcd.event.add("tab" + i, "click", function() {
					var num = this.id.charAt(3);
					num = num - 0;
					activateTab(num);
					mcd.Overlay.manager.hideAll();
				});
				mcd.event.add("tab" + i, "mouseover", function() {
					var num = this.id.charAt(3);
					num = num - 0;
					mouseOverTab(num);
				});
				mcd.event.add("tab" + i, "mouseout", function() {
					var num = this.id.charAt(3);
					num = num - 0;
					mouseOutTab(num);
				});
				if (document.getElementById("signup-text-tab" + i)) {
					mcd.event.add("signup-text-tab" + i, "click", function(event) {
						mcd.event.preventDefault(event);
					});
				};
			}
		};
	};
	
	return service = {
		'init' : init
	};
	
})();