//********************************************************************
//*-------------------------------------------------------------------
//* Licensed Materials - Property of IBM
//*
//* WebSphere Commerce
//*
//* (c) Copyright International Business Machines Corporation. 2003
//*     All rights reserved.
//*
//* US Government Users Restricted Rights - Use, duplication or
//* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
//*
//*-------------------------------------------------------------------
//*

//////////////////////////////////////////////////////////
// Checks whether a string contains a double byte character
// target = the string to be checked
//
// Return true if target contains a double byte char; false otherwise
//////////////////////////////////////////////////////////
function containsDoubleByte (target) {
     var str = new String(target);
     var oneByteMax = 0x007F;

     for (var i=0; i < str.length; i++){
        chr = str.charCodeAt(i);
        if (chr > oneByteMax) {return true;}
     }
     return false;
}

//////////////////////////////////////////////////////////
// A simple function to validate an email address
// It does not allow double byte characters
// strEmail = the email address string to be validated
//
// Return true if the email address is valid; false otherwise
//////////////////////////////////////////////////////////
function isValidEmail(strEmail){
	// check if email contains dbcs chars
	if (containsDoubleByte(strEmail)){
		return false;
	}
	
	if(strEmail.length == 0) {
		return true;
	} else if (strEmail.length < 5) {
             return false;
       	}else{
           	if (strEmail.indexOf(" ") > 0){
                      	return false;
               	}else{
                  	if (strEmail.indexOf("@") < 1) {
                            	return false;
                     	}else{
                           	if (strEmail.lastIndexOf(".") < (strEmail.indexOf("@") + 2)){
                                     	return false;
                                }else{
                                        if (strEmail.lastIndexOf(".") >= strEmail.length-2){
                                        	return false;
                                        }
                              	}
                       	}
              	}
       	}
      	return true;
}



//////////////////////////////////////////////////////////
// This function will count the number of bytes
// represented in a UTF-8 string
//
// arg1 = the UTF-16 string
// arg2 = the maximum number of bytes allowed in your input field
// Return false is this input string is larger then arg2
// Otherwise return true...
//////////////////////////////////////////////////////////
function isValidUTF8length(UTF16String, maxlength) {
    if (utf8StringByteLength(UTF16String) > maxlength) return false;
    else return true;
}

//////////////////////////////////////////////////////////
// This function will count the number of bytes
// represented in a UTF-8 string
//
// arg1 = the UTF-16 string you want a byte count of...
// Return the integer number of bytes represented in a UTF-8 string
//////////////////////////////////////////////////////////
function utf8StringByteLength(UTF16String) {
  if (UTF16String === null) return 0;
  var str = String(UTF16String);
  var oneByteMax = 0x007F;
  var twoByteMax = 0x07FF;
  var byteSize = str.length;

  for (i = 0; i < str.length; i++) {
    chr = str.charCodeAt(i);
    if (chr > oneByteMax) byteSize = byteSize + 1;
    if (chr > twoByteMax) byteSize = byteSize + 1;
  }  
  return byteSize;
}
/****************************************************************************
* Check if the input string 'id' is empty
*
* Returns true or false
****************************************************************************/
function isInputStringEmpty(id)
{
  return !id.match(/[^\s]/);
}

//////////////////////////////////////////////////////////
// This function will validate a typical name field
// and restrict it to pretty much alphanumerics.
// All special characters are invalid with some exceptions
// " ", "-", "_", and "." are all valid
// The string can also not start with a leading number
// The string can also not be empty
// call with ::
//    arg1=<myInputString>
//
// return true is name is valid, false otherwise
// by Glen Shortliffe
//////////////////////////////////////////////////////////
function isValidName(myString) {
    var invalidChars = "~!@#$%^&*()+=[]{};:,<>?/|`"; // invalid chars
    invalidChars += "\t\'\"\\"; // escape sequences
    var invalidStartChars = "0123456789";

    // look for presence of invalid characters.  if one is
    // found return false.  otherwise return true
    for (var i=0; i<myString.length; i++) {
      if (invalidChars.indexOf(myString.substring(i, i+1)) >= 0) {
        return false;
      }
    }

    // look for a leading number... and disallow it.
    var startChar = myString.substring(0,1);
    for (var i=0; i<invalidStartChars.length; i++) {
      if (invalidStartChars.indexOf(startChar) >= 0) {
        return false;
      }
    }

    return true;
}
//////////////////////////////////////////////////////////
// This function will validate a typical name field
// and restrict it to pretty much alphanumerics.
// All special characters are invalid with some exceptions
// " ", "-", "_", and "." are all valid
// call with ::
//    arg1=<myInputString>
//
// return true if name has special charecters, false otherwise
// By: Suresh Raja Bollipo M1006976
//////////////////////////////////////////////////////////
function hasSpecialChars(strValue){
	var invalidChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?";
	invalidChars += "\t\'\"\\";
	
	// look for presence of invalid characters.  if one is
    // found return false.  otherwise return true
    for (var i=0; i<strValue.length; i++) {
      if (invalidChars.indexOf(strValue.substring(i, i+1)) >= 0) {
        return true;
      }
    }
	
	return false;	
}
//////////////////////////////////////////////////////////
// This function will validate a typical Phone Number Field
// call with ::
//    arg1=<myInputString>
//
// return true if phone number is valid, false otherwise
// By: Suresh Raja Bollipo M1006976
//////////////////////////////////////////////////////////
function isValidPhoneNumber(strValue){
	var invalidChars = "0123456789()-+";
	var count = 0;
	// look for presence of invalid characters.  if one is
    // found return false.  otherwise return true
    for (var i=0; i < strValue.length; i++) {
      if (invalidChars.indexOf(strValue.substring(i, i+1)) >= 0) {
        count++;
      }
    }
	if(count == strValue.length) return true;	
	else return false;
}

