//
//	klasa wykonujaca operacje na stringach
//

function str()
{
	this.trim = trim		//	funkcja obcinajaca spacje z prawej i lewej strony stringu
	this.isMail = isMail	//	czy podany string jest adresem e-mail
	this.isDate = isDate
	this.isInt = isInt
	this.isNatural = isNatural
	this.isNumber = isNumber
	this.isYear = isYear 

	//
	//	ocbiecie pustych spacji
	//

	function trim(variable)
	{
		if (typeof(variable) != 'string' && typeof(variable) != 'number')
		{
			alert('stringOperations.js | trim() - incorrect input type')
			return ''
		}

		var i = new Number
		var beginning = new Number		//	poczatek stringu bez spacji
		var ending = new Number			//	koniec stringu bez spacji

		for (i = 0; i < variable.length ;i++ )
			if (variable.charCodeAt(i) != 32)
				break			

		beginning = i

		for (i = variable.length-1; i > -1 ; i--)
			if (variable.charCodeAt(i) != 32)
				break
	
		ending = i

		return variable.substr(beginning, ending-beginning+1)
	}

	//
	//	sprawdzsenie czy string jest poprawnym adresm e-mai
	//

	function isMail(variable)
	{
		pattern =/^[0-9a-zA-Z.]+\@[0-9a-zA-Z]+\.[0-9a-zA-Z.]+$/

		return pattern.test(variable)
	}

	function isDate(variable)
	{
		var year = parseInt(variable.substring(0,4))
		var month = variable.substring(5,7)
		var day = variable.substring(8,10)

		if (month.substring(0,1) == 0)
			month = parseInt(month.substring(1,2))
		else
			month = parseInt(month)

		if (day.substring(0,1) == 0)
			day = parseInt(day.substring(1,2))
		else
			day = parseInt(day)

		if (isNaN(year) || isNaN(month) || isNaN(day) || day < 1 || day > 31 || month < 1 || month > 31)
			return false

		var tempDate = new Date(year, month-1, day, 12, 0, 0)

		if (tempDate.getDate() != day || tempDate.getMonth()+1 != month)
			return false

		return true
	}

	//
	//	sprawdzenie czy string jest liczba (dowolna)
	//

	function isNumber(variable)
	{
		re = new RegExp("^\\d+([,]\\d{1,2})?$")	

		if(!re.test(variable))
			return false

		return true
	}

	//
	//	sprawdzenie czy string jest liczba calkowita
	//

	function isInt(variable)
	{
		re = new RegExp("^\\d+$")	

		if(!re.test(variable))
			return false

		return true
	}

	//
	//	sprawdzenie czy string jest liczba naturalna
	//

	function isNatural(variable)
	{
		re = new RegExp("^[1-9]+$")	

		if(!re.test(variable))
			return false

		return true
	}

	//
	//	sprawdzenie czy string jest rokiem
	//

	function isYear(variable)
	{
		re = new RegExp("^[1-9]+\\d{3}")	

		if(!re.test(variable))
			return false

		return true
	}
}

strOp = new str()
