






var Calendar = new Class({
     
     initialize: function(){
 
 
               this.monthArray = ["Januarie", "Februarie", "Maart", "April", "Mei", "Junie", "Julie","Augustus", "September", "Oktober", "November", "Desember"];
               this.monthNumArray = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"];
               
   
     },   
     
     
 	
   
    SelectDate : function(selMo, selDay, selYear)
    {
         var dateField = document.getElementById("serviceDate");
         var calDiv = document.getElementById("calendar");
         dateField.value = monthNumArray[selMo] + "/" + selDay + "/" + selYear;
         calDiv.style.display = "none";
    },
    
   FormatDate : function (dateValue)
    {
         // At this point all we have is a string like 01/01/2004
         // We must have a date object, so we make one based on the string date
         // and return it to the main function
         var dateValArray = dateValue.split("/");
         var currentDate = new Date(dateValArray[2],dateValArray[0]-1,dateValArray[1]);
         return currentDate;
    },
    
    
    FormatRawDate : function (rawDateValue)
    {
         // The next/previous buttons have date object references. They need to be strings
         // so we can send them to the function when the next/previous links are clicked.
         // the string date is returned and placed into the link.
         var rawMonth = rawDateValue.getMonth()+1;
         var rawDay = rawDateValue.getDate();
         var rawYear = rawDateValue.getFullYear();
         var stringDate = rawMonth + "/" + rawDay + "/" + rawYear;
         return stringDate;
    },
    
    FormatRawDateReverse : function (rawDateValue)
    {
         // The next/previous buttons have date object references. They need to be strings
         // so we can send them to the function when the next/previous links are clicked.
         // the string date is returned and placed into the link.
         var rawMonth = rawDateValue.getMonth()+1;
         var rawDay = rawDateValue.getDate();
         var rawYear = rawDateValue.getFullYear();
         var stringDate =  + rawDay + "/" + rawMonth + "/"  + rawYear;
         return stringDate;
    },
    
    
showWindow : function (type,date){
     
//alert("showwindows");

// alert(this.eventTypes[type].length);
 
//var eventItem = this.eventType[type].length;

 var dateValArray = date.split("/");
 var newDate = dateValArray[1]+ "/" +dateValArray[0] + "/" + dateValArray[2];
                 
 
var caption = newDate + "-" + type ;  
var body = "";
//var body = "";

for(var i = 0 ; i < this.eventDays[date][type].length - 1; i++){

var eventItem = this.eventDays[date][type][i];

body += " <div class='whiteBottom'>" + eventItem.time +  "&nbsp;<strong>" +  eventItem.name + "</strong>" + "<br/>" + eventItem.details + "</div>" ;  
  
  
  
}//for

var length =  this.eventDays[date][type].length;
var eventItem = this.eventDays[date][type][length-1];



body += " <div>" + eventItem.time +  "&nbsp;<strong>" +  eventItem.name + "</strong>" + "<br/>" + eventItem.details + "</div>" ;  

var popup = '<div id="eventWindow"><div class="top"><div class="closeButton closeSticky"><img src="/images/popup/new/closebtn.gif"  /></div><h2>' + caption + '</h2></div><div class="middle">'+ body +'</div><div class="bottom"></div></div>';


//body += 


//var popup = '<div class="DefaultStickyWin"><div class="top"><div class="top_ul"></div><div class="top_ur"><div class="closeButton closeSticky"></div><h1 style="width: 335px;" class="caption">'+ caption +'</h1>  </div></div> <div class="middle"><div class="body">'+ body +'</div></div>  <div class="bottom">        <div class="bottom_ll"></div>  <div class="bottom_lr"></div>    </div></div>'; 

  
body = new Element('div').setHTML(body);


//var stickyHTML = stickyWinHTML(caption,body, {
//     width: '400px',  
//    baseHref: "/images/popup/"
//
//  });


//alert(stickyHTML);
//
//new StickyWin({
//  content: stickyHTML,
// relativeTo: $('calendar'),
//  /*upper left corner of fxTarget */
//  position: 'upperLeft',
//  offset: {
//    x: 80,
//    y: 100
//  }
//
//});  

//alert(body);

new StickyWin({
     content: popup,
     relativeTo: $('calendar'),
     position: 'upperLeft',
 offset: {
   x: 30,
  y: 100
 }
     
     });
     
     
     
},
    
 
    
    
GetEvent : function (date,cell){
		
		
		
		

		var eventsrc = "";
        var eventTypes = new Array();
      /*  eventTypes["Akademie"] = new Array();
		eventTypes["Sport"] = new Array();
		eventTypes["Kultuur"] = new Array();
		eventTypes["Algemeen"] = new Array();
		eventTypes["NewCat"] = new Array();
		*/
		
		for(var i = 0; i < this.categories.length; i++){
			var catVal = this.categories[i];
			eventTypes[catVal] = new Array();
			
		}
                
     var events  = new Array();
                
	for( var i = 0; i < this.events.length; i++){
		

		var eventItem = this.events[i];
		
               
		if(eventItem.date == date){
                 
      		eventsrc = "<div id='event' >";
    
                 
                this.selected.push("cell" + cell);   
            		
		//alert("found date");
		/*	
		switch(eventItem.category){
                  
               case "Akademie"     : eventTypes["Akademie"].push(eventItem);  break;
               case "Sport"        : eventTypes["Sport"].push(eventItem);  break;
               case "Kultuur"      : eventTypes["Kultuur"].push(eventItem); break;
               case "Algemeen"     : eventTypes["Algemeen"].push(eventItem); break;
               case "NewCat"     : eventTypes["NewCat"].push(eventItem); break;
                    
                }//switch
				*/
          for(var j=0; j < this.categories.length;j++){
		  	var catVal = this.categories[j];
			if(eventItem.category == catVal ){
				eventTypes[catVal].push(eventItem);
				
			}
			
		  }
          
                   
               
		//eventsrc = '<a href="#" id="event" >' + eventItem.name +"</a> ";
                
                //alert(eventItem.category);
               
               
               
               this.eventDays[eventItem.date] = eventTypes;
               
               if(this.eventDays[eventItem.date][eventItem.category].length == 1){
                       //  eventsrc += '<div id="eventLink" onclick="cal.showWindow(\'' + eventItem.category + '\',\'' + eventItem.date  +'\');"  ><a href="#" onclick="cal.showWindow(\'' + eventItem.category + '\',\'' + eventItem.date  +'\');">' +  eventItem.category  +'</a></div>';
               
                       eventsrc += '<a href="/testing">testing</a>';
                       events.push(eventItem);
               
               }
               
   
               
           //    alert(this.eventDays[eventItem.date][eventItem.category].length);
                            
               //eventsrc += '<img  src="/images/extreme.gif" class="dailyEvents" onclick="cal.showWindow(\'' + eventItem.category + '\',\'' + eventItem.date  +'\');" />';
                
                eventsrc += "</div>";
                
               // alert(eventsrc);
                			
		}//if
		
	}//for	
		
    
           
           
             
                
	//return eventsrc;
        
        return events;
        
	},
	
	
     SetEvents : function (evts,categories){
		
		this.events = evts;
        this.categories = categories;        
        this.eventDays = new Array();
		this.eventTypes = new Array();
                this.selected = new Array();
   

	},
    
   SetSelected : function (){
     
     for(var i = 0; i < this.selected.length; i++ ){         
     
    // alert(this.selected[i]);
         
     $(this.selected[i]).addClass("selected");              
          
     }//for
     
   },
    
   ShowCalendar :  function (dateValue)
    {
		
		
                
         var calDiv = document.getElementById("calendar");
         // if there is no date yet, make a new one. Otherwise, use the date in the input box
         // or the date passed by the next/previous buttons.
         var currentDate = (dateValue == null || dateValue == "") ? 
new Date() : this.FormatDate(dateValue) ;
         var prevMonth = new Date(currentDate);
         prevMonth.setMonth(currentDate.getMonth()-1);
         var nextMonth = new Date(currentDate);
         nextMonth.setMonth(currentDate.getMonth()+1);
         var currentYear = currentDate.getFullYear();
         var currentMonth = currentDate.getMonth();
         // shift the current day to day 1 to make calendar to build it from day 1.
         var firstDay = new Date(currentDate);
         firstDay.setDate(1);
         var currentDay = new Date(firstDay);
         // clear current calendar (if exists)
         var calHTML = "";
         // show calendar
         //calDiv.style.display = "block";
         // write out calendar header
         calHTML += '<table cellpadding="0" cellspacing="0" ><tr><td colspan="7" class="monthName">';
         calHTML += '<a href="" onclick="buildCalendar(\''+ this.FormatRawDate(prevMonth)+'\'); return false;"><img src="/images/calendar/prevmonth.gif" /></a>';
         calHTML += '' + this.monthArray[currentMonth] + ' '+ currentYear ;
         calHTML += '<a href="" onclick="buildCalendar(\''+ this.FormatRawDate(nextMonth)+'\'); return false;"><img src="/images/calendar/nextmonth.gif" /></a></td></tr>';
         calHTML += '<tr><th>Sondag</th><th>Maandag</th><th>Dinsdag</th><th>Woensdag</th><th>Donderdag</th><th>Vrydag</th><th>Saterdag</th></tr>';
         var curCell = 1;
         // as long as we are in the current month, write out the calendar days
         while(currentDay.getMonth() == firstDay.getMonth())
         {
             // begin row
             calHTML += '<tr>';
             // iterate through each week
             for (var i=0; i<7; i++)
             {
			 	
                  calHTML += '<td id="' + "cell" + curCell + '" class="day" >';
                  // as long as this week is in the same month, write out days
                  if(currentDay.getMonth() == firstDay.getMonth())
                  {
                      // if first day is not reached yet, write a blank
                       if(curCell <= firstDay.getDay())
                       {
                            calHTML += '&nbsp;';
                            curCell++
                       }
                       // otherwise write out the date
                       else
                       {
                           
						   //get event for the day;
						//	var eventsrc = this.GetEvent(this.FormatRawDate(currentDay),curCell);
                                                var events = this.GetEvent(this.FormatRawDate(currentDay),curCell);
                                                                                               
						    calHTML += '<div class="dayNum">' + currentDay.getDate() + '</div>';
                       //   calHTML += '<br/>' + eventsrc;
                       
                         var eventsrc = "";
                         
                         if(events.length != 0 ){
                              
                              
                              
                             // alert(events.length);
                              
                              for(var k = 0; k < events.length; k++ ){
                                   
                               var eventItem = events[k];
                              eventsrc += '<div class="eventLink" ><a href="javascript:;" onclick="cal.showWindow(\'' + eventItem.category + '\',\'' + eventItem.date  +'\');">' +  eventItem.category  +'</a></div>';
                                   
                                   
                                   
                              }
                              
                      //   alert(eventsrc);     
                              
                         }//if
                         
                         calHTML +=  eventsrc;
                         
                       //   calHTML += '<br/>' + '<a href="javascript:;" onclick="cal.showWindow(\'gg\',\'gg\');" >testing</a>';
						   
						    curCell++
                            currentDay.setDate(currentDay.getDate() + 1);
                       }
                  }
                  calHTML += '</td>';
             }
             calHTML += '</tr>';
         }
        calHTML += '</table>';
        calDiv.innerHTML = calHTML;
    }
    
    
});