// Version: 1.1
//======================================================================================
// Copyright Surfocracy Ltd, 2004
// File   : javascript-common.js
// Description: Common JavaScript routines for most basic functions
//--------------------------------------------------------------------------------------
// This function Pops up a window with the given parameters.
// Example: onClick="PopUpWindow('POPUP-file.htm','name',WinHeight=400,WinWidth=600,WinLeft=100,WinTop=100,WinResizable='yes',WinScrollbars='yes',WinToolbar='no',WinMenubar='no',WinStatus='no'); return false;"
//--------------------------------------------------------------------------------------
function PopUpWindow(url,name,WinHeight,WinWidth,WinLeft,WinTop,WinResizable,WinScrollbars,WinToolbar,WinMenubar,WinStatus) {
  var newwindow;
  var settings= "height="+WinHeight+",width="+WinWidth+",left="+WinLeft+",top="+WinTop+",resizable="+WinResizable+",scrollbars="+WinScrollbars+",toolbar="+WinToolbar+",menubar="+WinMenubar+",status="+WinStatus;
               //  ",location=yes,directories=yes";
  newwindow=window.open(url,'name',settings);
  if (window.focus) {newwindow.focus()}
}
// This function checks to see that a something is added in the search box.
function CheckSearchBox (MyForm) {
  if (MyForm.SearchFor.value=="") {
	  alert(ErrEnterSearchItem);
      MyForm.SearchFor.focus();
      return (false);
  }
  return (true);
}	
// This function checks if a string is a number. No form parameter exists.
function IsNumberString (MyField, val, DisplayErrorText) {
   //No Form parameter
   var RefString="1234567890.()-+ ";	
   for (Count=0; Count < val.length; Count++) {
       TempChar= val.substring (Count, Count+1);
       if (RefString.indexOf (TempChar, 0)==-1) {
	      if (DisplayErrorText) alert(ErrEnterValidNumber);
          return (false);
	   }
   }
   return (true);
}  
// This function validates a string to check if it is in an email format.
function emailCheck (myForm, val, DisplayErrorText) {
var emailStr=val;
var emailPat=/^(.+)@(.+)$/
var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
var validChars="\[^\\s" + specialChars + "\]"
var quotedUser="(\"[^\"]*\")"
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
var atom=validChars + '+'
var word="(" + atom + "|" + quotedUser + ")"
var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
var matchArray=emailStr.match(emailPat)

   if (emailStr!="") {
      if (matchArray==null) {
	        if (DisplayErrorText) alert(ErrIncorrectEmailAddress)
	        return false
      }
      var user=matchArray[1]
      var domain=matchArray[2]
      if (user.match(userPat)==null) {
         if (DisplayErrorText) alert(ErrIncorrectEmailUsername)
         return false
      }
	  var IPArray=domain.match(ipDomainPat)
      if (IPArray!=null) {
	     for (var i=1;i<=4;i++) {
	        if (IPArray[i]>255) {
	           if (DisplayErrorText) alert(ErrIncorrectEmailIP)
		       return false
            }
         }
         return true
      }
      var domainArray=domain.match(domainPat)
      if (domainArray==null) {
         if (DisplayErrorText) alert(ErrIncorrectEmailDomain)
         return false
      }
      var atomPat=new RegExp(atom,"g")
      var domArr=domain.match(atomPat)
      var len=domArr.length
      if (domArr[domArr.length-1].length<2 || 
          domArr[domArr.length-1].length>3) {
          if (DisplayErrorText) alert(ErrIncorrectEmailExt)
          return false
      }
      if (len<2) {
         if (DisplayErrorText) alert(ErrMissingEmailHost)
         return false
      }
   }
   return true;
}
