isDOM = document.getElementById;
isOpera = ( -1 < window.navigator.userAgent.indexOf('Opera'));
m = new Array(); y = new Array(); d = new Array;
monthdays = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var globalMinY =  1900;
var seld=selm=sely=0;

var curdate = new Date();
dc=curdate.getDate();
mc=curdate.getMonth();
yc=curdate.getFullYear();

function correctDate(field,miny,maxy) {
   var tmp = field.value.split(".");
   dt = parseInt(tmp[0],10); mt = parseInt(tmp[1],10)-1; yt = parseInt(tmp[2],10);
   date = new Date(yt,mt,dt);
   ycorrect = ( (1900 == (yt-date.getYear())) || (yt == date.getYear()) );

   if ( !miny || ( miny < globalMinY ) )
    { miny =  globalMinY;
    }

   if ( yt < miny ) { ycorrect = false; }
   if ( maxy && ( maxy < yt ) ) { ycorrect = false; }
   return ( (dt == date.getDate() ) && (mt == date.getMonth()) && ycorrect );
}

onload = initCloseAll;
function initCloseAll() {
  document.onclick = closeAll;
}

function closeAll() {
  if (isDOM)        {
    var list = document.getElementsByTagName('div');
    for (var i = 0; i < list.length; i++)
       if ( -1 < list[i].id.indexOf('calend') )
           list[i].style.display = 'none';
  }
}

function lookC(n) {
   //alert(n);
   if (isDOM)        {
        var elm=document.getElementById('calend'+n);
        if ( elm.style && elm.style.display ) {
                 elm.style.display=(elm.style.display=='block')?'none':'block';
                 if ( 'block' == elm.style.display ) {
                        if ( correctDate(document.getElementById('date'+n)) )
                         { seld=d[n] = dt; selm=m[n] = mt; sely=y[n] = yt; }
                        else
                         { seld=d[n] = dc; selm=m[n] = mc; sely=y[n] = yc; }
                           writeValue(d[n],n);
                           writeDate(n);
                 }
          }
  }

}

function writeValue(j,n) {
   document.getElementById('date'+n).value=''+( 10 > (d[n]=j) ? '0'+d[n] : d[n] )+'.'+( 9 > m[n] ? '0'+(m[n]+1) : m[n]+1 ) +'.'+ y[n];
}

function sel(j,n) {
   writeValue(j,n)
   lookC(n);
   change = true;
}

function changeM(n) {
 if (isDOM) {
   m[n] = document.getElementById('month'+n).selectedIndex;
   writeDate(n);
 }
}

function back(n) {
 if (isDOM) {
   var oldm = m[n];
   m[n] = (12+m[n]-1)%12;
   if ( ((m[n] - oldm) > 1) && (y[n] > globalMinY) ) y[n]--;
   writeDate(n)

 }
}

function forward(n) {
 if (isDOM) {
   var oldm = m[n];
   m[n] = (m[n]+1)%12;
   if ( (oldm - m[n]) > 1 ) y[n]++;
   writeDate(n)
 }
}

function ydown(n) {
 if (isDOM) {
   if (y[n] > globalMinY)
    { y[n]--;
      writeDate(n);
    }
 }
}

function yup(n) {
 if (isDOM) {
   y[n]++;
   writeDate(n);
 }
}

function writeDate(n) {
   monthdays[1] = ( (y[n]%4) ? 28 : 29 );
   if (  monthdays[m[n]] < d[n]  ) d[n] = monthdays[m[n]];

   document.getElementById('month'+n).selectedIndex = m[n];
   document.getElementById('year'+n).firstChild.nodeValue = y[n];
   writeDays(n);

}

function newE(span, j, n) {
      var e = document.createElement('div');
      var a = document.createElement('a');
      a.appendChild ( document.createTextNode( j ) )
      e.appendChild( a );
      var _class = '';
      //alert(dc+'='+j+'|'+mc+'=='+m[n]+'|'+yc+'=='+y[n]);
      if ( (dc == j) && (mc == m[n]) &&  (yc == y[n]) ) _class = "calendcurrent";
      if ( (seld == j) && (selm == m[n]) &&  (sely == y[n]) ) _class = "calendselect";
      if ( _class )  e.setAttribute('class',_class);
      span.appendChild(e);
      if ( e.outerHTML ) e.outerHTML = '<div class="'+_class+'"><a href="#" onclick="sel(\''+j+'\',\''+n+'\');return false;">'+j+'</a></div>';
      a.setAttribute('onclick','sel(\''+j+'\',\''+n+'\');return false;');
      a.setAttribute('href','#');
}

function newBr(span) {
      var br = document.createElement('br');
      br.setAttribute('clear','all');
      span.appendChild(br);
}

function writeDays(n) {
   var dayWeek = new Date(y[n],m[n],1);
   var day = (7+dayWeek.getDay()-1)%7;
   var node = document.getElementById('days'+n);
   var span = document.createElement('span');

   var i = -1; var j = 0; var k = 0;
   while ( 7 > ++i )
      newE(span, (i >= day ? ++j : ' '), n );

   newBr(span);

   while ( monthdays[m[n]] >= ++j ) {
      ++k;
      newE(span, j, n);
      if (  0 == (k%7) )
         newBr(span);
   }

   if (isOpera)
    { var e = document.createElement('div');
      span.appendChild(e);
      e.outerHTML = '<div class="calendopera"></div>';
      e.setAttribute( 'class','calendopera' );

      newBr(span);
      var e = document.createElement('div');
      span.appendChild(e);
      e.outerHTML = '<div class="calendopera"></div>';
      e.setAttribute( 'class','calendopera' );

    }



   node.replaceChild( span, node.firstChild );


}

function createCalend(id)
{  //alert(id);
   document.write('<link rel="stylesheet" type="text/css" href="'+calendPath+calendCSS+'" />');
   document.write('<div id="calend'+id+'" class="calend" id="calendar" onclick="event.cancelBubble=true;" style="display:none">');
   document.write('<table cellpadding="2" class="calendup">');
   document.write('<tr>');
   document.write('<td rowspan="2" width="8"><a href="#" onclick="back('+id+'); return false;"><img src="'+calendPath+'i/l.gif" /></a></td>');
   document.write('<td rowspan="2" width="80"><select id="month'+id+'" onChange="changeM('+id+')"><option value="0">ßíâàðü</option><option value="1">Ôåâðàëü</option><option value="2">Ìàðò</option><option value="3">Àïðåëü</option><option value="4">Ìàé</option><option value="5">Èþíü</option><option value="6">Èþëü</option><option value="7">Àâãóñò</option><option value="8">Ñåíòÿáðü</option><option value="9">Îêòÿáðü</option><option value="10">Íîÿáðü</option><option value="11">Äåêàáðü</option></select></td>');
   document.write('<td rowspan="2" width="8"><a href="#" onclick="forward('+id+'); return false;"><img src="'+calendPath+'i/r.gif" /></a></td>');
   document.write('<td rowspan="2" class="calendyear"><span id="year'+id+'" style="top:7px"> &nbsp; </span></td>');
   document.write('<td class="calendyear" width="15"><a href="#" onclick="yup('+id+'); return false;"><img src="'+calendPath+'i/up.gif" /></a></td>');
   document.write('</tr>');
   document.write('<tr><td class="calendyear" width="15"><a href="#" onclick="ydown('+id+'); return false;"><img src="'+calendPath+'i/down.gif" /></a></td></tr>');
   document.write('</table>');
   document.write('<div class="calenddays"><span class="calenddaysth"><div>Ïí</div><div>Âò</div><div>Ñð</div><div>×ò</div><div>Ïò</div><div>Ñá</div><div>Âñ</div></span><br clear="all" /><span class="indays" id="days'+id+'"> &nbsp; </span></div>');
   document.write('</div>');

//   cid='calend'+id;
//        alert(cid);
//        while (!document.getElementById(cid)) a=1;
   //document.getElementById(cid).style.display = 'none';
//        alert(id+' | '+document.getElementById(cid).style.display);
}

function showCalend(id,event)
{  closeAll();
   event.cancelBubble=true;
   if (isOpera)
	{
	//document.getElementById('calend'+id).style.top = 0+'px';//event.clientY;
	//document.getElementById('calend'+id).style.position = 'absolute';//event.clientY;
	document.getElementById('calend'+id).style.marginTop = -20+'px';//event.clientY;
	document.getElementById('calend'+id).style.marginLeft = 138+'px';//event.clientX;
	
	}
   //
   lookC(id);
   event.returnValue=false;
}
