// -----------------------------------------------------------------------------
//                            Base Function Definition
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
function elimBegEndSpaces( inputStr )
{
  if( isEmpty(inputStr) )
        return("")
  var i = 0
  var end = 0
  while( inputStr.charAt(i) == " ")    // eliminate beginning chars
    i++
  while( inputStr.charAt( inputStr.length - 1 - end) == " ")
    end++
  return( inputStr.substring(i,(inputStr.length - end)) )
}
//---------------------------------------------------------------------------
function elimSpaces( inputStr )
{
  str = ""
  i = 0
  end = 0
  oneSpace = false

  while( inputStr.charAt(i) == " ")    // eliminate beginning chars
    i++
  while( inputStr.charAt( inputStr.length - 1 - end) == " ")
    end++

  for( var j = i; j < inputStr.length - end; j++)
  {
    if( inputStr.charAt(j) != " " || !oneSpace)
      str += inputStr.charAt(j)
    if( inputStr.charAt(j) == " ")
      oneSpace = true
  }
  return(str)
}

//---------------------------------------------------------------------------
function filterSpace( inputVal)
{

    outputVal = ""
    inputStr = "" + inputVal
    for( var i = 0; i < inputStr.length; i++)
    {
        if( inputStr.charAt(i) != " ")
            outputVal += inputStr.charAt(i)
    }
    return outputVal
}


//---------------------------------------------------------------------------
// returns true if string is empty or null
function isEmpty( inputStr)
{
    if(inputStr == null || inputStr == "")
	return true
    else
        return false
}

// --------------------------------------------------------------------------
// returns > 0 if string is all numbers
function isNumeric( inputVal)
{
    inputStr = "" + inputVal
    if( isEmpty( inputStr) )
	return false
    for( var i = 0; i < inputStr.length; i++)
    {
    	var oneChar = inputStr.charAt(i)
	if( oneChar < "0" || oneChar > "9")
	    return false		// non-numeric character
    }
    return true			// only numbers in string
}

//---------------------------------------------------------------------------
function isLetters( inputVal )
{
    if( isEmpty( inputVal) )
	return false
    for( i=0; i<inputVal.length; i++ ) {
        var onechar = inputVal.charAt(i)
    	if( (onechar <"A") || (onechar >"Z" && onechar <"a") || (onechar >"z")  )
		return false
    }
    return true
}

//---------------------------------------------------------------------------
// returns > 0 if number is integer or real
function isNumber( inputVal)
{
    inputStr = "" + inputVal
    if( isEmpty( inputStr) )
	    return 0
    oneDecimal = false
    for( var i = 0; i < inputStr.length; i++)
    {
    	var oneChar = inputStr.charAt(i)
	    if( oneChar =="." && !oneDecimal)
	    {
	        oneDecimal = true
	        continue
	    }
	    if( oneChar < "0" || oneChar > "9")
	        return 0		// invalid number
    }
    if( oneDecimal)
	    if( inputStr.charAt( inputStr.length - 3) == '.')
        {
            if(parseFloat(inputStr) >= 1.00 )
	            return 1		// valid money format and amount
            return 3
        }
        else
            return 0
    else
	    return 2		// integer number (or empty string)
}

//---------------------------------------------------------------------------
//isRightMoney() No: 0 Yes: 1
function isRightMoney( inputVal) 
{
    var count = 0;
    inputStr = "" + inputVal
    for( var i = 0; i < inputStr.length; i++) 
    {
    	var oneChar = inputStr.charAt(i)
	if(oneChar == ".")
	  count++;
	if((oneChar < "0" && oneChar != ".") || oneChar > "9") 
	    return 0		// non-numeric character
    }

    if(count > 1)
      return 0;

    return 1			// only numbers and one . in string
}	
//---------------------------------------------------------------------------

// returns > 0 if number is integer or real, 6 is ok, 5 is decimal wrong, 4 is <1.00, 3 is > maxVal
function isNumberMax( inputVal, maxVal)
{
    oneDecimal = false
    inputStr = "" + inputVal
    if( isEmpty( inputStr) )
	return false

    for( var i = 0; i < inputStr.length; i++)
    {
    	var oneChar = inputStr.charAt(i)
	if( oneChar =="." && !oneDecimal)
	{
	    oneDecimal = true
	    continue
	}
	if( oneChar < "0" || oneChar > "9")
	    return 0		// invalid number
    }
    if( oneDecimal)
	if( inputStr.charAt( inputStr.length - 3) == '.' && parseFloat(inputStr)>49.99 && parseFloat(inputStr)<=maxVal)
	    return 6		// valid money amount
	else if( inputStr.charAt( inputStr.length - 3) != '.')
	    return 5
	else if (parseFloat(inputStr) <50.00)
	    return 4
	else if ( parseFloat(inputStr) >maxVal)
	    return 3
	else
	    return 0		// real number, but invalid amount

    else
	return 5		// integer number (or empty string)
}

//---------------------------------------------------------------------------
// returns > 0 if string is all letters
function isAlphaSpec( inputVal)
{
    inputStr = "" + inputVal
    if( isEmpty( inputStr) )
	return 0
    oneSpaceFlag = false
    for( var i = 0; i < inputStr.length; i++)
    {
    	var oneChar = inputStr.charAt(i)
	if( oneChar == " " && !oneSpaceFlag )
	{
      	        oneSpaceFlag = true
 		continue
	}
	if( oneChar < "'" || (oneChar > "'" && oneChar < "-") || (oneChar > "-" && oneChar < "A") ||
		(oneChar > "Z" && oneChar < "a") || oneChar > "z" )
	    return 0		// non alpha, ', - character
    }
    return 1			// only letters in string
}
//---------------------------------------------------------------------------


function validCard(cardnum)


    {
        	
        	if (CheckLUHN(cardnum))
        		alert("you have a valid card");
        	else
        		alert("this is not a valid card number");
        		
        	return 1;
    }
    /*
    * num CheckLUHN(string)
    *
    * Input: A credit card number
    * Output: A boolean (1 or 0) indicating whether this
    * 	is a valid credit card number using the LUHN
    *	formula
    *
    */
    function CheckLUHN(cardnum)


        {
        	var RevNum = new String(cardnum);
        	
        	RevNum = Reverse(RevNum);
        	
        	var total = new Number(0);
        	
        	for ( var i = 0; i < RevNum.length; i += 1 )


            	{
            		var temp = 0;
            		if (i % 2)


                		{
                			temp = RevNum.substr(i, 1) * 2;
                			if (temp >= 10)


                    			{
                    				var splitstring = new String(temp);
                    				temp = parseInt(splitstring.substr(0, 1)) + parseInt(splitstring.substr(1, 1));
                    			}
                    		}
                    		else
                    			temp = RevNum.substr(i, 1);
                    			
                    		total += parseInt(temp); 
                    	}
                    	
                    	// if there's no remainder, we return 1 (true)
                    	return (total % 10) ? 0 : 1;
                }
                /*
                * str Reverse(str)
                *
                * Input: A string
                * Output: The string, reversed
                *
                */
                function Reverse(strToReverse)


                    {
                    	var strRev = new String;
                    	var i = strToReverse.length;
                    	
                    	while (i--)
                    		strRev += strToReverse.charAt(i);
                    	
                    	return strRev;
                }


function validEmail(email)
{
    reg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/;    // not valid
    reg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;	// valid

    if( !reg1.test( email) && reg2.test( email))
	return true
    //alert( "Please check your E-mail.")
    return false
}

// end this file



