﻿var timestampLabelId = '';
var sourceElementId = '';
var movingElementId = '';
var alignTopRightCorners = true;

if (window.addEventListener) {
	window.addEventListener('load',alignElements,false);
	window.addEventListener('resize',alignElements,false);
} else if (window.attachEvent) {
	window.attachEvent('onload',alignElements);
	window.attachEvent('onresize',alignElements);
}

function updateTimestamp()
{
	var timestampLabel = document.getElementById(timestampLabelId);
	if(timestampLabel != null)
		timestampLabel.innerHTML = formatDateTime(new Date());
}

function padZero (num, length)
{
	num = String(num);
	length = parseInt(length) || 2;
	while (num.length < length)
		num = "0" + num;
	return num;
};

function formatDateTime(dateTime)
{
	var dow = weekDay(dateTime);
	var day = padZero(dateTime.getDate(), 2);
	var month = padZero((dateTime.getMonth() + 1), 2);
	var year = dateTime.getFullYear();
	return dow + ", " + day + "-" + month + "-" + year;
}

function weekDay(dateTime)
{
	var dayOfWeek = dateTime.getDay();

	var names = new Array(7);
	names[0]="Domingo";
	names[1]="Segunda-feira";
	names[2]="Terça-feira";
	names[3]="Quarta-feira";
	names[4]="Quinta-feira";
	names[5]="Sexta-feira";
	names[6]="Sábado";

	return(names[dayOfWeek]);
}

//
// Gets the absolute coordinates of an HTML element
//
function GetElementPosition(elementId)
{
	var obj = document.getElementById(elementId);
	try
	{
		var curleft = 0;
		var curtop = 0;
		if (obj.offsetParent)
		{
			while (obj.offsetParent) 
			{
				curleft += obj.offsetLeft-obj.scrollLeft;
				curtop += obj.offsetTop-obj.scrollTop;
				var position = '';
				if (obj.style && obj.style.position)
					position = obj.style.position.toLowerCase();
				if ((position == 'absolute') || (position == 'relative'))
					break;
				while (obj.parentNode != obj.offsetParent)
				{
					obj = obj.parentNode;
					curleft -= obj.scrollLeft;
					curtop -= obj.scrollTop;
				}
				obj = obj.offsetParent;
			}
		}
		else {
			if (obj.x)
				curleft += obj.x;
			if (obj.y)
				curtop += obj.y;
		}
		return { left:curleft, top:curtop };
	}
	catch (err)
	{
		return { left:-32767, top:-32767 };
	}
}

//
// Aligns two HTML elements
// <string>  sourceElementId - id of the HTML element that serves as the anchor to the alignment
// <string>  movingElementId - id of the HTML element that will be moved to align
// <boolean> alignTopRightCorners - by default the top left corners of the two elements will be
// 				    aligned, if this parameter is true, the corners used to align 
//				    will be the top right ones.
//
function alignElements()
{
	try
	{
		var position = GetElementPosition(sourceElementId);
	
		if(position.left != -32767)
		{
			var movingElement = document.getElementById(movingElementId);
			if(movingElement != null)
			{
				if(alignTopRightCorners)
				{
					var sourceElement = document.getElementById(sourceElementId);
					movingElement.style.left = position.left - movingElement.clientWidth + sourceElement.clientWidth + 'px';
				}
				else
					movingElement.style.left = position.left + 'px';
				movingElement.style.top = position.top + 'px';
			}
		}
	}
	catch (err) { }
}
