// EZEvents JavaScript File
// version 1.0 Pre RC1 20060109
//
// This file is used to generate the event items for the EZEvents system used with
// EZUpdates. Please do not make any changes to this file. If you require an updated
// version of this file please see http://www.collisionsoftware.com/ for a 
// possible download or contact us on that page and request an updated version.
//
// John Cotter
// Collision Software

//Varibles
//////////////////////////////////////////////////
var EZEvents = new Array();

var displaymeridiem = true;
var militarytime = false;
var paddedtime = true;
var sortdata = true;
var url = document.URL;

//Primary Methods
//////////////////////////////////////////////////
function EZEvent(name, startdate, enddate, url, location, info, shour, smin, ehour, emin, id){
  this.name = name;
  this.info = info;
  this.url = url;
  this.location = location;
  this.startdate = startdate;
  this.enddate = enddate;
  this.starthour = shour;
  this.startminute = smin;
  this.endhour = ehour;
  this.endminute = emin;
  this.id = id;
  this.starttime = "";
  this.endtime = "";
}

function StartEZEvents(url){
  initializeTime();
  if(url == ""){
    url = document.URL;
  } else {
    this.url = url;
  }
  if(sortdata){
    EZEvents.sort(EventNameSort);
  }
}

//Methods
//////////////////////////////////////////////////
function displayEZEvents(){
  document.writeln("<table border='0'>");
  for(var x=0;x<EZEvents.length;x++){
    document.writeln("<tr>");
    document.writeln("<td><table>");
    document.writeln("<tr><td class='eventname'><strong>Event Name:</strong></td><td>"+EZEvents[x].name+"</td></tr>");
    document.writeln("<tr><td class='eventlocation'><strong>Location:</strong></td><td>"+EZEvents[x].location+"</td></tr>");
    document.writeln("<tr><td class='eventurl'><strong>Web Address:</strong></td><td><a href=\""+EZEvents[x].url+"\" target=\"_blank\">"+EZEvents[x].url+"</a></td></tr>");
    if(EZEvents[x].startdate != EZEvents[x].enddate){
      document.writeln("<tr><td class='eventdate'><strong>Date:</strong></td><td>"+EZEvents[x].startdate+" - "+EZEvents[x].enddate+"</td></tr>");
    } else {
      document.writeln("<tr><td class='eventdate'><strong>Date:</strong></td><td>"+EZEvents[x].startdate+"</td></tr>");
    }
    document.writeln("<tr><td class='eventinfo'><strong>Information:</strong></td><td>"+EZEvents[x].info+"</td></tr>");
    document.writeln("<tr><td class='eventtime'><strong>Start Time:</strong></td><td>"+EZEvents[x].starttime+"</td></tr>");
    document.writeln("<tr><td class='eventtime'><strong>End Time:</strong></td><td>"+EZEvents[x].endtime+"</td></tr>");
    document.writeln("</table></td>");
    document.writeln("</tr>");
    document.writeln("<tr><td>&nbsp;</td></tr>");
  }
  if(EZEvents.length == 0){
    document.writeln("<tr><td>Currently no events upcoming.</td></tr>");
  }
  document.writeln("</table>");
}

function getEZEventById(id){
  for(var x=0;x<EZEvents.length;x++){
    if(EZEvents[x].id == id){
      return EZEvents[x];
    }
  }
  return null;
}

function getEZEventsLocations(){
  var locations = new Array();
  var found = false;
  for(var x=0;x<EZEvents.length;x++){
    for(var y=0;y<locations.length;y++){
      if(locations[y] == EZEvents[x].location) found = true;
    }
    if(!found) locations[locations.length] = EZEvents[x].location
    found = false;
  }
  return locations;
}

function getEZEventsNames(){
  var names = new Array();
  var found = false;
  for(var x=0;x<EZEvents.length;x++){
    for(var y=0;y<names.length;y++){
      if(names[y] == EZEvents[x].name) found = true;
    }
    if(!found) names[names.length] = EZEvents[x].name
    found = false;
  }
  return names.sort();
}

function getEZEventsOccurringToday(){
  var today = new Date();
  return searchEZEventsByDate(today.getMonth()+"/"+today.getDate()+"/"+today.getYear());
}

function getEZEventsStartDates(){
  var startdates = new Array();
  var found = false;
  for(var x=0;x<EZEvents.length;x++){
    for(var y=0;y<startdates.length;y++){
      if(startdates[y] == EZEvents[x].startdate) found = true;
    }
    if(!found) startdates[startdates.length] = EZEvents[x].startdate
    found = false;
  }
  return startdates.sort();
}

function searchEZEventsByDate(date){
  var results = new Array();
  date = convertDateStringToDateObject(date);
  var sDate;
  var eDate;
  for(var x=0;x<EZEvents.length;x++){
    sDate = convertDateStringToDateObject(EZEvents[x].startdate);
    eDate = convertDateStringToDateObject(EZEvents[x].enddate);
    if((date >= sDate) && (date <= eDate)){
      results[results.length] = EZEvents[x];
    }
  }
  return results.sort(sortEZEventsByTime);
}

function searchEZEventsByInformation(info){
  var myregex = eval("/"+info+"/i");
  var ansind = "";
  var searcharray = new Array();
  for(var x=0;x<EZEvents.length;x++){
    ansind = EZEvents[x].info.search(myregex);
    if(ansind != -1){ searcharray[searcharray.length] = EZEvents[x]; }
  }
  return searcharray;
}

function searchEZEventsByLocation(location){
  var myregex = eval("/"+location+"/i");
  var ansind = "";
  var searcharray = new Array();

  for(var x=0;x<EZEvents.length;x++){
    ansind = EZEvents[x].location.search(myregex);
    if(ansind != -1){ searcharray[searcharray.length] = EZEvents[x];}
  }

  return searcharray;
}

function searchEZEventsByName(eventname){
  var myregex = eval("/"+eventname+"/i");
  var ansind = "";
  var searcharray = new Array();

  for(var x=0;x<EZEvents.length;x++){
    ansind = EZEvents[x].name.search(myregex);
    if(ansind != -1){ searcharray[searcharray.length] = EZEvents[x];}
  }

  return searcharray;
}

//Internal Methods
//////////////////////////////////////////////////
function convertDateStringToDateObject(date){
  var aDate = date.split("/");
  var objDate = new Date(aDate[2],aDate[0],aDate[1],0,0,0);
  return objDate;
}

function EventNameSort(arg1, arg2){
  if(arg1.name < arg2.name)
    return -1;
  if(arg1.name > arg2.name)
    return 1;
  if(arg1.name == arg2.name)
    return 0;
}

function initializeTime(){
  for(var x=0;x<EZEvents.length;x++){
    EZEvents[x].startminute=EZEvents[x].startminute+"";
    EZEvents[x].endminute=EZEvents[x].endminute+"";
    if(EZEvents[x].startminute.length < 2){
      EZEvents[x].startminute = "0" + EZEvents[x].startminute;
    }
    if(EZEvents[x].endminute.length < 2){
      EZEvents[x].endminute = "0" + EZEvents[x].endminute;   
    }
    EZEvents[x].starttime = EZEvents[x].startminute;   
    EZEvents[x].endtime = EZEvents[x].endminute;

    if(!militarytime){
      if(displaymeridiem){
        if(EZEvents[x].starthour > 11)
          EZEvents[x].starttime = ":"+EZEvents[x].starttime+"PM";
        else
          EZEvents[x].starttime = ":"+EZEvents[x].starttime+"AM";
        if(EZEvents[x].endhour > 11)
          EZEvents[x].endtime = ":"+EZEvents[x].endtime+"PM";
        else
          EZEvents[x].endtime = ":"+EZEvents[x].endtime+"AM";
      }
      if(EZEvents[x].starthour > 12)
        EZEvents[x].starttime = (EZEvents[x].starthour - 12)+EZEvents[x].starttime;
      else if(EZEvents[x].starthour == 0)
        EZEvents[x].starttime = "12"+EZEvents[x].starttime;
      else
        EZEvents[x].starttime = EZEvents[x].starthour+EZEvents[x].starttime;
      if(EZEvents[x].endhour > 12)
        EZEvents[x].endtime = (EZEvents[x].endhour - 12)+EZEvents[x].endtime;
      else if(EZEvents[x].endhour == 0)
        EZEvents[x].endtime = "12"+EZEvents[x].endtime;
      else
        EZEvents[x].endtime = EZEvents[x].endhour+EZEvents[x].endtime;
    }
    if(paddedtime){
      if(EZEvents[x].starttime.length < 7)
        EZEvents[x].starttime = "0" + EZEvents[x].starttime;
      if(EZEvents[x].endtime.length < 7)
        EZEvents[x].endtime = "0" + EZEvents[x].endtime;   
    }
  }
}

function sortEZEventsByDate(arg1, arg2){
  if(convertDateStringToDateObject(arg1.startdate) > convertDateStringToDateObject(arg2.startdate))
    return 1;
  if(convertDateStringToDateObject(arg1.startdate) < convertDateStringToDateObject(arg2.startdate))
    return -1;
  if(convertDateStringToDateObject(arg1.startdate) == convertDateStringToDateObject(arg2.startdate))
    return 0;
}

function sortEZEventsByTime(arg1, arg2){
  if(Number(arg1.starthour+""+arg1.startminute) > Number(arg2.starthour+""+arg2.startminute))
    return 1;
  if(Number(arg1.starthour+""+arg1.startminute) < Number(arg2.starthour+""+arg2.startminute))
    return -1;
  if(Number(arg1.starthour+""+arg1.startminute) == Number(arg2.starthour+""+arg2.startminute))
    return 0;
}
