// JavaScript Document
<!--

userAgent = window.navigator.userAgent;
browserVers = parseInt(userAgent.charAt(userAgent.indexOf("/")+1),10);

function changeImages(oldImage,newImage) {
    document['meths'].src = "/images/onion/" + newImage + ".gif";
}

function startIEMenuListener() {
	if (document.all&&document.getElementById) {
		navRoot = document.getElementById("nav");
		for (i=0; i<navRoot.childNodes.length; i++) {
			node = navRoot.childNodes[i];
			if (node.nodeName=="LI") {
				node.onmouseover=function() { this.className+=" over"; }
				node.onmouseout=function() { this.className=this.className.replace(" over", ""); }
			}
		}
	}
}

function newImage(arg) {
	if (document.images) {
		rslt = new Image();
		rslt.src = arg;
		return rslt;
	}
}

function findElement(n,ly) {
	if (browserVers < 4)		return document[n];
	var curDoc = ly ? ly.document : document;
	var elem = curDoc[n];
	if (!elem) {
		for (var i=0;i<curDoc.layers.length;i++) {
			elem = findElement(n,curDoc.layers[i]);
			if (elem) return elem;
		}
	}
	return elem;
}

/*
function changeImages() {
	if (document.images) {
		var img;
		for (var i=0; i<changeImages.arguments.length; i+=2) {
			img = null;
			if (document.layers) {
				img = findElement(changeImages.arguments[i],0);
			}
			else {
				img = document.images[changeImages.arguments[i]];
			}
			if (img) {
				img.src = changeImages.arguments[i+1];
			}
		}
	}
}
*/

function search_selected() {
  if ( document.search_form.search.value == "Search..." ) { document.search_form.search.value = ''; }
  document.search_form.search.className='searchtext_on';
}

function search_ISBN_selected() {
  if ( document.search_form_ISBN.search_ISBN.value == "ISBN 13" ) { document.search_form_ISBN.search_ISBN.value = ''; }
  document.search_form_ISBN.search_ISBN.className='searchtext_on';
}

function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}

function MM_preloadImages() { //v3.0
  var d=document;
  if(d.images){
    if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments;
    for(i=0; i<a.length; i++) {
      if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}
    }
  }
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr;
  for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;
  if(!d) d=document;
  if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
  }
  if(!(x=d[n])&&d.all) x=d.all[n];
  for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n);
  return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments;
  document.MM_sr=new Array;
  for(i=0;i<(a.length-2);i+=3) {
   if ((x=MM_findObj(a[i]))!=null) {
     document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];
   }
  }
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function check_insert(type) {
  document.generic_form.action += '&action=ins';
  document.generic_form.submit();
}

function check_update(type) {
  if ( document.generic_form.id.selectedIndex < 0 ) {
    alert('Select a row first!');
  } else {
    document.generic_form.action += '&action=upd&id=' + document.generic_form.id[document.generic_form.id.selectedIndex].value;
    document.generic_form.submit();
  }
}

function check_delete(type) {
  if ( document.generic_form.id.selectedIndex < 0 ) {
    alert('Select a row first!');
  } else {
    if (confirm("Are you sure you want to delete")) {
	if ( typeof document.generic_form.id.selectedIndex == 'undefined' ) {
	  document.generic_form.action += '&action=del&id=' + document.generic_form.id.value;
	} else {
	  document.generic_form.action += '&action=del&id=' + document.generic_form.id[document.generic_form.id.selectedIndex].value;
	}
	document.generic_form.submit();
    }
  }
}

function do_popup(url, l_width, l_height, l_scroll)
{
  if (document.all)
    var xMax = screen.width, yMax = screen.height;
  else
    if (document.layers)
      var xMax = window.outerWidth, yMax = window.outerHeight;
    else
      var xMax = 640, yMax=480;

  var xOffset = (xMax - l_width)/2, yOffset = (yMax - l_height)/2;

  var details = 'location=0,status=0,resizable=1,scrollbars='+l_scroll+',width='+l_width+',height='+l_height+',';
  details = details + 'screenX='+xOffset+',screenY='+yOffset+',top='+yOffset+',left='+xOffset;

  window.open(url,'title',details);
}

function check_customer_form()
{
	if ( document.generic_form.txtFirstname.value == '') {
	    alert('You must enter a firstname!');
	    return false;
	}
	if ( document.generic_form.txtSurname.value == '') {
	    alert('You must enter a surname!');
	    return false;
	}
	if ( document.generic_form.txtEmail.value == '') {
	    alert('You must enter an email address!');
	    return false;
	}
	if ( !checkemail(document.generic_form.txtEmail.value)) {
	    alert('You must enter a valid email address!');
	    return false;
	}
	if ( document.generic_form.txtPhone.value == '') {
	    alert('You must enter a contact phone number!');
	    return false;
	}
	
	if ( document.generic_form.txtCC.value == '' ) {
	    alert('You must enter a credit card number!');
	    return false;
	}

	var current = new Date();
	
	if ( document.generic_form.txtCCStartYear.value == '' ) {
	    alert('You must enter a start year!');
	    return false;
	} else {
		if (!isNum(document.generic_form.txtCCStartYear.value)) {
		    alert('You must enter a valid start year!');
		    return false;
		}

		if ( document.generic_form.txtCCStartYear.value < ( current.getFullYear() - 4 )  ) {
		    alert('You must enter a valid start year!');
		    return false;
		}

		if ( document.generic_form.txtCCStartYear.value > current.getFullYear()  ) {
		    alert('You must enter a valid start year!');
		    return false;
		}
	}

	if ( document.generic_form.txtCCStartMonth.value == '' ) {
	    alert('You must enter a start month!');
	    return false;
	} else {
		if (!isNum(document.generic_form.txtCCStartMonth.value)) {
		    alert('You must enter a valid start month!');
		    return false;
		}

		if ( document.generic_form.txtCCStartMonth.value < 1 || document.generic_form.txtCCStartMonth.value > 12 ) {
		    alert('You must enter a valid start month!');
		    return false;
		}

		if ( document.generic_form.txtCCStartYear.value == current.getFullYear() && ( document.generic_form.txtCCStartMonth.value > current.getMonth() + 1 )  ) {
		    alert('Credit card has not started yet!');
		    return false;
		}
	}

	if ( document.generic_form.txtCCExpireYear.value == '' ) {
	    alert('You must enter a expiry year!');
	    return false;
	} else {
		if (!isNum(document.generic_form.txtCCExpireYear.value)) {
		    alert('You must enter a valid expiry year!');
		    return false;
		}
		if ( document.generic_form.txtCCExpireYear.value < current.getFullYear() ) {
		    alert('Credit card has already expired?');
		    return false;
		} else if ( document.generic_form.txtCCExpireYear.value > ( current.getFullYear() + 4 )  ) {
		    alert('You must enter a valid expiry year!');
		    return false;
		}
	}

	if ( document.generic_form.txtCCExpireMonth.value == '' ) {
	    alert('You must enter a expiry month!');
	    return false;
	} else {
		if (!isNum(document.generic_form.txtCCExpireMonth.value)) {
		    alert('You must enter a valid expiry month!');
		    return false;
		}

		if ( document.generic_form.txtCCExpireMonth.value < 1 || document.generic_form.txtCCExpireMonth.value > 12 ) {
		    alert('You must enter a valid expiry month!');
		    return false;
		}
		if ( document.generic_form.txtCCExpireYear.value == current.getFullYear() && document.generic_form.txtCCExpireMonth.value < ( current.getMonth() + 1 ) ) {
		    alert('Credit card has expired!');
		    return false;
		}
	}
	
	if (!testCreditCard())
	{
		return false;
	}
	
	if ( document.generic_form.txtAddress1.value == '' && document.generic_form.txtAddress2.value == '' && document.generic_form.txtAddress3.value == '' && document.generic_form.txtAddress4.value == '') {
	    alert('You must enter a billing address!');
	    return false;
	}
	if ( document.generic_form.txtAddress1.value == '' ) {
	    alert('You must enter a billing address starting in Address field 1!');
	    return false;
	}
	if ( document.generic_form.txtPostcode.value == '' ) {
	    alert('You must enter a postcode!');
	    return false;
	}

	if (document.generic_form.cbDelivery.checked)
	{
		if ( document.generic_form.txtDAddress1.value == '' && document.generic_form.txtDAddress2.value == '' && document.generic_form.txtDAddress3.value == '' && document.generic_form.txtDAddress4.value == '') {
		    alert('You must enter a delivery address!');
		    return false;
		}
		if ( document.generic_form.txtDAddress1.value == '' ) {
		    alert('You must enter a delivery address starting in Address field 1!');
		    return false;
		}
		if ( document.generic_form.txtDPostcode.value == '' ) {
		    alert('You must enter a postcode!');
		    return false;
		}
	}
	
	document.generic_form.submit();
}

function showDeliveryAddress()
{
	if (document.generic_form.cbDelivery.checked == true)
	{
		document.getElementById('divDelivery').style.display = 'block';
	}
	else
	{
		document.getElementById('divDelivery').style.display = 'none';
	}
}

function testCreditCard () 
{
	//myCardNo = document.getElementById('txtCC').value;
	//myCardType = document.getElementById('txtCCType').value;
	myCardNo = document.generic_form.txtCC.value;
	myCardType = document.generic_form.ddCCType.value;
	if (!checkCreditCard(myCardNo,myCardType)) 
  	{
  		alert (ccErrors[ccErrorNo]);
  		return false;
  	}
  	
  	return true;
}

function check_download_form()
{
	if ( document.generic_form.downloadname.value == '') {
	    alert('You must enter a download name!');
	    return FALSE;
	}
	if ( document.generic_form.downloaddesc.value == '') {
	    alert('You must enter a download description!');
	    return FALSE;
	}
	document.generic_form.submit();
}

function check_casestudy_form()
{
	if ( document.generic_form.casestudyname.value == '') {
	    alert('You must enter a case study name!');
	    return FALSE;
	}
	if ( document.generic_form.casestudyshortdesc.value == '') {
	    alert('You must enter a case study short description!');
	    return FALSE;
	}
	if ( document.generic_form.casestudydesc.value == '') {
	    alert('You must enter a case study description!');
	    return FALSE;
	}
	if ( document.generic_form.casestudydate.value == '') {
	    alert('You must enter a case study date!');
	    return FALSE;
	}
	document.generic_form.submit();
}

function check_whitepaper_form()
{
	if ( document.generic_form.whitepapername.value == '') {
	    alert('You must enter a white paper name!');
	    return FALSE;
	}
	if ( document.generic_form.whitepapershortdesc.value == '') {
	    alert('You must enter a white paper short description!');
	    return FALSE;
	}
	if ( document.generic_form.whitepaperdesc.value == '') {
	    alert('You must enter a white paper description!');
	    return FALSE;
	}
	if ( document.generic_form.whitepaperdate.value == '') {
	    alert('You must enter a white paper date!');
	    return FALSE;
	}
	document.generic_form.submit();
}

function check_brochure_form()
{
	if ( document.generic_form.brochurename.value == '') {
	    alert('You must enter a brochure name!');
	    return FALSE;
	}
	if ( document.generic_form.brochureshortdesc.value == '') {
	    alert('You must enter a brochure short description!');
	    return FALSE;
	}
	if ( document.generic_form.brochuredesc.value == '') {
	    alert('You must enter a brochure description!');
	    return FALSE;
	}
	document.generic_form.submit();
}

function check_article_form()
{
	if ( document.generic_form.articlename.value == '') {
	    alert('You must enter a article name!');
	    return FALSE;
	}
	if ( document.generic_form.articleshortdesc.value == '') {
	    alert('You must enter a article short description!');
	    return FALSE;
	}
	if ( document.generic_form.articledesc.value == '') {
	    alert('You must enter a article description!');
	    return FALSE;
	}
	document.generic_form.submit();
}

function check_media_form()
{
	if ( document.generic_form.medianame.value == '') {
	    alert('You must enter a media name!');
	    return FALSE;
	}
	if ( document.generic_form.mediashortdesc.value == '') {
	    alert('You must enter a media short description!');
	    return FALSE;
	}
	if ( document.generic_form.mediadesc.value == '') {
	    alert('You must enter a media description!');
	    return FALSE;
	}
	document.generic_form.submit();
}

function check_news_form()
{
	if ( document.generic_form.newsname.value == '') {
	    alert('You must enter a news name!');
	    return FALSE;
	}
	if ( document.generic_form.newsdate.value == '') {
	    alert('You must enter a news date!');
	    return FALSE;
	}
	if ( document.generic_form.newsdesc.value == '') {
	    alert('You must enter a news description!');
	    return FALSE;
	}
	document.generic_form.submit();
}

function check_events_form()
{
	if ( document.generic_form.eventsname.value == '') {
	    alert('You must enter a news or events name!');
	    return FALSE;
	}
	if ( document.generic_form.eventsfromdate.value == '') {
	    alert('You must enter a news or events from date!');
	    return FALSE;
	}
	if ( document.generic_form.eventsdesc.value == '') {
	    alert('You must enter a news or events description!');
	    return FALSE;
	}
	document.generic_form.submit();
}

function check_user_form()
{
	if ( document.generic_form.username.value == '') {
	    alert('You must enter a value for the username!');
	    return FALSE;
	}
	if ( document.generic_form.psswd.value == '') {
	    alert('You must enter a value for the password!');
	    return FALSE;
	}
	if ( document.generic_form.psswd.value == document.generic_form.username.value) {
	    alert('username and password cannot be the same!');
	    return FALSE;
	}
	if ( document.generic_form.psswd.length < 6) {
	    alert('password must be more than six characters!');
	    return FALSE;
	}
	document.generic_form.submit();
}

function check_menu_form()
{
	if ( document.generic_form.menuname.value == '') {
	    alert('You must enter a value for the menu name!');
	    return FALSE;
	}
	document.generic_form.submit();
}

function check_page_form()
{
	if ( document.generic_form.pagename.value == '') {
	    alert('You must enter a value for the page name!');
	    return FALSE;
	}
	document.generic_form.submit();
}

function bookmark(title)
{
  url = document.location.href;
  title = document.title;
  if (window.sidebar) { // Mozilla Firefox Bookmark
	window.sidebar.addPanel(title, url,"");
  } else if( window.external ) { // IE Favorite
	window.external.AddFavorite( url, title);
  } else if(window.opera && window.print) { // Opera Hotlist
	return true;
  } else {
	alert('Sorry this is not supported on your browser version.')
  }
}

function isInteger(s)
{   var i;
    for (i = 0; i < s.length; i++)
    {
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function toggleLayer(whichLayer)
{
  var style2;
  if (document.getElementById) {
    // this is the way the standards work
    style2 = document.getElementById(whichLayer).style;
  } else if (document.all) {
    // this is the way old msie versions work
    style2 = document.all[whichLayer].style;
  } else if (document.layers) {
    // this is the way nn4 works
    style2 = document.layers[whichLayer].style;
  }

  if ( style2.display == 'none' ) {
    style2.display = "block";
  } else {
    style2.display = "none";
  }
}

function GoFlash(flashname, width, height, bgc)
{
    if (bgc == null) bgc = "#000000";

    if (flashname == null && width == null && height == null)
    {
    	document.write("<br/><div style='color: red;'><b>***</b> WriteFlash function requires flashname, width and height parameters</div>");
    }
    else
    {
        document.write("<object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0' width='"+width+"' height='"+height+"' id='flashObj' align='middle'><param name='allowScriptAccess' value='sameDomain' /><param name='movie' value='"+flashname+"' /><param name='loop' value='false' /><param name='menu' value='false' /><param name='quality' value='best' /><param name='bgcolor' value='"+bgc+"' /><embed src='"+flashname+"' loop='false' menu='false' quality='best' bgcolor='"+bgc+"' width='"+width+"' height='"+height+"' name='flashObj' align='middle' allowScriptAccess='sameDomain' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer' /></object>");
	}
}

function onion(section)
{
	var topage = "onion.php?seg=" + section;

	window.location=topage;
}

function checkemail(email)
{
	var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i

	return (filter.test(email)) ? true : false;
}


/*============================================================================*/

/*

This routine checks the credit card number. The following checks are made:

1. A number has been provided
2. The number is a right length for the card
3. The number has an appropriate prefix for the card
4. The number has a valid modulus 10 number check digit if required

If the validation fails an error is reported.

The structure of credit card formats was gleaned from a variety of sources on 
the web, although the best is probably on Wikepedia ("Credit card number"):

  http://en.wikipedia.org/wiki/Credit_card_number

Parameters:
            cardnumber           number on the card
            cardname             name of card as defined in the card list below

Author:     John Gardner
Date:       1st November 2003
Updated:    26th Feb. 2005      Additional cards added by request
Updated:    27th Nov. 2006      Additional cards added from Wikipedia

*/

/*
   If a credit card number is invalid, an error reason is loaded into the 
   global ccErrorNo variable. This can be be used to index into the global error  
   string array to report the reason to the user if required:
   
   e.g. if (!checkCreditCard (number, name) alert (ccErrors(ccErrorNo);
*/

var ccErrorNo = 0;
var ccErrors = new Array ()

ccErrors [0] = "Unknown card type";
ccErrors [1] = "No card number provided";
ccErrors [2] = "Credit card number is in invalid format";
ccErrors [3] = "Credit card number is invalid";
ccErrors [4] = "Credit card number has an inappropriate number of digits";

function checkCreditCard (cardnumber, cardname) {
     
  // Array to hold the permitted card characteristics
  var cards = new Array();

  // Define the cards we support. You may add addtional card types.
  
  //  Name:      As in the selection box of the form - must be same as user's
  //  Length:    List of possible valid lengths of the card number for the card
  //  prefixes:  List of possible prefixes for the card
  //  checkdigit Boolean to say whether there is a check digit
  
  cards [0] = {name: "Visa", 
               length: "13,16", 
               prefixes: "4",
               checkdigit: true};
  cards [1] = {name: "MasterCard", 
               length: "16", 
               prefixes: "51,52,53,54,55",
               checkdigit: true};
  cards [2] = {name: "DinersClub", 
               length: "14,16", 
               prefixes: "300,301,302,303,304,305,36,38,55",
               checkdigit: true};
  cards [3] = {name: "CarteBlanche", 
               length: "14", 
               prefixes: "300,301,302,303,304,305,36,38",
               checkdigit: true};
  cards [4] = {name: "AmEx", 
               length: "15", 
               prefixes: "34,37",
               checkdigit: true};
  cards [5] = {name: "Discover", 
               length: "16", 
               prefixes: "6011,650",
               checkdigit: true};
  cards [6] = {name: "JCB", 
               length: "15,16", 
               prefixes: "3,1800,2131",
               checkdigit: true};
  cards [7] = {name: "enRoute", 
               length: "15", 
               prefixes: "2014,2149",
               checkdigit: true};
  cards [8] = {name: "Solo", 
               length: "16,18,19", 
               prefixes: "6334, 6767",
               checkdigit: true};
  cards [9] = {name: "Switch", 
               length: "16,18,19", 
               prefixes: "4903,4905,4911,4936,564182,633110,6333,6759",
               checkdigit: true};
  cards [10] = {name: "Maestro", 
               length: "16", 
               prefixes: "5020,6",
               checkdigit: true};
  cards [11] = {name: "VisaElectron", 
               length: "16", 
               prefixes: "417500,4917,4913",
               checkdigit: true};
               
  // Establish card type
  var cardType = -1;
  for (var i=0; i<cards.length; i++) {

    // See if it is this card (ignoring the case of the string)
    if (cardname.toLowerCase () == cards[i].name.toLowerCase()) {
      cardType = i;
      break;
    }
  }
  
  // If card type not found, report an error
  if (cardType == -1) {
     ccErrorNo = 0;
     return false; 
  }
   
  // Ensure that the user has provided a credit card number
  if (cardnumber.length == 0)  {
     ccErrorNo = 1;
     return false; 
  }
    
  // Now remove any spaces from the credit card number
  cardnumber = cardnumber.replace (/\s/g, "");
  
  // Check that the number is numeric
  var cardNo = cardnumber
  var cardexp = /^[0-9]{13,19}$/;
  if (!cardexp.exec(cardNo))  {
     ccErrorNo = 2;
     return false; 
  }
       
  // Now check the modulus 10 check digit - if required
  if (cards[cardType].checkdigit) {
    var checksum = 0;                                  // running checksum total
    var mychar = "";                                   // next char to process
    var j = 1;                                         // takes value of 1 or 2
  
    // Process each digit one by one starting at the right
    var calc;
    for (i = cardNo.length - 1; i >= 0; i--) {
    
      // Extract the next digit and multiply by 1 or 2 on alternative digits.
      calc = Number(cardNo.charAt(i)) * j;
    
      // If the result is in two digits add 1 to the checksum total
      if (calc > 9) {
        checksum = checksum + 1;
        calc = calc - 10;
      }
    
      // Add the units element to the checksum total
      checksum = checksum + calc;
    
      // Switch the value of j
      if (j ==1) {j = 2} else {j = 1};
    } 
  
    // All done - if checksum is divisible by 10, it is a valid modulus 10.
    // If not, report an error.
    if (checksum % 10 != 0)  {
     ccErrorNo = 3;
     return false; 
    }
  }  

  // The following are the card-specific checks we undertake.
  var LengthValid = false;
  var PrefixValid = false; 
  var undefined; 

  // We use these for holding the valid lengths and prefixes of a card type
  var prefix = new Array ();
  var lengths = new Array ();
    
  // Load an array with the valid prefixes for this card
  prefix = cards[cardType].prefixes.split(",");
      
  // Now see if any of them match what we have in the card number
  for (i=0; i<prefix.length; i++) {
    var exp = new RegExp ("^" + prefix[i]);
    if (exp.test (cardNo)) PrefixValid = true;
  }
      
  // If it isn't a valid prefix there's no point at looking at the length
  if (!PrefixValid) {
     ccErrorNo = 3;
     return false; 
  }
    
  // See if the length is valid for this card
  lengths = cards[cardType].length.split(",");
  for (j=0; j<lengths.length; j++) {
    if (cardNo.length == lengths[j]) LengthValid = true;
  }
  
  // See if all is OK by seeing if the length was valid. We only check the 
  // length if all else was hunky dory.
  if (!LengthValid) {
     ccErrorNo = 4;
     return false; 
  };   
  
  // The credit card is in the required format.
  return true;
}

/*============================================================================*/


function submitSort() 
{
	var url = document.location;
	url += "&sortby=" + document.sort_form.sortby[document.sort_form.sortby.selectedIndex].value;
	for (i = 0;  i < document.sort_form.sortway.length;  i++)
	{
		if (document.sort_form.sortway[i].checked)
			url += "&sortway=" + document.sort_form.sortway[i].value;
	}

	document.location = url;
}

/*************************************************************************\
boolean isNum(String argvalue)
return true if argvalue contains only numeric characters,
else return false.
\*************************************************************************/
function isNum(argvalue) {
argvalue = argvalue.toString();

if (argvalue.length == 0)
return false;

for (var n = 0; n < argvalue.length; n++)
if (argvalue.substring(n, n+1) < "0" || argvalue.substring(n, n+1) > "9")
return false;

return true;
}

function check_subscribe_form(type) {
        if ( document.generic_form.txtEmail.value == '') {
            alert('You must enter an email address!');
            return;
        }
        if ( !checkemail(document.generic_form.txtEmail.value)) {
            alert('You must enter a valid email address!');
            return;
        }
	if ( type != 'Del' && !document.generic_form.adults.checked && !document.generic_form.children.checked ) {
            alert('You must enter select either children, adults or both!');
            return;
	}
	document.generic_form.act.value=type;
	document.generic_form.submit();
}

function check_voucher() {
	if ( document.voucher.id.value == '' ) {
		document.generic_form.page.value='stock';
		document.generic_form.submit();
	} else {
		document.voucher.submit();
	}
}

//-->
