// This file contains general JS functions for the ZolkaBlog.

// ----------------------------------------------------------------
// Trim functions
function Trim(str)
{
	str = LTrim(str);
	return RTrim(str);
}
function RTrim(str)
{
	while (str.charAt((str.length - 1)) == " ")
	{
		str = str.substring(0, str.length - 1);
	}
	return str;
}
function LTrim(str)
{
	while(str.charAt(0) == " ")
	{
		str = str.replace(str.charAt(0), "");
	}
	return str;
}
// ----------------------------------------------------------------


// ----------------------------------------------------------------
// Validator functions
function ValidateNotEmpty(idText, warnImgId)
{
	var oImg = this.document.getElementById(warnImgId);
	var oText = this.document.getElementById(idText);
	if (oText == null)
		return;

	var text = Trim(oText.value);
	if (text == "")
	{
		if (oImg != null)
			oImg.style.visibility = "visible";
		return false;
	}
	else
	{
		if (oImg != null)
			oImg.style.visibility = "hidden";
		return true;
	}
}

var emailIllegalCharsRegexp = new RegExp("[\\s\\b!#\\$\\%\\&\\'\\(\\)\\*\\,\\\\\":;<>\\?\\[\\]`|]+");
function ValidateEmail(idText, warnImgId, obligatory)
{
	var oText = this.document.getElementById(idText);
	if (oText == null)
		return;
		
	var oImg = this.document.getElementById(warnImgId);
	if (oImg == null)
		return;

	var isValid = true;	
	var text = Trim(oText.value);
	var lstr = text.length;
	
	if (obligatory || ((lstr > 0) && (text != "emailcím")))
	{
		var at = "@";
		var dot = ".";
		var lat = text.indexOf(at);
		var ldot = text.indexOf(dot);
		
		if ((lat <= 0) || (lat >= lstr - 1))			// @ check, @ at the first, and last position
		{
			isValid = false;
		}
		else if (text.match(emailIllegalCharsRegexp))	// illegal char check
		{
			isValid = false;
		}
		else if ((ldot <= 0) || (ldot >= lstr - 1))		// . at first, last position, and at least one
		{
			isValid = false;
		}
		else if (text.charAt(lstr-1) == dot)			// . at the last position?
		{
			isValid = false;
		}
		else if (text.indexOf(at, (lat + 1)) != -1)		// more than one @ check
		{
			isValid = false;
		}
		else if (text.indexOf("..", (lat + 1)) != -1)		// .. check after @
		{
			isValid = false;
		}
		else if ((text.substring(lat - 1, lat) == dot) || (text.substring(lat + 1, lat + 2) == dot))
		{												// .@ or @. search
			isValid = false;
		}
		else if (text.indexOf(dot, (lat + 2)) == -1)	// . must be after @
		{
			isValid = false;
		}
	}

		
	if (isValid)
		oImg.style.visibility = "hidden";
	else
		oImg.style.visibility = "visible";
	
	return isValid;
}
// ----------------------------------------------------------------


// ----------------------------------------------------------------
// Email Editboxes eyecandy
function EmailEditGotFocus(o)
{
	if (o.value == 'emailcím') 
	{
		o.value = "";
		o.className = "input";
	}
}

function EmailEditLostFocus(o)
{
	if (o.value == "")
	{
		o.value = "emailcím";
		o.className = "inputinfotext";
	}
}
// ----------------------------------------------------------------


// ----------------------------------------------------------------
// VisibilityChanger
function zPostVisibilityChange(toHideArray, toShowArray)
{
	for (var i = 0; i < toHideArray.length; i++)
	{
		var oHideDiv = this.document.getElementById(toHideArray[i]);
		if (oHideDiv == null)
			continue;
		
		oHideDiv.style.display = "none";
	}
	
	for (var i = 0; i < toShowArray.length; i++)
	{
		var oShowDiv = this.document.getElementById(toShowArray[i]);
		if (oShowDiv == null)
			continue;
		
		oShowDiv.style.display = "block";
	}
}
// ----------------------------------------------------------------
