var FormValidation =
{
	init: function()
	{
		var forms = document.getElementsByTagName("form");
		
		for (var i = 0; i < forms.length; i++)
		{
			$(forms[i]).bind("submit", FormValidation.submitListener);
		}
	},

	rules:
	{
		//required: /./,
		//requiredNotWhitespace: /\S/,
		subject: /./,
		message: /./,
		positiveInteger: /^\d*[1-9]\d*$/,
		positiveOrZeroInteger: /^\d+$/,
		integer: /^-?\d+$/,
		decimal: /^-?\d+(\.\d+)?$/,
		email: /^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$/,
		telephone: /^(\+\d+)?( |\-)?(\(?\d+\)?)?( |\-)?(\d+( |\-)?)*\d+$/,
		confirm: /gepkw/
	},

	errors:
	{
		required: "Please fill in this required field.",
		subject: "Please fill in the subject field.",
		message: "Please write a message.",
		positiveInteger: "This field may only contain a positive whole number.",
		positiveOrZeroInteger: "This field may only contain a non-negative whole number.",
		integer: "This field may only contain a whole number.",
		decimal: "This field may only contain a number.",
		email: "Please enter a valid email address into this field.",
		telephone: "Please enter a valid telephone number into this field.",
		confirm: "Please enter correct confirmation code!"
	},
	
	submitListener: function(event)
	{
		var fields = this.elements;
		
		for (var i = 0, ii = fields.length; i < ii; i++)
		{
			var className = fields[i].className;
			var classes = className.split(" ");
			
			for (var j = 0, jj = classes.length; j < jj; j++)
			{
				var oneClass = classes[j];
				var rule = FormValidation.rules[oneClass];
				if (rule)
				{
					if (!rule.test(fields[i].value))
					{
						fields[i].focus();
						alert(FormValidation.errors[oneClass]);
						event.preventDefault();
						return;
					}
				}
			}
		}
	}
};

FormValidation.init();

var Tooltips =
{
	init: function()
	{
		var links = $("a");
		
		for (var i = 0, ii = links.length; i < ii; i++)
		{
			if (links[i].title && links[i].title.length > 0)
			{
				var tipContainer = document.createElement("span");
				tipContainer.className = links[i].className + " tipcontainer";
				
				links[i].parentNode.replaceChild(tipContainer, links[i]);
				tipContainer.appendChild(links[i]);
				
				$(links[i]).bind("mouseover", Tooltips.showTipListener);
				$(links[i]).bind("focus", Tooltips.showTipListener);
				$(links[i]).bind("mouseout", Tooltips.hideTipListener);
				$(links[i]).bind("blur", Tooltips.hideTipListener);
			}
		}
	},

	showTipListener: function(event)
	{
		var link = this;
		
		var doShowTip = function()
		{
			Tooltips.showTip(link);
		};
		
		this._timer = setTimeout(doShowTip, 500);
		
		event.preventDefault();
	},
	
	hideTipListener: function(event)
	{
		clearTimeout(this._timer);
		
		Tooltips.hideTip(this);
	},

	showTip: function(link)
	{
		if (!link.nextSibling)
		{
			var tip = document.createElement("span");
			tip.className = "tooltip";
			var tipText = document.createTextNode(link.title);
			tip.appendChild(tipText);
			link.parentNode.appendChild(tip);

			link.title = "";
		}
	},
	
	hideTip: function(link)
	{
		if (link.nextSibling)
		{
			var tip = link.nextSibling;
			link.title = tip.firstChild.nodeValue;
			link.parentNode.removeChild(tip);
		}
	}
};

Tooltips.init();



var ResolutionDetect =
{
	init: function()
	{
		var screenResol = screen.availWidth;
		var browserName = navigator.appVersion;
		browserName = browserName.match("Trident");
		screenResol = Number(screenResol);	
		if (browserName == "Trident")
		{
			$("#toufee").animate({marginLeft:"4px"},"fast");
			if (screenResol >= 1300)
			{
				$("#omButton").animate({left:"5.8%"},"fast");
			} 	
		} else
		{
			if (screenResol >= 1300)
			{
				$("#omButton").animate({left:"5.8%"},"fast");
			} 
		}
		
	}
};

ResolutionDetect.init();
