
var c_months = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'];


function ajaxFunction(FObject, FParams){
  var xmlHttp;
  try
    {
    // Firefox, Opera 8.0+, Safari
    xmlHttp=new XMLHttpRequest();
    }
  catch (e)
    {
    // Internet Explorer
    try
      {
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
      }
    catch (e)
      {
      try
        {
        xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
      catch (e)
        {
        alert("Your browser does not support AJAX!");
        return false;
        }
      }
    }
    xmlHttp.onreadystatechange=function()
      {
      if(xmlHttp.readyState==4)
        {
          if (xmlHttp.responseText=='1'){
            document.getElementById(FObject).style.color= '#53799A';
            document.getElementById(FObject).style.fontWeight= 'bold';
          }
        }
      }
    xmlHttp.open("GET","/engine/ajax_check_datepub.asp?"+FParams,true);
    xmlHttp.send(null);
}



function c_over(el) {
    if (!el['enabled']) return;
    var c = el.className;
    el['hover'] = true;
    c_setStyle(el);
}

function c_out(el) {
    if (!el['enabled']) return; 
    var c = el.className;
    el['hover'] = false;
    c_setStyle(el);
}

function c_date(day, month, year) {
    if (String(day).length == 1) day = '0' + day;
    if (String(month).length == 1) month = '0' + month;
    return day + '.' + month + '.' + year;
}

function c_click(el) {
    if (c_getMode(el['object']) == '1') return true;
    if (!el['enabled']) return; 
    el['selected'] = !el['selected'];
    var d = c_date(el['day'], el['month'], el['year']);
    if (el['selected']) {
        el['object']['selection'] += d + ';';
    }else{
        el['object']['selection'] = String(el['object']['selection']).replace(d + ';', '');
    }
    document.getElementById(el['object'].id + '_f').value = el['object']['selection'];;
    // status = el['object']['selection'];
    c_setStyle(el);
}

function c_obj(id) {
    if (typeof(id) == 'string') {
        return document.getElementById(id);
    }else{
        return id;
    }
} 

function c_ie(){
    return (document.body.parentElement != undefined);
}

function c_child(obj, index) {
    if (c_ie()) {
        return obj.children.item(index);
    }else{
        return obj.childNodes.item(index);
    }  
}

var c_monthLengths = [31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

function c_isLeap(year) {
    return ((year % 4) == 0) && (((year % 100) != 0) || ((year % 400) == 0));
}
 
function c_getMonthLength(year, month) {
    if (month == 2) {
        return c_isLeap(year) ? 29 : 28;
    }else{
        return c_monthLengths[month - 1];
    }
}  

function c_getPrevMonthLength(year, month) {
    month --;
    if (month == 0) {
        month = 12;
        year --;
    }
    return c_getMonthLength(year, month);
}  

function c_setStyle(el) {
    el.className = 'day';
    if (el['hover']) el.className += ' hover'; else el.className += ' normal';
    if (el['weekend']) el.className += ' weekend';
    if (!el['enabled']) el.className += ' disabled';
    if (el['selected']) el.className += ' selected';
} 

function c_parseDate(d) {
    var a = String(d).split('.');
    var n = new Date();
    n.setDate(a[0]);
    n.setMonth(parseInt(a[1]) - 1);
    n.setFullYear(a[2]);
    return n;
}

function c_getMode(obj) {
    return attr(obj, "mode");    
}

function c_show(obj, year, month) {
    obj = c_obj(obj);
    var d = new Date();
    if (year == -1) year = d.getFullYear();
    if (month == -1) month = d.getMonth() + 1;
    
    c_child(document.getElementById(obj.id + '_y'), 0).innerHTML = year;
    c_child(document.getElementById(obj.id + '_m'), 0).innerHTML = c_months[month - 1];
    
    var n = new Date();
    n.setDate(1);
    n.setMonth(month - 1);
    n.setFullYear(year);
    firstDayOfWeek = n.getDay() + 1;
    if (firstDayOfWeek == 1) firstDayOfWeek = 7; else firstDayOfWeek = firstDayOfWeek - 1;
    
    // status = firstDayOfWeek;
    
    var length = c_getMonthLength(year, month);
    var k = 0, k1 = 0, k2 = c_getPrevMonthLength(year, month) - firstDayOfWeek + 1;
    
    // status = firstDayOfWeek;
    
    var edge = c_parseDate(obj['edge']);
    var n = null;
    
    var c = document.getElementById(obj.id + '_c');
    var row = null, cell = null;
    for (var j = 1; j < 7; j ++) {
        row = c.rows.item(j);
        for (var i = 1; i < 8; i ++) {
            cell = row.cells.item(i - 1); 
            if ((j == 1) && (i < firstDayOfWeek)) {
                k2 ++;
                // cell.innerHTML = k2;
                cell.innerHTML = '&nbsp;';
                cell['weekend'] = false;
                cell['selected'] = false;
                cell['enabled'] = false;
            } 
            
            if ((k <= length) && (((j == 1) && (i >= firstDayOfWeek)) || (j > 1))) {
                k ++;
                
                if ((i == 6) || (i == 7)) cell['weekend'] = true; else cell['weekend'] = false;
                
                n = c_parseDate(c_date(k, month, year));
                // alert(c + '; ' + edge);
                
                if (isNaN(edge)) {
                    cell['enabled'] = true;
                }else{ 
                    cell['enabled'] = (n >= edge);
                } 
                
                cell['day'] = k;
                cell['month'] = month;
                cell['year'] = year;
                cell['selected'] = (String(obj['selection']).indexOf(c_date(k, month, year)) != -1);
                
                if ((c_getMode(obj) == 1) && cell['enabled']) {
                    cell.innerHTML = "<a id="+'cell_'+i+'_'+j+" href=" + String(attr(obj, 'link')).replace('$date', c_date(k, month, year)) + ">" + k + "</a>";
                    if (k <= length)ajaxFunction('cell_'+i+'_'+j, 'datepub='+c_date(k, month, year));
                }else{
                    cell.innerHTML = k;
                }
                //need ajaxcall;
	    
            } 
            
            if (k > length) {
                k1 ++;
                // cell.innerHTML = k1;
                cell.innerHTML = '&nbsp;';
                cell['enabled'] = false;
                cell['selected'] = false;
            }
            
            cell['hover'] = false; 
            cell.object = obj; 
            c_setStyle(cell);
        }

    }
     
    obj['year'] = year;
    obj['month'] = month;
}

function attr(obj, name, value) {
    if (value == undefined) { 
        return obj.getAttribute(name);
    }else{
        obj.setAttribute(name, value);
    }  
}

function c_month(obj, amount) {
    if (amount == 0) return;
    obj = c_obj(obj);
    var year = obj['year'];
    var month = obj['month'];
    var y = parseInt((amount / 12), 0)
    var m = amount - (y * 12);
    year += y;
    month += m;
    if (month < 1) {
        year -= 1;
        month = 12 - Math.abs(month);
    }
    if (month > 12) {
        year += 1;
        month = month - 12;
    }
    c_show(obj, year, month);
    if (event != undefined) event.returnValue = false;
    return false; 
}

function c_year(obj, amount) {
    obj = c_obj(obj);
    var year = obj['year'];
    var month = obj['month'];
    year += amount;
    c_show(obj, year, month);
    if (event != undefined) event.returnValue = false;
    return false;  
}

function c_cancelEvent() {
    event.cancelBubble = true;
    event.returnValue = false;
    return false;
}
