var x=0;
var y=0;
var div;
var element;
var calendar_opened=0;
//Данный статус отвечает нужно ли перегружать функцию после утсановки новой даты
var status_change_fun = 0;

function GetObjectPos(el)
	{
		if(!el || !el.offsetParent)
			return false;

		var res = Array();
		res["left"] = el.offsetLeft;
		res["top"] = el.offsetTop;
		var objParent = el.offsetParent;
		
		while(objParent && objParent.tagName != "BODY")
		{
			res["left"] += objParent.offsetLeft;
			res["top"] += objParent.offsetTop;
			objParent = objParent.offsetParent;
		}
		res["right"] = res["left"] + el.offsetWidth;
		res["bottom"] = res["top"] + el.offsetHeight;
		
		return res;
	}

function $1() {    //аналог  document.getelementbyid
  var elements = new Array();

  for (var i = 0; i < arguments.length; i++) {
    var element = arguments[i];
    if (typeof element == 'string')
      element = document.getElementById(element);

    if (arguments.length == 1)
      return element;

    elements.push(element);
  }

  return elements;
}	



document.onmousemove=function(e)
{
 if (!e) e = window.event;

  if (e.pageX || e.pageY)
  {
    x = e.pageX;
    y = e.pageY;
  }
  else if (e.clientX || e.clientY)
  {
    x = e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft;
    y = e.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop;
  }
}

document.onclick=function(e)
{
	if (calendar_opened==0) return;
	
		var posLeft = parseInt(div.style.left);
		var posTop = parseInt(div.style.top);
		var posRight = posLeft + div.offsetWidth;
		var posBottom = posTop + div.offsetHeight;
		if(x >= posLeft && x <= posRight && y >= posTop && y <= posBottom) return; else SetDateValue(0);
}

/*
elem - это id элемента для которого вызывается календарь
st - это статус нужно ли будет после этого вызвать функцию перезагрузки (0 - не нужно, 1 нужно) (Поиск по изменению)
*/
function ShowCalendar(elem, st)
{
	if ( calendar_opened )
	{
	return;
	}
 //Присваиваем статус для переменной которая отвечает за запус функции из вызывающей страницы
 status_change_fun=st;	
 element=elem;
    div = document.body.appendChild(document.createElement("DIV"));
	div.id = "calendar_div";
	div.className= "calendar_div1";
	

pos=GetObjectPos($1(element+"_btn"))
div.style.position="absolute";

	div.style.top = pos['bottom']+"px";
	div.style.left = pos['right']+"px";

 var regdate=/^[0-9]{2}\.[0-9]{2}\.[0-9]{4}$/;
 var	date= new String($1(element).value);

 if (!regdate.test(date))
  {
  var nowdate = new Date();
  calendar_show(nowdate.getDate(),nowdate.getMonth()+1,nowdate.getFullYear());
  }
 else
  {
  calendar_show(Number(date.substr(0,2)), Number(date.substr(3,2)), Number(date.substr(6,4)));	
  }
  calendar_opened=1;
}

function SetDateValue(dateval)
{
if (dateval) {$1(element).value=dateval;}

		div.parentNode.removeChild(div);
		div = null;
  calendar_opened=0;
if(status_change_fun == 1) GoFinde();
}

var WeekTitles=new Array('Пн','Вт','Ср','Чт','Пт','Сб','Вс')
function showallweektitles(){
	var i, answer="  <tr>\n"
	for(i=0;i<WeekTitles.length;i++) answer+="    <th CLASS=\"calendar\">"+WeekTitles[i]+"</th>\n"
	answer+="  </tr>\n"
	return answer
}

function calendar_show(d, m, y){
	var dayshow, monthshow;
	var sdate= new Date(m+"/1/"+y);
	var mdate= new Date(m+'/'+d+'/'+y);
	var todaydate= new Date(m+'/'+d+'/'+y);
	var days=dayonmonth(m,y)
	var iday=0, day, answer=''
	answer+='<table border=0 CLASS="calendar">'
	answer+='  <tr CLASS="calendar">'
	answer+='  	<th CLASS="calendar" colspan=7>'
	answer+='		<table width="100%" border=0 cellpadding=0 cellspacing=0 height="100%">'
	answer+='  			<tr CLASS="calendar">'
	answer+='    			<td align="left"><b>&nbsp;&nbsp;&nbsp;Календарь</b></td>'
	answer+='    			<td align="right">'+d+'/'+m+'/'+y+'</td>'
	answer+='  			</tr>'
	answer+='		</table>'
	answer+='	</th>'
	answer+='  </tr>'
	answer+='  <tr CLASS="calendar">'
	answer+='  	<th colspan=7>'
	answer+='<table border=0 cellpadding=0 cellspacing=0 width="100%" height="100%">'
	answer+='  <tr CLASS="calendar">'
	answer+='    <td width="25%"><table onClick="calendar_move(\'-\',\'y\','+d+','+m+','+y+')" CLASS="calendar_button_0_1" onMouseOver="this.className=\'calendar_button_1_1\'" onMouseOut="this.className=\'calendar_button_0_1\'" border=0 cellpadding=0 cellspacing=0 width="100%" height="100%"><tr CLASS="calendar"><td><<</td></tr></table></td>'
	answer+='    <td width="25%"><table onClick="calendar_move(\'-\',\'m\','+d+','+m+','+y+')" CLASS="calendar_button_0_2" onMouseOver="this.className=\'calendar_button_1_2\'" onMouseOut="this.className=\'calendar_button_0_2\'" border=0 cellpadding=0 cellspacing=0 width="100%" height="100%"><tr CLASS="calendar"><td><</td></tr></table></td>'
	answer+='    <td width="25%"><table onClick="calendar_move(\'+\',\'m\','+d+','+m+','+y+')" CLASS="calendar_button_0_2" onMouseOver="this.className=\'calendar_button_1_2\'" onMouseOut="this.className=\'calendar_button_0_2\'" border=0 cellpadding=0 cellspacing=0 width="100%" height="100%"><tr CLASS="calendar"><td>></td></tr></table></td>'
	answer+='    <td width="25%"><table onClick="calendar_move(\'+\',\'y\','+d+','+m+','+y+')" CLASS="calendar_button_0_1" onMouseOver="this.className=\'calendar_button_1_1\'" onMouseOut="this.className=\'calendar_button_0_1\'" border=0 cellpadding=0 cellspacing=0 width="100%" height="100%"><tr CLASS="calendar"><td>>></td></tr></table></td>'
	answer+='  </tr>'
	answer+='</table>'
	answer+='	</th>'
	answer+='  </tr>'
	answer+='  <tr>'
	answer+=showallweektitles()
	

    var sdgd=sdate.getDay();
    
	if (sdgd==0) sdgd=7;
	
	for(day=1;day<sdgd;day++)
	{
		iday++
		answer+="    <td></td>"
	}



	for(day=1;day<=days;day++)
	{

		if (day<10) {dayshow="0"+day;} else {dayshow=day;}
		if (m<10) {monthshow="0"+m;} else {monthshow=m;}
		
		if((todaydate.getMonth()+1)==m && todaydate.getDate()==day && todaydate.getFullYear()==y)
			answer+="    <td onClick=\"SetDateValue('"+dayshow+"."+monthshow+"."+y+"')\" CLASS=\"calendar_today\"><table onMouseOver=\"this.className='calendar_active'\" onMouseOut=\"this.className=''\" border=0 cellpadding=0 cellspacing=0 width=\"100%\" height=\"100%\"><tr CLASS=\"calendar\"><td>"+day+"</td></tr></table></td>"
		else
			answer+="    <td onClick=\"SetDateValue('"+dayshow+"."+monthshow+"."+y+"');\" CLASS=\"calendar\"><table onMouseOver=\"this.className='calendar_active'\" onMouseOut=\"this.className=''\" border=0 cellpadding=0 cellspacing=0 width=\"100%\" height=\"100%\"><tr CLASS=\"calendar\"><td>"+day+"</td></tr></table></td>"

   	  iday++

      if(iday==7)
	   {
  	   answer+="</tr><tr>"
	   iday=0
	   }

     }  
    answer+="  </tr>"
	answer+='</table>'
	//self.calendar.innerHTML=answer
	document.getElementById('calendar_div').innerHTML=answer
}

function dayonmonth(m, y){ // Функция, для определения количества дней в месяце
	var answer
	if(m!=2){ // Если не "Февраль"
		var date1=new Date(m+'/31/'+y)
		var mm=(m<12)?(m+1):1;
		var yy=(m<12)?y:(y+1);
		var date2=new Date(mm+'/1/'+yy)
		answer=(date1.getDay()==date2.getDay())?'30':'31';
	}else{
		var date1=new Date(m+'/29/'+y)
		var mm=(m<12)?(m+1):1;
		var yy=(m<12)?y:(y+1);
		var date2=new Date(mm+'/1/'+yy)
		answer=(date1.getDay()==date2.getDay())?'28':'29';
	}
	return answer
}
function calendar_move(to, index, d, m, y){
	switch(to){
		case('-'):
			switch(index){
				case('m'):
					if(m>1){
						m--
					}
					else
					if(m == 1)
					{
						m=12
						y--
					}
					else
					{
						m=1
						y--
					}
					break
				case('d'):
					var mm=(m>1)?--m:1
					var yy=(m>1)?y:--y
					var days=dayonmonth(mm, yy)
					if(d>1){
						d--
					}else{
						d=days
						m=mm
						y=yy
					}
					break
				case('y'):
					y--
					break
			}
			break
		case('+'):
			switch(index){
				case('m'):
					if(m<12){
						m++
					}else{
						m=1
						y++
					}
					break
				case('d'):
					var mm=(m<12)?++m:1
					var yy=(m<12)?y:++y
					var days=dayonmonth(m, y)
					if(d<days){
						d++
					}else{
						d=1
						m=mm
						y=yy
					}
					break
				case('y'):
					y++
					break
				}
			break
	}
	calendar_show(d, m, y)
}


function Toggle(el)
{
	if(jQuery('#' + el + '').css('display') == 'none') 
	{
		jQuery('#' + el + '').show(400);
	}
	else 
	{
		jQuery('#' + el + '').hide(400);
	}
}
