﻿var CN_ns6=document.getElementById&&!document.all
var CN_ie4=document.all

var CN_Current_Date = new Date();
var CN_Selected_Month;
var CN_Selected_Period;
var CN_Selected_Year;
var CN_Selected_Day = CN_Current_Date.getDate();

var CN_Days_in_Month = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var CN_Month_Label = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');

var CN_Current_Month = CN_Current_Date.getMonth();
var CN_Current_Day = CN_Current_Date.getDate();
var CN_Current_Year = CN_Current_Date.getYear();
if (CN_Current_Year < 1000)
    CN_Current_Year+=1900

function CN_Header(Year, Month){
    if (Month == 1)
        CN_Days_in_Month[1] = ((Year % 400 == 0) || ((Year % 4 == 0) && (Year % 100 !=0))) ? 29 : 28;
    var Header_String = CN_Month_Label[Month] + ' ' + Year;
    return Header_String;
}

function CN_Make_Calendar(Year, Month) {
   var First_Date = new Date(Year, Month, 1);
   var Heading = CN_Header(Year, Month);
   var First_Day = First_Date.getDay() + 1;
   var Loop_Counter = 2;
   var Rows;
   if(First_Day==1)
        Loop_Counter = -5;
   if (((CN_Days_in_Month[Month] == 31) && (First_Day == 1 || First_Day >= 7)) || ((CN_Days_in_Month[Month] == 30) && (First_Day == 1 || First_Day == 8)))
      Rows = 6;
   else if ((CN_Days_in_Month[Month] == 28) && (First_Day == 2))
      Rows = 4;
   else
      Rows = 5;
      
   Ext.get('currentMonthYear').update('');
   Ext.get('currentMonthYear').update(Heading);
   var HTML_String = '<table width="100%" border="0" cellspacing="0" cellpadding="0" id="calendar_new_table">';
   
   HTML_String += '<tr><th>M</th><th>T</th><th>W</th><th>T</th>';

   HTML_String += '<th>F</th><th>S</th><th>S</th></tr>';

   var Day_Counter = 1;
   var selectedDayCellId="";
   for (var j = 1; j <= Rows; j++) {
      HTML_String += String.format('<tr id="calendar_new_table_tr{0}">',j);
      var daysLeftBlank=0;
      var a;
      for (var i = 1; i < 8; i++) {
         if ((Loop_Counter >= First_Day) && (Day_Counter <= CN_Days_in_Month[Month]))
         {
            if(Day_Counter==1)
            {
                var previousMonthDays = CN_Days_in_Month[(Month==0)?11:Month-1];
                previousMonthDays++;
                for(a=i-1;a>0;a--)
                    HTML_String += String.format('<td>{0}</td>',previousMonthDays-a);
            }
            if((Day_Counter == CN_Current_Day) && (Year == CN_Current_Year) && (Month == CN_Current_Month))
            {
               selectedDayCellId=String.format("calendar_new_table_tr{0}_{1}",j,Day_Counter);
            }
            HTML_String += String.format('<td style="cursor:pointer;cursor:hand;" id="calendar_new_table_tr{0}_{1}" bgcolor="#EAEAEA" onclick="CN_StartEndDatesSetter(this)">{1}</td>',j,Day_Counter);
            Day_Counter++;    
         }
         else if(Day_Counter>CN_Days_in_Month[Month] && daysLeftBlank==0)
            daysLeftBlank=8-i
        
         Loop_Counter++;
      }
      if(daysLeftBlank>0){
        for(a=0;a<daysLeftBlank;a++)
            HTML_String += String.format('<td>{0}</td>',a+1);
      }
      HTML_String += '</tr>';
   }
   HTML_String += '</table>';
   cross_el=CN_ns6? document.getElementById("calendar") : document.all.calendar
   cross_el.innerHTML = HTML_String;
   if(selectedDayCellId)
        CN_StartEndDatesSetter(Ext.get(selectedDayCellId).dom)
}
function CN_StartEndDatesSetter(inObj)
{
    var arrElements =Ext.get('calendar_new_table').query('tr');
    
    for(var i=0;i<arrElements.length;i++)
    {
        arrElements[i].className="";
        if(arrElements[i].id!='')
        {
            var e= Ext.get(arrElements[i].id);
            if(CN_Selected_Period=='Monthly')
                e.addClass('active');
            var arrTd = e.query('td');
            for(var a=0;a<arrTd.length;a++)
            {
                if(arrTd[a].id && arrTd[a].id.substring(0,7)!='ext-gen')
                {
                    Ext.get(arrTd[a].id).setStyle('color','');
                }
            }
        }
    }
    
    var element = Ext.get(inObj.id);
    
    CN_Selected_Day = parseInt(element.dom.innerHTML);
    element.setStyle('color','red');
    
    CN_Current_Day=CN_Selected_Day;
    CN_Current_Month=CN_Selected_Month;
    CN_Current_Year=CN_Selected_Year;
    
    var SDate="";
    var EDate="";
    if(CN_Selected_Period=='Daily')
    {
        SDate=new Date(CN_Selected_Year,CN_Selected_Month,CN_Selected_Day);
        EDate=SDate;
    }
    else
    {
        var intSDay="";
        var intEDate="";
        if(CN_Selected_Period=='Monthly')
        {
            intSDay=parseInt(Ext.get(arrElements[1].id).first().dom.innerHTML);
            intEDate=parseInt(Ext.get(arrElements[arrElements.length-1].id).last().dom.innerHTML);
        }
        else
        {
            intSDay=parseInt(element.parent().first().dom.innerHTML);
            intEDate=parseInt(element.parent().last().dom.innerHTML);
            element.parent().addClass('active');
        }
        if(intSDay>parseInt(element.dom.innerHTML) || (CN_Selected_Period=='Monthly' && intSDay>1))
        {
            SDate=new Date((CN_Selected_Month==0)?CN_Selected_Year-1:CN_Selected_Year,(CN_Selected_Month==0)?11:CN_Selected_Month-1,intSDay);
        }
        else
            SDate=new Date(CN_Selected_Year,CN_Selected_Month,intSDay);
        
        if(intEDate<parseInt(element.dom.innerHTML) || (CN_Selected_Period=='Monthly' && intEDate<28))
            EDate = new Date((CN_Selected_Month==11)?CN_Selected_Year+1:CN_Selected_Year,(CN_Selected_Month==11)?0:CN_Selected_Month+1,intEDate);
        else
            EDate= new Date(CN_Selected_Year,CN_Selected_Month,intEDate);
    }
    Ext.get('startDate').dom.value=SDate.format('m/d/Y');
    Ext.get('endDate').dom.value=EDate.format('m/d/Y');
    getEconomicCalendarData(Ext.get('startDate').dom.value,Ext.get('endDate').dom.value);
}
function CN_Defaults() {
    if (!CN_ie4&&!CN_ns6)
        return
    var Mid_Screen = Math.round(document.body.clientWidth / 2);
    CN_Selected_Month = CN_Current_Month;
    CN_Selected_Year = CN_Current_Year;
    //Ext.get('startDate').dom.value=String.format("{0}-{1}-{2}",CN_Selected_Month,CN_Selected_Day, CN_Selected_Year);
    //Ext.get('endDate').dom.value=String.format("{0}-{1}-{2}",CN_Selected_Month,CN_Selected_Day, CN_Selected_Year);
    CN_Make_Calendar(CN_Current_Year, CN_Current_Month);
}


function CN_Skip(Direction) {
   if (Direction == '+'){
      if (CN_Selected_Month == 11){
         CN_Selected_Month = 0;
         CN_Selected_Year++;
      }
      else{
         CN_Selected_Month++;
      }
   }
   else{
      if (CN_Selected_Month == 0){
         CN_Selected_Month = 11;
         CN_Selected_Year--;
      }
      else{
         CN_Selected_Month--;
      }
   }
   CN_Make_Calendar(CN_Selected_Year, CN_Selected_Month);
}
