/*
 * Check if the input string is an url
 */
function ValIsEmail(strEmail)
{
	var emailFilter = /^\w+([\-\.]\w+)*\@\w+([\-\.]\w+)*\.[a-z]{2,6}$/i;

	if (emailFilter.test(strEmail)) {
		return 1;
	} else {
		return 0;
	}
}

/*
 * Check if the input string is an url
 */
function ValIsUrl(strUrl)
{
	var urlFilter = /^[A-z0-9\.-].+\..{2,4}.+/;

	if (urlFilter.test(strUrl)) {
		return 1;
	} else {
		return 0;
	}
}

/*
 * Check if a string is empty
 */
function ValIsEmpty(strInput)
{
	if (!strInput.length) {
		return 1;
	} else {
		return 0;
	}
}

function ValIsSmallerThan(strInput, iLength)
{
	if (strInput.length < iLength) {
		return 1;
	} else {
		return 0;
	}
}

function ValIsLargerThan(strInput, iLength)
{
	if (strInput.length > iLength) {
		return 1;
	} else {
		return 0;
	}
}

function ValIsLength(strInput, iLength)
{
	if (strInput.length == iLength) {
		return 1;
	} else {
		return 0;
	}
}

function isValidCharSet(str, charset)
{
	var result = true;

	for (var i = 0 ; i < str.length; i++) {
		if (charset.indexOf(str.substr(i,1)) < 0) {
			result = false;
			break;
		}
	}

	return result;
}

function isValidCreditCardNumber(strInput, strType)
{
	result = 1;
	if (!isValidCharSet(strInput, "0123456789") || !LuhnCheck(strInput)) {
		result = 0;
	} else {
		strType = strType.toUpperCase();
		var cardLen = strInput.length;
		var firstdig = strInput.substring(0,1);
		var seconddig = strInput.substring(1,2);
		var first4digs = strInput.substring(0,4);

		switch (strType) {
			case "DANKORT":
				result = (cardLen == 16);
			break;
			case "VISA":
				result = ((cardLen == 16) || (cardLen == 13)) && (firstdig == "4");
			break;
			case "AMEX":
				var validNums = "47";
				result = (cardLen == 15) && (firstdig == "3") && (validNums.indexOf(seconddig) >= 0);
			break;
			case "MASTERCARD":
				var validNums = "12345";
				result = (cardLen == 16) && (firstdig == "5") && (validNums.indexOf(seconddig) >= 0);
			break;
			case "DISCOVER":
				result = (cardLen == 16) && (first4digs == "6011");
			break;
			case "DINERS":
				var validNums = "068";
				result = (cardLen == 14) && (firstdig == "3") && (validNums.indexOf(seconddig) >= 0);
			break;
		}
	}

	return result;
}

function LuhnCheck(str)
{
	var result = true;
	var sum = 0;
	var mul = 1;
	var strLen = str.length;

	for (i = 0; i < strLen; i++) {
		var digit = str.substring(strLen-i-1,strLen-i);
		var tproduct = parseInt(digit ,10) * mul;

		if (tproduct >= 10) {
			sum += (tproduct % 10) + 1;
		} else {
			sum += tproduct;
		}

		if (mul == 1) {
			mul++;
		} else {
			mul--;
		}
	}

	if ((sum % 10) != 0) {
		result = false;
	}

	return result;
}

function IsNumeric(sText)
{
	var ValidChars = "0123456789";
	var IsNumber=true;
	var Char;

	for (i = 0; i < sText.length && IsNumber == true; i++) {
		Char = sText.charAt(i); 
		if (ValidChars.indexOf(Char) == -1) {
			IsNumber = false;
		}
	}

	return IsNumber;
}
