if (!window.sigtc)      window.sigtc   = {};
if (!sigtc.calender)    sigtc.calender = {};

sigtc.calender.style                   = 0;
sigtc.calender.EventEntry = function
  ( pAPP_NOM
  , pAPP_DES
  , pAPP_TYPE
  , pAPP_RELZ
  )
{
  this.oAPP_NOM   = pAPP_NOM;
  this.oAPP_DES   = pAPP_DES;
  this.oAPP_TYPE  = pAPP_TYPE;
  this.oAPP_RELZ  = pAPP_RELZ;
};   
   
sigtc.calender.addEvent = function
  (  pAPP_COD 
   , pAPP_NOM
   , pAPP_DES
   , pAPP_DATE
   , pAPP_TYPE
   , pAPP_RELZ
   
  )
{
  
  var e = sigtc.calender.sEventList[pAPP_DATE];
  if (!e){
    e = new Object();
    e[pAPP_COD] = new sigtc.calender.EventEntry
                                      ( pAPP_NOM
                                      , pAPP_DES
                                      , pAPP_TYPE
                                      , pAPP_RELZ ); 
   
    sigtc.calender.sEventList[pAPP_DATE] =e;                                   
  }
  else{
  e[pAPP_COD]= new sigtc.calender.EventEntry
                                      ( pAPP_NOM
                                      , pAPP_DES
                                      , pAPP_TYPE 
                                      , pAPP_RELZ); 
  }
};  


sigtc.calender.anobis = function AnoBis(pYear)
{ if (pYear% 4 != 0)
    return false;
  else
    if (pYear % 100 != 0)
       return true;
    else
      if (pYear % 400 != 0 )
         return false;
      else
        return  true;
};

sigtc.calender.last_day_of_month = function(pMonth,pYear)
{  
    if (pMonth == 0||pMonth==2||pMonth==4||pMonth==6||pMonth==7||pMonth==9||pMonth==11){
      return 31;
    }
    else if (pMonth ==3||pMonth==5||pMonth==8||pMonth==10){
      return  30;
    }
    else{  
     if (sigtc.calender.anobis(pYear))
      return 29;
     else
      return 28;
    }
};
sigtc.calender.showEvent =function(listEvent)
{
  var event;
  var eNom ="";
  for (var i in listEvent)
  {
    event = listEvent[i];
    eNom += "* "+event.oAPP_NOM+"\n";
  }
  return eNom;
};
sigtc.calender.select_month = function (e)
{
   if (e.id =="DP_month_i0"||e.id=="DP_month_0")
     sigtc.calender.month = 1;
   else if (e.id =="DP_month_i1"||e.id=="DP_month_1")
     sigtc.calender.month = 2; 
   else if (e.id =="DP_month_i2"||e.id=="DP_month_2")
     sigtc.calender.month = 3;    
   else if (e.id =="DP_month_i3"||e.id=="DP_month_3")
     sigtc.calender.month = 4;    
   else if (e.id =="DP_month_i4"||e.id=="DP_month_4")
     sigtc.calender.month = 5;    
   else if (e.id =="DP_month_i5"||e.id=="DP_month_5")
     sigtc.calender.month = 6;          
   else if (e.id =="DP_month_i6"||e.id=="DP_month_6")
     sigtc.calender.month = 7;          
   else if (e.id =="DP_month_i7"||e.id=="DP_month_7")
     sigtc.calender.month = 8;          
   else if (e.id =="DP_month_i8"||e.id=="DP_month_8")
     sigtc.calender.month = 9;          
   else if (e.id =="DP_month_i9"||e.id=="DP_month_9")
     sigtc.calender.month = 10;          
   else if (e.id =="DP_month_i10"||e.id=="DP_month_10")
     sigtc.calender.month = 11;          
   else if (e.id =="DP_month_i11"||e.id=="DP_month_11")
     sigtc.calender.month = 12;          
          
   
  sigtc.calender.style =0;
  sigtc.calender.show();
};

sigtc.calender.select_day = function (e)
{ 
    var day =e.firstChild.nodeValue;  
    var  row = e.id.substr(9,1);
    if (row <=2&& day>=15){sigtc.calender.month--;} 
    if (row >=6&& day<=15){sigtc.calender.month++;} 
    sigtc.calender.day = day;     
    sigtc.calender.style =2;
    sigtc.calender.week =e.id.substr(11,1)-1
    sigtc.calender.show();
};
sigtc.calender.show_day = function(pRow,pCol,pDay,pMonth,pYear,pWeek)
{  var e =document.getElementById("dp_0_day_"+pRow+"_"+pCol);
   e.firstChild.nodeValue=pDay; 
   var vclass="";
 
   if  (pWeek)
     vclass = vclass+ " DP_onmonth";
   else
     vclass = vclass+ " DP_offmonth";
   if (pDay ==sigtc.calender.today[0]&&pMonth ==sigtc.calender.today[1]&& pYear==sigtc.calender.today[2])
      vclass = vclass+" DP_today"
   var key =pYear.toString();
   if (pMonth.toString().length ==1){key+="0";}
   key+=pMonth.toString();
   if (pDay.toString().length ==1){key+="0";}
   key+=pDay.toString();   
   var event = sigtc.calender.sEventList[key];
   if (event){ 
     for( i in event ){
       if(event[i].oAPP_TYPE == "F") vclass = vclass+" DP_feriado"; 
       else vclass = vclass+" DP_event"; 
     }
     e.title = sigtc.calender.showEvent(event);
   } else{e.title="";}   
   if (pCol == 6)
     e.className = vclass+" DP_weekend";
   else if ( pCol==7)
     e.className = vclass+" DP_weekend";
   else
     e.className = vclass+" DP_weekday"; 
   
};
sigtc.calender.clickMonth =function(){
   sigtc.calender.style =1;
   sigtc.calender.show();
};

sigtc.calender.show_days = function(){
  var month = sigtc.calender.month-1,
      year  = sigtc.calender.year,
      first_of_month = new Date(sigtc.calender.year, month, 1), // creates instance of date object for first of month   
      day_of_week = first_of_month.getDay(),   // returns day within week - range 0-6
      last_day_of_month = sigtc.calender.last_day_of_month(month,sigtc.calender.year),  
      last_month,
      last_year;
  if (day_of_week== 0) {day_of_week= 6;}
  else {day_of_week --;}
      document.getElementById("DP_monthYear").firstChild.nodeValue =sigtc.calender.months[month]+" "+sigtc.calender.year;  
  if (month == 0){
    last_month= 11;
    last_year = sigtc.calender.year-1;}
  else{   
    last_month=month-1;
    last_year =sigtc.calender.year; 
  }  
  var last_day_of_month_prev = sigtc.calender.last_day_of_month(last_month,last_year); 
  var day;
  var i;
  if (day_of_week ==6){ 
    day =last_day_of_month_prev;
    for (var iii= 6;iii>0;iii--){
      sigtc.calender.show_day(1,iii,day,last_month,last_year,false);
      day--;
    }
    i=1;
  }
  else {
    i=2;
    day =last_day_of_month_prev;
    for (var iiii=2 ;iiii>0;iiii--){
      var iii;
      if (iiii== 2){iii =day_of_week}
      else {iii=7}
      for (;iii>0;iii--){
         sigtc.calender.show_day(iiii,iii,day,last_month,last_year,false);
         day--;
      }  
    }
  }
  day=1;
  var weekOn =true;
  for(;i <= 7;i++){
    var ii; 
    if(day_of_week !=6 && i==2){ii=1+day_of_week;}
    else if (day_of_week ==6 && i==1){ii=7;}
    else {ii=1}
    for (; ii<=7;ii++){ 
       sigtc.calender.show_day(i,ii,day,month,year,weekOn);
       day++;
       if (day > last_day_of_month){
         day=1;
         weekOn =false;
         if (month == 11){month =0; year =year+1;}
         else {month++;}
       }
    }  
  }    
    document.getElementById("dp_0_day_0").firstChild.nodeValue=sigtc.calender.weeks[0].substr(0,1);
    document.getElementById("dp_0_day_1").firstChild.nodeValue=sigtc.calender.weeks[1].substr(0,1);
    document.getElementById("dp_0_day_2").firstChild.nodeValue=sigtc.calender.weeks[2].substr(0,1);
    document.getElementById("dp_0_day_3").firstChild.nodeValue=sigtc.calender.weeks[3].substr(0,1);
    document.getElementById("dp_0_day_4").firstChild.nodeValue=sigtc.calender.weeks[4].substr(0,1);
    document.getElementById("dp_0_day_5").firstChild.nodeValue=sigtc.calender.weeks[5].substr(0,1);
    document.getElementById("dp_0_day_6").firstChild.nodeValue=sigtc.calender.weeks[6].substr(0,1);    
};

sigtc.calender.show_months = function(){
    document.getElementById("DP_Year").firstChild.nodeValue = sigtc.calender.year;  
    document.getElementById("DP_month_0").firstChild.nodeValue=sigtc.calender.months[0].substr(0,3);
    document.getElementById("DP_month_1").firstChild.nodeValue=sigtc.calender.months[1].substr(0,3);
    document.getElementById("DP_month_2").firstChild.nodeValue=sigtc.calender.months[2].substr(0,3);
    document.getElementById("DP_month_3").firstChild.nodeValue=sigtc.calender.months[3].substr(0,3);
    document.getElementById("DP_month_4").firstChild.nodeValue=sigtc.calender.months[4].substr(0,3);
    document.getElementById("DP_month_5").firstChild.nodeValue=sigtc.calender.months[5].substr(0,3);
    document.getElementById("DP_month_6").firstChild.nodeValue=sigtc.calender.months[6].substr(0,3);
    document.getElementById("DP_month_7").firstChild.nodeValue=sigtc.calender.months[7].substr(0,3);
    document.getElementById("DP_month_8").firstChild.nodeValue=sigtc.calender.months[8].substr(0,3);
    document.getElementById("DP_month_9").firstChild.nodeValue=sigtc.calender.months[9].substr(0,3);
    document.getElementById("DP_month_10").firstChild.nodeValue=sigtc.calender.months[10].substr(0,3);
    document.getElementById("DP_month_11").firstChild.nodeValue=sigtc.calender.months[11].substr(0,3);
}

sigtc.calender.listEvent = function(){
   var key =sigtc.calender.year.toString();
   if (sigtc.calender.month.toString().length ==1){key+="0";}
   key+=sigtc.calender.month.toString();
   key--;
   if (sigtc.calender.day.toString().length ==1){key+="0";}
   key+=sigtc.calender.day.toString();   
  
   var event = sigtc.calender.sEventList[key];
   var tab = document.getElementById("DP_TABDAY");
   for (var i=3;i < tab.rows.length;i++){
      tab.deleteRow(i);
      i--;
   }
   
   for (var i=0 ;i < tab.childNodes.length;i++){
     if (tab.childNodes[i].tagName=="TBODY"){
       tab = tab.childNodes[i];
       break;
     }
   }
   var tr=null;   
   var td=null;
   var font =null;
   var a=null; 
   var text=null;
   var hrefEvent =null; 
 if (event){
     
      for( i in event )
      {
        tr = document.createElement('tr');
        td = document.createElement('td');
        font = document.createElement('font');
        if (event[i].oAPP_TYPE !="F"){
          a = document.createElement('a');
          text= document.createTextNode(event[i].oAPP_NOM );
          if (event[i].oAPP_RELZ=="S"){
            hrefEvent = sigtc.calender.hrefEventRealiz;
          }
          else{
            hrefEvent= sigtc.calender.hrefEvent;
          }
          a.href=hrefEvent+"?PAPP_COD="+i;
          a.appendChild(text);
          font.className="PortletText1";
          font.appendChild(a);
        } else{
           text= document.createTextNode(event[i].oAPP_NOM );
           font.appendChild(text);
        }
        td.appendChild(font );
        tr.appendChild(td );
        tab.appendChild(tr );
      }    
   }     
 


};

sigtc.calender.show_cal_day = function(){

   if (sigtc.calender.month==0){sigtc.calender.month=12; sigtc.calender.year--; }
   if (sigtc.calender.month==13){sigtc.calender.month=1; sigtc.calender.year++; }
   sigtc.calender.listEvent();
   document.getElementById("DP_MONTH_YEAR").firstChild.nodeValue =  sigtc.calender.months[sigtc.calender.month-1] +' '+sigtc.calender.year; 
   document.getElementById("DP_DAY").firstChild.nodeValue = sigtc.calender.day;  
   document.getElementById("DP_WEEK").firstChild.nodeValue = sigtc.calender.weeks[sigtc.calender.week];
  

};

sigtc.calender.formatMonth =function(month){
   var key =month.toString();
   return  (key.length ==1)?"0"+key:key;  
}  

sigtc.calender.formatYear =function(year){
   var key =year.toString();
   while (key.length < 4){
      key="0"+ key;
   }
   return  key;
}  


sigtc.calender.getListEvent = function ()
{
  var v_dat_inic = '15';
  var v_dat_fim  = '15';
  if (sigtc.calender.month=='12'){
     v_dat_inic +="11"+sigtc.calender.formatYear(sigtc.calender.year);
     v_dat_fim  +="01"+sigtc.calender.formatYear(parseInt(sigtc.calender.year)+1);
  }
  else if (sigtc.calender.month =='1'){
     v_dat_inic +="12"+sigtc.calender.formatYear(sigtc.calender.year-1);
     v_dat_fim  +="02"+sigtc.calender.formatYear(sigtc.calender.year);
  }
  else
  { 
     var year =sigtc.calender.formatYear(sigtc.calender.year);
     v_dat_inic += sigtc.calender.formatMonth(sigtc.calender.month-1)+year;
     v_dat_fim  += sigtc.calender.formatMonth(parseInt(sigtc.calender.month)+1)+year;
  }
  if (sigtc.calender.datRef)
  if (sigtc.calender.datRef==v_dat_inic)
    return;
 
  var get = new htmldb_Get(null,'sigtc/K_SIGTC_CALENDAR.P_EVENT_FER','P_LANG=PT&P_DAT_INIC='+v_dat_inic+'&P_DAT_FIM='+v_dat_fim);
  var vResult = get.getXML();
  if (vResult){
    sigtc.calender.datRef= v_dat_inic;
  var vNode = vResult.getElementsByTagName("cal")[0];
  sigtc.calender.sEventList = new Object(); // index of date yyyymmmdd
  if (vNode!= undefined && vNode){
   var vN = vNode.getElementsByTagName("fers")[0];
   vN = vN.getElementsByTagName("fer");
   for(var i=0;i<vN.length;i++){

   sigtc.calender.addEvent(	null,
    vN[i].getAttribute("app_nom"),
    vN[i].getAttribute("app_des"),
    vN[i].getAttribute("app_dat"),
    "F",'N');
   }
   vN = vNode.getElementsByTagName("events")[0];
   vN = vN.getElementsByTagName("event");
   for(var i=0;i<vN.length;i++){
     sigtc.calender.addEvent(vN[i].getAttribute("app_cod"),
       vN[i].getAttribute("app_nom"),
       vN[i].getAttribute("app_des"),
       vN[i].getAttribute("app_dat"),
       "E",vN[i].getAttribute("app_ind"));
   }
  }
 }
};

sigtc.calender.init = function(){
   var get = new htmldb_Get(null,'sigtc/K_SIGTC_CALENDAR.P_SHOW','P_LANG=PT');
   var vResult = get.getXML();
   var vNode = vResult.getElementsByTagName("cal")[0];
     if (vNode!= undefined && vNode){
       sigtc.calender.year = vNode.getAttribute("year");
       sigtc.calender.month= vNode.getAttribute("month");
       sigtc.calender.day  = vNode.getAttribute("day");
       var vN = vNode.getElementsByTagName("today")[0];
       if (vN != undefined && vN ){
         sigtc.calender.today = [vN.getAttribute("day"),vN.getAttribute("month"),vN.getAttribute("year")];
       }
       vN = vNode.getElementsByTagName("months")[0];
       if (vN != undefined && vN ){
         sigtc.calender.months  = [vN.getAttribute("m1"),
                                   vN.getAttribute("m2"),
                                   vN.getAttribute("m3"),
                                   vN.getAttribute("m4"),
                                   vN.getAttribute("m5"),
                                   vN.getAttribute("m6"),
                                   vN.getAttribute("m7"),
                                   vN.getAttribute("m8"),
                                   vN.getAttribute("m9"),
                                   vN.getAttribute("m10"),
                                   vN.getAttribute("m11"),
                                   vN.getAttribute("m12")];
       }

       vN = vResult.getElementsByTagName("weeks")[0];
       if (vN != undefined && vN ){
         sigtc.calender.weeks = [vN.getAttribute("w1"),
                                 vN.getAttribute("w2"),
                                 vN.getAttribute("w3"),
                                 vN.getAttribute("w4"),
                                 vN.getAttribute("w5"),
                                 vN.getAttribute("w6"),
                                 vN.getAttribute("w7")];
       }

       
     }
  sigtc.calender.getListEvent();   
  sigtc.calender.show(); 
};
sigtc.calender.show = function (){
     
  if (sigtc.calender.style == 0){
    sigtc.calender.getListEvent(); 
    sigtc.calender.show_days();
    document.getElementById("dp_0").style.display ="";
    document.getElementById("DP_02").style.display ="none"; 
    document.getElementById("DP_01").style.display ="none";    
  }  
  else if(sigtc.calender.style == 1){
    sigtc.calender.show_months();
    document.getElementById("dp_0").style.display ="none"; 
    document.getElementById("DP_02").style.display ="none"; 
    document.getElementById("DP_01").style.display ="";
   
  }else if(sigtc.calender.style == 2){
    sigtc.calender.show_cal_day();
    document.getElementById("dp_0").style.display ="none"; 
    document.getElementById("DP_01").style.display ="none"; 
    document.getElementById("DP_02").style.display ="";
  }
};
sigtc.calender.nextMonth = function (){
  if (sigtc.calender.month < 12) 
    sigtc.calender.month ++;
  else{
    sigtc.calender.month = 1;
    sigtc.calender.year ++;
  }  
  sigtc.calender.show();
};

sigtc.calender.nextYear = function (){
  sigtc.calender.year ++;
  sigtc.calender.show();
}
sigtc.calender.prevMonth = function (){
  if (sigtc.calender.month >1) 
    sigtc.calender.month --;
  else{
    sigtc.calender.month = 12;
    sigtc.calender.year --;
  }
  sigtc.calender.show();
};

sigtc.calender.prevYear = function (){
  if (sigtc.calender.month >0 ) 
    sigtc.calender.year --;
  sigtc.calender.show();
};

function htmldb_Get(obj,req,parm) {
  /* setup variables */
  this.obj      = document.getElementById(obj);                   // object to put in the partial page
  this.request  = (!!req)	?req	:'';        // request 
  this.parm     = parm;
  this.response = '';   // holder for the response
  this.base     = window.location.protocol+"//"+window.location.host+"/"; // holder fot the base url
  this.syncMode = false;
  // setup the base url
  this.getXML  = function(){
   var p;
   try {
      p = new XMLHttpRequest();
    } catch (e) {
      p = new ActiveXObject("Msxml2.XMLHTTP");
    }
   try {
   	p.open("POST", this.base+this.request, this.syncMode);   	    
       p.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
       p.send(this.parm);
       this.response = p.responseText;
       return p.responseXML;     
   } catch (e) {
     return;
   }  
}
};

