YAHOO.namespace("ecalend.calendar");
/*
 * инициализация календаря
 */
YAHOO.ecalend.calendar.init = function() {
    var option = {
        LOCALE_WEEKDAYS:"short",
        LOCALE_MONTHS:"long",
        MULTI_SELECT: false,
        mindate: YAHOO.ecalend.calendar.minDate,
        maxdate: YAHOO.ecalend.calendar.maxDate
    };
    
    YAHOO.ecalend.calendar.cal1 = new YAHOO.widget.Calendar("cal1","cal1Container",option);
    YAHOO.ecalend.calendar.cal1.cfg.setProperty("MONTHS_LONG",YAHOO.ecalend.calendar.months);
    YAHOO.ecalend.calendar.cal1.cfg.setProperty("WEEKDAYS_SHORT",YAHOO.ecalend.calendar.days);
    var dateRange = option.mindate + '-' + option.maxdate;
    YAHOO.ecalend.calendar.cal1.today = new Date(YAHOO.ecalend.calendar.currentDate);
    YAHOO.ecalend.calendar.cal1.addRenderer(dateRange, emptyDates);
    YAHOO.ecalend.calendar.cal1.addRenderer(YAHOO.ecalend.calendar.eventDates, notEmptyDates);
    YAHOO.ecalend.calendar.cal1.selectEvent.subscribe(selectDate, YAHOO.ecalend.calendar.cal1, true);
    YAHOO.ecalend.calendar.cal1.render();
    var cal = YAHOO.util.Dom.get('cal1Container');
    cal.style.display = 'block';
    var progress = YAHOO.util.Dom.get('progress');
    progress.style.display = 'none';
    var curCell = YAHOO.util.Dom.getElementsByClassName("today","td",'',function(el){});
    if (YAHOO.util.Dom.hasClass(curCell[0], "specdates"))
    {
        var date = YAHOO.ecalend.calendar.cal1.getDateByCellId(YAHOO.util.Dom.getAttribute(curCell[0],"id"));
        YAHOO.ecalend.calendar.cal1.select(date);
        YAHOO.util.Dom.addClass(curCell[0], "selected");
    }
    else
    {
        var cont = YAHOO.util.Dom.get('event_cont');
        cont.innerHTML = 'No data';
    }
}
/*
 * Отрисовка пустых дат
 */

function emptyDates(mdate,cell)
{
    YAHOO.util.Dom.addClass(cell, "mydates");
    cell.innerHTML=mdate.getDate();
    return YAHOO.widget.Calendar.STOP_RENDER;
}
/*
 * Отрисовка дат с событиями
 */
function notEmptyDates(mdate,cell)
{
    YAHOO.util.Dom.addClass(cell, "specdates");
    cell.innerHTML=mdate.getDate();
    YAHOO.util.Dom.addClass(cell, this.Style.CSS_CELL_SELECTABLE);
    return YAHOO.widget.Calendar.STOP_RENDER;
}
/*
 * Обработка выбора даты
 */
function selectDate(type, args, obj)
{
    var callback =
    {
      success:function(o){

          var response = YAHOO.lang.JSON.parse(o.responseText);
          init_table(response.events);
      },
      failure: function(o){
//          alert('No connect');
          var progress = YAHOO.util.Dom.get('progress');
          progress.style.display = 'none';
      },
      argument: ['foo','bar']
    };
    var progress = YAHOO.util.Dom.get('progress');
    var event_cont = YAHOO.util.Dom.get('event_cont');
    event_cont.innerHTML='';
    progress.style.display = 'block';
    var postData = "ajax=yes&searchdate=" + YAHOO.ecalend.calendar.cal1.getSelectedDates();

    var request = YAHOO.util.Connect.asyncRequest('POST', YAHOO.ecalend.calendar.url, callback, postData);
}
/*
* инициализация таблицы
 */
 function init_table(source)
 {
        var myColumnDefs = [
                    {key:"date_time", formatter:YAHOO.widget.DataTable.formatString, sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_ASC},hidden:true,resizeable:false,label:YAHOO.ecalend.calendar.tabheader.date_time},
                    {key:"land", formatter:YAHOO.widget.DataTable.formatString, sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_ASC}, hidden:true,resizeable:false,label:YAHOO.ecalend.calendar.tabheader.land},
                    {key:"event", formatter:YAHOO.widget.DataTable.formatString, sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_ASC},hidden:true,resizeable:false,label:YAHOO.ecalend.calendar.tabheader.event},
                    {key:"month", formatter:YAHOO.widget.DataTable.formatString, sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_ASC},hidden:true,resizeable:false,label:YAHOO.ecalend.calendar.tabheader.month},
                    {key:"survey", formatter:YAHOO.widget.DataTable.formatString, sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_ASC},hidden:true,resizeable:false,label:YAHOO.ecalend.calendar.tabheader.survey},
                    {key:"actual", formatter:YAHOO.widget.DataTable.formatString, sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_ASC},hidden:true,resizeable:false,label:YAHOO.ecalend.calendar.tabheader.actual},
                    {key:"prior", formatter:YAHOO.widget.DataTable.formatString, sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_ASC},hidden:true,resizeable:false,label:YAHOO.ecalend.calendar.tabheader.prior},
                    {key:"revised", formatter:YAHOO.widget.DataTable.formatString, sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_ASC},hidden:true,resizeable:false,label:YAHOO.ecalend.calendar.tabheader.revised},
                    {key:"changed", formatter:YAHOO.widget.DataTable.formatString, sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_ASC},hidden:true,resizeable:false,label:YAHOO.ecalend.calendar.tabheader.changed},
                    {key:"importance", formatter:YAHOO.widget.DataTable.formatString, sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_ASC},hidden:true,resizeable:false,label:YAHOO.ecalend.calendar.tabheader.importance}
                ];

    var myDataSource = new YAHOO.util.DataSource(source);
    myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
    myDataSource.responseSchema = {
        fields: ["date_time","land","event","month","survey","actual","prior","revised","changed","importance"]
    };
    var progress = YAHOO.util.Dom.get('progress');
    progress.style.display = 'none';
    var myDataTable = new YAHOO.widget.DataTable("event_cont",
            myColumnDefs, myDataSource, {caption:""});

    for (var key in YAHOO.ecalend.calendar.fields)
    {
        var value = YAHOO.ecalend.calendar.fields[key];
        if (value != 0)
        {
            var col = myDataTable.getColumn(key);
            myDataTable.showColumn(col);
        }
    }

    myDataTable.subscribe("columnSortEvent", function(colum,dir){fillTable(this);});
    fillTable(myDataTable);
    var th = YAHOO.util.Dom.getElementsBy(function(){return true},"th","event_cont",function(){},null,false);
    YAHOO.util.Event.addListener(th,'mouseover',cell_Focus);
    YAHOO.util.Event.addListener(th,'mouseout',decell_Focus);
 }
 function cell_Focus(e,o)
 {
     YAHOO.util.Dom.addClass(this, 'test');
 }
 function decell_Focus(e,o)
 {
     YAHOO.util.Dom.removeClass(this, 'test')

 }
 function fillTable(table)
 {
    var currentTr = table.getFirstTrEl();
    var importance = true;
    var importance2 = true;
    var importance3 = true;
    while (true)
    {
        importance = currentTr.childNodes[9].childNodes[0].innerHTML  == "*";
        importance2 = currentTr.childNodes[9].childNodes[0].innerHTML  == "**";
        importance3 = currentTr.childNodes[9].childNodes[0].innerHTML  == "***";
        if ( importance )
        {
            for (i = 0; i < currentTr.childNodes.length; i++)
            {
                //YAHOO.util.Dom.addClass(currentTr.childNodes[i],"importance" );
                YAHOO.util.Dom.addClass(currentTr,"importance" );
                if (YAHOO.util.Dom.hasClass(currentTr,'yui-dt-odd'))
                {
                    YAHOO.util.Dom.addClass(currentTr,"odd-importance" );
                }
                else if (YAHOO.util.Dom.hasClass(currentTr,'yui-dt-even'))
                {
                    YAHOO.util.Dom.addClass(currentTr,"even-importance" );
                }
            }
        }
        else if ( importance2 )
        {
            for (i = 0; i < currentTr.childNodes.length; i++)
            {
                //YAHOO.util.Dom.addClass(currentTr.childNodes[i],"importance2" );
                YAHOO.util.Dom.addClass(currentTr,"importance2" );
                if (YAHOO.util.Dom.hasClass(currentTr,'yui-dt-odd'))
                {
                    YAHOO.util.Dom.addClass(currentTr,"odd-importance2" );
                }
                else if (YAHOO.util.Dom.hasClass(currentTr,'yui-dt-even'))
                {
                    YAHOO.util.Dom.addClass(currentTr,"even-importance2" );
                }
            }
        }
        else if ( importance3 )
        {
            for (i = 0; i < currentTr.childNodes.length; i++)
            {
                //YAHOO.util.Dom.addClass(currentTr.childNodes[i],"importance2" );
                YAHOO.util.Dom.addClass(currentTr,"importance2" );
                if (YAHOO.util.Dom.hasClass(currentTr,'yui-dt-odd'))
                {
                    YAHOO.util.Dom.addClass(currentTr,"odd-importance2" );
                }
                else if (YAHOO.util.Dom.hasClass(currentTr,'yui-dt-even'))
                {
                    YAHOO.util.Dom.addClass(currentTr,"even-importance2" );
                }
            }
        }
        if (!(currentTr = table.getNextTrEl(currentTr)))
        {
            break;
        }
    }

 }
