//'------------------------------------------------------------------------------------------
//' js-core.js (Core)
//' Version 1.0
//'------------------------------------------------------------------------------------------
//' Copyright Surfocracy Ltd, 2009, Contact: info@surfocracy.com
//'------------------------------------------------------------------------------------------
//' Description: Core JavaScript routines which can be used for all dynamic sites.
//               These routines are called from the main site and admin.
//'------------------------------------------------------------------------------------------
//   
//--------------------------------------------------------------------------------------
// This function issues a pop up alert seeking confirmation on whether an item should
// be removed. Ok proceeds with removal and Cancel leaves unchanged.
// // onClick="return ConfirmRemove()"
//--------------------------------------------------------------------------------------
function ConfirmRemove() {

   if (!confirm(AlertAboutToRemove + "\n" + 
		        AlertProceedOrLeaveUnchanged + "\n \n \n" ))
	  return false;
   else
	  return true
}

//--------------------------------------------------------------------------------------
// This function Pops up a window with the given parameters.
// Example call to this function would look like:
// 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 to see that a quantity value is entered in the quantity field.
function CheckQty (MyField, val, FormName) {
  var RefString=" 1234567890";
  for (Count=0; Count < val.length; Count++) {
     TempChar= val.substring (Count, Count+1);
     if (RefString.indexOf (TempChar, 0)==-1) {
	     alert(ErrEnterValidNumber);
         eval(FormName + "." + MyField + ".focus();");
         return (false);
	 }
  }  
  return (true);
}
function CheckQty2 (val) {
  var RefString=" 1234567890";
  for (Count=0; Count < val.length; Count++) {
     TempChar= val.substring (Count, Count+1);
     if (RefString.indexOf (TempChar, 0)==-1) {
         return (false);
	 }
  }  
  return (true);
}
// This function checks if a string is a number. No form parameter exists.
function IsNumberString (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>4) {
          if (DisplayErrorText) alert(ErrIncorrectEmailExt)
          return false
      }
      if (len<2) {
         if (DisplayErrorText) alert(ErrMissingEmailHost)
         return false
      }
   }
   return true;
}      
