
// Pro DJs validation functions

function properCase(strInput, strSplitChar)
{
    // converts a string to Proper Case
    if (strSplitChar == undefined)
    {
          // use space by default
          var strSplitChar = " ";
    }

    strArray = strInput.split(strSplitChar);

    for (var i = 0; i < strArray.length; i++)
    {
        if (strArray[i].length > 1)
        {
            strArray[i] = strArray[i].charAt(0).toUpperCase() + strArray[i].substr(1).toLowerCase();
        }
        else if (strArray[i].length == 1)
        {
            strArray[i] = strArray[i].toUpperCase();
        }
    }
    return strArray.join(" ");
}

/*
 * validate email address, check for illegal characters, check there is one
 * @ sign and at least one . after it. return true or false
 */
function validateEmail(tempEmail)
{

   var valid = true;
   len = tempEmail.length;

   if(len==0){
        valid = false;
   }


   spaces = tempEmail.indexOf(' ');
        // check for spaces
        if(spaces != -1)
                valid = false;

   ampers = tempEmail.indexOf('&');
        // check for ampersands
        if(ampers != -1)
                valid = false;

   at = tempEmail.indexOf('@');
        // check there is a at sign
        if(at == -1)
                valid = false;

   atmore = tempEmail.indexOf('@',(at+1));
        // check for more at signs
        if(atmore != -1)
                valid = false;

   dot = tempEmail.indexOf('.',at);
        // check for a dot after the at sign
        if(dot== -1)
                valid = false;

   if((at == 0)||(at== len))
   {
        // check where the at sign is
        valid = false;
   }

   return valid;
}

/*
 * returns true if password is >= minlength and alphanumeric
 */

/*
 * another way to check valid email address
 */

 function isValidEmail(strEmail)
 {
    var  validRegExp = /^[^@]+@[^@]+.[a-z]{2,}$/i;

     // search email text for regular exp matches
    if (strEmail.search(validRegExp) == -1)
    {
      return false;
    }
    return true;
 }

function isValidPassword(password,minlength)
{
    var valid = false;
    var alpha_flag = false;
    var numeric_flag = false;
    password = password.toString().toLowerCase();
    if (password.length >= minlength)
    {
        for (i = 0; i < password.length; i++)
        {
            if ( (password.charCodeAt(i) >= 48) && (password.charCodeAt(i) <= 57) )
            {
                numeric_flag = true;
            }
            if ( (password.charCodeAt(i) >= 97 ) && (password.charCodeAt(i) <= 122) )
            {
                alpha_flag = true;
            }
            if (numeric_flag && alpha_flag)
            {
                valid = true;
                break;
            }
        }
    }
    return valid;
}

/*
 * returns true if the file extension of the file is in the validtypes string
 * eg validtype = "gif,jpg,jpeg"
 */
function validFileType(fullpath, validtypes)
{
    var valid = false; // assume not a valid type
    var ext_start = fullpath.lastIndexOf(".");

    if (ext_start != -1)
    {
        var ext = fullpath.substring(ext_start + 1);
        ext = ext.replace(/(^\s)|(\s$)/g,"");
        ext = ext.toLowerCase();

        if (validtypes != "")
        {
            var arr = validtypes.split(",");

            for (var i = 0; i < arr.length; i++)
            {
                var type = arr[i];
                type = type.replace(/(^\s)|(\s$)/g,"");

                if (type == ext)
                {
                    valid = true;
                    break;
                }
            }

        }

    }

    return valid;
}

/*
 * returns true if supplied arguments are a valid date
 */
function isValidDate(day,month,year)
{

    var valid = false;
    var daysinmonths = new Array(12);
    daysinmonths["01"] = 31;
    daysinmonths["02"] = 28;
    daysinmonths["03"] = 31;
    daysinmonths["04"] = 30;
    daysinmonths["05"] = 31;
    daysinmonths["06"] = 30;
    daysinmonths["07"] = 31;
    daysinmonths["08"] = 31;
    daysinmonths["09"] = 30;
    daysinmonths["10"] = 31;
    daysinmonths["11"] = 30;
    daysinmonths["12"] = 31;

    if (isNaN(day))
    {
        if (day.substr(0,1) == "0")
        {
            day = parseInt(day.substr(1,1));
        }
        else
        {
            day = parseInt(day);
        }
    }

    if (isNaN(month))
    {
        if ( (month.substr(0,1) != "0") && (month.length < 2) )
        {
            month = "0" + month;
        }
    }
    else
    {
        if (month.toString().length < 2)
        {
            month = "0" + month.toString();
        }
        else
        {
            month = month.toString();
        }
    }

    if (isNaN(year))
    {
        year = parseInt(year);
    }

    if ( (year % 4 == 0) && (month == "02") )
    {
        if (day >= 1 && day <= daysinmonths[month] + 1)
        {
            valid = true;
        }
    }
    else
    {
        if (day >= 1 && day <= daysinmonths[month])
        {
            valid = true;
        }
    }

    return valid;
}

function trim(input)
{
    // RegExp version requires IE >= 4
    return input.replace(/(^\s)|(\s$)/g,"");
}

function IsNumeric(strString)
   //  check for valid numeric strings
   {
   var strValidChars = "0123456789.";
   var strChar;
   var blnResult = true;

   if (strString.length == 0) return false;

   //  test strString consists of valid characters listed above
   for (i = 0; i < strString.length && blnResult == true; i++)
      {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
         blnResult = false;
         }
      }
   return blnResult;
   }
