var http_request = false;
var xmlDoc;
var arrConfs = new Array;
var thisDate = 1;
var months = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
var today = new Date();
var todaysDay = today.getDay()+1;
var todaysDate = today.getDate();
var todaysMonth = today.getUTCMonth()+1;
var todaysYear = today.getFullYear();
var monthNum = todaysMonth;
var yearNum = todaysYear;
var firstDate = new Date(String(monthNum)+"/1/"+String(yearNum));
var firstDay = firstDate.getUTCDay();
var lastDate = new Date(String(monthNum+1)+"/0/"+String(yearNum));
var listView = false;
var mktType = "";
var monthID=null;
var prvElement=null;

function getEvents(viewList, mkt) {
    listView = viewList;
    mktType = mkt.toUpperCase();
    makeRequest();
}

function changeMonth(dir) {
    if (dir=='prev') monthNum--;
    else if (dir=='next') monthNum++;
    else if (dir=='return') { monthNum=todaysMonth; yearNum=todaysYear; }

    if (monthNum==0) { monthNum=12; yearNum--; }
    else if (monthNum==13) { monthNum=1; yearNum++; }
    
    if (prvElement==null) prvElement=document.getElementById('previous');
    if (monthNum==todaysMonth) prvElement.style.visibility='hidden'; 
    else prvElement.style.visibility='visible'; 

    lastDate=new Date(String(monthNum+1)+"/0/"+String(yearNum));
    numDays=lastDate.getDate();
    firstDate=new Date(String(monthNum)+"/1/"+String(yearNum));
    firstDay=firstDate.getDay()+1;
    arrConfs = new Array;
    if (listView == false) createCalendar(); else createList();
    return;
}
function createList() {
    var icsList = "";
    document.getElementById('PHYSICIANS').innerHTML="";              
    document.getElementById('HOMEHEALTH').innerHTML="";              
    document.getElementById('FACILITIES').innerHTML="";              
     
    var evtNum = xmlDoc.getElementsByTagName('event').length;
    for (var i=0; i<evtNum; i++) {
        var evt = xmlDoc.getElementsByTagName("event")[i];
        var ics = getNode(evt,"ical").toUpperCase();
        if (icsList.indexOf(ics) == -1) {
            icsList += ics + "|";
            var evtObj = new Conference(evt);
            arrConfs[arrConfs.length]=evtObj;
        }
    }
    
    for (var i=0; i<arrConfs.length; i++) { 
        evtObj = arrConfs[i];
        if (evtObj.link!="") {
            var evtStr = '<h3><a href="'+evtObj.link+'" target="_blank" onmouseover="getConference(\''+ i + '\');">'
            evtStr += evtObj.webName+"</h3></a>";
        } else { var evtStr = '<h3 onmouseover="getConference(\''+ i + '\');">'+evtObj.webName+'</h3>'; }        
        evtStr += "<p>"+evtObj.date;
        var dt = evtObj.date.length;
        if (evtObj.date.substring(dt-2,dt)=="ET") evtStr += "&nbsp;&nbsp;<img alt='audio conference' src='../images/audio.gif' align='absmiddle'>";
        if (evtObj.market=='COMPLIANCE') evtStr += "&nbsp;&nbsp;<img alt='Compliance event' src='../images/compliance.gif' align='absmiddle'>";
        evtStr += "</p>";
        if ( (evtObj.market=='COMPLIANCE') && (mktType=='') ) {
            document.getElementById('PHYSICIANS').innerHTML += evtStr;
            document.getElementById('HOMEHEALTH').innerHTML += evtStr;
            document.getElementById('FACILITIES').innerHTML += evtStr;
        }
        else if (evtObj.market=='COMPLIANCE') document.getElementById(mktType).innerHTML += evtStr;
        else if (mktType=='') document.getElementById(evtObj.market).innerHTML += evtStr;
        else if (mktType==evtObj.market) document.getElementById(evtObj.market).innerHTML += evtStr;
    }
}

function createCalendar() {
    var cal = "";
    if (monthID==null) monthID=document.getElementById('month');
    monthID.innerHTML = months[monthNum-1] + '&nbsp;&nbsp;' + yearNum;
    
    cal = '<table id="calendar" width="100%" cellspacing="0" >';
    cal += '<tr class="day"><td>Mon</td><td>Tues</td><td>Wed</td><td>Thus</td><td>Fri</td><td>Sat/Sun</td></tr>';

    for (var i=1; i<=42; i++) {
        if ( (i==1)||(i==8)||(i==15)||(i==22)||(i==29)||(i==36) ) cal += '<tr>';
        
        if ( (i==6)||(i==13)||(i==20)||(i==27)||(i==34)||(i==41)||
             (i==7)||(i==14)||(i==21)||(i==28)||(i==35)||(i==42) ) cal+='<td ';
        else cal += '<td rowspan="2" ';
        
        if ( (firstDay-1)==0 ) { firstDay = 8; }
        
        if ( (thisDate <= numDays) && (i>=(firstDay-1)) ) { 
            cal += '>'+thisDate;
            // Get events here...
            // convert month to the  2 digit format 
            var month= "";
            if(monthNum < 10 ){
                month = "0" + monthNum;
            }
            else{
                month = monthNum.toString();
            }
            // convert month to the  2 digit format 
            //cal += getEvent(yearNum.toString() + monthNum.toString() + thisDate.toString());
            cal += getEvent(yearNum.toString() + month + thisDate.toString());
            cal += '</td>';
            thisDate++;
        } else cal += 'class="nodate">&nbsp;</td>'; 
        if ( (i==6)||(i==13)||(i==20)||(i==27)||(i==34)||(i==41)||
             (i==7)||(i==14)||(i==21)||(i==28)||(i==35)||(i==42) ) cal+='</tr>';
    }
    cal+='</table>';
    document.getElementById('calControl').innerHTML=cal;
    thisDate=1;
}
function getEvent(dt) {
    var evtStr="";
    try {
        var events = xmlDoc.getElementsByTagName('event'+dt);
        var eNum=events.length;
        if (eNum > 0) {
            for (i=0;i<eNum;i++) {
                var evtObj = new Conference(events[i].getElementsByTagName("event")[0]);
                arrConfs[arrConfs.length]=evtObj;
                evtStr += '\n' + getMarket(evtObj.market);
                if (evtObj.link!="") {
                    evtStr += '<p><a href="'+evtObj.link+'" target="_blank" onmouseover="getConference(\''+ (arrConfs.length-1) + '\');">'
                    evtStr += evtObj.webName.substring(0, 50) + "...</a></p></div>"
                } else evtStr += '<p onmouseover="getConference(\''+ (arrConfs.length-1) + '\');">'+ evtObj.webName.substring(0, 50) + "...</p></div>";
            }
        }
    } catch (e) { 
        alert('exception: ' + e.toString());
        evtStr = "";
    }
    return evtStr;
}
function Conference(oConf) {
    this.webName=oConf.getAttribute('webname');
    this.market=getNode(oConf,"market").toUpperCase();
    this.desc=getNode(oConf,"desc");
    this.speaker=getNode(oConf,"speaker");
    this.location=getNode(oConf,"location");
    this.date=getNode(oConf,"date");
    this.link=getNode(oConf,"link");
    this.ical=getNode(oConf,"ical");
}
function getNode(oConf, n) {
    try {
        return oConf.getElementsByTagName(n)[0].childNodes[0].nodeValue;
    } catch (e) { return ""; }
}
function getMarket(mkt) {
    if ( mkt=='PHYSICIANS' && (mktType=="" || mktType=='PHYSICIANS') )
        return '<div class="physician">';
    else if ( mkt=='FACILITIES' && (mktType=="" || mktType=='FACILITIES') )
        return '<div class="facilities">';
    else if ( mkt=='HOMEHEALTH' && (mktType=="" || mktType=='HOMEHEALTH') )
        return '<div class="homehealth">';
    else if ( mkt=='COMPLIANCE' )
        return '<div class="compliance">';
    else return '<div style="display:none;">';
}
function getConference(conf) {
	oConf=arrConfs[conf];
	var msg;
	msg = oConf.desc + "<br /><br />";
	msg += "<strong>Location: </strong>" + oConf.location + "<br />"
	msg += "<strong>Date: </strong>" + oConf.date + "<br />"
	msg += "<strong>Speaker: </strong>" + oConf.speaker + "<br />"
	if (oConf.link!="") 
	    msg += "<br /><a href='"+oConf.link+"' target='_blank'>View Conference Brochure</a><br/>";
	else msg += "<br />Conference brochure coming soon!<br/>";
	if (oConf.ical != '') msg += "<img src='../images/calendar_btn.gif' align='absmiddle' alt='calendar' /> <a href='"+oConf.ical+"'>Add to Calendar</a>";
	showtip(msg, 'window', oConf.webName)
}

// Read events XML File...
function makeRequest() {
	http_request = false;
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
    	http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) {
         	// set type accordingly to anticipated content type
            http_request.overrideMimeType('text/xml');
        }
	} else if (window.ActiveXObject) { // IE
    	try {
        	http_request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
        	try {
            	http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }
    if (!http_request) {
    	alert('Cannot create XMLHTTP instance');
        return false;
    }
    http_request.onreadystatechange = loadEvents;
    http_request.open('GET', "../xml/events.xml", true);
	http_request.send(null);
}
function loadEvents() {
	if (http_request.readyState == 4) {
    	if (http_request.status == 200) {
            xmlDoc = http_request.responseXML.documentElement;
            changeMonth('return');
            //createCalendar();
        } else {
        	//alert('There was a problem with the request.');
        }
	}
}
