// JavaScript Document


function emailCheck (emailStr) {

	/* The following variable tells the rest of the function whether or not
	to verify that the address ends in a two-letter country or well-known
	TLD.  1 means check it, 0 means don't. */

	var checkTLD=1;

	/* The following is the list of known TLDs that an e-mail address must end with. */

	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;

	/* The following pattern is used to check if the entered e-mail address
	fits the user@domain format.  It also is used to separate the username
	from the domain. */

	var emailPat=/^(.+)@(.+)$/;

	/* The following string represents the pattern for matching all special
	characters.  We don't want to allow special characters in the address. 
	These characters include ( ) < > @ , ; : \ " . [ ] */

	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";

	/* The following string represents the range of characters allowed in a 
	username or domainname.  It really states which chars aren't allowed.*/

	var validChars="\[^\\s" + specialChars + "\]";

	/* The following pattern applies if the "user" is a quoted string (in
	which case, there are no rules about which characters are allowed
	and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
	is a legal e-mail address. */

	var quotedUser="(\"[^\"]*\")";

	/* The following pattern applies for domains that are IP addresses,
	rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
	e-mail address. NOTE: The square brackets are required. */

	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;

	/* The following string represents an atom (basically a series of non-special characters.) */

	var atom=validChars + '+';

	/* The following string represents one word in the typical username.
	For example, in john.doe@somewhere.com, john and doe are words.
	Basically, a word is either an atom or quoted string. */

	var word="(" + atom + "|" + quotedUser + ")";

	// The following pattern describes the structure of the user

	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");

	/* The following pattern describes the structure of a normal symbolic
	domain, as opposed to ipDomainPat, shown above. */

	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");

	/* Finally, let's start trying to figure out if the supplied address is valid. */

	/* Begin with the coarse pattern to simply break up user@domain into
	different pieces that are easy to analyze. */

	var matchArray=emailStr.match(emailPat);

	if (matchArray==null) {

		/* Too many/few @'s or something; basically, this address doesn't
		even fit the general mould of a valid e-mail address. */
		alert("Email address seems incorrect (check @ and .'s)");
		return false;
	}

	var user=matchArray[1];
	var domain=matchArray[2];

	// Start by checking that only basic ASCII characters are in the strings (0-127).

	for (i=0; i<user.length; i++) {
		if (user.charCodeAt(i)>127) {
			alert("The username in the email address contains invalid characters.");
			return false;
		}
	}
	
	for (i=0; i<domain.length; i++) {
		if (domain.charCodeAt(i)>127) {
			alert("The domain name in the email address contains invalid characters.");
			return false;
		   }
	}

	// See if "user" is valid 

	if (user.match(userPat)==null) {
		// user is not valid
		alert("The username in the email address doesn't seem to be valid.");
		return false;
	}

	/* if the e-mail address is at an IP address (as opposed to a symbolic
	host name) make sure the IP address is valid. */

	var IPArray=domain.match(ipDomainPat);
	
	if (IPArray!=null) {
	// this is an IP address
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				alert("Destination IP address in the email address is invalid!");
				return false;
		   }
		}
	}

	// Domain is symbolic name.  Check if it's valid.
 
	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	
	for (i=0;i<len;i++) {
		if (domArr[i].search(atomPat)==-1) {
			alert("The domain name in the email address does not seem to be valid.");
			return false;
	   }
	}

	/* domain name seems valid, but now make sure that it ends in a
	known top-level domain (like com, edu, gov) or a two-letter word,
	representing country (uk, nl), and that there's a hostname preceding 
	the domain or country. */

	if (checkTLD && domArr[domArr.length-1].length!=2 && 
		domArr[domArr.length-1].search(knownDomsPat)==-1) {
		alert("The email address must end in a well-known domain or two letter " + "country.");
		return false;
	}

	// Make sure there's a host name preceding the domain.

	if (len<2) {
		alert("This email address is missing a hostname!");
		return false;
	}
	
	

	// If we've gotten this far, everything's valid!
	return true;
}


function getinfo() {
	var agree=confirm("Are you sure you want to proceed with the action?");
	
	if (agree){
		return true;}
	else{
		return false;}
	return true;
}

function anyCheck(theform) {
	var total=0;
	var max = theform.deletelist.length;
	if (max == null) {
		for (var idx = 0 ; idx < 1; idx++) {
			if (eval("theform.deletelist.checked") == true) {
    			total += 1;
   			}
		}
		if (total ==0)
			{alert ("Unable to delete. No records selected.");}
			else 
			return true;
	}else{
		for (var idx = 0 ; idx < max; idx++) {
		if (eval("theform.deletelist[" + idx + "].checked") == true) {
    	total += 1;
   			}
		}
			if (total ==0)
			{alert ("Unable to delete. No records selected.");}
			else 
			return true;
	
	}
}	

function checkform(theform) {
	if (anyCheck(theform)) {
	   	if (getinfo()) {
	   		return true;				
		}
	}	
	return false;
} 

function action_redirect(theurl){
	location.href=theurl;
}

function reloaditems(){
var URL = document.acform.theid.options[document.acform.theid.options.selectedIndex].value;
window.location.href = URL;
}

function addToParentList(sourceList,id) {
window.document.forms[0].parentid.value = id;
window.document.forms[0].category.value = sourceList;
}

function addSelectedItemsToParent(categorypath,categoryid) {
self.opener.addToParentList(categorypath,categoryid);
window.close();
}	

function SelectCategory(sourceList,id) {
window.document.forms[0].categoryid.value = id;
window.document.forms[0].category.value = sourceList;
}

function addSelectedCategoryToParent(categorypath,categoryid) {
self.opener.SelectCategory(categorypath,categoryid);
window.close();
}	

function clickEm(theform) {
  for (var e=0; e < theform.length; e++) {
    theform.elements[e].click()
  }
}
function checkEm(theform, state) {
  for (var e=0; e < theform.length; e++) {
    theform.elements[e].checked = state
  }
}


function validate_forgotpasswordform(acform)
{
	if (acform.login.value=="") {
		window.alert("Please enter your username.");
		acform.login.focus();
		return false;
	}	
	return true;
}

function validate_forgotusernameform(acform)
{
	if (acform.email.value=="") {
		window.alert("Please enter your email address.");
		acform.email.focus();
		return false;
	}	
	return true;
}

function validate_loginform(acform)
{
	if (acform.login.value=="") {
		window.alert("Please enter your username.");
		acform.login.focus();
		return false;
	}	
	else if (acform.password.value=="") {
		window.alert("Please enter your password.");
		acform.password.focus();
		return false;
    }
    else if (acform.tick_box.checked == false) {
        window.alert("Please agree to the Terms and Conditions.");
        acform.tick_box.focus();
        return false;
    }
	else
	    return true;
}

function validate_membereditform(acform)
{
	if (acform.address_1.value=="") {
		window.alert("Please enter address.");
		acform.address_1.focus();
		return false;
	}	
	if (acform.postal_code.value=="") {
		window.alert("Please enter your postal code.");
		acform.postal_code.focus();
		return false;
	}	
	if (acform.phone.value=="") {
		window.alert("Please enter your telephone no.");
		acform.phone.focus();
		return false;
	}	

	if (acform.email.value=="") {
		window.alert("Please enter your email address.");
		acform.email.focus();
		return false;
	}
	else {
		if (emailCheck(acform.email.value)) {
		}
		else {
			acform.email.focus();
			return false;			
		}
	}
	if (acform.email2.value!="") {
		if (emailCheck(acform.email2.value)) {
		}
		else {
			acform.email2.focus();
			return false;			
		}
	}	
					
	return true;
}

function validate_passwordeditform(acform)
{
		if(acform.new_password.value.length<5){
		window.alert("Please enter at least 5 characters for your new password.");
		acform.new_password.focus();
		return false;
		}	
		if(acform.confirm_password.value.length<5){
		window.alert("Please confirm the password again by entering at least 5 characters.");
		acform.confirm_password.focus();
		return false;
		}	
		if(acform.new_password.value != acform.confirm_password.value){
		window.alert("Your passwords do not match. Please re-enter.");
		acform.confirm_password.focus();
		return false;
		}		
	return true;
}

function validate_productaddform(acform)
{
		if (acform.productname.value==""){
		window.alert("Please enter the name of the product.");
		acform.productname.focus();
		return false;
		}	
		if (acform.category.value==""){
		window.alert("Please select a category for this product.");
		acform.Submit.focus();
		return false;
		}	

return true;
}



function winopen(url,winname,x,y){
	var options = "toolbar=no,scrollbars=yes,location=no,resizable=yes,width=" + x + ",height=" + y;
	msgWindow=window.open(url,winname,options);
}
