﻿WhosOnDate = new Date();

//get the current date into variable WhosOnDate
function formatGCalDate(gCalTime) { 
  
  var remtxt = gCalTime;

      function consume(retxt) {
        var match = remtxt.match(new RegExp('^' + retxt));
        if (match) {
          remtxt = remtxt.substring(match[0].length);
          return match[0];
        }
        return '';
  }
 
  
  var totalCorrMins = 0;

  var year = consume('\\d{4}');
  consume('-?');
    
     if (year <= 200)
    { 
      year = parseInt(year + 1900) ;
    }
 
  var month = consume('\\d{2}');
  consume('-?');
  var dateMonth = consume('\\d{2}');
  var timeOrNot = consume('T');
 
    if (timeOrNot == 'T') 
    {
       var hours = consume('\\d{2}');
        consume(':?');
        var mins = consume('\\d{2}');
        consume('(:\\d{2})?(\\.\\d{3})?');
        var zuluOrNot = consume('Z');

       

        if (zuluOrNot != 'Z') {
          var corrPlusMinus = consume('[\\+\\-]');
          if (corrPlusMinus != '') {
            var corrHours = consume('\\d{2}');
            consume(':?');
           
            var corrMins = consume('\\d{2}');
            totalCorrMins = (corrPlusMinus=='-' ? 1 : -1) * 
                (Number(corrHours) * 60 + 
	        (corrMins=='' ? 0 : Number(corrMins)));
          }
    } 
    
    
    
    var originalDateEpoch = Date.UTC(year, month - 1, dateMonth, hours, mins);
    var gmtDateEpoch = originalDateEpoch + totalCorrMins * 1000 * 60;
    var ld = new Date(gmtDateEpoch);
   
  }
  return ld;
}



function formatGCalTime(gCalTime, showDate) { 
  
  var remtxt = gCalTime;
   function consume(retxt) {
    var match = remtxt.match(new RegExp('^' + retxt));
    if (match) {
      remtxt = remtxt.substring(match[0].length);
      return match[0];
    }
    return '';
  }
 
  
  var totalCorrMins = 0;
  var year = consume('\\d{4}');
  consume('-?');
       if (year <= 200)
    { 
      year = parseInt(year + 1900) ;
    }
 
  var month = consume('\\d{2}');
  consume('-?');
  var dateMonth = consume('\\d{2}');
  var timeOrNot = consume('T');
 
  
  if (timeOrNot == 'T') 
  {
    var hours = consume('\\d{2}');
    consume(':?');
    var mins = consume('\\d{2}');
    consume('(:\\d{2})?(\\.\\d{3})?');
    var zuluOrNot = consume('Z');


    if (zuluOrNot != 'Z') {
      var corrPlusMinus = consume('[\\+\\-]');
      if (corrPlusMinus != '') {
        var corrHours = consume('\\d{2}');
        consume(':?');
        var corrMins = consume('\\d{2}');
        totalCorrMins = (corrPlusMinus=='-' ? 1 : -1) * 
            (Number(corrHours) * 60 + 
	    (corrMins=='' ? 0 : Number(corrMins)));
      }
  } 
 
    
    var originalDateEpoch = Date.UTC(year, month - 1, dateMonth, hours, mins);
    var gmtDateEpoch = originalDateEpoch + totalCorrMins * 1000 * 60;
    var ld = new Date(gmtDateEpoch);
 
    var strDate = ""
    if (showDate == true)
        { 
         strDate =  (ld.getMonth() + 1) + '/' + (ld.getDate()) + ' - ';
        }
            dateString =  strDate + ((ld.getHours()>12)?(ld.getHours()-12):(ld.getHours()===0?12:
	                        ld.getHours())) + ':' + ((ld.getMinutes()<10)?('0' + 
	                        ld.getMinutes()):(ld.getMinutes()))  + 
	                        ((ld.getHours()>=12)?'pm':'am');
        } else 
        {
            dateString =  parseInt(month) + '/' + parseInt(dateMonth);
        }
    return dateString;
    }
 
 
 
function listEvents(root, divId) {
  document.body.style.cursor = "wait";
  var feed = root.feed;
  var events = document.getElementById(divId);
 
  if (events.childNodes.length > 0) {
    events.removeChild(events.childNodes[0]);
  }	  
  var ul = document.createElement('ul');
  if (feed.entry == null) {
      events.innerHTML = "<center>No Scheduled Shows Today!</center>";
  }
  else {
      for (var i = 0; i < feed.entry.length; i++) {
          var entry = feed.entry[i];
          var title = entry.title.$t;
          var skype = entry['gd$where'][0].valueString;
          var start = entry['gd$when'][0].startTime;
          var end = entry['gd$when'][0].endTime;
          var pl_link = entry.content.$t;
 
          var startDate = formatGCalDate(start);
          var endDate = formatGCalDate(end);
          var rightNow = new Date();
          var showTime = WhosOnDate;
 
          var startString = formatGCalTime(start, true);
          var endString = formatGCalTime(end, false);
 
          var li = document.createElement('p');

         
          
          if (typeof pl_link != 'undefined') {
              var bold = document.createElement('b')
              bold.appendChild(document.createTextNode(startString + ' to ' + endString));
              li.appendChild(bold);
              li.appendChild(document.createElement('br'));
              var ison = false;
              
              if ((startDate < showTime && endDate > showTime) && (rightNow.getDay() == showTime.getDay())) {
                  var newImg = document.createElement('img');
                  newImg.alt = ' On Air';
                  newImg.src = 'images/onair.gif';
                  newImg.setAttribute('width', '40');
                  newImg.setAttribute('height', '15');
                  li.appendChild(newImg);
                  ison = true;
              }

              entryLink = document.createElement('a');
              entryLink.setAttribute('href', pl_link);
              entryLink.appendChild(document.createTextNode(title));
              li.appendChild(entryLink);
              
              if (skype == 'skype' && ison==true) {
                  li.appendChild(document.createElement('br'));
                  var a = document.createElement('a');
                  a.setAttribute('onclick', 'return skypeCheck();');
                  var newImg2 = document.createElement('img');
                  newImg2.alt = ' Skype me';
                  newImg2.src = 'images/SkypeMe.png';
                  a.appendChild(newImg2);
                  a.textContent = 'click me';
                  a.href = 'skype:radioaddix?call';
                  li.appendChild(a);
              }
                 
            } else 
            {
                li.appendChild(document.createTextNode(startString + ' to ' + endString + '<br>' + title));

            }
          
          ul.appendChild(li);
            }
       events.innerHTML = "";
       events.appendChild(ul);
       }
   document.body.style.cursor = "default";
       }
 
 
function insertDJs(root) {
  listEvents(root, 'agenda');
}
 
function y2k(number) 
    { 
    return (number < 1000) ? number + 1900 : number; 
    }
 
 
function startup() {   
    LoadDJList(0);
    }
 
function LoadDJList(direction) {   
    
    var headID = document.getElementsByTagName("head")[0];
    var newScript = document.createElement('script');
    
    if (direction == 0)
        WhosOnDate = new Date();
    else
        WhosOnDate.setDate(WhosOnDate.getDate()+ direction);
        
    var date = WhosOnDate;
    var offset = (date.getHours() * 60) + date.getMinutes() + (date.getTimezoneOffset() - 300);
    var today 
     
   if (offset + date.getTimezoneOffset() >= 0)
   { today = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds())); }
    else
    { today = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate() - 1, date.getHours(), date.getMinutes(), date.getSeconds())); }
    
    
    var strToday = today.getFullYear() + '-' + ((today.getMonth() + 1) < 10 ? '0' : '') + (today.getMonth() + 1) + '-' + (today.getDate() < 10 ? '0' : '') + today.getDate(); 
 
        var today2 = today;

        var interval = 1;        //Setting the interval as a variable to show its applicability
        var myDate = new Date(today2.getYear(), today2.getMonth(), today2.getDate() - 0 + interval);
        document.getElementById('tomorrow').innerHTML = getDateStr(myDate, false) + " >>";

        interval = -1;
        var myDate = new Date(today2.getYear(), today2.getMonth(), today2.getDate() - 0 + interval);
        document.getElementById('yesterday').innerHTML = "<< " + getDateStr(myDate, false);

        interval = 0;
        var myDate = new Date(today2.getYear(), today2.getMonth(), today2.getDate() - 0 + interval);
        
        document.getElementById('scheduledate').innerHTML = getDateStr(myDate, true);
        newScript.type = "text/javascript";   
        newScript.src = "http://www.google.com/calendar/feeds/ace@iradioactive.net/public/full?alt=json-in-script&callback=insertDJs&orderby=starttime&max-results=10&singleevents=true&sortorder=ascending&start-min=" + strToday.toString() + "T00:00:00-06:00&start-max=" + strToday.toString() + "T23:59:59-06:00";   
    
        headID.appendChild(newScript);  
    }

    function getDateStr(inDate, showyear) {

        var d_names = new Array("Sunday", "Monday", "Tuesday",
            "Wednesday", "Thursday", "Friday", "Saturday");

       
//        alert(navigator.userAgent.toLowerCase().indexOf("msie") == -1);

        if (navigator.userAgent.toLowerCase().indexOf("msie") == -1) {
            d_names = Array("Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday", "Monday");
        }

        var m_names = new Array("January", "February", "March",
            "April", "May", "June", "July", "August", "September",
            "October", "November", "December");

        var d = new Date();
        var curr_day = inDate.getDay();
        var curr_date = inDate.getDate();
        var sup = "";
        if (curr_date == 1 || curr_date == 21 || curr_date == 31) {
            sup = "st";
        }
        else if (curr_date == 2 || curr_date == 22) {
            sup = "nd";
        }
        else if (curr_date == 3 || curr_date == 23) {
            sup = "rd";
        }
        else {
            sup = "th";
        }
        var curr_month = inDate.getMonth();
        var curr_year = inDate.getFullYear();
        if (curr_year <= 1900) { curr_year += 1900; }
        

        var withyear = (d_names[curr_day] + " " + curr_date + "<SUP>"
+ sup + "</SUP> " + m_names[curr_month] + " " + curr_year );

        var without = (d_names[curr_day] + " " + curr_date + "<SUP>"
+ sup + "</SUP> " + m_names[curr_month]);

        return (showyear == true) ? withyear : without;


    }

    function whichBrs() {
        var agt = navigator.userAgent.toLowerCase();
        if (agt.indexOf("opera") != -1) return 'Opera';
        if (agt.indexOf("staroffice") != -1) return 'Star Office';
        if (agt.indexOf("webtv") != -1) return 'WebTV';
        if (agt.indexOf("beonex") != -1) return 'Beonex';
        if (agt.indexOf("chimera") != -1) return 'Chimera';
        if (agt.indexOf("netpositive") != -1) return 'NetPositive';
        if (agt.indexOf("phoenix") != -1) return 'Phoenix';
        if (agt.indexOf("firefox") != -1) return 'Firefox';
        if (agt.indexOf("safari") != -1) return 'Safari';
        if (agt.indexOf("skipstone") != -1) return 'SkipStone';
        if (agt.indexOf("msie") != -1) return 'Internet Explorer';
        if (agt.indexOf("netscape") != -1) return 'Netscape';
        if (agt.indexOf("mozilla/5.0") != -1) return 'Mozilla';
        if (agt.indexOf('\/') != -1) {
            if (agt.substr(0, agt.indexOf('\/')) != 'mozilla') {
                return navigator.userAgent.substr(0, agt.indexOf('\/'));
            }
            else return 'Netscape';
        } else if (agt.indexOf(' ') != -1)
            return navigator.userAgent.substr(0, agt.indexOf(' '));
        else return navigator.userAgent;
    }