
var days_short = new Array("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun");
var months_short = new Array(
		"Jan",
		"Feb",
		"Mar",
		"Apr",
		"May",
		"Jun",
		"Jul",
		"Aug",
		"Sep",
		"Oct",
		"Nov",
		"Dec"
		);

var months_full = new Array(
		"January",
		"February",
		"March",
		"April",
		"May",
		"June",
		"July",
		"August",
		"September",
		"Octomber",
		"November",
		"December"
		);

var del = '/';
var today = 'Today';


//za izklju4vaneto na dati ot vtoriq v zavisimost ot pyrviq
var calendar1="";
var calendar2="";
var this_index="";
var use_same_data_or_next_one="next";



function get_td_class(d, d_today, d_selected) {

	var ret = 'td_date';
	
	if(d.getDay() == 6 || d.getDay() == 0) {
		ret = 'td_date_weekend';
	}
	
	
	if(d.getDate() == d_today.getDate() && d.getMonth() == d_today.getMonth() && d.getFullYear() == d_today.getFullYear()) {
		ret = 'td_date_today';
	}
	if(d.getDate() == d_selected.getDate() && d.getMonth() == d_selected.getMonth() && d.getFullYear() == d_selected.getFullYear()) {
		ret = 'td_date_selected';
	}

	return ret;
}

function calendar(div_id, input_id, month, year, ci, interact_with_id, index) {

	
	

	var input = document.getElementById(input_id);
	var d_today = new Date();
	var d_selected = new Date();
	
	
	
	
	if(input && input.value) {
		
		a = input.value.split(del);
		
		if(ci || (month==a[1] && year==a[2])){
			
			year = d_today.getFullYear();
			month= d_today.getMonth()+1;
			
			d_selected.setYear(a[2]);
			d_selected.setDate(a[0]);
			d_selected.setMonth(a[1]-1);
		}
	}else if(month==0 && year == 0){
		year = d_today.getFullYear();
		month= d_today.getMonth()+1;

		d_selected.setYear(0);
		d_selected.setDate(0);
		d_selected.setMonth(0);
	}
	


	if(month == 0) {
		year -= 1;
		month = 12;
	}
	if(month == 13) {
		year += 1;
		month = 1;
	}




	var d = new Date();

	d.setMinutes(0);
	d.setSeconds(0);
	d.setDate(1);
	d.setMonth(month-1);
	d.setYear(year);

	var cmonth = d.getMonth();
	var ret;

	var pmonth;
	var pyear;
	var nmonth;
	var nyear;



	ret = '<table class="table_calendar">';


	ret += '<tr>';
	ret += '<td></td>';
	ret += '<td class="td_year_month" colspan="5">' + months_full[d.getMonth()] + ', ' +d.getFullYear()+ '</td>';
	ret += '<td class="td_close" onmouseover="hover(this)" onmouseout="unhover(this)" onclick="hide_calendar(\''+input_id+'\')">x</td>';
	ret += '</tr>';
	
	ret += '<tr>';
	
	ret += '<td class="td_arrows_year" onmouseover="hover(this)" onmouseout="unhover(this)" onclick="update_calendar(\''+div_id+'\', \''+input_id+'\','+(d.getMonth()+1)+', '+(d.getFullYear()-1)+ ')"><<</td>';
	
	ret += '<td class="td_arrows_month" onmouseover="hover(this)" onmouseout="unhover(this)"   onclick="update_calendar(\''+div_id+'\', \''+input_id+'\','+(d.getMonth())+', '+(d.getFullYear())+')"><</td>';

	ret += '<td class="td_today"  onmouseover="hover(this)" onmouseout="unhover(this)" colspan="3" onclick="go_today(\''+input_id+'\')">'+today+'</td>';	
	
	
	ret += '<td class="td_arrows_month"  onmouseover="hover(this)" onmouseout="unhover(this)" onclick="update_calendar(\''+div_id+'\', \''+input_id+'\','+(d.getMonth()+2)+', '+(d.getFullYear())+ ')">></td>';
	
	ret += '<td class="td_arrows_year"  onmouseover="hover(this)" onmouseout="unhover(this)" onclick="update_calendar(\''+div_id+'\', \''+input_id+'\','+(d.getMonth()+1)+', '+(d.getFullYear()+1)+ ')">>></td>';
	
	ret += '</tr>';
	
	ret += '<tr>';
	for(i=0;i<7;i++) {
		ret += '<td class="td_weekdays" width="30">' + days_short[i] + '</td>';
	}
	
	
	if(calendar1!=""){
		var arr_temp=calendar1.value.split("/");
		var other_date_reversed="";
		other_date_reversed+=arr_temp[2]+arr_temp[1]+arr_temp[0];
	}
	
	for(w=0;w<6;w++) {
		ret += '<tr>';
		if(d.getDate() == 1) {
			for(i=d.getDay();i>1;i--) {
				ret += '<td/>';
			}
		}
		if(d.getDay() == 0) {
			for(i=0;i<6;i++)
				ret += '<td/>';
		}

		while(d.getDay() != 0) {

			var date = d.getDate();

			var month = d.getMonth()+1;
			var year = d.getFullYear();




			var tdclass = get_td_class(d, d_today, d_selected);
			
			if(date<10) 
				date = '0'+date;

			if(month<10)
				month = '0'+month;

			var today_month=(d_today.getMonth()+1)+"";
			if(today_month.length==1){
				today_month="0"+today_month;
			}
			
			var today_day=d_today.getDate()+"";
			if(today_day.length==1){
				today_day="0"+today_day;
			}
			
			var today_reversed=d_today.getFullYear()+""+today_month+""+today_day;
			
			var this_date_reversed=d.getFullYear()+""+month+""+date;
			
			if(cmonth == d.getMonth()) {
				if(this_index==""){
					ret += '<td class="'+tdclass+'"  onmouseover="hover(this)" onmouseout="unhover(this)" onclick="';
					ret += 'set_date(\''+input_id+'\', \''+div_id+'\', \''+date+del+(month)+del+d.getFullYear()+'\')';
				}else if(this_index==1){
					
					if(parseFloat(this_date_reversed)>=parseFloat(today_reversed)){
						ret += '<td class="'+tdclass+'"  onmouseover="hover(this)" onmouseout="unhover(this)" onclick="';
						ret += 'set_date(\''+input_id+'\', \''+div_id+'\', \''+date+del+(month)+del+d.getFullYear()+'\')';
					}else{
						ret += '<td class="'+tdclass+'_off"';
					}
					
					
				}else{
					if(this_index==2){
						
						if(calendar1.value!=""){
							if((use_same_data_or_next_one=="next" && parseFloat(this_date_reversed)>parseFloat(other_date_reversed)) || (use_same_data_or_next_one=="same" && parseFloat(this_date_reversed)>=parseFloat(other_date_reversed))){
					
								if(parseFloat(this_date_reversed)>=parseFloat(today_reversed)){
									ret += '<td class="'+tdclass+'"  onmouseover="hover(this)" onmouseout="unhover(this)" onclick="';
									ret += 'set_date(\''+input_id+'\', \''+div_id+'\', \''+date+del+(month)+del+d.getFullYear()+'\')';
								}else{
									ret += '<td class="'+tdclass+'_off"';
								}
								
								
							}else{
								ret += '<td class="'+tdclass+'_off"';
							}
						}else{
							
							if(parseFloat(this_date_reversed)>=parseFloat(today_reversed)){
								ret += '<td class="'+tdclass+'"  onmouseover="hover(this)" onmouseout="unhover(this)" onclick="';
								ret += 'set_date(\''+input_id+'\', \''+div_id+'\', \''+date+del+(month)+del+d.getFullYear()+'\')';
							}else{
								ret += '<td class="'+tdclass+'_off"';
							}
							
							
						}
					}
				}
				ret += '">' + d.getDate() + '</td>';
			}else{
				ret += '<td/>';
			}
			d.setDate(d.getDate()+1);
			
		}
		if(cmonth == d.getMonth()) {

			var date = d.getDate();

			var tdclass = get_td_class(d, d_today, d_selected);

			if(date<10) date = '0'+date;
			var month = d.getMonth()+1;
			if(month<10) month = '0'+month;
			
			
			
			
			if(this_index=="" || this_index==1){
				if(parseFloat(this_date_reversed)>=parseFloat(today_reversed)){
					ret += '<td class="'+tdclass+'"  onmouseover="hover(this)" onmouseout="unhover(this)" onclick="';
					ret += 'set_date(\''+input_id+'\', \''+div_id+'\', \''+date+del+(month)+del+d.getFullYear()+'\')';
				}else{
					ret += '<td class="'+tdclass+'_off"';
				}
			}else{
				if(this_index==2){
					if(calendar1.value!=""){
						
						
						if((use_same_data_or_next_one=="next" && parseFloat(this_date_reversed)>parseFloat(other_date_reversed)) || (use_same_data_or_next_one=="same" && parseFloat(this_date_reversed)>=parseFloat(other_date_reversed))){
							if(parseFloat(this_date_reversed)>=parseFloat(today_reversed)){
								ret += '<td class="'+tdclass+'"  onmouseover="hover(this)" onmouseout="unhover(this)" onclick="';
								ret += 'set_date(\''+input_id+'\', \''+div_id+'\', \''+date+del+(month)+del+d.getFullYear()+'\')';
							}else{
								ret += '<td class="'+tdclass+'_off"';
							}
						}else{
							ret += '<td class="'+tdclass+'_off"';
						}
					}else{
						if(parseFloat(this_date_reversed)>=parseFloat(today_reversed)){
							ret += '<td class="'+tdclass+'"  onmouseover="hover(this)" onmouseout="unhover(this)" onclick="';
							ret += 'set_date(\''+input_id+'\', \''+div_id+'\', \''+date+del+(month)+del+d.getFullYear()+'\')';
						}else{
							ret += '<td class="'+tdclass+'_off"';
						}
					}
				}
			}
		
			
			
			
			ret += '">' + d.getDate() + '</td>';
		}else{
			ret += '<td/>';
		}
		

		d.setDate(d.getDate() + 1);	
		ret += '</tr>';
		if(cmonth != d.getMonth())
			break;
	}

	ret += '</tr>';

	



	ret += '</table>';

	return ret;
}

function set_date(input_id, div_id, date) {

	var div = document.getElementById(div_id);
	var input = document.getElementById(input_id);

	if(div && input) {
		div.style.display = (div.style.display == 'block') ? 'none' : 'block';
		input.value = date;
	}
	if(this_index==1 && calendar2!=""){

		var arr_temp=calendar2.value.split("/");
		var other_date_reversed="";
		other_date_reversed+=arr_temp[2]+arr_temp[1]+arr_temp[0];
		
		var arr_temp2=date.split("/");
		var this_date_reversed="";
		this_date_reversed+=arr_temp2[2]+arr_temp2[1]+arr_temp2[0];
		
		if((use_same_data_or_next_one=="next" && parseFloat(this_date_reversed)>=parseFloat(other_date_reversed)) || (use_same_data_or_next_one=="same" && parseFloat(this_date_reversed)>parseFloat(other_date_reversed))){
			calendar2.value="";
		}
	}
	
	
	if(document.getElementById("nights")!=undefined){
		
		if(calendar1.value!=undefined && calendar2.value!=undefined && calendar1.value!="" && calendar2.value!=""){
			
			var arr_temp=calendar1.value.split("/");
			var arr_temp2=calendar2.value.split("/");
			
			var one_day=1000*60*60*24;
			
			var d1 = new Date(arr_temp[2], (arr_temp[1]-1), arr_temp[0]);
			var d2 = new Date(arr_temp2[2], (arr_temp2[1]-1), arr_temp2[0]);
			
			var diff=Math.ceil((d2.getTime()-d1.getTime())/(one_day));
			document.getElementById("nights").value=diff;
		}else{
			document.getElementById("nights").value="";
		}
	}
}
function go_today(input_id) {
	
	
	var div;

	div = document.getElementById('div_calendar');

	if(div) {
		
//		div.innerHTML = calendar('div_calendar', input_id, 0, 0, 0);
		var d_today = new Date();
	
		var month = d_today.getMonth()+1;
		var year = d_today.getFullYear();
		
		update_calendar('div_calendar', input_id, month, year);
	}
	
}

function update_calendar(div_id, input_id, month, year) {

	var div;
	var input;

	div = document.getElementById(div_id);

	if(div) {
		
		div.innerHTML = calendar(div_id, input_id, month, year, 0);
	}
}

function hide_calendar(input_id) {

	var parent;
	var input;
	var div;

	input = document.getElementById(input_id);
	if(input) {
		parent = input.parentNode;
		div = document.getElementById("div_calendar");
		if(div && parent) {
			parent.removeChild(div);
		}
	}
}
function show_calendar(input_id, interact_with_id, index, same_data_or_next_one) {

	use_same_data_or_next_one=same_data_or_next_one;
	
	if(interact_with_id!=undefined){
		if(index==1){
			calendar2=document.getElementById(interact_with_id);
		}else if(index==2){
			calendar1=document.getElementById(interact_with_id);
		}
		this_index=index;
	}else{
		this_index="";
	}

	var input;
	var parent;
	var div;

	input = document.getElementById(input_id);
	if(input) {
		parent = input.parentNode;
		if(parent) {
			div = document.getElementById("div_calendar");
			if(!div) {
				div = document.createElement("div");
			}else{
				//parent.removeChild(div);
				//div = document.createElement("div");
			}
			div.id = "div_calendar";
			div.innerHTML = calendar(div.id, input_id, 0, 0, 1);


			div.style.display = 'block'; //(div.style.display == 'block') ? 'none' : 'block';
			div.style.position = 'absolute';
			div.style.zIndex = 40;
			div.style.top=findPosY(input)-115+"px";
			
			parent.appendChild(div);
		}
	}
}

function hover(el) {

	el.className = el.className + "_hover";
}

function unhover(el) {

	var elclass = new String();
	
	elclass = el.className;
	
	elclass = elclass.substr(0, elclass.lastIndexOf("_") );
	el.className = elclass;
}

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

