var monthes = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
var monthes_short = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sept','Oct','Nov','Dec');
var monthes_by_title = {'Jan':'0','Feb':'1','Mar':'2','Apr':'3','May':'4','Jun':'5','Jul':'6','Aug':'7','Sept':'8','Oct':'9','Nov':'10','Dec':'11'};
var monthes_digit = new Array('01','02','03','04','05','06','07','08','09','10','11','12');
var daysOfWeek = new Array('sunday','monday','tuesday','wednesday','thursday','friday','saturday');
var daysOfWeekShort = new Array('S','M','T','W','T','F','S');
var daysOfWeek3 = new Array('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
var daysLeap = new Array(31,29,31,30,31,30,31,31,30,31,30,31);
var daysNotLeap = new Array(31,28,31,30,31,30,31,31,30,31,30,31);

function initCalendar()
{
	//**************
	initChangeSelects();
	//**************
	var calendarContainer = document.getElementById('calendar');
	if(!calendarContainer) calendarContainer = document;
	var _inputs = getEls('input','calendar-input',calendarContainer);
	var _as = getEls('a','calendar-selector',calendarContainer);
	var _divs = getEls('div','calendar-cont',calendarContainer);
	var calendar = [];
	for(var i = 0; i < _inputs.length; i++)
	{
		if(_as[i] && _divs[i])
		{
			calendar[i] = new Calendar();
			calendar[i].init(_inputs[i],_as[i],_divs[i]);
		}
	}
}

function getEls(tag,classn,container)
{
	var _return = [];
	if(container)
	{
		var els = container.getElementsByTagName(tag);
		for(var i = 0; i < els.length; i++)
		{
			if(els[i].className.indexOf(classn) != -1)
			{
				_return[_return.length] = els[i];
			}
		}
	}
	return _return;
}

if (window.addEventListener){
	window.addEventListener("load", initCalendar, false);
}
else if (window.attachEvent){
	window.attachEvent("onload", initCalendar);
}

Calendar = function(){

this.init = function(_input,_opener,_container){	

		this.baseDate = new Date();
		this.selectDate = this.baseDate;
		this.currentDate = new Date();
		this.calendarContainer = _container;
		this.calendarInput = _input;		
		this.calendarOpener = _opener;
		this.defaultLabel = _input.getAttributeNode('defaultlabel').value;
		if(this.calendarInput)
		{
			this.calendarInput._this = this;
			this.calendarInput.onfocus = FocusLabel;
			this.calendarInput.onblur = FocusLabel;
		}
		if(this.calendarOpener)
		{
			this.calendarOpener._this = this;
			this.calendarOpener.onclick = ShowHideCalendar;
		}

};

this.show = function ()
{
	this._show();
	this._opened = true;
	this.calendarContainer.style.display = 'block';
};

this._show = function ()
{
	var calendarContainer = this.calendarContainer;
	if (calendarContainer)
	{
		calendarContainer.innerHTML = '';

		var node = document.createElement("strong");
		node.className = 'year';
		var yearContainer = calendarContainer.appendChild(node);
		
		/*var node = document.createElement("span");
		node.className = 'month';
		var monthesContainer = calendarContainer.appendChild(node);*/

		var node = document.createElement("span");
		node.className = 'week';
		var daysOfWeekContainer = calendarContainer.appendChild(node);
		
		var node = document.createElement("span");
		node.className = 'days';
		var daysContainer = calendarContainer.appendChild(node);

		/*yearContainer.innerHTML = this._getYear();*/

		var aNode = document.createElement("a");
		aNode.className = "prev-month";
		aNode.href = "javascript:;";
		aNode.innerHTML = "month";
		aNode._this = this;
		aNode.onclick = _showPrevMonth;
		
		var bNode = document.createElement("a");
		bNode.className = "next-month";
		bNode.innerHTML = "month";
		bNode.href = "javascript:;";
		bNode._this = this;
		bNode.onclick = _showNextMonth;
		var is_curr_mounth = 1;
		yearContainer.innerHTML = monthes_short[this._getCurrentMonthNumber()]+ ' ' + this._getYear();
		if (this.currentDate.getMonth() != this._getCurrentMonthNumber()) {
			var aElement  = yearContainer.appendChild(aNode);
			var is_curr_mounth = 0; 
		}
		var bElement  = yearContainer.appendChild(bNode);
		
		for (var i = 0; i < 7; i++)
		{
			var node = document.createElement("span");
			node.innerHTML = daysOfWeekShort[i];
			var dayOfWeekElement = daysOfWeekContainer.appendChild(node);
		}
		
		if (this._getYear() % 4 == 0)
		{
			var daysAmount = daysLeap[this._getCurrentMonthNumber()];
		}
		else
		{
			var daysAmount = daysNotLeap[this._getCurrentMonthNumber()];
		}
		
		var date = new Date(this.baseDate.toString());
		var currdate = this.currentDate;
		
		for (var day = 1; day <= daysAmount; day++)	
		{
			var is_yesterday = 0;
			date.setDate(day);
			if (day == 1)
			{
				var upto = date.getDay();
				for (var i = 0; i < upto; i++)
				{
					var node = document.createElement("a");
					node.className = "day";
					node.innerHTML = "&nbsp";
					var dayElement = daysContainer.appendChild(node);
				}
			}
			
			var	_class = 'day';

			if(is_curr_mounth && currdate.getDate() > date.getDate())
			{
				_class += ' previous-d';
				is_yesterday = 0;
			}
			else {is_yesterday = 1;}
			
			if(currdate.getFullYear() == date.getFullYear() && currdate.getMonth() == date.getMonth() && currdate.getDate() == date.getDate())
			{
				_class += ' today';
			}

			if(this.selectDate.getFullYear() == date.getFullYear() && this.selectDate.getMonth() == date.getMonth() && this.selectDate.getDate() == date.getDate())
			{
				_class += ' selected';
			}
			
			var aNode = document.createElement("a");
			aNode.className = _class;
			aNode.innerHTML = day;
			aNode._value = day;
			/*aNode.href = "#";*/
			aNode._this = this;
			if (is_yesterday) aNode.onclick = calendarChoose;
			var aElement = daysContainer.appendChild(aNode);
		}

		var node = document.createElement("span");
		node.className = 'bottom';
		node.innerHTML = '&nbsp;';
		var daysContainer = calendarContainer.appendChild(node);
		
		var aNode = document.createElement("a");
		aNode.className = 'close';
		aNode.innerHTML = 'close';
		aNode._this = this;
		if (is_yesterday) aNode.onclick = calendarClose;
		var aElement = daysContainer.appendChild(aNode);

	}	
};

this.hide = function ()
{
	this.calendarContainer.style.display = 'none';
	this._opened = false;
	try{showSelectBoxes(this.calendarContainer)}catch (e){};
}

this._getYear = function ()
{
	return this.baseDate.getFullYear();
}

this._getShortYear = function ()
{
	var year = "" + this.baseDate.getFullYear();
	return year.substring(2,4);
}

this._getCurrentMonthNumber = function ()
{
	return this.baseDate.getMonth();
}

this._getPrevYear = function ()
{
	var number = this._getYear();
	if (number > 0) {
		return number - 1;
	}
	else {
		return 0;
	}
};

this._getNextYear = function ()
{
	var number = this._getYear();
	return number + 1;
}

this._showPrevYear = function ()
{
	number = this._getPrevYear();
	this.baseDate.setYear(number);
	this._show();
};

this._showNextYear = function ()
{
	number = this._getNextYear();
	this.baseDate.setYear(number);
	this._show();
};

this._getPrevMonthNumber = function ()
{
	var number = this._getCurrentMonthNumber();
	if (number > 0) {
		return number - 1;
	}
	else {
		return 11;
	}
};

this._getNextMonthNumber = function ()
{
	var number = this._getCurrentMonthNumber();
	if (number < 11) {
		return number + 1;
	}
	else {
		return 0;	
	}
};


}

var calendarChoose = function ()
{
	this._this.baseDate.setDate(this._value);
	this._this.calendarInput.value = addZero(this._this.baseDate.getDate()) + '-' + monthes_short[this._this._getCurrentMonthNumber()] + '-' + this._this._getShortYear();	
	this._this.hide();
}
var calendarClose= function ()
{
	if(this._this.calendarInput.value == '')
	{
		this._this.calendarInput.value = this._this.defaultLabel;
	}
	this._this.hide();
}
var _showPrevMonth = function ()
{
	number = this._this._getPrevMonthNumber();
	if (number == 11)
	{
		this._this.baseDate.setYear(this._this._getYear()  - 1);
	}
	this._this.baseDate.setMonth(number);
	this._this._show();
}

var _showNextMonth = function ()
{
	number = this._this._getNextMonthNumber();
	if (number == 0)
	{
		this._this.baseDate.setYear(this._this._getYear() + 1);
	}
	this._this.baseDate.setMonth(number);
	this._this._show();
}

var ShowHideCalendar = function ()
{
	if(this._this._opened)
	{
		this._this.hide();
	}
	else
	{
		this._this.calendarInput.value = '';
		this._this.show();
	}
}

var FocusLabel = function()
{
	if(this._this.calendarInput.value == this._this.defaultLabel)
	{
		this._this.calendarInput.value = '';
	}
	else if(this._this.calendarInput.value == '')
	{
		this._this.calendarInput.value = this._this.defaultLabel;
	}
}

function addZero(_text)
{
	_text = "" + _text;
	if(_text.length == 1)
	{
		return '0' + _text;
	}
	else
	{
		return _text;
	}
}

function initChangeSelects()
{
	/*Bisri add to keep payment informations */
	var _selectRadio=3;	
	if(window.location.href=='http://localhost/evs/booking.aspx' || window.location.href=='http://www.exotiqmanagement.com/booking.aspx' || window.location.href=='http://www.exotiqvillaholidays.com/booking.aspx'){
		_selectRadio=document.getElementById('hdnRdb1').value;
	}
	/*end add*/
	var _all_divs= document.getElementsByTagName('div');
	var _selects_boxes = [];
	if (_all_divs.length){
		for (var i=0; i<_all_divs.length; i++){
			if (_all_divs[i].className.indexOf('select-box')!=-1){_selects_boxes.push(_all_divs[i]);}
		}
	}
	var _chk = document.getElementById('change_checkbox');
	if (_chk && _selects_boxes.length > 1){
		var _lbl = _chk.parentNode.getElementsByTagName('label');
		_chk.onclick = function(){
			if (_selects_boxes[0].className.indexOf('name-v')!=-1){
				_selects_boxes[0].className = _selects_boxes[0].className.replace('name-v','');
				_selects_boxes[1].className = _selects_boxes[1].className + ' name-v';
			}
			else {
				_selects_boxes[1].className = _selects_boxes[1].className.replace('name-v','');
				_selects_boxes[0].className = _selects_boxes[0].className + ' name-v';
			}
			if (_lbl.length > 1){
				if (_lbl[0].style.display == 'table'){
					_lbl[0].style.display = 'none';
					_lbl[1].style.display = 'table';
				}
				else {
					_lbl[1].style.display = 'none';
					_lbl[0].style.display = 'table';
				}				
			}
		}
	}
	var airport_pic_up_selectior = document.getElementById('airport_pic_up_selectior');
	var airport_pic_up_box = document.getElementById('airport_pic_up_box');
	if (airport_pic_up_selectior && airport_pic_up_box){
		showHideElement(airport_pic_up_box);
		airport_pic_up_selectior.onclick = function(){showHideElement(airport_pic_up_box);}
	}	
	var _rs = document.getElementById('radio_selectors');
	
	if (_rs){
		var rs_sel = [];
		var rs_box = [];
		_divs = _rs.getElementsByTagName('div');
		if (_divs.length){
			for (var i=0; i<_divs.length; i++){ 			
				if (_divs[i].className.indexOf('pay-cnt pay-by')!=-1){ 					
					_selectors = _divs[i].getElementsByTagName('label');
					if (_selectors.length){
						for (var r=0; r<_selectors.length; r++){
							rs_sel.push(_selectors[r]);
						}
					}
				}
				if (_divs[i].className.indexOf('credit')!=-1 || _divs[i].className.indexOf('pay-later')!=-1){
					rs_box.push(_divs[i]);  					
				}
			}
			
			if (rs_box.length == rs_sel.length && rs_sel.length){
				hideAllElements(rs_box);
				for (var i=0; i<rs_sel.length; i++){
					rs_sel[i]._index = i;
					/*Bisri add to keep payment informations*/
					if (_selectRadio !=3){
						hideAllElements(rs_box);
						rs_box[_selectRadio].style.display = 'block';				
					}
					/*end add*/
					rs_sel[i].onclick = function(){						
						hideAllElements(rs_box);
						rs_box[this._index].style.display = 'block';
						document.getElementById('hdnRdb1').value=this._index;						
					}
				}
			}
		}
	}
}
function hideAllElements(_elements){
	for (var _i=0; _i<_elements.length; _i++){
		_elements[_i].style.display = 'none';
	}
}
function showHideElement(_element){
	if (_element.style.display == "none"){
		_element.style.display = "block";
	}
	else _element.style.display = "none";
}