
var myStr="";
var objectArrayIndex = 0;
var myObjectArray = new Array();
//var offType = document.getElementById('OfferType').value;

//alert (offType);

// EVENTS OBJECT METHODS START

function eventsObj (my_eventid, my_title,my_description, my_link, my_category, my_eventregion, my_eventdate, my_startdate, my_enddate, my_sort_date) {
  this.eventid = my_eventid;
  this.title = my_title;
  this.description = my_description;
  this.URL = my_link;
  this.category = my_category;
  this.eventregion = my_eventregion;
  this.eventdate = my_eventdate;
  this.startdate = my_startdate; 
  this.enddate = my_enddate;
  this.sort_date = my_sort_date;   
  this.HTML_display_event_line=HTML_display_event_line  
}
// END EVENTS OBJECT METHODS

// Offer Object and Methods - START 

function offerObj (my_label, my_title, my_link, my_type, verticals_Array, my_description, my_size) {
  this.label = my_label;
  this.title = my_title;
  this.URL = my_link;
  this.type = my_type;
  this.verticals = verticals_Array;
  this.description = my_description;
  if (!my_size) {my_size="empty";}
  this.size = my_size;
  this.HTML_display_long=HTML_display_long;
  this.HTML_display_line=HTML_display_line;
  this.HTML_display_image=HTML_display_image;
  this.HTML_display_bullets=HTML_display_bullets;
  this.HTML_display_verticals=HTML_display_verticals;
  this.HTML_display_line_list=HTML_display_line_list;
}

function compareDay(a,b)
{ 
  return a.eventdate - b.eventdate;
//  return a.sort_date - b.sort_date;
}
//function compareDay2(a,b) { return b.priority - a.priority; }

function showObjectArray(text,object,length) {
  myStr = text + ': ';
  for (var i=0; i<length; i++) {
    myStr +='<br>' + object[i].day + ' ';
    myStr += object[i].month + ' ';
    myStr += object[i].year + ' ';
    myStr += object[i].text + ' ';
    myStr += object[i].number;
  }
  myStr +='<br><br>';
}


function HTML_display_verticals () {
  var tmp_str = "";
  if (this.verticals.length > 0) {
    for (var i=0;i<this.verticals.length;i++) {
      if (tmp_str != "") {
        tmp_str += "|";
      }
      tmp_str += this.verticals[i];
    }
    tmp_str = "<em>" + tmp_str + "</em>";
  }
  return tmp_str;
}

function HTML_display_bullets () {
  var tmp_str = "";
  tmp_str += "<ul>";
  for (var i=0;i<this.bullets.length;i++) {
    tmp_str += "<li>";
    tmp_str += this.bullets[i];
    tmp_str += "</li>";
  }
  tmp_str += "</ul>";
  return tmp_str;
}

function HTML_display_image(my_additional_attributes) {
  // displays the image
  var tmp_str = "";
  tmp_str += "<img src='" + this.image["src"] + "'";
  tmp_str += " width='" + this.image["width"] + "'";
  tmp_str += " height='" + this.image["height"] + "'";
  tmp_str += " alt='" + this.title + "'";
  tmp_str += "border='0' vspace='0' hspace='0'";
  tmp_str += " " + my_additional_attributes + " >";
  return tmp_str;
}

function HTML_display_long() {
  var tmp_str = "";
  tmp_str += "<a href='" + this.URL + "'>" + this.title + "</a>";
  tmp_str += "<br>";
  tmp_str += "<p>" + this.HTML_display_image("align='center'") + this.description + "</p>";
  tmp_str += this.HTML_display_bullets();
  tmp_str += this.HTML_display_verticals();
  tmp_str += "<hr size='1'>";
  return tmp_str;
}

function HTML_display_line() {
  var tmp_str = "";
  tmp_str += "<a href='" + this.URL + "' target='_blank'><b>" + this.title + "</b></a><br> ";
  tmp_str += this.description;
  tmp_str += "<br>";
  return tmp_str;
}

function HTML_display_event_line() {
  var tmp_str = "";  
  var tempString = this.startdate;
  var eventdate = tempString.split(",");
  var str_date = eventdate[0].split(" ");
  var tempStr = this.enddate;
   tempStr = tempStr.split(" ");
  tempStr = tempStr[1].replace(/,/,"");
/*   
  var tmp_str = "";  
  tmp_str += "<tr><td nowrap valign=\"top\">" +  eventdate[0] + " - " +  tempStr + "</td><td>";
  tmp_str += "<td><a href='" + this.URL + "' target='_blank' style='text-decoration:none'>" + this.title + "</a><br></td></tr>";  */
   if(str_date[1] != tempStr){
  
  tmp_str += "<tr><td nowrap valign=\"top\">" +  eventdate[0] + " - " +  tempStr + "</td><td>";
  tmp_str += "<td><a href='" + this.URL + "' target='_blank' style='text-decoration:none'>" + this.title + "</a><br></td></tr>";  
  }
  if(str_date[1] == tempStr){
  
  tmp_str += "<tr><td nowrap valign=\"top\">" +  eventdate[0] + "</td><td>";
  tmp_str += "<td><a href='" + this.URL + "' target='_blank' style='text-decoration:none'>" + this.title + "</a><br></td></tr>";  
  }
 return tmp_str;
}


function HTML_display_line_list() {
// used in default look and feel
  var my_type_str = "";
  var tmp_str = "";
  tmp_str += "<li>" + HTML_show_anchor (this.URL,this.title,"resource","_blank");
  tmp_str += "<br>";
  //alert(HTML_show_size (this.size));
  if(HTML_show_size (this.size) != "&nbsp;-&nbsp;none"){
     tmp_str += "<span class='small'>[" + HTML_show_type (this.type) + HTML_show_size (this.size)+ "]</span>";
  }else {
	   tmp_str += "<span class='small'>[" + HTML_show_type (this.type) + "]</span>";
  }
  
  if(this.description != "none"){
     tmp_str += "<div style='margin-top:4px; margin-bottom:8px; color:#333333;'>";
     tmp_str += this.description;
     tmp_str += "</div>";
  }else{
	 tmp_str += "<div style='margin-top:4px; margin-bottom:8px; color:#333333;'>";
     //tmp_str += this.description;
     tmp_str += "</div>";
  }
  //tmp_str += "<div style='margin-top:4px; margin-bottom:8px; color:#333333;'>";
  //tmp_str += this.description;
  //tmp_str += "</div>";
  tmp_str += "</li>";
  return tmp_str;
}

// Offer Object and Methods - END

// RSS Object and Methods - START
function rssObj (my_title, my_description, my_link, my_pubDate, my_newssource) {
  this.title = my_title;
  this.description = my_description;
  this.URL = my_link;
  this.pubDate = my_pubDate;
  this.newssource = my_newssource;
  
  this.HTML_display_article_list=HTML_display_article_list;
  this.HTML_format_pubDate=HTML_format_pubDate;
}

function HTML_format_pubDate () {
	// show the day month year
	// go from "Wed, 10 Jan 2007 14:14:00 -0500"
	// to "10 Jan 2007"
	var comma_index = this.pubDate.indexOf(",",0);
	var first_colon = this.pubDate.indexOf(":",0);
	return this.pubDate.substring(comma_index+2,first_colon-3);
}
function HTML_display_article_list() {
// for In The News Look and Feel
  var tmp_str = "";
  tmp_str += "<div class=\"article\">" + HTML_show_anchor (this.URL,this.title,"none","none");
  tmp_str += "<div class=\"description\">" + this.description + "</div>";
  tmp_str += "<div style='margin-top:4px; margin-bottom:8px; color:#333333;'>";
  tmp_str += "<div><span class=\"pubDate\">" + this.HTML_format_pubDate() + "</span>";
  tmp_str += " <span class=\"source\">- " + this.newssource + "</span></div>";
  tmp_str += "</div>";
  return tmp_str;
}
// END RSS OBJECT METHODS


function HTML_show_anchor (myURL, myTEXT, myClass, myTarget) {
	var tmp_str = "<a href='" + myURL + "'";
	if (myTarget != "none") { tmp_str += " target='" + myTarget + "'"; }
	if (myClass != "none")  { tmp_str += " class='" + myClass + "'";   }
	tmp_str += ">" + myTEXT + "</a>";
	return tmp_str;
}

function HTML_show_type (myTYPE) {
  return myTYPE.charAt(0).toUpperCase() + myTYPE.substring(1).toLowerCase();
}
function HTML_show_size (mySIZE) {
  var my_type_str;
  my_type_str = "";
  if (mySIZE != "empty") {
	my_type_str = "&nbsp;-&nbsp;" + mySIZE;
  }
  return my_type_str;
}

function get_array (xmlList) {
  var my_array = new Array ();
  var i = 0;
  for (k=0;k<xmlList.length;k++) {
    if (xmlList[k].nodeType == 1) {
//    alert (some_verticals[k].childNodes[0].nodeValue);
      my_array[i] = xmlList[k].childNodes[0].nodeValue;
//    alert (my_array[i]);
      i++;
    }
  }
  return my_array;
}

// Look and Feel Functions 
function ResourcesBottom (offers_Array, MaxOffers, SortOrder) {
	
   var dataString = "<h2>Additional Resources:</h2><br><ul id=\"arrow\">";
   var count = 0;
   
	for (var an_offer in offers_Array) {
		if ((MaxOffers == "all") || (count < MaxOffers)) {
			dataString += offers_Array[an_offer].HTML_display_line_list();
			count++;
		}
   }
   dataString +="</ul>";
   return dataString
}

function ResourcesBottom2 (events_Array, MaxOffers, SortOrder) {
	
   var dataString = "";
   var count = 0;
   
	for (var an_offer in events_Array) {
	  		if ((MaxOffers == "all") || (count < MaxOffers)) {
			dataString += events_Array[an_offer].HTML_display_event_line();
			count++;
		}

   }
   //dataString +="</ul>";
   return dataString;
}


function InTheNews (items_Array, MaxOffers, SortOrder) {

	var dataString = "";
	
	var count = 0;
	for (var an_item in items_Array) {
//	alert ('count = ' + count);
		if ((MaxOffers == "all") || (count < MaxOffers)) {
			dataString += items_Array[an_item].HTML_display_article_list();
			count++;
		}
   }
   return dataString;
}

// Create and Array first
// pass the parameters of the bit you want selected
// USED FOR OFFERS
function createArray(xmlDoc,offDetStr) {
  /* 
   * Konqueror insists that the timer can keep running until
   * there are 20 alerts (the file is still in the list of
   * files to be checked until at least one alert is dismissed), 
   * so I use a timer to delay the alert and allow my script
   * to stop checking the file 
   */
   
  // break the offer array into it's elements
  var offDetails = new Array();
  offDetails = offDetStr.split(',');
  //alert(offDetails[1]);
  
  // get the Verticals
  var strVerticals = offDetails[0];
  var VerticalsArray = strVerticals.split('; ');
  //alert(VerticalsArray[0]);
  
  // get the Document Types
  var stroffType = offDetails[1];
  var offTypeArray = stroffType.split('; ');
  //alert(offTypeArray[0]);

  // get the style of the offer
  var offStyleArray = offDetails[2].split(';');
  var DivID = offStyleArray[0];							// <div id='XXX'> XXX value of div tag

  var LookandFeel = offStyleArray[1];					// Look and feel for the offers
  if (LookandFeel == undefined) { LookandFeel = "ResourcesBottom"; }

  var TotalOffers = offStyleArray[2];					// Total number of offers to show
  if (TotalOffers == undefined) { TotalOffers = "all"; }

  var Sort = offStyleArray[3];							// Sort the offers (type of sort defined by Look and Feel)
  if (Sort == undefined) { Sort = false; }
  
  
  if ( xmlDoc.documentElement && xmlDoc.documentElement.tagName && 
       xmlDoc.documentElement.tagName.toUpperCase() == 'HTML' ) {
     setTimeout('alert(\'For no apparent reason, your browser has turned the clean XML into HTML based garbage.\\nScript aborted.\');',50);
     return;
  }

  /* the rest of this function is taken from PPK's script */
  var x = xmlDoc.getElementsByTagName('offer');

//  alert (xmlDoc.getElementsByTagName('channel'));  
//  alert (xmlDoc.getElementsByTagName('item'));  
  // going to create associated array
  // all_offers_Array ("offer_id" : offer_array ());
  
  var get_offer = false;
  var other_details_Array = new Array ();
  var verticals_Array = new Array ();
  var image_Array = new Array ();
  var bullets_Array = new Array ();       
  var all_offers_Array = new Array ();
  var vertical_status = "not_set";   
  var my_label = "";
  var my_type = "";
  var my_title = "";
  var my_link = "";
  var my_size = "";
  var my_description = "";
  
  for (i=0;i<x.length;i++)
  {
    for (j=0;j<x[i].childNodes.length;j++)
    {
      if (x[i].childNodes[j].nodeType == 1) {
      
        switch (x[i].childNodes[j].nodeName) {
          case "id":                                              
            my_label = x[i].childNodes[j].firstChild.nodeValue;
            break;
          case "type":                                            
            my_type = x[i].childNodes[j].firstChild.nodeValue;                                                      
            break;                  
          case "title":                                           
            my_title = x[i].childNodes[j].firstChild.nodeValue;
            break;
          case "link": 
            my_link = x[i].childNodes[j].firstChild.nodeValue;
            break;                                             
          case "size": 
            my_size = x[i].childNodes[j].firstChild.nodeValue;
            break;                                             
          case "verticals":
            verticals_Array = get_array ( x[i].childNodes[j].getElementsByTagName('vertical'));     
            for (var v=0; v < verticals_Array.length; v++){         
              for (var fl=0; fl<=VerticalsArray.length; fl++){
                if(verticals_Array[v] == VerticalsArray[fl]){                           
                  for (var of=0;of<offTypeArray.length; of++){
					if((verticals_Array[v] == VerticalsArray[fl]) &&
                       ((offTypeArray[of] == "all") || (offTypeArray[of] == my_type))) {           					
                         get_offer=true;                                                               
                      break;
                    } else {
                      get_offer=false;                                            
                    }     
                  }
                  break;
                }        
              }
            }
            break;          

          case "description":
            my_description = x[i].childNodes[j].firstChild.nodeValue;
            break;  
          default:                                                                                                
            other_details_Array[my_label] = x[i].childNodes[j].firstChild.nodeValue;
        } 
      }                               
    }
	
    if (get_offer){
     all_offers_Array[objectArrayIndex++] = new offerObj (my_label, my_title, my_link, my_type, verticals_Array, my_description, my_size);
	 get_offer = false;
    }
  }

 // all_offers_Array.sort(compareDay2);

	var displayHTML = "";
	displayHTML = ResourcesBottom (all_offers_Array, TotalOffers, Sort);
   	document.getElementById(DivID).innerHTML = displayHTML;
}
// 
// ----------END------------

// DEBUG FUNCTIONS

function crawlXML(doc) {                             // Crawls an XML document
   if(doc.hasChildNodes()) {                         // If present element has children
      _xmlStr+='<ul><li>'+doc.tagName+'> ';       // Display current tag name
      for(var i=0; i<doc.childNodes.length; i++) {   // for each child node on current level
         crawlXML(doc.childNodes[i]);                // Call this function recursively
      }                                              // end for loop
      _xmlStr+='</li></ul>';                         // Close the list item.
   } else {                                          // current element has no children
      _xmlStr+=doc.nodeValue;                        // So display the value of the data
   }                                                 // End childNode check
} 

/// END DEBUG ...

// USED FOR RSS FEEDS
function createItems (xmlDoc,offDetStr) {
  /* 
   * Konqueror insists that the timer can keep running until
   * there are 20 alerts (the file is still in the list of
   * files to be checked until at least one alert is dismissed), 
   * so I use a timer to delay the alert and allow my script
   * to stop checking the file 
   */
   
  // break the offer array into it's elements

  var offDetails = new Array();
  offDetails = offDetStr.split(',');
  //alert(offDetails[1]);
  
  // get the style of the offer
  var offStyleArray = offDetails[2].split(';');
  var DivID = offStyleArray[0];							// <div id='XXX'> XXX value of div tag

  var LookandFeel = offStyleArray[1];					// Look and feel for the offers
  if (LookandFeel == undefined) { LookandFeel = "ResourcesBottom"; }

  var TotalItems = offStyleArray[2];					// Total number of offers to show
  if (TotalItems == undefined) { TotalItems = "all"; }

  var Sort = offStyleArray[3];							// Sort the offers (type of sort defined by Look and Feel)
  if (Sort == undefined) { Sort = false; }
  
  
  if ( xmlDoc.documentElement && xmlDoc.documentElement.tagName && 
       xmlDoc.documentElement.tagName.toUpperCase() == 'HTML' ) {
     setTimeout('alert(\'For no apparent reason, your browser has turned the clean XML into HTML based garbage.\\nScript aborted.\');',50);
     return;
  }

  /* the rest of this function is taken from PPK's script */
  
  // get a reference to the root-element "rss" 
//  alert (xmlDoc);

  var x = xmlDoc.getElementsByTagName('item');

  // going to create associated array
  // all_offers_Array ("offer_id" : offer_array ());
  
  var other_details_Array = new Array ();
  var all_rss_Array = new Array ();

  var my_label = "";
  var my_title = "";
  var my_description = "";
  var my_link = "";
  var my_pubDate = "";
  var my_newssource = "";
  
  for (i=0;i<x.length;i++)
  {
    for (j=0;j<x[i].childNodes.length;j++)
    {
      if (x[i].childNodes[j].nodeType == 1) {
      
        switch (x[i].childNodes[j].nodeName) {
          case "title":                                       
            my_title = x[i].childNodes[j].firstChild.nodeValue;
            break;
          case "description":
            my_description = x[i].childNodes[j].firstChild.nodeValue;
            break;  
          case "link": 
            my_link = x[i].childNodes[j].firstChild.nodeValue;
            break;                                             
          case "pubDate": 
            my_pubDate = x[i].childNodes[j].firstChild.nodeValue;
            break;                                             
		  case "newssource":
            my_newssource = x[i].childNodes[j].firstChild.nodeValue;
		  	break;
          default:                                                                                                
            other_details_Array[my_label] = x[i].childNodes[j].firstChild.nodeValue;
        } 
      }                               
    }
	
    if (true){
     all_rss_Array[objectArrayIndex++] = new rssObj (my_title, my_description, my_link, my_pubDate, my_newssource)
    }
  }

	var displayHTML = "";
	displayHTML = InTheNews (all_rss_Array, TotalItems, Sort);
    document.getElementById(DivID).innerHTML = displayHTML;

}

// EVENTS FUNCTION

// Create and Array first
// pass the parameters of the bit you want selected
// USED FOR EVENTS
function createEventsItems(xmlDoc,offDetStr) {
  /* 
   * Konqueror insists that the timer can keep running until
   * there are 20 alerts (the file is still in the list of
   * files to be checked until at least one alert is dismissed), 
   * so I use a timer to delay the alert and allow my script
   * to stop checking the file 
   */
   
  // break the offer array into it's elements
  var offDetails = new Array();
  offDetails = offDetStr.split(',');
  //alert(offDetails[0]);
  
  // get the Verticals
  var strEventCategory = offDetails[0];
  var EventCategoryArray = strEventCategory.split('; ');
  //alert(VerticalsArray[0]);
  
   // get the Document Types
  var streventRegion = offDetails[1];
  //var eventRegionArray = streventRegion.split('; ');
  //alert(streventRegion);
  
  // get the style of the offer
  var offStyleArray = offDetails[2].split(';');
  var DivID = offStyleArray[0];							// <div id='XXX'> XXX value of div tag
  //alert(DivID);
  
  var LookandFeel = offStyleArray[1];					// Look and feel for the offers
  if (LookandFeel == undefined) { LookandFeel = "ResourcesBottom"; }

  var TotalOffers = offStyleArray[2];					// Total number of offers to show
  if (TotalOffers == undefined) { TotalOffers = "all"; }

  var Sort = offStyleArray[3];							// Sort the offers (type of sort defined by Look and Feel)
  if (Sort == undefined) { Sort = false; }
  
  if ( xmlDoc.documentElement && xmlDoc.documentElement.tagName && 
       xmlDoc.documentElement.tagName.toUpperCase() == 'HTML' ) {
     setTimeout('alert(\'For no apparent reason, your browser has turned the clean XML into HTML based garbage.\\nScript aborted.\');',50);
     return;
  }

  /* the rest of this function is taken from PPK's script */
  var x = xmlDoc.getElementsByTagName('Event');

//  alert (xmlDoc.getElementsByTagName('channel'));  
//  alert (xmlDoc.getElementsByTagName('item'));  
  // going to create associated array
  // all_offers_Array ("offer_id" : offer_array ());
 
  var get_offer = false;
  var other_details_Array = new Array ();
  var all_events_Array = new Array (); 
  var my_eventid = "";  
  var my_title = "";
  var my_description = "";
  var my_link = "";
  var my_category = "";
  var my_eventregion = "";
  var my_startdate = "";
  var my_enddate = "";
  var my_sort_date = "";   
  var my_eventdate;
  
  for (i=0;i<x.length;i++)
  {
    for (j=0;j<x[i].childNodes.length;j++)
    {
      if (x[i].childNodes[j].nodeType == 1) {
      
        switch (x[i].childNodes[j].nodeName) {
          case "EVENTID":                                              
            my_eventid = x[i].childNodes[j].firstChild.nodeValue;
			//alert(my_eventid);			
            break;
          case "TITLE":                                            
            my_title = x[i].childNodes[j].firstChild.nodeValue;              //alert(my_title);	                                        
            break;                  
          case "DESCRIPTION":                                           
            my_description = x[i].childNodes[j].firstChild.nodeValue;
            break;
          case "URL": 
            my_link = x[i].childNodes[j].firstChild.nodeValue;
			//alert(my_link);
            break;                                             
          case "CATEGORYDESCRIPTION": 
            my_category = x[i].childNodes[j].firstChild.nodeValue;
		  break;   
		  case "REGIONDESCRIPTION": 
            my_eventregion = x[i].childNodes[j].firstChild.nodeValue;
		  break;   
          case "STARTDATE":
            my_startdate = x[i].childNodes[j].firstChild.nodeValue;
			var new_my_startdate = my_startdate.replace(/A.M./, "");
			new_my_startdate = new_my_startdate.replace(/P.M./, "");			
			
			my_eventdate = new Date(new_my_startdate);
			//alert(eventdate);
			var thiseventdate = my_eventdate.getDate(); // - Day of the month (0-31) 
            var thiseventmonth = my_eventdate.getMonth(); // - Number of month (0-11) 
			my_sort_date = thiseventmonth;
            var thiseventyear = my_eventdate.getFullYear(); // - The four digit year (1970-9999) 
			var sysdate = new Date();
			var thisdate = sysdate.getDate(); // - Day of the month (0-31) 
            var thismonth = sysdate.getMonth(); // - Number of month (0-11) 
            var thisyear = sysdate.getFullYear(); // - The four digit year (1970-9999) 
			//alert(thiseventdate);
            for (var c=0; c < EventCategoryArray.length; c++){   
			  if((thiseventyear >=  thisyear) && (my_category == EventCategoryArray[c]) && (my_eventregion == streventRegion || streventRegion == "all")){		
			         
					  if((thiseventmonth == thismonth) && (thiseventdate >= thisdate)){
						 // alert(thiseventmonth + " > " + thismonth);						
						  get_offer=true;
						 // alert(my_startdate + " - 222");
						   break;			
					  }
					  if(thiseventmonth > thismonth){
						  //alert(thiseventmonth + " > " + thismonth);
						  get_offer=true;
						  //alert(my_startdate);
						   break;			
					  }
					  
					  
			  }			  			
			  
			}	
			case "ENDDATE": 
            my_enddate = x[i].childNodes[j].firstChild.nodeValue;
			//alert(my_enddate);
		    break; 
			default:                                                                                 
            other_details_Array[my_eventid] = x[i].childNodes[j].firstChild.nodeValue;
			break;
        } 		
      }                               
    }	
    if (get_offer){
 all_events_Array[objectArrayIndex++] = new eventsObj (my_eventid,my_title,my_description,my_link, my_category,my_eventregion, my_eventdate, my_startdate, my_enddate, my_sort_date);	 
	 get_offer = false;	 
    }
  }

    all_events_Array.sort(compareDay);
  
    //alert("hello");
	var displayHTML = "<table cellpadding=\"4\" cellspacing=\"0\" width=\"200\" >";
	displayHTML += ResourcesBottom2 (all_events_Array, TotalOffers, Sort);
	//alert(displayHTML);
	displayHTML += "</table>";
	//alert(displayHTML);
   	document.getElementById(DivID).innerHTML = displayHTML;
}
// 
// ----------END------------
