//var myTips;

function resetdateCookie()
{
  td = new Date;
  var m_day = td.getDate().toString();
  var m_month_i = td.getMonth() + 1;
  var m_month = m_month_i.toString();
  var m_year = td.getFullYear().toString().substr(2,2);
  if(m_day.length == 1)m_day = "0" + m_day;
  if(m_month.length == 1)m_month = "0" + m_month;
  var ck = m_year + "_" + m_month;
//  var ck = m_year + "_" + m_day + '_' + m_month;

  setCookie('calendar_date',ck,1);
  setCookie('event_date',"",1);
}



function resetdateCookies()
{
  td = new Date;
  var m_day = td.getDate().toString();
  var m_month_i = td.getMonth() + 1;
//alert(m_month_i.toString());
  var m_month = m_month_i.toString();
  var m_year = td.getFullYear().toString().substr(2,2);
//  if(m_day.length == 1)m_day = "0" + m_day;
  if(m_month.length == 1)m_month = "0" + m_month;
  var ck = m_year + "_" + m_month;// + '_' + m_day;

  setCookie('calendar_date',ck,1);
  setCookie('event_date',"",1);
}

function varifyCookieDates()
{
  var m_date = getCookie('calendar_date');
  if(m_date=="")
  {
//alert('resetting');
    resetdateCookies();
  }
  else
  {
//alert('not resetting');
    var year = Number("20" + m_date.substr(0,2));
    var month = Number(m_date.substr(3,2));
    var tdate = new Date;
    if(year == tdate.getFullYear())
    {

      if(month < (tdate.getMonth()-2))
      {
        resetdateCookies();
      }
      else if(month > (tdate.getMonth()+9))
      {
        resetdateCookies();   
      }


    }
    else if(year < tdate.getFullYear())
    {
      if((13-month+tdate.getMonth()+1)>4) resetdateCookies();
    }
    else
    {
      if((13-tdate.getMonth()+1+month)>6) resetdateCookies();
    }
  }


 
}

function setCookie(c_name,value,expiredays)
{
  var expdate = new Date();
  expdate.setDate(expdate.getDate() + expiredays);
  document.cookie=c_name+"="+escape(value)+((expiredays==null)?"":";expires="+expdate.toGMTString());
}

function getCookie(c_name)
{
  if(document.cookie.length>0)
  {
    cstart=document.cookie.indexOf(c_name+"=");
    if(cstart!=-1)
    {
      cstart=cstart+c_name.length+1;
      cend=document.cookie.indexOf(";",cstart);
      if(cend==-1) cend=document.cookie.length;
      return unescape(document.cookie.substring(cstart,cend));
    }
  }
  return "";
}

function updatePageEvents()
{  
  var c_date = getCookie('calendar_date');
  var e_date = getCookie('event_date');
  if(e_date != "") 
  {
    cal_GetFile("ajax_event",e_date);
  }
  else
  {
    var e = document.getElementById("ajax_event");
    if(e != null) e.innerHTML = "";
  }

  cal_GetFile("ajax_events",c_date);

  //var myTips = new Tips($$('.eventday'));
}
  
  
function cal_GetFile(ele,cal_file)
{
  var element = $(ele);
  if(element != null)
  {              
    new Ajax ('/Calendars/Events_' + cal_file + '.htm',{method: 'get', update: $(ele)}).request();
  }
}




function cal_GetCalendar(ele,cal_date,dir)
{
  var element = $(ele);

  //get the current date
  var td = new Date();
  year_s = td.getFullYear().toString().substr(2,2);
  day = td.getMonth()+1; //("0" + ((td.getMonth+1).toString())).substr(2,2)
  day_s = "0" + day.toString();
  day_s = day_s.substr(-2,2);
  var tdate = (year_s + "_" + day_s);

  if(cal_date == 'today')
  {    
    var myAjax = new Ajax("/Calendars/Cal_" + tdate + ".htm",{method: 'get', update: $(ele),
onComplete: function() 
{
  //set the tooltip class name
  var myTips = new Tips($$('.eventday'),{ hideDelay: 400,fixed: true});


  //check for todays date and set the day element to class name of today
  if(tdate == cal_date)
  {
    ele_today = document.getElementById(td.getDate().toString());
    ele_today.className = "today";
  }
}});
    myAjax.request();

  }
  else
  {
    var myAjax = new Ajax("/Calendars/Cal_" + cal_date + ".htm",{method: 'get', update: $(ele),
onComplete: function() 
{
  //set the tooltip class name
  var myTips = new Tips($$('.eventday'),{ hideDelay: 400,fixed: true});

  //check for todays date and set the day element to class name of today
  if(tdate == cal_date)
  {
    ele_today = document.getElementById(td.getDate().toString());
    ele_today.className = "today";
  }
}});
    myAjax.request();


  }



  //check if url is in the events page, if yes then update the events page with the correct month
  if(window.location.href.indexOf('/questevents')>-1)
  {
    cal_GetEvents('ajax_events',cal_date,null);
  } 

}
function cal_GetEvents(ele,cal_date,cal_day)
{
  //this function should only be called from /questevents page!!!
  var element = $(ele);
  if(element != null)
  {                    
    new Ajax ("/Calendars/Events_" + cal_date + "_" + cal_day + ".htm",{method: 'get' , update: $(ele)}).request();
  }
  if(cal_day != null){window.location.href = '/questevents#'+cal_day;}
}




function cal_EventMouseClick_BACKUP(myDate,myDay)
{
  //if(window.location.pathname.indexOf('questevents')>-1) {window.location.href = "/questevents#D"+myDay;}
  if(window.location.pathname.indexOf('questevents')>-1) 
  {
    window.location.href = "/questevents#"+myDate + "_" + myDay;
  }
}
function cal_EventMouseClick(myDate,myDay)
{
  var eday = myDay;
  //if(eday.length == 1) eday = "0" + eday;
  eday = myDate + "_" + eday;
  
  setCookie('calendar_date',myDate,1);
  setCookie('event_date',eday,1);
  
  if(window.location.pathname.indexOf('questevents')==-1) 
  {
    window.location.href = "/questevents";
  }
  else
  {
    updatePageEvents();
  }
}


function cal_EventMouseOver(id){}
function cal_EventMouseOut(id){}
function cal_CalendarMouseOver(){}
function cal_CalendarMouseOut(){}
function calendar_click(mydate)
{
  if(window.location.pathname.indexOf('questevents')==-1) {window.location.href = "/questevents#"+mydate;}
}

function calendar_up()
{
  var m_date = getCookie('calendar_date');
  if(m_date=="")
  {
    m_date = "<r:date format=/"%y_%m/"/>"
    addCookie('calendar_date',m_date,1);
  }

  var year = Number(m_date.substring(0,2));
  var month = Number(m_date.substring(3,5))+1;

  if(month==13){year=year+1;month=1;}
  
  var str_date_Y = (String(year).length==2)?(String(year)):("0" + String(year));
  var str_date_M = (String(month).length==2)?(String(month)):("0" + String(month));
  var str_date = str_date_Y + "_" + str_date_M;


  setCookie('calendar_date',str_date,1);
setCookie('event_date',"",1);   
  cal_GetCalendar('ajax_cal',str_date,1);
  
updatePageEvents();  

}

function calendar_down()
{
  var m_date = getCookie('calendar_date');
  if(m_date=="")
  {
    m_date = "<r:date format=/"%y_%m/"/>"
    addCookie('calendar_date',m_date,1);
  }

  var year = Number(m_date.substring(0,2));
  var month = Number(m_date.substring(3,5))-1;

  if(month==0){year=year-1;month=12;}
  
  var str_date_Y = (String(year).length==2)?(String(year)):("0" + String(year));
  var str_date_M = (String(month).length==2)?(String(month)):("0" + String(month));
  var str_date = str_date_Y + "_" + str_date_M;

  setCookie('calendar_date',str_date,1);
setCookie('event_date',"",1);  
  
  cal_GetCalendar('ajax_cal',str_date,-1);
updatePageEvents();  
}

function showthedate(id)
{
  var url = document.URL;
  var i = url.indexOf('section_');
  
  if(i>1)
  {
  
    ele = document.getElementById('eventList');
    eles = ele.getElementsByTagName('div');
    for(var x=0;x<eles.length;x++)
    {
      if(eles[x].getAttribute('name')=='eventBox')
      {
        eles[x].style.display="none";
      }
    }
    var e = document.getElementById('section_' + id);
    e.style.display="inline";
  }
}


function cal_showULR()
{

  var url = document.URL;
  var i = url.indexOf('section_');

  if(i>1)
  {
    url=url.slice(i);
    document.getElementById(url).style.display="inline";
  }
}



//------------------------animations--------------------
//DEFS
NONE=0,PUFF_AWAY=1,SLIDE_FADE=2,SLIDE_SQEEZE=3;
LEFT=1,RIGHT=2;

/////////////////////////////
//animation variables
//----first object (generaly this is designated to the 'clone')
var val_x1=0;
var val_y1=0;
var val_f1=0;
var ele_a1=null;        

var step_x1=0;
var step_y1=0;
var step_f1=0;

var isAnimating1=0;
var endFunc1="";
var destroyIt1=0;

//-------2nd object
var val_x2=0;
var val_y2=0;
var val_f2=0;
var ele_a2=null;

var step_x2=0;
var step_y2=0;
var step_f2=0;

var isAnimating2=0;
var endFunc2="";
var destroyIt2=0;
//////////////////////////

var calendarWidth = 200;
var calendarHeight = 200; //don't know how to get the height dynamically

var animationType=NONE;  //NONE=0,PUFF_AWAY=1,SLIDE_FADE=2,SLIDE_SQEEZE=3;


function setAnimation(type){animationType = type;}

function rotate_left(event)
{
  switch(animationType)
  { 
    case NONE: calendar_up();break;
    case PUFF_AWAY: start_PUFF_AWAY(event,LEFT);break;      
    case SLIDE_FADE: start_SLIDE_FADE(event,LEFT);break;
    case SLIDE_SQEEZE: start_SLIDE_SQEEZE(event,LEFT);break;
   }
}

function rotate_right(event)
{
  switch(animationType)
  { 
    case NONE: calendar_down();break;
    case PUFF_AWAY: start_PUFF_AWAY(event,RIGHT);break;      
    case SLIDE_FADE: start_SLIDE_FADE(event,RIGHT);break;
    case SLIDE_SQEEZE: start_SLIDE_SQEEZE(event,LEFT);break;
   }
}





//--------------------------PUFF_AWAY-----------------
//This effect makes the month that the user is switching away from fall away to the 
//left or right and slightly down and fade away while the new month appears in the 
//place of the old month
function start_PUFF_AWAY(event,dir)
{
  if(event == null)return;
  if(event.target.parentNode.parentNode.parentNode.parentNode.id=='clone')return;

  if(isAnimating1 == 0)
  {
    ele_a2 = document.getElementById('ajax_cal');
    ele_a1 = ele_a2.cloneNode(1);
    ele_a1.id = "clone";
    
    //calendarWidth = Number(document.getElementById('ajax_cal').style.width.slice(0,-2));  //210; //Number(ele_a2.style.width.slice(0,-2));
    //calendarHeight = Number(document.getElementById('ajax_cal').style.height.slice(0,-2));  //200; //Number(ele_a2.style.height.slice(0,-2));
    
    ele_a2.parentNode.appendChild(ele_a1);   
    ele_a1.style.position="relative";
    ele_a2.style.position="relative";

    ele_a1.style.top = -calendarHeight + "px";

    if(dir==LEFT)
    {
      customSlide_PuffAway(500,-100,10);
      calendar_up();
    }
    else
    {
      customSlide_PuffAway(500,100,10);  
      calendar_down();    
    }
  }
  else
  {
    if(dir==LEFT){calendar_up();}
    else{calendar_down();}  
  }
}


function customSlide_PuffAway(duration,to_x,to_y)
{
  if(isAnimating1 == 1) return;
  isAnimating1 = 1;  
  
  if(ele_a1==null){isAnimating1=0;return;}

  val_x1 = Number(ele_a1.style.left.slice(0,-2));
  val_y1 = Number(ele_a1.style.top.slice(0,-2));
  val_f1 = 1;   
  
  step_x1 = 100*to_x/duration;    
  step_y1 = 100*to_y/duration;    
  step_f1 = 100/duration;    
  
  var t=setTimeout("animateIt_Puff_Away()",100);      
}


function animateIt_Puff_Away()
{
  if(ele_a1 != null) 
  {

    val_x1 = val_x1 + step_x1*(Math.cos(3.14*(1-val_f1))+1.2);
    val_y1 = val_y1 + step_y1*(Math.cos(3.14*(1-val_f1))+1.2);
    
    val_f1 = val_f1 - step_f1;
    
    ele_a1.style.opacity=val_f1;      
    ele_a1.style.left=val_x1 + "px";
    ele_a1.style.top=val_y1 + "px";
      
    if(val_f1>0)
    {    
      t=setTimeout("animateIt_Puff_Away()",100);  
      //if(ele_debug!=null)ele_debug.innerHTML = "val_x1 = " + val_x1 + "<br/>val_y1 = " + val_y1 + "<br/>val_f1 = " + val_f1;
    }
    else
    {
      ele_a1.parentNode.removeChild(ele_a1);
      isAnimating1 = 0;      
    }
  }
}










//------------------------SLIDE FADE-------------------------------
//This effect causes the calendar months to rotate to the left or right while the month being
//switched away from fades away and the new month fades in. The two months that are animated
//in the effect are side by side touching each other as they are animated.
function start_SLIDE_FADE(event,dir)
{
  if(event == null)return;
  if(event.target.parentNode.parentNode.parentNode.parentNode.id=='clone')return;

  if(isAnimating1 == 0)
  {
    ele_a2 = document.getElementById('ajax_cal');
    ele_a2.style.opacity=0;

    //calendarWidth = Number(ele_a2.style.width.slice(0,-2));
    //calendarHeight = Number(ele_a2.style.height.slice(0,-2));

    ele_a2.style.position = "relative";
    
    if(dir==LEFT)
    {      
      ele_a1 = ele_a2.cloneNode(1);
      ele_a1.style.position="relative";
      ele_a1.id = "clone";   
      ele_a1.style.opacity=1;
      
      ele_a2.parentNode.appendChild(ele_a1); 
    
      ele_a2.style.left = calendarWidth + "px";
      ele_a1.style.top = -calendarHeight + "px";

      val_x1 = 0;
      val_x2 = calendarWidth;
      val_f1 = 1; 
  
      calendar_up(); 
      customSlide_SLIDEFADE(350,calendarWidth,0);
    }
    else
    {
      ele_a2.style.left = ele_a2.style.width.toString() + "px";
  
      ele_a1 = ele_a2.cloneNode(1);
      ele_a1.id = "clone";
      ele_a1.style.opacity=1;
      
      ele_a2.parentNode.appendChild(ele_a1);    
      ele_a1.style.position="relative";

      ele_a2.style.left = "-200px";
      ele_a1.style.top = "-220px"; 
      
      val_x1 = 0;
      val_x2 = -calendarWidth;
      val_f1 = 1; 
  
      calendar_down(); 
      customSlide_SLIDEFADE(350,0,calendarWidth);         
    }    
  }
  else
  {
    if(dir==LEFT){calendar_up();}
    else{calendar_down();}    
  }
}

function customSlide_SLIDEFADE(duration,from_x,to_x)
{
  if(isAnimating1 == 1) return; //if it is still being animated don't start a mew animation!
  isAnimating1 = 1; 

  step_x1 = 100*(to_x-from_x)/duration;       
  step_f1 = 100/duration;    

  var t=setTimeout("animateIt_Slide_Fade()",100);
}

function animateIt_Slide_Fade()
{
  val_x1 = val_x1 + step_x1;
  val_x2 = val_x2 + step_x1;
  val_f1 = val_f1 - step_f1;

  ele_a1.style.opacity=val_f1;  
  ele_a1.style.left=val_x1 + "px";
  ele_a2.style.opacity=1 - val_f1;  
  ele_a2.style.left=val_x2 + "px";
    
  if(val_f1>0)
  {
    t=setTimeout("animateIt_Slide_Fade()",100);  
  }
  else
  {
    ele_a2.style.left = "0px";
    ele_a2.style.opacity=1;
    ele_a1.parentNode.removeChild(ele_a1);
    isAnimating1 = 0;
  }
}







