﻿

/* ======================== | RUN ON PAGE STARTUP | =================== */

/* ====| STARTUP:Detect Browser |====== */

clientBrowser = new Object()
{
    clientBrowser.isIE = false;
    clientBrowser.isFirefox = false;
    clientBrowser.isSafari = false;
    clientBrowser.isNetscape = false;
    clientBrowser.isOther = false;
    clientBrowser.name = '';
    
    clientBrowser.supportsOpacity = true;
    clientBrowser.screenResolution = screen.width + 'x' + screen.height;
    
    
    switch(navigator.appName)
    {
        case 'Microsoft Internet Explorer':
            clientBrowser.isIE = true;
            if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){var ieversion=new Number(RegExp.$1)}
            clientBrowser.name = 'Internet Explorer';
            clientBrowser.version = ieversion;
        break;
        
        case 'Netscape':                    
            if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent))
            {
                clientBrowser.isFirefox = true;
                clientBrowser.name = 'Firefox';
                clientBrowser.version = new Number(RegExp.$1);
            }                    
            else if (/(\d\.\d)[ ]Safari/.test(navigator.userAgent))
            {
               clientBrowser.isSafari = true;
               clientBrowser.name = 'Safari';                       
               clientBrowser.version = new Number(RegExp.$1);
            }
            else
            {
                clientBrowser.isNetscape = true;
                clientBrowser.name = "Netscape";
            }
        break;
        
        default:
            clientBrowser.isOther = true;
            clientBrowser.name = "Other";             
        break;
    }
}
    
    
    
    
/* =========| STARTUP:CURSOR POSITION  |===========*/

cursorPosition = new Object()
{
    cursorPosition.x = 0;
    cursorPosition.y = 0;
    
    cursorPosition.Get = function getCursorPosition(e)
    {
        e = e || window.event;
        var cursor = {x:0, y:0};
        if (e.pageX || e.pageY) {
            cursor.x = e.pageX;
            cursor.y = e.pageY;
        } 
        else {
            var de = document.documentElement;
            var b = document.body;
            cursor.x = e.clientX + 
                (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0);
            cursor.y = e.clientY + 
                (de.scrollTop || b.scrollTop) - (de.clientTop || 0);
        }
        
        cursorPosition.x = cursor.x;
        cursorPosition.y = cursor.y;
    }
}
    
    
    
        
function getXMLHTTPRequest()
{
    try {httpReq = new XMLHttpRequest();}
    catch(err)
    { 
        try {httpReq = new ActiveXObject("Msxml2.XMLHTTP");}
        catch(err)
        { 
            try {httpReq = new ActiveXObject("Microsoft.XMLHTTP");}
            catch(err) {httpReq = false;}
        }
    } 
    
    return httpReq;
}
    
var http = getXMLHTTPRequest();



/* ======================== | PAGE METHODS | =================== */

    /* ==============| GENERIC |============== */
        function loadFile(name)
        {
            if (/\.(.+)/.test(name))
            {
                if(RegExp.$1 == 'js')
                {
                    var _file = document.createElement('script');
                    _file.setAttribute("type","text/javascript");
                    _file.setAttribute("src",name);                    
                    document.getElementsByTagName('body')[0].appendChild(_file);
                }
            }
        }

		function openWin(URL,w,h) {
			var winame='window';

			myWin = window.open(URL,winame,'scrollbars,width='+w+',height='+h);
		}
		
        /* =======| GENERIC:XML |======== */

        function parseXML()
        {       
            try {_req = new ActiveXObject("Microsoft.XMLDOM");}
            catch(err)
            {            
                try {_req = document.implementation.createDocument("","",null);}
                catch(err) {_req = false;}
            }
            return _req;
        }
 
        function getXmlTagValue(xmlString)
        {
            try {return eval(xmlString);}
            catch(err){return null;}
        }

    /*====================| PAGE SEARCH |=================== */


    function checkKeycode(e) {
        var keycode;
        if (window.event) keycode = window.event.keyCode;
        else if (e) keycode = e.which;
        //alert("keycode: [" + keycode + "]");
        return keycode;
    }

    function searchWebsite()
    {    
        var searchString;
        var searchUrl;
        searchString = document.getElementById('pageSearch').value;
        
        searchString = searchString.replace(/ /g,"+");
        
        if((searchString > '')&&(searchString != 'Search'))
        {
            searchUrl = "http://www.lsua.edu/search/?q=" + searchString;
            if(window.event) {window.location.href = searchUrl;}
            else {window.location.href = "http://www.lsua.edu/search/?q=" + searchString;}
        }
        
    }     
            
            
            
            
            
            
/* ==================================| CALENDAR |=======================================*/


//load calendar XML into a calendar object
var objCalendar = new Object();

//var for quick Calendar settings

var calTypeToLoad;
/*  1:Load By Event Type, 
    2:Load By Event Category
    3:Load By Event Department */
       
var calIdToLoad;
var calEventCount; //How many events to display




function loadCalendar(type)
{
    objCalendar
    {
        objCalendar.isLoaded = false;

        try
        {
            var randNum = parseInt(Math.random()*9999999);
            http.open("GET", '/calRequest/getCalendar.aspx?rand=' + randNum, true);
            http.onreadystatechange = function()
            {
                if (http.readyState == 4)
                {
                    if (http.status == 200)
                    {
                        xmlCal = http.responseXML.getElementsByTagName("calendar")[0];   
                    
                        objCalendar.Count = xmlCal.getElementsByTagName("event").length;

                        function concatString(str)
                        {
                            var _req = new String();
                            _req = getXmlValue(str);           
                            if (_req.length >= 52) { _req = _req.substr(0, 51); _req += "...";}
                            return _req;
                        }
                        
                        function getXmlValue(val)
                        {
                            try { 
                                if (eval(val) == null){return null}
                                else {return eval(val)};
                            }
                            catch(err){return ''; }
                        }
                        
                        function getEventDateString(_eventStartDateString, _eventEndDateString)
                        {

                            var _req = new String();
                            
                            if(_eventStartDateString != _eventEndDateString)
                            {
                               _req = _eventStartDateString + " - " + _eventEndDateString;
                            }
                            else
                            {
                                _req = _eventStartDateString;
                            }
                            
                            return _req;
                        }
                        
                        
                        objCalendar.event = new Array(objCalendar.Count);
                        for(var index = 0; index < xmlCal.getElementsByTagName("event").length; index++)
                        {
                            _startDate = new Date(xmlCal.getElementsByTagName("event")[index].getAttribute("startDate"));
                            _endDate = new Date(xmlCal.getElementsByTagName("event")[index].getAttribute("endDate"));
                                                        
                            objCalendar.event[index] = 
                            {
                                index: index,
                                id: xmlCal.getElementsByTagName("event")[index].getAttribute("id"),                         
                                type: xmlCal.getElementsByTagName("event")[index].getAttribute("type"),
                                category: xmlCal.getElementsByTagName("event")[index].getAttribute("category"),
                                startDate: _startDate,
                                startDateString: (_startDate.getMonth() + 1) + '/' + (_startDate.getDate()) + '/' + (_startDate.getFullYear()),
                                endDate: _endDate,
                                endDateString: (_endDate.getMonth() + 1) + '/' + (_endDate.getDate()) + '/' + (_endDate.getFullYear()),
                                eventDateString: getEventDateString((_startDate.getMonth() + 1) + '/' + (_startDate.getDate()) + '/' + (_startDate.getFullYear()), (_endDate.getMonth() + 1) + '/' + (_endDate.getDate()) + '/' + (_endDate.getFullYear())),
                                starTime: xmlCal.getElementsByTagName("event")[index].getAttribute("startTime"),
                                endTime: xmlCal.getElementsByTagName("event")[index].getAttribute("endTime"),
                                eventTime: xmlCal.getElementsByTagName("event")[index].getAttribute("EventTime"),
                                title: getXmlValue("xmlCal.getElementsByTagName('title')[" + index + "].firstChild.nodeValue"),
                                shortTitle: concatString("xmlCal.getElementsByTagName('title')[" + index + "].firstChild.nodeValue"),
                                text: getXmlValue("xmlCal.getElementsByTagName('description')[" + index + "].firstChild.nodeValue"),
                                shortText: concatString("xmlCal.getElementsByTagName('description')[" + index + "].firstChild.nodeValue"),
                                locationId: xmlCal.getElementsByTagName("location")[index].getAttribute("id"),
                                location: getXmlValue("xmlCal.getElementsByTagName('location')[" + index + "].firstChild.nodeValue"),
                                contact: null
                            };
                        }
                        objCalendar.isLoaded = true;
                        if(type == "week"){loadWeekCalendar();}
                        if(type == "quick"){loadQuickCalendar();}
                        
                    }
                } 
            }
            http.send(null);

        }
        catch(err)
        {
           objCalendar.isLoaded = false;
           objCalendar.error = err;
        }
    }
    
    
    
    
    
    
    
    //populate page with data from calendar object

    var today = new Date();
    today.setHours(0,0,0);
    var objDate = new Date();
    objDate.setHours(0,0,0);

    var weekDay = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
    var month = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
    var monthAbbrev = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sept","Oct","Novr","Dec");

    var todayDate = (objDate.getMonth() + 1) + '/' + (objDate.getDate()) + '/' + (objDate.getFullYear());
    var eventDate = (objDate.getMonth() + 1) + '/' + (objDate.getDate()) + '/' + (objDate.getFullYear());


    function incrementDate()
    {
       objDate.setDate(objDate.getDate()+1);
       eventDate = (objDate.getMonth() + 1) + '/' + (objDate.getDate()) + '/' + (objDate.getFullYear());
    }




    //LOAD Calendar by events of the week

    function loadWeekCalendar()
    {
        var CalendarDates = document.getElementById("CalendarDates");
        var calStringBuilder = '';
        
        var weekCounter = new Number(0);
        
        while (weekCounter <= 6)
        {
        
            if (eventDate == todayDate)
            {
               calStringBuilder += "<h3>Today <em>(" + eventDate + ")</em></h3><ul>";
               
               for(var i = 0; i < objCalendar.Count; i++)
               {
                    if(objCalendar.event[i].type != '4')
                    {
                        if (objDate >= objCalendar.event[i].startDate && objDate <= objCalendar.event[i].endDate)
                        {
                            calStringBuilder += "<li><strong><a onclick='cursorPosition.Get(event), calDetail(" + objCalendar.event[i].index + ")'>" + objCalendar.event[i].title + "</a></strong> - " + objCalendar.event[i].shortText + "</li>";
                        }
                        else if ((eventDate == objCalendar.event[i].startDateString) || (eventDate == objCalendar.event[i].endDateString))
                        {
                            calStringBuilder += "<li><strong><a onclick='cursorPosition.Get(event), calDetail(" + objCalendar.event[i].index + ")'>" + objCalendar.event[i].title + "</a></strong> - " + objCalendar.event[i].shortText + "</li>";
                        }
                    }
               }
               
               calStringBuilder += "</ul>";
               weekCounter++;
               incrementDate();
               
            }
            
            else
            
            {
              calStringBuilder += "<h3>" + weekDay[objDate.getDay()] + " <em>(" + eventDate + ")</em></h3><ul>";
               
               for(var i = 0; i < objCalendar.Count; i++)
               {
                    if(objCalendar.event[i].type != '4')
                    {
                        if (objDate >= objCalendar.event[i].startDate && objDate <= objCalendar.event[i].endDate)
                        {
                            calStringBuilder += "<li><strong><a onclick='cursorPosition.Get(event), calDetail(" + objCalendar.event[i].index + ")'>" + objCalendar.event[i].title + "</a></strong> - " + objCalendar.event[i].shortText + "</li>";
                        }
                        else if ((eventDate == objCalendar.event[i].startDateString) || (eventDate == objCalendar.event[i].endDateString))
                        {
                            calStringBuilder += "<li><strong><a onclick='cursorPosition.Get(event), calDetail(" + objCalendar.event[i].index + ")'>" + objCalendar.event[i].title + "</a></strong> - " + objCalendar.event[i].shortText + "</li>";
                        }
                    }
               }
               calStringBuilder += "</ul>";
               weekCounter++;
               incrementDate();
            }
        }
        
        CalendarDates.innerHTML = calStringBuilder;
    }
    
    


    //LOAD a quick preview calendar
    
    function loadQuickCalendar()
    {
        var CalendarDates = document.getElementById("CalendarDates");
        var calStringBuilder = '';
        var _currentMonth = 999;
        var _eventCounter = 0;
        
        if (calTypeToLoad == 1) //if calendar filtered by 'type'
        {
        
        }
        else if (calTypeToLoad == 2) //if calendar filtered by 'category'
        {
            for(var i = 0; i < objCalendar.Count; i++){
                if(objCalendar.event[i].category == calIdToLoad && _eventCounter < calEventCount){
                    if (objCalendar.event[i].startDate.getMonth() != _currentMonth)
                    {
                        if (_currentMonth == 999){
                            calStringBuilder += "<h3>" + month[objCalendar.event[i].startDate.getMonth()] + " " + checkStartYear(objCalendar.event[i].startDate) +  "</h3><ul>";
                        }
                        else{
                            calStringBuilder += "</ul><h3>" + month[objCalendar.event[i].startDate.getMonth()] + " " + checkStartYear(objCalendar.event[i].startDate) +  "</h3><ul>";
                        }
                        _currentMonth = objCalendar.event[i].startDate.getMonth();
                    }
                    calStringBuilder += "<li><b>" + checkStartDate(objCalendar.event[i].startDate) + "</b><strong><a onclick='cursorPosition.Get(event), calDetail(" + objCalendar.event[i].index + ")'>" + objCalendar.event[i].shortTitle + "</a></strong><br />" 
                    calStringBuilder += "<em>" + objCalendar.event[i].shortText + "" + checkEndDate(objCalendar.event[i].startDate, objCalendar.event[i].endDate) + "</em></li>";
                    _eventCounter++;
                }
            }
        }
        calStringBuilder += "<ul>";
        CalendarDates.innerHTML = calStringBuilder;
    }
    
    function checkStartYear(eventStartDate){
        eventStartDate = new Date(eventStartDate);
        if(eventStartDate.getMonth() == 11){return eventStartDate.getFullYear() + 1; }
        else{return eventStartDate.getFullYear(); }
    }
    
    function checkStartDate(eventStartDate){
        eventStartDate = new Date(eventStartDate);
        if(today >= eventStartDate){return today.getDate();} 
        else{return eventStartDate.getDate();}
    }
    
    function checkEndDate(thisDate, eventEndDate){
        thisDate = new Date(thisDate);
        eventEndDate = new Date(eventEndDate);
        if(thisDate < eventEndDate){
            return "(through " + month[eventEndDate.getMonth()] + " " + eventEndDate.getDate() + ")";}
        else {return "";}
    }
    
    
}






//handle onclick event of event-titles with a pop-up detailBox

    //populate box fields with event information search by event ID (passed in)
    function calDetail(eventIndex)
    {
        
        eventId = null;
        //if (document.getElementById('EventDetails').style.visibility == "visible")
        //{
            //$('EventDetails').hide();
            //document.getElementById('EventDetails').style.visibility == "hidden"
        //}        
        document.getElementById('EventDetails').style.left = cursorPosition.x + 'px';
        document.getElementById('EventDetails').style.top = cursorPosition.y + 'px';
        
        
        document.getElementById('detailTitle').innerHTML = objCalendar.event[eventIndex].title;
        document.getElementById('detailDates').innerHTML = objCalendar.event[eventIndex].eventDateString;
        //document.getElementById('detailDates').innerHTML = objCalendar.event[eventIndex].startDateString + " - " + objCalendar.event[eventIndex].endDateString;
        document.getElementById('detailTime').innerHTML = objCalendar.event[eventIndex].eventTime;
        document.getElementById('detailLocation').innerHTML = objCalendar.event[eventIndex].location;
        document.getElementById('detailText').innerHTML = objCalendar.event[eventIndex].text;
        $('EventDetails').show();
        //document.getElementById('EventDetails').style.visibility = "visible";
    }
    
    
//detailBox controls
    //close
    //email
    //related
    
    
    
    

/* ===========================| PAGE ADS |==============================*/
var currentAd = new Number(0);
var randRotateAdCount = new Number(0);
var adData = [];
var adArray = [];

function displayPageAds()
{
    currentAd = Math.random();
    var adStringBuffer = new String();
    
    xmlAdDoc = parseXML();
    xmlAdDoc.async = false;
    xmlAdDoc.load("/_stock/ads/PageAds.xml");
    
    
    for(var iAd = 0; iAd < xmlAdDoc.getElementsByTagName("ad").length; iAd++)
    {
        if ((xmlAdDoc.getElementsByTagName("ad")[iAd].getAttribute("type") == "rotating") && (xmlAdDoc.getElementsByTagName("ad")[iAd].getAttribute("display") == "y"))
        {
            adData = [xmlAdDoc.getElementsByTagName("ad")[iAd].getAttribute("id"), xmlAdDoc.getElementsByTagName("ad")[iAd].getAttribute("title"), xmlAdDoc.getElementsByTagName("ad")[iAd].getAttribute("url")];
            adArray.push(adData);
            randRotateAdCount++;
        }
    }
        
    currentAd = Math.floor(currentAd * parseInt(randRotateAdCount));
    document.getElementById("rotatingAdLink").href = adArray[currentAd][2];
    document.getElementById("rotatingAdLink").title = adArray[currentAd][1];
    document.getElementById("rotatingAdImage").src = "_i/img-ra" + adArray[currentAd][0] + ".gif";
    document.getElementById("rotatingAdImage").alt = adArray[currentAd][1];

    adStringBuffer = "<ul>";
    for(var iAd = 0; iAd < xmlAdDoc.getElementsByTagName("ad").length; iAd++)
    {
        if ((xmlAdDoc.getElementsByTagName("ad")[iAd].getAttribute("type") == "icon") && (xmlAdDoc.getElementsByTagName("ad")[iAd].getAttribute("display") == "y"))
        {
            adStringBuffer += "<li><a href='" + xmlAdDoc.getElementsByTagName("ad")[iAd].getAttribute("url") + "' title='" + xmlAdDoc.getElementsByTagName("ad")[iAd].getAttribute("title") + "' target='_blank'><img src='_i/img-ia" + xmlAdDoc.getElementsByTagName("ad")[iAd].getAttribute("id") + ".gif' alt='" + xmlAdDoc.getElementsByTagName("ad")[iAd].getAttribute("title") + " Ad Icon' /></a></li>"
        }
    }
    adStringBuffer += "</ul>";
    
    document.getElementById("adIcons").innerHTML = adStringBuffer;
}

function previousAd()
{
    if (currentAd == 0)
    {
        currentAd = randRotateAdCount - 1;
        document.getElementById("rotatingAdLink").href = adArray[currentAd][2];
        document.getElementById("rotatingAdLink").title = adArray[currentAd][1];
        document.getElementById("rotatingAdImage").src = "_i/img-ra" + adArray[currentAd][0] + ".gif";
        document.getElementById("rotatingAdImage").alt = adArray[currentAd][1];
    }
    else
    {
        currentAd--;
        document.getElementById("rotatingAdLink").href = adArray[currentAd][2];
        document.getElementById("rotatingAdLink").title = adArray[currentAd][1];
        document.getElementById("rotatingAdImage").src = "_i/img-ra" + adArray[currentAd][0] + ".gif";
        document.getElementById("rotatingAdImage").alt = adArray[currentAd][1];
    }
}

function nextAd()
{
    if (currentAd == (randRotateAdCount - 1))
    {
        currentAd = 0;
        document.getElementById("rotatingAdLink").href = adArray[currentAd][2];
        document.getElementById("rotatingAdLink").title = adArray[currentAd][1];
        document.getElementById("rotatingAdImage").src = "_i/img-ra" + adArray[currentAd][0] + ".gif";
        document.getElementById("rotatingAdImage").alt = adArray[currentAd][1];
    }
    else
    {
        currentAd++;
        document.getElementById("rotatingAdLink").href = adArray[currentAd][2];
        document.getElementById("rotatingAdLink").title = adArray[currentAd][1];
        document.getElementById("rotatingAdImage").src = "_i/img-ra" + adArray[currentAd][0] + ".gif";
        document.getElementById("rotatingAdImage").alt = adArray[currentAd][1];
    }
}



function hide(id)
{        
    document.getElementById(id).style.visibility = "hidden";     
    id = null;
}



/* ========================| PAGE QUICK NAV VIEW |================== */
// Controls the action of the main navs arrows to allow a preview of a links sub links on click

function toggleSubNav(obj)
{
    
    if (obj.nextSibling.style.display == '' || obj.nextSibling.style.display == 'none') {
        obj.nextSibling.style.display = 'block';
        obj.className += ' navArrowActive';
    }
    else {
        obj.nextSibling.style.display = 'none';
        obj.className = 'navArrow';
    }
    obj.blur();
}


function toggleSubNav2(obj)
{
    if (obj.nextSibling.style.display == 'none') {
        obj.className = 'btnMinus';
        Effect.BlindDown(obj.nextSibling.id, { duration: .3 });
    }
    else {
        obj.className = 'btnPlus';
        Effect.BlindUp(obj.nextSibling.id, { duration: .3 });
    }
    obj.blur();
}