YAHOO.namespace("ifs");

var navCalSelectHandler = function(type,args,obj) {
	var selected = args[0];
    if (selected[0][1] < 10) { selected[0][1] = "0" + selected[0][1]; };
    if (selected[0][2] < 10) { selected[0][2] = "0" + selected[0][2]; };

    var newUrl = '/cal/main/setViewPeriod.do?b=de&date=' + selected[0][0] + selected[0][1] + selected[0][2];
	analyticsEventTrack('Mini Cal',selected[0][0] +'-'+ selected[0][1] +'-'+ selected[0][2]);//Added by Ryan Christie ISU
	setTimeout('window.location.href = "'+newUrl+'"',200);
};

var groupSelectHandler = function(e) { // Depricated
	var myTarget = YAHOO.util.Event.getTarget(e);
	window.location.href = 'showMain.rdo?setappvar=group('+ myTarget.value +')';
}

YAHOO.ifs.init = function() {
	if (document.getElementById('cal1')) {
		YAHOO.ifs.cal1 = new YAHOO.widget.Calendar("cal1","cal1", {pagedate: navcalendar[0], selected: navcalendar[1] +"/"+ navcalendar[2] +"/"+ navcalendar[3] +"-"+ navcalendar[4]+"/"+ navcalendar[5] +"/"+ navcalendar[6]});
		YAHOO.ifs.cal1.selectEvent.subscribe(navCalSelectHandler, YAHOO.ifs.cal1, true);
		YAHOO.ifs.cal1.render();	
	}

	YAHOO.util.Event.addListener("groupSelection", "change", groupSelectHandler); // Depreicated
	// Added by JBB 05/08
    if(document.getElementById('nccuTrigger')){
    var nccuTrigger = document.getElementById('nccuTrigger');
    var nccuLoaded = false;
    nccuTrigger.onclick = function() {
        if(!nccuLoaded) {
            var nccuRss = new RssClient;
            nccuRss.initialize('nccuHost', '/feed/ext/nccu.xml');
            nccuRss.fetch();
            nccuLoaded = true;
        };
        var nccuTriggerObj = new AnimateDiv;
        nccuTriggerObj.initialize('nccuHost', 'nccuTrigger');
        nccuTriggerObj.actuate();
        return false;
    };
    };
    if(document.getElementById('ncsuTrigger')){
    var ncsuTrigger = document.getElementById('ncsuTrigger');
    var ncsuLoaded = false;
    ncsuTrigger.onclick = function() {
        if(!ncsuLoaded) {
            var ncsuRss = new RssClient;
            ncsuRss.initialize('ncsuHost', '/feed/ext/ncsu.xml');
            ncsuRss.fetch(); 
            ncsuLoaded = true;
        };
        var ncsuTriggerObj = new AnimateDiv;
        ncsuTriggerObj.initialize('ncsuHost', 'ncsuTrigger');
        ncsuTriggerObj.actuate();
        return false;
    };
    };
    if(document.getElementById('uncTrigger')){
    var uncTrigger = document.getElementById('uncTrigger');
    var uncLoaded = false;
    uncTrigger.onclick = function() {
        if(!uncLoaded) {
            var uncRss = new RssClient;
            uncRss.initialize('uncHost', '/feed/ext/unc.xml');
            uncRss.fetch();
            uncLoaded = true;
        }
        var uncTriggerObj = new AnimateDiv;
        uncTriggerObj.initialize('uncHost', 'uncTrigger');
        uncTriggerObj.actuate();;
        return false;
    };
    };
    if(edTrigger = document.getElementById('edTrigger')){
    var edTrigger = document.getElementById('edTrigger');
    edTrigger.onclick = function() {
        var edTriggerObj = new AnimateDiv;
        edTriggerObj.initialize('hideshow', 'edTrigger');
        edTriggerObj.actuate();
        return false;
    };
    };
	var initMenu = new Menu;
	initMenu.activate('artsSub', 'artsClicker', 152); // target DOM id to toggle, DOM id of button to activate, max height of target
	initMenu.activate('athleticsSub', 'athleticsClicker', 90); 
	initMenu.activate('lifeSub', 'lifeClicker', 135); 
	initMenu.activate('otherSub', 'otherClicker', 310);

    var headerHomeClick = document.getElementById('head-top');
    headerHomeClick.onclick = function () { window.location.href = '/student' };
	
    var clearSearchBox = document.getElementById('basicsearchbox');
    clearSearchBox.onclick = function() { this.value = ''; }
    // set opacity to zero for today's events
    var opacity = YAHOO.util.Dom.setStyle(document.getElementById('hideshow'), 'opacity', 0);  
	try {
		alterDateDisplay();
	} catch (e) {
		alert('There was a problem altering the display of dates.');
	}


}

YAHOO.util.Event.onDOMReady(YAHOO.ifs.init);

function alterDateDisplay() {
	var centerCol = document.getElementById("center_column");
	var modGroupTd = centerCol.getElementsByTagName('td');
	var tdInspector = [];
	var i = undefined;
	var j = undefined;
	
    for (i = 0; i < modGroupTd.length; i++) {
       if(modGroupTd[i].className === 'dateRow') {
			tdInspector.push(modGroupTd[i].childNodes[0]);
       };
    };
	for (j = 0; j < tdInspector.length; j++) { // Search for dupes
		if(tdInspector[j + 1]) {
				if(tdInspector[j].href === tdInspector[j + 1].href) { // Found a duplicate date. // Hide it.
					tdInspector[j + 1].parentNode.parentNode.style.display = 'none'; 
					j++;
					while(tdInspector[j + 1] && tdInspector[j].href === tdInspector[j + 1].href) { // Look for more.
						tdInspector[j + 1].parentNode.parentNode.style.display = 'none';
						j++;
					}
				}; // else push object to an array, now we can toggle visibility of each array element
			};
	};
}
// Added by JBB 05/08
function AlterSymbol() { // Alters submenu toggle from one class to another (defaults to 'less')
	this.triggerId = undefined;
	this.currClass = 'less';
}
AlterSymbol.prototype.activate = function(triggerId, newClass) { //
	this.triggerId = triggerId;
	this.currClass = newClass;
	try {
		var myTriggerId = document.getElementById(this.triggerId);
        myTriggerId.className = newClass;
		//var triggerText = myTriggerId.firstChild;
		//myTriggerId.removeChild(triggerText);
		//var finalSymbol = document.createTextNode(this.symbol);
		//myTriggerId.appendChild(finalSymbol);
	} catch(e) {
		alert('There was a problem altering the toggle icon.');
	}

	
	return;
}
// requires YUI animation library
function Menu() { // Enables the toggling of menu items with submenus via animating the height of the html element.
	this.viewId = 'All';
	this.triggerId = undefined;
	this.duration = .5;
}

Menu.prototype.activate = function(viewId, triggerId, targetHeight) { // Assumes toggle class will be text "more" or "less"
	this.viewId = viewId;
	this.triggerId = triggerId;
	var menuButton = document.getElementById(this.triggerId);
	menuButton.targetId = this.viewId;
	menuButton.targetHeight = targetHeight;
	menuButton.duration = this.duration;
	if (document.getElementById(menuButton.targetId).style.height !== '0px') {
		var toggleSym = new AlterSymbol;
		toggleSym.activate(triggerId, 'less');
		toggleSym = undefined; // destroy object
	}
	
	menuButton.onclick = function(e) {
        var isIE = '';
        var notIE = '';
        if (window.event) {     
            isIE = window.event.srcElement.id; 
        }
        if (e) {                
            notIE = e.target.id;
        }
        if(isIE === this.id || notIE === this.id) {
    		var alterSymbol = function(sym) {
    				var toggleSym = new AlterSymbol;
    				toggleSym.activate(triggerId, sym);
    				
    				return;
    			}
    			
    		if (this.targetHeight > 200) {
    			this.duration = 1;
    		}
    		try{
    			var myId = document.getElementById(this.targetId);
    			var menuItemOff = new YAHOO.util.Anim(this.targetId, {
    						height: 	{ to: 0 }
    					}, 1, YAHOO.util.Easing.easeOut); 
    			var menuItemOn = new YAHOO.util.Anim(this.targetId, {
    						height: { to: this.targetHeight }  
    					}, 1, YAHOO.util.Easing.easeOut); 
    			if (myId.style.height === '0px') {
    				menuItemOn.duration = this.duration;
    				menuItemOn.animate(); 
    				menuItemOn.onComplete.subscribe(function(){ alterSymbol('less'); });
    			} else {
    				menuItemOff.duration = this.duration;
    				menuItemOff.animate(); 
    				menuItemOff.onComplete.subscribe(function(){ alterSymbol('more'); });
    			}
    
    		} catch(e) {
    			alert('The menu controls have malfunctioned.');
    		}
		 }

	}
	
	return;
}
function AnimateDiv() {
    this.divId = undefined;
    this.triggerId = undefined;
};
AnimateDiv.prototype.initialize = function(divId, triggerId) {
    this.divId = divId;
    this.triggerId = triggerId;
}
AnimateDiv.prototype.actuate = function() {
    var myDiv = document.getElementById(this.divId);
    var myTrigger = document.getElementById(this.triggerId);
    
    var showOrHide = function(targetEle, throwAway) {
        var opacity = YAHOO.util.Dom.getStyle(targetEle, 'opacity');
        if(opacity < '1') {
            targetEle.style.display = 'none';
        };
        
        var currTextNode = myTrigger.firstChild;
        myTrigger.removeChild(currTextNode);
        var changeText = document.createTextNode(throwAway);
        myTrigger.appendChild(changeText);
        
    };
   
        var hideEvents = new YAHOO.util.Anim(myDiv, {
            opacity: {
                to: 0
            }
        }, 1, YAHOO.util.Easing.easeOut);
        var showEvents = new YAHOO.util.Anim(myDiv, {
            opacity: {
                to: 1
            }
        }, 1, YAHOO.util.Easing.easeOut);
        if (myDiv.style.display === 'block') {
            //e.style.display = 'none';
            newHTML = 'More >';
            hideEvents.duration = .5;
            hideEvents.animate();
            hideEvents.onComplete.subscribe(function(){
                showOrHide(myDiv, newHTML);
            });
        }
        else {
            // e.style.opacity = '0';
            myDiv.style.display = 'block';
            newHTML = 'Less >';
            showEvents.duration = .5
            showEvents.animate();
            showEvents.onComplete.subscribe(function(){
                showOrHide(myDiv, newHTML);
            });
        };
    return;    
};


