function detectBrowserOlderThanIE7()
{
    var browser = navigator.appName;
    var b_version = navigator.appVersion;
    var version_temp = b_version.split('MSIE ');
    var version = parseFloat(version_temp[1]);
    if ( (browser == "Microsoft Internet Explorer" ) && ( version <= 6))
    {    
        return true
    }

return false;
}

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 ChangeDaysMonth(objIDDay, Month, Year)
{
	var list = document.getElementById(objIDDay);
	var newOption;
	var selected = list.selectedIndex;
	
	list.length = 29;
	
	switch (Month.value)
	{
		case "2":
			if( ( Year.value % 400 == 0 ) || ( Year.value % 4 == 0 && Year.value % 100 != 0 ) )
			{
				newOption = document.createElement("option");
				newOption.text = "29";
				newOption.value = "29";
				list.options.add(newOption);
				if (selected < 29)
					list.selectedIndex = selected;
				else
					list.selectedIndex = 1;
			}
			break;
		case "1":
		case "3":
		case "5":
		case "7":
		case "10":
		case "12":
				newOption = document.createElement("option");
				newOption.text = "29";
				newOption.value = "29";
				list.options.add(newOption);
				newOption = document.createElement("option");
				newOption.text = "30";
				newOption.value = "30";
				list.options.add(newOption);
				newOption = document.createElement("option");
				newOption.text = "31";
				newOption.value = "31";
				list.options.add(newOption);
				list.selectedIndex = selected;
			break;
		case "4":
		case "6":
		case "9":
		case "11":
				newOption = document.createElement("option");
				newOption.text = "29";
				newOption.value = "29";
				list.options.add(newOption);
				newOption = document.createElement("option");
				newOption.text = "30";
				newOption.value = "30";
				list.options.add(newOption);
				list.selectedIndex = selected;
				if (selected < 30)
					list.selectedIndex = selected;
				else
					list.selectedIndex = 1;
			break;
	}
}

function SyncDatesPlus(StartDateDay, StartDateMonth, StartDateYear, RetDateDay, RetDateMonth, RetDateYear)
{
	var startDateDay = document.getElementById(StartDateDay);
	var startDateMonth = document.getElementById(StartDateMonth);
	var startDateYear = document.getElementById(StartDateYear);
	var retDateDay = document.getElementById(RetDateDay);
	var retDateMonth = document.getElementById(RetDateMonth);
	var retDateYear = document.getElementById(RetDateYear);

	/*
	alert(startDateDay.value);
	alert(startDateMonth.value);
	alert(startDateYear.value);
	alert(retDateDay.value);
	alert(retDateMonth.value);
	alert(retDateYear.value);
	*/
	
	startData = new Date();
	retData = new Date();
	startData.setTime(Date.parse(startDateYear.value + "/" + startDateMonth.value + "/" + startDateDay.value));
	retData.setTime(Date.parse(retDateYear.value + "/" + retDateMonth.value + "/" + retDateDay.value));
	
	if (startData > retData)
	{
		retDateDay.selectedIndex = startDateDay.selectedIndex;
		retDateMonth.selectedIndex = startDateMonth.selectedIndex;
		retDateYear.selectedIndex = startDateYear.selectedIndex;
	}
	//alert(startData);
	//alert(retData);
}

function SyncDatesLess(StartDateDay, StartDateMonth, StartDateYear, RetDateDay, RetDateMonth, RetDateYear)
{
	var startDateDay = document.getElementById(StartDateDay);
	var startDateMonth = document.getElementById(StartDateMonth);
	var startDateYear = document.getElementById(StartDateYear);
	var retDateDay = document.getElementById(RetDateDay);
	var retDateMonth = document.getElementById(RetDateMonth);
	var retDateYear = document.getElementById(RetDateYear);

	startData = new Date();
	retData = new Date();
	startData.setTime(Date.parse(startDateDay.value + "/" + startDateMonth.value + "/" + startDateYear.value));
	retData.setTime(Date.parse(retDateDay.value + "/" + retDateMonth.value + "/" + retDateYear.value));
	
	if (retData < startData)
	{
		startDateDay.selectedIndex = retDateDay.selectedIndex;
		startDateMonth.selectedIndex = retDateMonth.selectedIndex;
		startDateYear.selectedIndex = retDateYear.selectedIndex;
	}
	//alert(startData);
	//alert(retData);
}


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 ShowDiv(objID, refID)
{
	aparece(objID, refID);
}
*/
function aparece( objID, evt ) 
{	
	var posx = posy = 0;	
	if (!evt) var evt = window.event;
	if (evt.pageX || evt.pageY) //FF
	{
		//posx = evt.pageX;		
		//MARTELATE
		if(String(objID.divID) == "divCalendar1")
		{
			posx = evt.pageX;
		}
		else
		{
			posx = 135;
		}
		
		posy = evt.pageY;		
	}
	else if (evt.clientX || evt.clientY) //IE
	{	
		posx = evt.clientX + document.body.scrollLeft + 20;
		posy = evt.clientY + document.body.scrollTop;
	}
		
	with( document.getElementById( objID.divID ).style ) 
	{	
		display = "block";
		left = posx;
		top = posy;
	}
	
    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 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;
		
		if( detectBrowserOlderThanIE7() )
	    {		
		    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)
{	
//alert(objID.id);
	if (ValidValue(objID.divID))
	{
		document.getElementById(objID.divID).style.display = "none";			
		//document.getElementById(objID.hideableElems[i]).style.visibility = "hidden";
		
		if( detectBrowserOlderThanIE7() )
	    {
		    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 HideDiv2(objID)
{	
//alert("HideDiv2");
	if (ValidValue(objID.divID))	
		document.getElementById(objID.divID).style.display = "none";
		//document.getElementById(objID.hideableElems[i]).style.visibility = "hidden";
}

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 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 SetDateFieldsCalendar2(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() + 1 : 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();
		}
	}
	
	
	SetNewDate2(objID, obj2ID, document.getElementById(objID.elemDay).value);
	SetNewDate2(obj2ID, objID, document.getElementById(obj2ID.elemDay).value);
}

function ChangeDaysMonth(objIDDay, Month, Year)
{
	var list = document.getElementById(objIDDay);
	var newOption;
	var selected = list.selectedIndex;
	
	list.length = 29;
	
	switch (Month.value)
	{
		case "2":
			if( ( Year.value % 400 == 0 ) || ( Year.value % 4 == 0 && Year.value % 100 != 0 ) )
			{
				newOption = document.createElement("option");
				newOption.text = "29";
				newOption.value = "29";
				list.options.add(newOption);
				if (selected < 29)
					list.selectedIndex = selected;
				else
					list.selectedIndex = 1;
			}
			break;
		case "1":
		case "3":
		case "5":
		case "7":
		case "8":
		case "10":
		case "12":
				newOption = document.createElement("option");
				newOption.text = "29";
				newOption.value = "29";
				list.options.add(newOption);
				newOption = document.createElement("option");
				newOption.text = "30";
				newOption.value = "30";
				list.options.add(newOption);
				newOption = document.createElement("option");
				newOption.text = "31";
				newOption.value = "31";
				list.options.add(newOption);
				list.selectedIndex = selected;
			break;
		case "4":
		case "6":
		case "9":
		case "11":
				newOption = document.createElement("option");
				newOption.text = "29";
				newOption.value = "29";
				list.options.add(newOption);
				newOption = document.createElement("option");
				newOption.text = "30";
				newOption.value = "30";
				list.options.add(newOption);
				list.selectedIndex = selected;
				if (selected < 30)
					list.selectedIndex = selected;
				else
					list.selectedIndex = 1;
			break;
	}
}