//-------------------------------------------------------------------------------
//**
//**  File Name: formcheck.js
//**
//**  Summary: Support.com Common JavaScript File
//**
//**  Description: This page is used to provide common Input form related
//**               functions that are used by several pages.
//**
//**  Copyright Support.com Inc. 2001, All rights reserved.
//**
//--------------------------------------------------------------------------------

// This function allows text to be copied to the windows clipboard

  function toClipboard(copytext)
  {
    if (window.clipboardData) {
      window.clipboardData.setData("Text", copytext);
    } else if (window.netscape) { 
      try {
        netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
      } catch (e) { 
        alert("Permission for copying to clipboard denied. Please review your browser settings."); 
        //about:config: set 'signed.applets.codebase_principal_support' to 'true'
        return;
      } 
      
      var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
      if (!clip) return;
      
      var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
      if (!trans) return;
      
      trans.addDataFlavor('text/unicode');
      
      var str = new Object();
      var len = new Object();
      
      var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
      
      str.data=copytext;
      
      trans.setTransferData("text/unicode",str,copytext.length*2);
      
      var clipid=Components.interfaces.nsIClipboard;
      
      if (!clip) return false;
      
      clip.setData(trans,null,clipid.kGlobalClipboard);
    } else {
      alert("Copy Link not supported on this Browser!");
    }
  }

// This function validates the form for searching for support content

  function validateForm(value) {
    var ret = true;
    if ((value == null)  || (value.length <= 3 )) {
      alert("Please enter a valid problem description.");
      ret = false;
    } 
    else if (value.length > 100) {
      alert("Please limit your question to 100 characters.");
      ret = false;
    }
  
 //***** check for illegal characters in form entry

    if (ret == true) {
      var illegalChars = new Array('<', '>', '{', '}', '[', ']', '^', '&', '*', '#', '~', '+', '$', '(', ')', '%','=', '"', '\\');
      for (var i=0; i<illegalChars.length; i++) {
        if (value.indexOf(illegalChars[i], 0) != -1) {
          alert('The following character cannot be used in a search string:  ' + illegalChars[i] + '\r\r  Please modify this character and resubmit.');
          ret = false;
        }  
      }
    }
    return(ret);
  }
  
  function emailConfirm() {
    if ( isEmail(emailform.elements["address"].value) ) {
     var Ask = window.confirm("Click OK to submit this issue for an Email response or click Cancel to change your Email address.");
     if (Ask) {
       return true;
     } 
     else {
       return false;
     }
   }
   else {
     alert("Please enter a valid email address.");
     return false;
   }
 }
    
     
// isEmail (STRING s [, BOOLEAN emptyOK])
// 
// Email address must be of form a@b.c -- in other words:
// * there must be at least one character before the @
// * there must be at least one character before and after the .
// * the characters @ and . are both required
//
// For explanation of optional argument emptyOK,
// see comments of function isInteger.

function isEmail (s)
{   
    if (isEmpty(s)) 
       if (isEmail.arguments.length == 1) return false;
       else return (isEmail.arguments[1] == true);
   
    // is s whitespace?
    if (isWhitespace(s)) return false;
    
    // there must be >= 1 character before @, so we
    // start looking at character position 1 
    // (i.e. second character)
    var i = 1;
    var sLength = s.length;

    // look for @
    while ((i < sLength) && (s.charAt(i) != "@"))
    { i++
    }

    if ((i >= sLength) || (s.charAt(i) != "@")) return false;
    else i += 2;

    // look for .
    while ((i < sLength) && (s.charAt(i) != "."))
    { i++
    }

    // there must be at least one character after the .
    if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
    else return true;
}

// whitespace characters
var whitespace = " \t\n\r";

// Check whether string s is empty.

function isEmpty(s) {
  return ((s == null) || (s.length == 0))
}

// Returns true if string s is empty or 
// whitespace characters only.

function isWhitespace (s)

{   var i;

    // Is s empty?
    if (isEmpty(s)) return true;

    // Search through string's characters one by one
    // until we find a non-whitespace character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);

        if (whitespace.indexOf(c) == -1) return false;
    }

    // All characters are whitespace.
    return true;
}

////-----------------------------------------------------------////
var validChars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";

function isAlphanumeric (s) {
  var tmp = s.toUpperCase();
  for (i = 0; i < tmp.length; i++) {   
    var c = tmp.charAt(i);
    if (validChars.indexOf(c) == -1) {
      return false;
    }
  }
  return true;
}

////--------------------------------------------------------------////
function isNumeric (s) 
{
  var i;
  
  if (isEmpty(s)) return false;
  for(i = 0; i < s.length; i++) 
  {
    if(isNaN(parseInt(s.substring(i, i + 1)))) {
      return false;
    }
  }
  return true;
}

//***** This function cleans up characters that are not handled by 
//      ESCAPE() and are not accepted as a window name in a window.open() statement

  function myEscape(windowName) {
    windowName = windowName.replace(/%/g,"");
    while (windowName.indexOf(".") != -1) {
      windowName = windowName.replace("." ,"");
    }
    while (windowName.indexOf("@") != -1) {
      windowName = windowName.replace("@" ,"");
    }
    while (windowName.indexOf("*") != -1) {
      windowName = windowName.replace("*" ,"");
    }
    while (windowName.indexOf("/") != -1) {
      windowName = windowName.replace("/" ,"");
    }
    while (windowName.indexOf("+") != -1) {
      windowName = windowName.replace("+" ,"");
    }
    while (windowName.indexOf("-") != -1) {
      windowName = windowName.replace("-" ,"");
    }
    return windowName
  }

//*************************************************************************

//     END of formcheck.js Include file

//*************************************************************************

