﻿/* Loads the Google data JavaScript client library */
google.load("gdata", "1.x");
 
 function init()
 {
   /* init the Google data JS client library with an error handler */
   google.gdata.client.init(handleGDError);
  /* load the code.google.com developer calendar */
   loadMyCalendar();
 }

/**
 * Loads the Calendar
 */
function loadMyCalendar() {
  //loadCalendarByAddress('ricardog@sgw.com');
   loadCalendarByAddress('advsurggoogle@sgw.com');
  //loadCalendarByAddress('advsurggoogle@sgw.com');
}

/**
 * Adds a leading zero to a single-digit number.  Used for displaying dates.
 */
function padNumber(num) {
  if (num <= 9) {
    return "0" + num;
  }
  return num;
}

function MilitaryToStandardTime(Mhour){
    var ampm = null;
    var Shour = null;
    
    if(Mhour > 12){
       Shour = (Mhour - 12);
       ampm = "PM";
       return Shour + "PM";
    }
    else
    return Mhour + "AM";
 }

function Monthname(month){
   if (month==1){
    return "January";
   }
   
   if (month==2){
    return "February";
   }
   
   if (month==3){
    return "March";
   } 
   
   if (month==4){
    return "April";
   }
   
    if (month==5){
    return "May";
   }
    if (month==6){
    return "June";
   }
   
    if (month==7){
    return "July";
   }
    if (month==8){
    return "August";
   }
   
    if (month==9){
    return "September";
   }
    if (month==10){
    return "October";
    
   }
    if (month==11){
    return "November";
   }
    if (month==12){
    return "December";
   }
  }
/**
 * Determines the full calendarUrl based upon the calendarAddress
 * argument and calls loadCalendar with the calendarUrl value.
 *
 * @param {string} calendarAddress is the email-style address for the calendar
 */ 
function loadCalendarByAddress(calendarAddress) {
  var calendarUrl = 'http://www.google.com/calendar/feeds/' + calendarAddress + '/public/full';
  loadCalendar(calendarUrl, listEvents);
  
}

function initDDL() {
 //    alert('initDDL');
    // init the Google data JS client library with an error handler
    google.gdata.client.init(handleGDError);
    // load the code.google.com developer calendar
    //loadDropDownByAddress('ricardog@sgw.com');
     loadDropDownByAddress('advsurggoogle@sgw.com');
    //loadDropDownByAddress('advsurggoogle@sgw.com');
   
}

function loadDropDownByAddress(calendarAddress) {
    var calendarUrl = 'http://www.google.com/calendar/feeds/' + calendarAddress + '/public/full';
    loadCalendar(calendarUrl, ddlEvents);
 
}

/**
 * Uses Google data JS client library to retrieve a calendar feed from the specified
 * URL.  The feed is controlled by several query parameters and a callback 
 * function is called to process the feed results.
 *
 * @param {string} calendarUrl is the URL for a public calendar feed
 */
function loadCalendar(calendarUrl, evtHandler) {
 //alert('loadCalendar');
  var service = new 
      google.gdata.calendar.CalendarService('gdata-js-client-advsurgsol');
  var query = new google.gdata.calendar.CalendarEventQuery(calendarUrl);

  query.setFullTextQuery('BARIATRIC SEMINAR');
  query.setOrderBy('starttime');
  query.setSortOrder('ascending');
  query.setFutureEvents(true);
  query.setSingleEvents(true);
  query.setMaxResults(3);

  service.getEventsFeed(query, evtHandler, handleGDError);
  
}

/**
 * Callback function for the Google data JS client library to call when an error
 * occurs during the retrieval of the feed.  Details available depend partly
 * on the web browser, but this shows a few basic examples. In the case of
 * a privileged environment using ClientLogin authentication, there may also
 * be an e.type attribute in some cases.
 *
 * @param {Error} e is an instance of an Error 
 */
function handleGDError(e) {
  if (e instanceof Error) {
    /* alert with the error line number, file and message */
    alert('Error at line ' + e.lineNumber +
          ' in ' + e.fileName + '\n' +
          'Message: ' + e.message);
    /* if available, output HTTP error code and status text */
    if (e.cause) {
      var status = e.cause.status;
      var statusText = e.cause.statusText;
      alert('Root cause: HTTP error ' + status + ' with status text of: ' + 
            statusText);
    }
  } else {
    alert(e.toString());
  }
}

/**
 * Callback function for the Google data JS client library to call with a feed 
 * of events retrieved.
 *
 * Creates an unordered list of events in a human-readable form.  This list of
 * events is added into a div called 'events'.  The title for the calendar is
 * placed in a div called 'calendarTitle'
 *
 * @param {json} feedRoot is the root of the feed, containing all entries 
 */ 
function listEvents(feedRoot) {
  var entries = feedRoot.feed.getEntries();
   var eventDiv = document.getElementById('events');
   if(eventDiv !=null)
   {
     if (eventDiv.childNodes.length > 0) {
    eventDiv.removeChild(eventDiv.childNodes[0]);
    }
  }	  
  /* create a new div */
  var ul = document.createElement('div');

  /* set the calendarTitle div with the name of the calendar */
//  document.getElementById('calendarTitle').innerHTML = 
//    "Calendar: " + feedRoot.feed.title.$t;
  /* loop through each event in the feed */
  var len = entries.length;

  for (var i = 0; i < len; i++) {
    var entry = entries[i];
    var title = entry.getTitle().getText();
    var startDateTime = null;
    var startJSDate = null;
    var endJSDateTime = null;
    var endJSDate = null;
    
    var times = entry.getTimes();
    if (times.length > 0) {
      startDateTime = times[0].getStartTime();
      startJSDate = startDateTime.getDate();

      endJSDateTime = times[0].getEndTime();
      endJSDate = endJSDateTime.getDate();
     
    }
    var Locations = entry.getLocations();
    var eventLocation = Locations[0].getValueString();
//   
//    var entryLinkHref = null;
//    if (entry.getHtmlLink() != null) {
//      //entryLinkHref = entry.getHtmlLink().getHref();
//        entryLinkHref = "/bariatric_seminars.aspx";
//    }
    var dateString = Monthname((startJSDate.getMonth() + 1)) + "/" + startJSDate.getDate()+ "/" + startJSDate.getFullYear();
    if (!startDateTime.isDateOnly()) {
//        dateString += " " + startJSDate.getHours() + ":" + padNumber(startJSDate.getMinutes())
//        + '-' + endJSDate.getHours() + ":" + padNumber(endJSDate.getMinutes());
         dateString += " " + MilitaryToStandardTime(startJSDate.getHours())+ '-' + MilitaryToStandardTime(endJSDate.getHours());
    }
    var linkvalue = entry.getTitle().getText()+"-"+padNumber((startJSDate.getMonth() + 1))+"/"+padNumber(startJSDate.getDate())+"/"+startJSDate.getFullYear()+" "+padNumber(startJSDate.getHours())+":"+padNumber(startJSDate.getMinutes())+":"+padNumber(startJSDate.getSeconds())+ " at " +eventLocation;
    var entryLinkHref = null;
    if (entry.getHtmlLink() != null) {
      //entryLinkHref = entry.getHtmlLink().getHref();
        entryLinkHref = "/bariatric_seminars.aspx?SeminarId="+linkvalue;
    }
   
    var li = document.createElement('div'); // document.createElement('li');
    //li.setAttribute('style', 'list-style-type:none;list-style-position:inside;');
    /* if we have a link to the event, create an 'a' element */
    if (entryLinkHref != null) {
      entryLink = document.createElement('a');
      entryLink.setAttribute('href', entryLinkHref);
      entryLink.setAttribute('class', 'homelink');
      entryLink.setAttribute('target', '_self');
      //      entryLink.appendChild(document.createTextNode(title));
      entryLink.appendChild(document.createTextNode(dateString));
      li.appendChild(entryLink);
//      li.appendChild(document.createTextNode(dateString));
    } else {
      li.appendChild(document.createTextNode(title + ' - ' + dateString));
    }	    

    /* append the list item onto the unordered list */
    ul.appendChild(li);
  }
  if(eventDiv != null)
  {
  eventDiv.appendChild(ul);
  }
}


function ddlEvents(feedRoot) {
//    var entries = feedRoot.feed.getEntries();
//    var el = document.getElementById('DDLSeminar'); 
//    el.innerHTML = '';

//    var DDL = document.createElement('select');
//    DDL.setAttribute('id', '_DDL');
//    DDL.setAttribute('class', 'form');
//    DDL.setAttribute('onchange', 'setValue(this.value);');
//    for (var i = 0; i < entries.length; i++) {
//        var entry = entries[i];
//        var title = entry.getTitle().getText();
//        var startDateTime = null;
//        var startJSDate = null;
//        var endJSDateTime = null;
//        var endJSDate = null;

//        var times = entry.getTimes();
//        if (times.length > 0) {
//            startDateTime = times[0].getStartTime();
//            startJSDate = startDateTime.getDate();

//            endJSDateTime = times[0].getEndTime();
//            endJSDate = endJSDateTime.getDate();

//        }
//        var optionString = title +" on "+(startJSDate.getMonth() + 1) + "/" + startJSDate.getDate();
//        if (!startDateTime.isDateOnly()) {
//            optionString += " " + startJSDate.getHours() + ":" + padNumber(startJSDate.getMinutes())
//        + '-' + endJSDate.getHours() + ":" + padNumber(endJSDate.getMinutes());
//        }

//        var option = document.createElement('option');
//        option.setAttribute('value', optionString);
//        option.appendChild(document.createTextNode(optionString));
//        DDL.appendChild(option);
//    }
//    el.appendChild(DDL);
//    setValue(DDL.value);
}

function setValue(ddlValue) {
    //TODO: change method to find element
    var el2 = document.getElementById('plcRoot_Layout_zoneContent_editabletext_ctl00_Bizform1_ctl00_Seminar');
    el2.value = ddlValue;
}