

var ie4 = (document.all) ? true : false;
var ns4 = (document.layers) ? true : false;
var ns6 = (document.getElementById && !document.all) ? true : false;


// Checks whether the inputStr value is empty
function isEmpty(inputStr) {
	if (inputStr == null || inputStr == "" || inputStr.length == 0) {  //empty
		return true;
	}
	else if(inputStr.length > 0 && inputStr.charAt(0)==' '){      //non empty
        return false;
    }

return false;
}

function checkEmail(emailStr) {
	//if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(emailStr)){
    if (/(^[\-_\'\.a-zA-Z0-9]+)@((([0-9]{1,3}\.){3}([0-9]{1,3})((:[0-9])*))|(([a-zA-Z0-9\-]+)(\.[a-zA-Z]{2,})+(\.[a-zA-Z]{2})?((:[0-9])*)))$/.test(emailStr)){
		return true
	}
	return false;
}

function checkURL(url) {
    //if(/^(?:(?:ftp|https?):\/\/)?(?:[a-z0-9](?:[-a-z0-9]*[a-z0-9])?\.)+(?:com|edu|biz|org|gov|int|info|mil|net|name|museum|coop|aero|[a-z][a-z])\b(?:\d+)?(?:\/[^;"'<>()\[\]{}\s\x7f-\xff]*(?:[.,?]+[^;"'<>()\[\]{}\s\x7f-\xff]+)*)?/.test(url)){
    if (/((([0-9]{1,3}\.){3}([0-9]{1,3})((:[0-9])*))|(([a-zA-Z0-9\-]+)(\.[a-zA-Z]{2,})+(\.[a-zA-Z]{2})?((:[0-9])*)))/.test(url)) {
    return true;
 }
  return false;

}

function checkPhoneNo(phoneStr) {

	if (/^[+]*\d+([\s-]?\d+)*$/.test(phoneStr)){

		return true;
	}
	return false;
}

//validates the conference account or pin number
function checkConfAccountNo(accountOrPinStr) {

	if (/^(\*|#|\+|[0-9])*$/.test(accountOrPinStr)){
		//string contains correct fields.
		return true;
	}
	return false;
}

//validates the conference name (can only be one or more of a-z A-Z 0-9 _ - ')
function checkConfName(inputName) {
	if (/^([a-z]|[A-Z]|\-|_|\'|[0-9]|\s)*$/.test(inputName)){
		return true;
	}
	return false;
}

/* When field is not compulsory, but needs validation for junk chars. */
function checkNonCompulsoryPhoneNo(phoneStr) {


	if(phoneStr==""){
		return true
	}
	else if(/^[+]*\d+([\s-]?\d+)*$/.test(phoneStr)){

		return true;
	}
	return false;
}

//validates the event/item name (can only be one or more of a-z A-Z 0-9 _ - ' @)
function checkEventItemName(inputName) {
	if (/^([a-z]|[A-Z]|\-|_|\'|[0-9]|\s|\(|\)|@)*$/.test(inputName)){
		return true;
	}
	return false;
}


//validates if passed value is a number (0+)
function isNumber(vNumber) {
	
	if (vNumber != null && vNumber.length != 0 && /^[0-9]*$/.test(vNumber)){
		return true;
	}
	return false;
}


var defaultEmptyOK = false;
// Returns true if character c is an English letter
// (A .. Z, a..z).
function isLetter (c) {
    return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) )
}

// Returns true if character c is a digit
// (0 .. 9).

function isDigit (c)
{   return ((c >= "0") && (c <= "9"))
}

function isSpace (c)
{   return (c == " ")
}


// isAlphabetic (STRING s [, BOOLEAN emptyOK])
//
// Returns true if string s is English letters
// (A .. Z, a..z) only.
function isAlphabetic (s) {
    var i;
    if (isEmpty(s))
       if (isAlphabetic.arguments.length == 1) return defaultEmptyOK;
       else return (isAlphabetic.arguments[1] == true);

    // Search through string's characters one by one
    // until we find a non-alphabetic character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)
    {
        // Check that current character is letter.
        var c = s.charAt(i);

        if (!isLetter(c))
        return false;
    }

    // All characters are letters.
    return true;
}

// Returns true if string s is English letters or space
// (A .. Z, a..z , " ") only.
function isAlphabeticSpace(s) {
    var i;
    if (isEmpty(s))
    {   return false;  }
  //    if (isAlphabetic.arguments.length == 1) return defaultEmptyOK;
  //     else return (isAlphabetic.arguments[1] == true);

    // Search through string's characters one by one
    // until we find a non-alphabetic character.
    // When we do, return false; if we don't, return true.


    for (i = 0; i < s.length; i++)
    {

        // Check that current character is letter.
        var c = s.charAt(i);

        // if first char is space
        /**if(i==0 && c==' '){
        return false;
        }**/


        if (!isLetter(c) && (c != " "))
        return false;

    }

    // All characters are letters.
    return true;
}

function isAlphanumericSpace(s)
{   var i;


    // Search through string's characters one by one
    // until we find a non-alphanumeric character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)
    {


        // Check that current character is number or letter.
        var c = s.charAt(i);

        // if first char is space
        if(i==0 && c==' '){
        return false;
        }

        if ( ! (isLetter(c) || isDigit(c) || c == ' '  )  )
        {
         return false;
        }
    }

    // All characters are numbers or letters.
    return true;
}

// Returns true if character c is a letter or digit.

function isLetterOrDigit (c)
{   return (isLetter(c) || isDigit(c))
}

// isAlphanumeric (STRING s [, BOOLEAN emptyOK])
//
// Returns true if string s is English letters
// (A .. Z, a..z) and numbers only.
//
// For explanation of optional argument emptyOK,
// see comments of function isInteger.
//
// NOTE: Need i18n version to support European characters.
// This could be tricky due to different character
// sets and orderings for various languages and platforms.

function isAlphanumeric (s)

{   var i;

    if (isEmpty(s))
       if (isAlphanumeric.arguments.length == 1) return defaultEmptyOK;
       else return (isAlphanumeric.arguments[1] == true);

    // Search through string's characters one by one
    // until we find a non-alphanumeric character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)
    {
        // Check that current character is number or letter.
        var c = s.charAt(i);

        if (! (isLetter(c) || isDigit(c) ) )
        return false;
    }

    // All characters are numbers or letters.
    return true;
}

/** Check if the name is valid - alphabetic and spaces are allowed. */
function isValidName (s)

{   var i;

    /*if (isEmpty(s))
       if (isAlphanumeric.arguments.length == 1) return defaultEmptyOK;
       else return (isAlphanumeric.arguments[1] == true);
    */
    // Search through string's characters one by one
    // until we find a non-alphanumeric character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)
    {
        // Check that current character is number or letter.
        var c = s.charAt(i);

        if (! (isLetter(c) || isDigit(c) || isSpace(c) ) )
        return false;
    }

    // All characters are numbers or letters.
    return true;
}

function isPasswordValid(s) {
    if (s.length < 4 || s.length > 16) {
        return false;
    }
    /*
    if (!isAlphanumeric(s)) {
        return false;
    }
    */
    return true;
}

function isUsernameValid(s) {
    if (s.length < 4 || s.length > 30) {
        return false;
    }
    if (!isAcceptablePassword(s)) {
        return false;
    }
    return true;
}

function checkTitle(titleStr) {
	if (/^[a-zA-Z\.]+$/.test(titleStr)){
		return true
	}
	return false;
}

function checkPinCode(PinCode) {
	if (/^[\d]{3,}$/.test(PinCode)){
		return true;
	}
		return false;
}

//accepts chars a-z A-Z 0-9, and spaces only between letters.
function isAcceptableName(inputName) {
	if (/(^[a-zA-Z\-_\'0-9])([a-zA-Z\-_\'0-9\s]*)([a-zA-Z\-_\'0-9]$)/.test(inputName)){
		return true;
	}
return false;
}

//accepts chars a-z A-Z 0-9, and spaces only between letters.
function isAcceptablePassword(input) {
	if (/(^[a-zA-Z0-9])([a-zA-Z_0-9\.]*)([a-zA-Z0-9]$)/.test(input)){
		return true;
	}
return false;
}
