function _debug( msgtext )
{
    // alert( msgtext );
}

function makeOid()
{
    return Number(Math.round(10000000 + 10000000 * Math.random())).toString(16);
}

function readDetailsCookies( formobj, name )
{
	formobj.ordername.value         = getCookie(name + "ordername");
	formobj.orderaddress.value      = getCookie(name + "orderaddress");
	formobj.orderaddress1.value     = getCookie(name + "orderaddress1");
	formobj.orderaddress2.value     = getCookie(name + "orderaddress2");
	formobj.ordercity.value         = getCookie(name + "ordercity");
	formobj.orderpostcode.value     = getCookie(name + "orderpostcode");
	formobj.ordercounty.value       = getCookie(name + "ordercounty");
	formobj.ordercountry.value      = getCookie(name + "ordercountry");
	formobj.orderemail.value        = getCookie(name + "orderemail");
	formobj.orderphone.value        = getCookie(name + "orderphone");
	formobj.orderinstructions.value = getCookie(name + "orderinstructions");
}

function setDetailsCookies( formobj, name )
{
	setCookie(name + "ordername",           formobj.ordername.value, 365,"/");
	setCookie(name + "orderaddress",        formobj.orderaddress.value, 365,"/");
	setCookie(name + "orderaddress1",       formobj.orderaddress1.value, 365,"/");
	setCookie(name + "orderaddress2",       formobj.orderaddress2.value, 365,"/");
	setCookie(name + "ordercity",           formobj.ordercity.value, 365,"/");
	setCookie(name + "orderpostcode",       formobj.orderpostcode.value, 365,"/");
	setCookie(name + "ordercounty",         formobj.ordercounty.value, 365,"/");
	setCookie(name + "ordercountry",        formobj.ordercountry.value, 365,"/");
	setCookie(name + "orderemail",          formobj.orderemail.value, 365,"/");
	setCookie(name + "orderphone",          formobj.orderphone.value, 365,"/");
	setCookie(name + "orderinstructions",   formobj.orderinstructions.value, 365,"/");
}

function setCookie(name, value, expires, path, domain)
{
  _debug("setCookie " + path + "/" + name + ":" + expires + " to " + value);

  delCookie(name);
  delCookie(name,path,domain);
  var expires = new Date();
  expires.setTime(expires.getTime() + 365*24*60*60*1000);
  document.cookie = name + "=" + escape(value) +
  ((expires == null) ? "" : "; expires=" + expires.toGMTString()) +
  ((path == null)    ? "" : "; path=" + path) +
  ((domain == null)  ? "" : "; domain=" + domain);
}

function getCookie(name)
{ var cname = name + "=";
  var dc = document.cookie;
  if (dc.length > 0)
  { begin = dc.indexOf(cname);
    if (begin != -1)
    { begin += cname.length;
      end = dc.indexOf(";", begin);
      if (end == -1) end = dc.length;
      var ret = unescape(dc.substring(begin, end));
    // if ( name == "cdshoporderref" ) { alert("get " + name + " = " + ret ); }
      return ret;
    }
  }
//  alert("get " + name + " = null" );
  return "";
}

function delCookie (name,path,domain)
{ if (getCookie(name))
  { document.cookie = name + "=" +
    ((path == null) ? "" : "; path=" + path) +
    ((domain == null) ? "" : "; domain=" + domain) +
    "; expires=Thu, 01-Jan-70 00:00:01 GMT";
  }
}

function echeck( strng )
{
    // From http://developer.apple.com/internet/javascript/validation.html
    //
    var emailFilter=/^.+@.+\..{2,3}$/;
    if (!(emailFilter.test(strng))) {
           return "Please enter a valid email address";
    }

    // Again, we want to check to make sure that no forbidden characters have slipped in.
    // For email addresses, we're forbidding the following: ( ) < > [ ] , ; : \ / "
    //
    var illegalChars= /[\(\)\<\>\,\;\:\\\/\"\[\]]/
    if (strng.match(illegalChars)) {
       return "The email address contains illegal characters";
    }

    return "";
}

function checkMandatory( formobj, list )
{
    var missing = "";
    var names = list.split(",");

    for ( i=0; i < names.length; i++ )
    {
        var elname = names[i];
        var parts = elname.split(":");

        elname    = parts[0];
        var label;

        if ( parts.length > 1 )
        {
            label = parts[1];
        }
        else
        {
            label = elname;
        }

        var theval = formobj.elements[elname].value;

        theval = theval.replace(/ /g, "");

        if ( theval == "" )
        {
            if ( missing == "" )
            {
                missing = label;
            }
            else
            {
                missing += "\n" + label;
            }
        }
        else if ( elname.toUpperCase().indexOf("EMAIL") >= 0 )
        {
            res = echeck( theval );
            if ( res != "" )
            {
                missing += "\n" + label + " - " + res;
            }
        }
        else if ( elname.toUpperCase().indexOf("DATE") >= 0 )
        {
            res = validateDate( theval );
            if ( res != "" )
            {
                missing += "\n" + label + " - " + res;
            }
        }
    }

    if ( missing == "" )
    {
        return true;
    }
    else
    {
        alert("The following fields must be completed\n\n" + missing );
        return false;
    }
}

function checkCustomerDetails( formobj )
{
    if ( ! checkMandatory( formobj, "ordername:Your name,orderemail:Email,orderphone:Telephone,orderaddress1:Address 1,ordercity:City,ordercounty:State/Province/County,orderpostcode:ZIP/Postal code,ordercountry:Country" ) )
    {
    	return false;
	}

    return true;
}

function disableWorldpayLinks()
{
    // Get the container of the worldpay links
    //
    var child = document.getElementById('worldpaylinks');

    if ( child )
    {
        // Get the links
        //
    	links = child.getElementsByTagName('a');
    
        // Go through disabling them
        //
    	for (var i = 0; i < links.length; i++)
    	{
            // disable the link
            //
            var href = links[i].href;
            var alttext = links[i].alt;
            
    	    if ( href.indexOf("worldpay") == -1 )
    	    {
    	        links[i].href = "javascript:alert('This card is accepted by WorldPay - for more information visit " + href + "')";
    	    }
    	    else
    	    {
    	        links[i].href = "javascript:alert('For further information about worldpay, visit http://www.worldpay.com')";
    	    }
    	    
    	    links[i].target = "_self";
    	}
    }
}


// Standard DreamWeaver DOM object finder
//
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;
}

// Toggle the style.display of the named element between 'block' and 'none' - also set the
// img named lname+'Img' to be either fold-closed.gif or fold-open.gif
//
function toggle(lname)
{
    var obj = MM_findObj(lname);
    obj.style.display = ((obj.style.display=='') || (obj.style.display=='none')) ? 'block' : 'none';
}

// Hide the named layer if the checkbox object is checked
//
function hideIfChecked( checkobj, lname )
{
    var obj = MM_findObj(lname);
    obj.style.display = checkobj.checked ? 'none' : 'block';
}
    