function ValidValue(value)
{
	return value != null && value != "" && value != "undefined";
}
function SetDefaultElems(objID)
{
	if (!objID.selectIndexOnly)
	{
		objID.defaultDay = objID.day;
		objID.defaultMonth = objID.month;
		objID.defaultYear = objID.year;
	}
}

function SetOpenerElems(objID)
{
	if (ValidValue(objID) && Number(objID.type) == 1)
	{
		window.opener.SetFormElem(objID.elemDay, objID.day);
		window.opener.SetFormElem(objID.elemMonth, Number(objID.month) + 1);
		window.opener.SetFormElem(objID.elemYear, objID.year);
		window.opener.SetFormElem(obj2ID.elemDay, obj2ID.day);
		window.opener.SetFormElem(obj2ID.elemMonth, Number(obj2ID.month) + 1);
		window.opener.SetFormElem(obj2ID.elemYear, obj2ID.year);
		window.close();
	}
}


function GetPageCoords(element)
{
     var coords = {x: 0, y: 0};
     while (element)
     {
       coords.x += element.offsetLeft;
       coords.y += element.offsetTop;
       element = element.offsetParent;
     }
     return coords;
}

function GetPageCoordsById(elementId)
{
	if (document.all)
	{
       return GetPageCoords(document.all[elementId]);
    }
    else if (document.getElementById)
    {
		return GetPageCoords(document.getElementById(elementId));
    }    
}


function ShowDiv(objID, refID)
{	
	ShowDivWithInc(objID, refID, 1, -1);
}


function ShowDivWithInc(objID, refID, x, y)
{	
	if (ValidValue(objID.divID))
	{

		document.getElementById(objID.divID).style.display = "block";
		document.getElementById(objID.divID).style.top = GetPageCoordsById(refID).y - y;		
		document.getElementById(objID.divID).style.left = GetPageCoordsById(refID).x + x;

		for (var i = 0; i < objID.hideableElems.length; i++)
		{
			if (ValidValue(document.getElementById(objID.hideableElems[i])))
			{
				document.getElementById(objID.hideableElems[i]).style.visibility = "hidden";
				//document.getElementById(objID.hideableElems[i]).style.display = "none";
			}
		}	
	}
	
}

function HideDiv(objID)
{
	if (ValidValue(objID.divID))
	{		
		document.getElementById(objID.divID).style.display = "none";			
		
		for (var i = 0; i < objID.hideableElems.length; i++)
		{
			if (ValidValue(document.getElementById(objID.hideableElems[i])))
			{
				document.getElementById(objID.hideableElems[i]).style.visibility = "visible";
				//document.getElementById(objID.hideableElems[i]).style.display = "block";
			}
		}
	}
}

function OpenWindow(windowLink, windowName, windowFeatures)
{	
	window.open(String(windowLink), String(windowName), String(windowFeatures));
}

function OpenWindowOffset(windowLink, windowName, windowFeatures)
{
	var x = window.event.clientX;
	var y = window.event.clientY - 20;
	var windowFeatures = windowFeatures + "; left=" + x + "; top=" + y;
	OpenWindow(windowLink, windowName, windowFeatures);
}

function GetWindowSize(idElem, incWidth, incHeight)
{
	var width = document.getElementById(idElem).offsetWidth + Number(incWidth);
	var height = document.getElementById(idElem).offsetHeight + Number(incHeight);
	
	resizeTo(width, height);		
}



// HTML Elems Functions 
function ValidFieldValue(value)
{
	return value != null && value != "undefined" && value != "";
}

function ValidFieldValueReplace(value, newValue)
{
	return ValidFieldValue(value) ? value : newValue;
}

function SetElemNewValue(elemObj, newValue)
{

	if (ValidFieldValue(elemObj))
	{
		elemObj.value = newValue;
	}
}

function SetElemDate(objID, year, month, day)
{
	
	var date = new Date(year, month, day, "23", "59", "59");

	if (ValidFieldValue(objID))
	{
		SetElemNewValue(document.getElementById(objID.elemDay), date.getDate());
		SetElemNewValue(document.getElementById(objID.elemMonth), date.getMonth());
		SetElemNewValue(document.getElementById(objID.elemYear), date.getFullYear());
	}
}

function SetDateFieldsCalendar_single(objID)
{
	var today = new Date();
	
	var minDate = new Date(today.getFullYear(), today.getMonth(), today.getDate());
	var date = new Date(document.getElementById(objID.elemYear).value, document.getElementById(objID.elemMonth).value - 1, document.getElementById(objID.elemDay).value, "23", "59", "59");
	
	if (date < minDate)
	{
		SetElemNewValue(document.getElementById(objID.elemYear), date.getFullYear() + 1);
		SetElemNewValue(document.getElementById(objID.elemMonth), date.getMonth() + 1);
		
		objID.year = date.getFullYear() + 1;
		objID.month = date.getMonth();
	}	
	else
	{	
		SetElemNewValue(document.getElementById(objID.elemYear), date.getFullYear());
		SetElemNewValue(document.getElementById(objID.elemMonth), date.getMonth() + 1);
		SetElemNewValue(document.getElementById(objID.elemDay), date.getDate());		
	
		objID.year = date.getFullYear();
		objID.month = date.getMonth();
		
	}
	
	
	SetNewDate(objID, document.getElementById(objID.elemDay).value);
}

function SetDateFieldsCalendar(objID, obj2ID, control)
{
	var today = new Date();
	
	var minDate = new Date(today.getFullYear(), today.getMonth(), today.getDate());
	var date = new Date(document.getElementById(objID.elemYear).value, document.getElementById(objID.elemMonth).value - 1, document.getElementById(objID.elemDay).value, "23", "59", "59");
	var date2 = new Date(document.getElementById(obj2ID.elemYear).value, document.getElementById(obj2ID.elemMonth).value - 1, document.getElementById(obj2ID.elemDay).value, "23", "59", "59");
	
	if (((control == 0) ? date : date2) < minDate)
	{
		SetElemNewValue(document.getElementById(objID.elemYear), date.getFullYear() + 1);
		SetElemNewValue(document.getElementById(objID.elemMonth), date.getMonth() + 1);
		SetElemNewValue(document.getElementById(obj2ID.elemYear), date.getFullYear() + 1);
		SetElemNewValue(document.getElementById(obj2ID.elemMonth), date.getMonth() + 1);
		
		objID.year = date.getFullYear() + 1;
		objID.month = date.getMonth();
		obj2ID.year = objID.year;
		obj2ID.month = objID.month;
	}
	else if (date > date2)
	{	
		SetElemNewValue(document.getElementById(objID.elemDay), (control == 0) ? date.getDate() : date2.getDate());
		SetElemNewValue(document.getElementById(objID.elemMonth), (control == 0) ? date.getMonth() + 1 : date2.getMonth() + 1);
		SetElemNewValue(document.getElementById(objID.elemYear), (control == 0) ? date.getFullYear() : date2.getFullYear());
		SetElemNewValue(document.getElementById(obj2ID.elemDay), (control == 0) ? date.getDate() : date2.getDate());
		SetElemNewValue(document.getElementById(obj2ID.elemMonth), (control == 0) ? date.getMonth() + 1 : date2.getMonth() + 1);
		SetElemNewValue(document.getElementById(obj2ID.elemYear), (control == 0) ? date.getFullYear() : date2.getFullYear());
		
		objID.year = ((control == 0) ? date.getFullYear() : date2.getFullYear());
		objID.month = ((control == 0) ? date.getMonth() : date2.getMonth());
		obj2ID.year = objID.year;
		obj2ID.month = objID.month;
	}
	else
	{	
		if (control == 0)
		{
			SetElemNewValue(document.getElementById(objID.elemYear), date.getFullYear());
			SetElemNewValue(document.getElementById(objID.elemMonth), date.getMonth() + 1);
			SetElemNewValue(document.getElementById(objID.elemDay), date.getDate());		
		
			objID.year = date.getFullYear();
			objID.month = date.getMonth();
		}
		else
		{
			SetElemNewValue(document.getElementById(obj2ID.elemYear), date2.getFullYear());
			SetElemNewValue(document.getElementById(obj2ID.elemMonth), date2.getMonth() + 1)
			SetElemNewValue(document.getElementById(obj2ID.elemDay), date2.getDate());
			
			obj2ID.year = date2.getFullYear();
			obj2ID.month = date2.getMonth();
		}
	}
	
	
	SetNewDate(objID, obj2ID, document.getElementById(objID.elemDay).value);
	SetNewDate(obj2ID, objID, document.getElementById(obj2ID.elemDay).value);
}


function SetDateFieldsCalendarHotel(objID, obj2ID, control)
{
	var today = new Date();
	
	var minDate = new Date(today.getFullYear(), today.getMonth(), today.getDate());
	var date = new Date(document.getElementById(objID.elemYear).value, document.getElementById(objID.elemMonth).value - 1, document.getElementById(objID.elemDay).value, "23", "59", "59");
	var date2 = new Date(document.getElementById(obj2ID.elemYear).value, document.getElementById(obj2ID.elemMonth).value - 1, document.getElementById(obj2ID.elemDay).value, "23", "59", "59");
	
	if (((control == 0) ? date : date2) < minDate)
	{
		SetElemNewValue(document.getElementById(objID.elemYear), date.getFullYear() + 1);
		SetElemNewValue(document.getElementById(objID.elemMonth), date.getMonth() + 1);
		SetElemNewValue(document.getElementById(obj2ID.elemYear), date.getFullYear() + 1);
		SetElemNewValue(document.getElementById(obj2ID.elemMonth), date.getMonth() + 1);
		
		objID.year = date.getFullYear() + 1;
		objID.month = date.getMonth();
		obj2ID.year = objID.year;
		obj2ID.month = objID.month;
	}
	else if (date > date2)
	{	
		SetElemNewValue(document.getElementById(objID.elemDay), (control == 0) ? date.getDate() : date2.getDate());
		SetElemNewValue(document.getElementById(objID.elemMonth), (control == 0) ? date.getMonth() + 1 : date2.getMonth() + 1);
		SetElemNewValue(document.getElementById(objID.elemYear), (control == 0) ? date.getFullYear() : date2.getFullYear());
		SetElemNewValue(document.getElementById(obj2ID.elemDay), (control == 0) ? date.getDate() : date2.getDate());
		SetElemNewValue(document.getElementById(obj2ID.elemMonth), (control == 0) ? date.getMonth() + 1 : date2.getMonth() + 1);
		SetElemNewValue(document.getElementById(obj2ID.elemYear), (control == 0) ? date.getFullYear() : date2.getFullYear());
		
		objID.year = ((control == 0) ? date.getFullYear() : date2.getFullYear());
		objID.month = ((control == 0) ? date.getMonth() : date2.getMonth());
		obj2ID.year = objID.year;
		obj2ID.month = objID.month;
	}
	else
	{	
		if (control == 0)
		{
			SetElemNewValue(document.getElementById(objID.elemYear), date.getFullYear());
			SetElemNewValue(document.getElementById(objID.elemMonth), date.getMonth() + 1);
			SetElemNewValue(document.getElementById(objID.elemDay), date.getDate());		
		
			objID.year = date.getFullYear();
			objID.month = date.getMonth();
		}
		else
		{
			SetElemNewValue(document.getElementById(obj2ID.elemYear), date2.getFullYear());
			SetElemNewValue(document.getElementById(obj2ID.elemMonth), date2.getMonth() + 1)
			SetElemNewValue(document.getElementById(obj2ID.elemDay), date2.getDate());
			
			obj2ID.year = date2.getFullYear();
			obj2ID.month = date2.getMonth();
		}
	}
	
	
	SetNewDate(objID, obj2ID, document.getElementById(objID.elemDay).value);
	SetNewDate(obj2ID, objID, document.getElementById(obj2ID.elemDay).value);
}

