/////////////////////////////
/// Character Replacement ///
/////////////////////////////

var whitespaceMap = new Map()
whitespaceMap.put("\u0009", " ");
whitespaceMap.put("\u000A", " ");
whitespaceMap.put("\u000D", " ");

var currencyMap = new Map();
currencyMap.put("\u00A3", "GBP");
currencyMap.put("\u20AC", "EUR");

function replaceIllegalCharacters(inputString, includeWhitespace)
{
	var outputString = '';
	
	for (var i = 0; i < inputString.length; i++)
	{
		var nextChar = inputString.charAt(i);
		var charCode = inputString.charCodeAt(i);
		var replacement = currencyMap.get(nextChar);

		if (replacement != null)
		{
			outputString += replacement;
			continue;
		}
		
		if (includeWhitespace)
		{
			replacement = whitespaceMap.get(nextChar);
			
			if (replacement != null)
			{
				outputString += replacement;
				continue;
			}
		}
		
		outputString += nextChar;
	}

	return (outputString);
}

function replaceUnicodeCharacters(inputString)
{
	var outputString = '';
	
	for (var i = 0; i < inputString.length; i++)
	{
		var nextChar = inputString.charAt(i);
		var charCode = inputString.charCodeAt(i);
		
		if (charCode <= 127)
		{
			outputString += nextChar;
		}
		else
		{
			outputString += "&#" + charCode + ";";
		}
	}
	
	return (outputString);
}

//////////////////////////
/// Object Definitions ///
//////////////////////////

function List()
{
    // Variables
    this.values = new Array();

    // Methods
    this.add = List_add;
    this.set = List_set;
    this.get = List_get;
    this.remove = List_remove;
    this.contains = List_contains;
    this.size = List_size;
}

function List_add(value)
{
    this.values[this.values.length] = value;
}

function List_set(index, value)
{
    if ((index < this.values.length) && (index > -1))
    {
        this.values[index] = value;
    }
    else
    {
        alert("List Set - Invalid list index - " + index);
    }
}

function List_get(index)
{
    if ((index < this.values.length) && (index > -1))
    {
        return (this.values[index]);
    }
    else
    {
        alert("List Get - Invalid list index - " + index);

        return (null);
    }
}

function List_remove(index)
{
    if ((index < this.values.length) && (index > -1))
    {
        var count = 0;
        var valuesCopy = new Array();

        for (var i = 0; i < this.values.length; i++)
        {
            if (i != index)
            {
                valuesCopy[count++] = this.values[i];
            }
        }

        this.values = valuesCopy;
    }
    else
    {
        alert("List Remove - Invalid list index - " + index);
    }
}

function List_contains(value)
{
    if (this.values.length < 1)
    {
        return (false);
    }

    for (var i = 0; i < this.values.length; i++)
    {
        if (value == this.values[i])
        {
            return (true);
        }
    }

    return (false);
}

function List_size()
{
    return (this.values.length);
}

function Map()
{
    // Variables
    this.keys = new Array();
    this.values = new Array();

    // Methods
    this.put = Map_put;
    this.get = Map_get;
    this.keySet = Map_keySet;
    this.getKey = Map_getKey;
    this.remove = Map_remove;
    this.size = Map_size;
}

function Map_put(key, value)
{
    var index = this.keys.length;

    this.keys[index] = key;
    this.values[index] = value;
}

function Map_get(key)
{
    for (var i = 0; i < this.keys.length; i++)
    {
        if (this.keys[i] == key)
        {
            return (this.values[i]);
        }
    }

    return (null);
}

function Map_keySet()
{
	return (this.keys);
}

function Map_getKey(index)
{
    if ((index < this.keys.length) && (index > -1))
    {
        return (this.keys[index]);
    }
    else
    {
        alert("Map Get Key - Invalid map index - " + index);

        return (null);
    }
}

function Map_remove(index)
{
    if ((index < this.keys.length) && (index > -1))
    {
        var count = 0;
        var keysCopy = new Array();
        var valuesCopy = new Array();

        for (var i = 0; i < this.keys.length; i++)
        {
            if (i != index)
            {
                keysCopy[count] = this.keys[i];
                valuesCopy[count++] = this.values[i];
            }
        }

        this.keys = keysCopy;
        this.values = valuesCopy;
    }
    else
    {
        alert("Map Remove - Invalid map index - " + index);
    }
}

function Map_size()
{
    return (this.keys.length);
}

////////////////////////
/// Existing Scripts ///
////////////////////////

var wtParameterArray = new Array();	

function runSpellCheck(textArea, spellCheckLoc)
{
	textArea.value = window.showModalDialog(spellCheckLoc,textArea.value,'dialogHeight: 290px; dialogWidth: 280px; center: Yes; help: No; resizable: No; status: No;');
}

function gs_checkDate(y,m,d)
{
	var newDate = new Date(y,m,d,0,0,0);

	if ((newDate.getDate() != d) || (newDate.getMonth() != m) || (newDate.getYear() != y))
	{
		return false;
	}
	return true
}

function gs_compareDates(y1,m1,d1, y2,m2,d2)
{
	var newDate1 = new Date(y1,m1,d1,0,0,0);
	var newDate2 = new Date(y2,m2,d2,0,0,0);

	if (newDate1.getTime() < newDate2.getTime())
		return -1;
	else {
		if (newDate1.getTime() > newDate2.getTime())	
			return 1;
		else
			return 0;
	}
}

var KC_BACKSPACE = 8; 
var KC_DELETE = 46; 
var KC_NUMERIC0 = 48; 
var KC_NUMERIC9 = 57; 
var KC_DECIMALPOINT = 190; 
var KC_NUMLOCK_NUMERIC0=96;
var KC_NUMLOCK_NUMERIC9=105;
var KC_NUMLOCK_DECIMALPOINT=110;
var KC_TAB = 9;
var KC_LEFT_ARROW = 37;
var KC_RIGHT_ARROW = 39;

// IE Only
function validateDoubleInput(value)
{ 
	k = window.event.keyCode;
	
	if ((k==KC_BACKSPACE) || (k==KC_DELETE) || (k==KC_TAB) || (k==KC_LEFT_ARROW) || (k==KC_RIGHT_ARROW))
		return true;
	
	decimalPosition = value.indexOf(".");

	if ((decimalPosition != -1) && ((k==KC_DECIMALPOINT)||(k==KC_NUMLOCK_DECIMALPOINT)))
		return false;
		
	if ((k==KC_DECIMALPOINT) || (k==KC_NUMLOCK_DECIMALPOINT) || ((k>=KC_NUMERIC0) && (k<=KC_NUMERIC9)) || ((k>=KC_NUMLOCK_NUMERIC0) && (k<=KC_NUMLOCK_NUMERIC9)) )
		return true;
	else
		return false;		
}

// IE Only
function validateCurrencyInput(value)
{ 
			
	k = window.event.keyCode;

	if ((k==KC_BACKSPACE) || (k==KC_DELETE) || (k==KC_TAB) || (k==KC_LEFT_ARROW) || (k==KC_RIGHT_ARROW))
		return true;
	
	decimalPosition = value.indexOf(".");

	if ((decimalPosition != -1) && ((k==KC_DECIMALPOINT)||(k==KC_NUMLOCK_DECIMALPOINT)))
		return false;
	
	//if ((decimalPosition != -1) &&
	//    (value.length > (decimalPosition+2)))
	//	return false;
		
	if ((k==KC_DECIMALPOINT) || (k==KC_NUMLOCK_DECIMALPOINT) || ((k>=KC_NUMERIC0) && (k<=KC_NUMERIC9)) || ((k>=KC_NUMLOCK_NUMERIC0) && (k<=KC_NUMLOCK_NUMERIC9)) ) 
		return true;
	else
		return false;		
}

// IE Only
function validateIntegerInput()
{ 
	k = window.event.keyCode;
	if ((k==KC_BACKSPACE) || (k==KC_DELETE) || (k==KC_TAB) || (k==KC_LEFT_ARROW) || (k==KC_RIGHT_ARROW) || ((k>=KC_NUMERIC0) && (k<=KC_NUMERIC9)) || ((k>=KC_NUMLOCK_NUMERIC0) && (k<=KC_NUMLOCK_NUMERIC9)) )
		return true;
	else
		return false;		
}

function stripleadingblanks(value) { 
   var newstring = "" 
   var donecheckingblanks = false 
   if (value == "") { 
   return newstring 
   } 
   for (var x = 0; x < value.length; x++) { 
      if (!donecheckingblanks) { 
         if (value.charAt(x) != " ") { 
            donecheckingblanks = true 
            newstring += value.charAt(x) 
         } 
      } else { 
         newstring += value.charAt(x) 
      } 
   } 
   return newstring 
}  

function striptrailingblanks(value) { 
   var newstring = "" 
   var donecheckingblanks = false 
   for (var x = value.length - 1; x >= 0; x--) { 
      if (!donecheckingblanks) { 
         if (value.charAt(x) != " ") { 
            donecheckingblanks = true 
            newstring = value.charAt(x) + newstring 
         } 
      } else { 
         newstring = value.charAt(x) + newstring 
      } 
   } 
   return newstring 
}  

function stripleadingtrailingblanks(value) { 
   var temp = value 
   temp = stripleadingblanks(temp) 
   temp = striptrailingblanks(temp) 
   return temp 
}  

function isempty(thevalue) { 
   var value = stripleadingtrailingblanks(thevalue) 
   if ((value == "") || (value == null)) { 
      return true 
   } else { 
      return false 
   }  
}  

// Supports all browsers which handle regular expression
function checkCurrencyKey(event, data) {
	
	TAB = 9;
	DELETE = 127; // ? mozilla seems to read delete key as 46 which is . (or arrow keys)
	BACKSPACE = 8;
	ENTER = 13;
	//alert(event.keyCode);
	key = event.which;
	if (typeof key == 'undefined' || key == 0) {
		key = event.charCode;
		if (typeof key == 'undefined' || key == 0) {
			key = event.keyCode;
		}
	}

		if (key == TAB || key == DELETE || key == BACKSPACE || key == ENTER) {
		return true;
	}
	
	testValue = data + String.fromCharCode(key);
	returnVal = checkCurrencyInput(testValue);
	return returnVal;
}

// Supports all browsers which handle regular expression
function checkCurrencyInput(currencyValue) {
	re = new RegExp("^\s*[£]?\s*[0-9]+[.]?([0-9]{0,2})?\s*$");
	return re.test(currencyValue);
}

// formats a value to a currency format and 
// rounds up/down if required
function currencyFormatted(amount)
{
var i = parseFloat(amount);
if(isNaN(i)) { i = 0.00; }
var minus = '';
if(i < 0) { minus = '-'; }
i = Math.abs(i);
i = parseInt((i + .005) * 100);
i = i / 100;
s = new String(i);
if(s.indexOf('.') < 0) { s += '.00'; }
if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
s = minus + s;
return s;
}

function removeSpaces(str) {
	rexp = / /gi;
	return str.replace(rexp, "");	
}

//check postcode format is valid
function validatePostcode(pObj){ 
 test = pObj.value; 
 size = test.length;
 test = test.toUpperCase(); 

  //Strip leading spaces
 while (test.slice(0,1) == " ") {
 	test = test.substr(1,size-1);
  	size = test.length;
  }
  
  //Strip trailing spaces
 while(test.slice(size-1,size)== " ") {
 	test = test.substr(0,size-1);
 	size = test.length;
  }

  //Code length rule
 if (size < 6 || size > 8){ pObj.focus(); return false; }
  //leftmost character must be alpha character rule
 if (!(isNaN(test.charAt(0)))){    pObj.focus();  return false; }  
  //first character of inward code must be numeric rule
 if (isNaN(test.charAt(size-3))){ pObj.focus(); return false; }
  //space in position length-3 rule
 if (!(test.charAt(size-4) == " ")){  pObj.focus(); return false; }
 
   count1 = test.indexOf(" ");count2 = test.lastIndexOf(" ");
  //only one space rule
  if (count1 != count2){  pObj.focus();  return false; }

	//Alls well..
	return true;
}

//WEBTRENDS TRACKING

// cmunro 27/04/06 customised parameters
var wtParameterArray = new Array();	
var additionalParameters = "";
var additionalPageParameters = "";
var useDefaultPageTitle = false;
var advancedWebTrendsTracking = "";

var gService = true;
var gTimeZone = 0;
// Code section for Enable First-Party Cookie Tracking
function dcsCookie(){
	if (typeof(dcsOther)=="function"){
		dcsOther();
	}
	else if (typeof(dcsPlugin)=="function"){
		dcsPlugin();
	}
	else if (typeof(dcsFPC)=="function"){
		dcsFPC(gTimeZone);
	}
}
function dcsGetCookie(name){
	var pos=document.cookie.indexOf(name+"=");
	if (pos!=-1){
		var start=pos+name.length+1;
		var end=document.cookie.indexOf(";",start);
		if (end==-1){
			end=document.cookie.length;
		}
		return unescape(document.cookie.substring(start,end));
	}
	return null;
}
function dcsGetCrumb(name,crumb){
	var aCookie=dcsGetCookie(name).split(":");
	for (var i=0;i<aCookie.length;i++){
		var aCrumb=aCookie[i].split("=");
		if (crumb==aCrumb[0]){
			return aCrumb[1];
		}
	}
	return null;
}
function dcsGetIdCrumb(name,crumb){
	var cookie=dcsGetCookie(name);
	var id=cookie.substring(0,cookie.indexOf(":lv="));
	var aCrumb=id.split("=");
	for (var i=0;i<aCrumb.length;i++){
		if (crumb==aCrumb[0]){
			return aCrumb[1];
		}
	}
	return null;
}
function dcsFPC(offset){
	if (typeof(offset)=="undefined"){
		return;
	}
	if (document.cookie.indexOf("WTLOPTOUT=")!=-1){
		return;
	}
	var name=gFpc;
	var dCur=new Date();
	var adj=(dCur.getTimezoneOffset()*60000)+(offset*3600000);
	dCur.setTime(dCur.getTime()+adj);
	var dExp=new Date(dCur.getTime()+315360000000);
	var dSes=new Date(dCur.getTime());
	if (document.cookie.indexOf(name+"=")==-1){
		if ((typeof(gWtId)!="undefined")&&(gWtId!="")){
			WT.co_f=gWtId;
		}
		else if ((typeof(gTempWtId)!="undefined")&&(gTempWtId!="")){
			WT.co_f=gTempWtId;
			WT.vt_f="1";
		}
		else{
			WT.co_f="2";
			var cur=dCur.getTime().toString();
			for (var i=2;i<=(32-cur.length);i++){
				WT.co_f+=Math.floor(Math.random()*16.0).toString(16);
			}
			WT.co_f+=cur;
			WT.vt_f="1";
		}
		if (typeof(gWtAccountRollup)=="undefined"){
			WT.vt_f_a="1";
		}
		WT.vt_f_s="1";
		WT.vt_f_d="1";
	}
	else{
		var id=dcsGetIdCrumb(name,"id");
		var lv=parseInt(dcsGetCrumb(name,"lv"));
		var ss=parseInt(dcsGetCrumb(name,"ss"));
		if ((id==null)||(id=="null")||isNaN(lv)||isNaN(ss)){
			return;
		}
		WT.co_f=id;
		var dLst=new Date(lv);
		dSes.setTime(ss);
		if ((dCur.getTime()>(dLst.getTime()+1800000))||(dCur.getTime()>(dSes.getTime()+28800000))){
			dSes.setTime(dCur.getTime());
			WT.vt_f_s="1";
		}
		if ((dCur.getDay()!=dLst.getDay())||(dCur.getMonth()!=dLst.getMonth())||(dCur.getYear()!=dLst.getYear())){
			WT.vt_f_d="1";
		}
	}
	WT.co_f=escape(WT.co_f);
	WT.vt_sid=WT.co_f+"."+(dSes.getTime()-adj);
	var expiry="; expires="+dExp.toGMTString();
	document.cookie=name+"="+"id="+WT.co_f+":lv="+dCur.getTime().toString()+":ss="+dSes.getTime().toString()+expiry+"; path=/"+(((typeof(gFpcDom)!="undefined")&&(gFpcDom!=""))?("; domain="+gFpcDom):(""));
	if (document.cookie.indexOf(name+"=")==-1){
		WT.co_f=WT.vt_sid=WT.vt_f_s=WT.vt_f_d="";
		WT.vt_f=WT.vt_f_a="2";
	}
}

// Code section for Use the new first-party cookie generated with this tag.
var gFpc="WT_FPC";
var gConvert=true;

// Code section for Set the First-Party Cookie domain
var gFpcDom=".waterstones.com";

function dcsAdv(){
	dcsFunc("dcsET");
	dcsFunc("dcsCookie");
	dcsFunc("dcsAdSearch");
	dcsFunc("dcsTP");
}

// Code section for Enable Event Tracking
var gHref=gTarget="";

function dcsSaveHref(evt){
	if (evt.preventDefault&&evt.currentTarget.href){
		evt.preventDefault();
    	gHref=evt.currentTarget.href;
		gTarget=evt.currentTarget.target;
	}
}

function dcsLoadHref(evt){
	if (gHref.length>0){
		if ((gTarget!="")&&gTarget.toLowerCase()=="_blank"){
			window.open(gHref,"dcsHref");
        }
		else{
			window.location=gHref;
		}
		gHref=gTarget="";
	}
}

function dcsEvt(evt,tag){
	var e=evt.target||evt.srcElement;
	while (e.tagName&&(e.tagName!=tag)){
		e=e.parentElement||e.parentNode;
	}
	return e;
}

function dcsMultiTrack(){
	if (arguments.length%2==0){
		for (var i=0;i<arguments.length;i+=2){
			if (arguments[i].indexOf('WT.')==0){
				WT[arguments[i].substring(3)]=arguments[i+1];
			}
			else if (arguments[i].indexOf('DCS.')==0){
				DCS[arguments[i].substring(4)]=arguments[i+1];
			}
			else if (arguments[i].indexOf('DCSext.')==0){
				DCSext[arguments[i].substring(7)]=arguments[i+1];
			}
		}
		var dCurrent=new Date();
		DCS.dcsdat=dCurrent.getTime();
		dcsTag();
	}
}

function dcsHandler(evt){
	evt=evt||(window.event||"");
	if (evt){
		var e=dcsEvt(evt,"A");
		var path=e.pathname?((e.pathname.indexOf("/")!=0)?"/"+e.pathname:e.pathname):"/";
		dcsSaveHref(evt,e);
		dcsMultiTrack("DCS.dcssip",e.hostname,"DCS.dcsuri",path);
		DCS.dcssip=DCS.dcsuri=WT.ti=WT.si_n=WT.si_x=WT.pn_sku=WT.tx_e="";
	}
}

// END OF SDC Advanced Tracking Code

// START OF SmartSource Data Collector TAG 
// Copyright (c) 1996-2005 WebTrends Inc.  All rights reserved. 

// $DateTime: 2005/12/16 12:16:18 $ 
var gDomain="statse.webtrendslive.com";
var gDcsId="dcscxdbrh100004nwvl9h9fwx_2k3t";

if ((typeof(gConvert)!="undefined")&&gConvert&&(document.cookie.indexOf(gFpc+"=")==-1)&&(document.cookie.indexOf("WTLOPTOUT=")==-1)){
	document.write("<SCR"+"IPT TYPE='text/javascript' SRC='"+"http"+(window.location.protocol.indexOf('https:')==0?'s':'')+"://"+gDomain+"/"+gDcsId+"/wtid.js"+"'><\/SCR"+"IPT>");
}

var gImages=new Array;
var gIndex=0;
var DCS=new Object();
var WT=new Object();
var DCSext=new Object();
var gQP=new Array();
var gI18n=false;
if (window.RegExp){
	var RE={"%09":/\t/g,"%20":/ /g,"%23":/\#/g,"%26":/\&/g,"%2B":/\+/g,"%3F":/\?/g,"%5C":/\\/g};
	var I18NRE={"%25":/\%/g};
}

function DcsDynamicSearch(cid){
	// private members
	var cname="WT_DSAI";
	var wt=(typeof(WT)=="object")?WT:{};

	// private methods
	function setAdInfo(){
		var value=getQueryParam("cshift_ck");
		if (value.length>0){
			var cur=new Date();
			var exp=new Date(cur.getTime()+315360000000);
			document.cookie=cname+"="+value+"; expires="+exp.toGMTString()+"; path=/";
		}
	}
	function getQueryParam(key){
		var qry=window.location.search.substring(1);
		if (qry.length>0){
			var params=qry.split("&");
			var count=params.length;
			for (var i=0;i<count;i++){
				var p=params[i].split("=");
				if (p[0]==key){
					return p[1];
				}
			}
		}
		return "";
	}

	// privileged methods
	this.getClientId=function(){
		return cid;
	};
	this.getAdInfo=function(){
		return dcsGetCookie(cname)||"";
	};
	this.getIsNew=function(){
		return 1;
	};
	// read query parameter, set cookie
	setAdInfo();
}

var dcsDS=new DcsDynamicSearch(5128);

function dcsVar(){
	var dCurrent=new Date();
	WT.tz=dCurrent.getTimezoneOffset()/60*-1;
	if (WT.tz==0){
		WT.tz="0";
	}
	WT.bh=dCurrent.getHours();
	WT.ul=navigator.appName=="Netscape"?navigator.language:navigator.userLanguage;
	if (typeof(screen)=="object"){
		WT.cd=navigator.appName=="Netscape"?screen.pixelDepth:screen.colorDepth;
		WT.sr=screen.width+"x"+screen.height;
	}
	if (typeof(navigator.javaEnabled())=="boolean"){
		WT.jo=navigator.javaEnabled()?"Yes":"No";
	}
	
	//cmunro HTML page title only used for product details and genre pages
	if (useDefaultPageTitle) {
		if (document.title){
			WT.ti=gI18n?dcsEscape(dcsEncode(document.title),I18NRE):document.title;
		}
	}

	WT.js="Yes";
	WT.jv=dcsJV();
	if (document.body&&document.body.addBehavior){
		document.body.addBehavior("#default#clientCaps");
		if (document.body.connectionType){
			WT.ct=document.body.connectionType;
		}
		document.body.addBehavior("#default#homePage");
		WT.hp=document.body.isHomePage(location.href)?"1":"0";
	}
	if (parseInt(navigator.appVersion)>3){
		if ((navigator.appName=="Microsoft Internet Explorer")&&document.body){
			WT.bs=document.body.offsetWidth+"x"+document.body.offsetHeight;
		}
		else if (navigator.appName=="Netscape"){
			WT.bs=window.innerWidth+"x"+window.innerHeight;
		}
	}
	WT.fi="No";
	if (window.ActiveXObject){
		for(var i=10;i>0;i--){
			try{
				var flash = new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+i);
				WT.fi="Yes";
				WT.fv=i+".0";
				break;
			}
			catch(e){
			}
		}
	}
	else if (navigator.plugins&&navigator.plugins.length){
		for (var i=0;i<navigator.plugins.length;i++){
			if (navigator.plugins[i].name.indexOf('Shockwave Flash')!=-1){
				WT.fi="Yes";
				WT.fv=navigator.plugins[i].description.split(" ")[2];
				break;
			}
		}
	}
	if (gI18n){
		WT.em=(typeof(encodeURIComponent)=="function")?"uri":"esc";
		if (typeof(document.defaultCharset)=="string"){
			WT.le=document.defaultCharset;
		} 
		else if (typeof(document.characterSet)=="string"){
			WT.le=document.characterSet;
		}
	}
	//cmunro  27/04/06 WT.sp tag no longer used
	//WT.sp="@@SPLITVALUE@@";
	DCS.dcsdat=dCurrent.getTime();
	DCS.dcssip=window.location.hostname;
	DCS.dcsuri=window.location.pathname;
	if (window.location.search){
		DCS.dcsqry=window.location.search;
		if (gQP.length>0){
			for (var i=0;i<gQP.length;i++){
				var pos=DCS.dcsqry.indexOf(gQP[i]);
				if (pos!=-1){
					var front=DCS.dcsqry.substring(0,pos);
					var end=DCS.dcsqry.substring(pos+gQP[i].length,DCS.dcsqry.length);
					DCS.dcsqry=front+end;
				}
			}
		}
	}
	if ((window.document.referrer!="")&&(window.document.referrer!="-")){
		if (!(navigator.appName=="Microsoft Internet Explorer"&&parseInt(navigator.appVersion)<4)){
			DCS.dcsref=gI18n?dcsEscape(window.document.referrer, I18NRE):window.document.referrer;
		}
	}
}


function dcsA(N,V){
	return "&"+N+"="+dcsEscape(V, RE);
}

function dcsEscape(S, REL){
	if (typeof(REL)!="undefined"){
		var retStr = new String(S);
		for (R in REL){
			retStr = retStr.replace(REL[R],R);
		}
		return retStr;
	}
	else{
		return escape(S);
	}
}

function dcsEncode(S){
	return (typeof(encodeURIComponent)=="function")?encodeURIComponent(S):escape(S);
}

function dcsCreateImage(dcsSrc){
	if (document.images){
		gImages[gIndex]=new Image;
		if ((typeof(gHref)!="undefined")&&(gHref.length>0)){
			gImages[gIndex].onload=gImages[gIndex].onerror=dcsLoadHref;
		}
		gImages[gIndex].src=dcsSrc;
		gIndex++;
	}
	else{
		document.write('<IMG ALT="" BORDER="0" NAME="DCSIMG" WIDTH="1" HEIGHT="1" SRC="'+dcsSrc+'">');
	}
}

function dcsMeta(){
	var elems;
	if (document.all){
		elems=document.all.tags("meta");
	}
	else if (document.documentElement){
		elems=document.getElementsByTagName("meta");
	}
	if (typeof(elems)!="undefined"){
		for (var i=1;i<=elems.length;i++){
			var meta=elems.item(i-1);
			if (meta.name){
				if (meta.name.indexOf('WT.')==0){
					WT[meta.name.substring(3)]=(gI18n&&(meta.name.indexOf('WT.ti')==0))?dcsEscape(dcsEncode(meta.content),I18NRE):meta.content;
				}
				else if (meta.name.indexOf('DCSext.')==0){
					DCSext[meta.name.substring(7)]=meta.content;
				}
				else if (meta.name.indexOf('DCS.')==0){
					DCS[meta.name.substring(4)]=(gI18n&&(meta.name.indexOf('DCS.dcsref')==0))?dcsEscape(meta.content,I18NRE):meta.content;
				}
			}
		}
	}
}

function dcsTag(){
	if (document.cookie.indexOf("WTLOPTOUT=")!=-1){
		return;
	}
	var P="http"+(window.location.protocol.indexOf('https:')==0?'s':'')+"://"+gDomain+(gDcsId==""?'':'/'+gDcsId)+"/dcs.gif?";
	for (N in DCS){
		if (DCS[N]) {
			P+=dcsA(N,DCS[N]);
		}
	}
	for (N in WT){
		if (WT[N]) {
			P+=dcsA("WT."+N,WT[N]);
		}
	}
	for (N in DCSext){
		if (DCSext[N]) {
			P+=dcsA(N,DCSext[N]);
		}
	}
	if (P.length>2048&&navigator.userAgent.indexOf('MSIE')>=0){
		P=P.substring(0,2040)+"&WT.tu=1";
	}
	P = P + additionalParameters + additionalPageParameters;
	//alert(P);
	additionalParameters=additionalPageParameters="";
	dcsCreateImage(P);
}

function dcsJV(){
	var agt=navigator.userAgent.toLowerCase();
	var major=parseInt(navigator.appVersion);
	var mac=(agt.indexOf("mac")!=-1);
	var nn=((agt.indexOf("mozilla")!=-1)&&(agt.indexOf("compatible")==-1));
	var nn4=(nn&&(major==4));
	var nn6up=(nn&&(major>=5));
	var ie=((agt.indexOf("msie")!=-1)&&(agt.indexOf("opera")==-1));
	var ie4=(ie&&(major==4)&&(agt.indexOf("msie 4")!=-1));
	var ie5up=(ie&&!ie4);
	var op=(agt.indexOf("opera")!=-1);
	var op5=(agt.indexOf("opera 5")!=-1||agt.indexOf("opera/5")!=-1);
	var op6=(agt.indexOf("opera 6")!=-1||agt.indexOf("opera/6")!=-1);
	var op7up=(op&&!op5&&!op6);
	var jv="1.1";
	if (nn6up||op7up){
		jv="1.5";
	}
	else if ((mac&&ie5up)||op6){
		jv="1.4";
	}
	else if (ie5up||nn4||op5){
		jv="1.3";
	}
	else if (ie4){
		jv="1.2";
	}
	return jv;
}

function dcsFunc(func){
	if (typeof(window[func])=="function"){
		window[func]();
	}
}

//END WEBTRENTDS TRACKING

// functions moved from search results

function doAuthorSearch(searchString)
{
	searchString = searchString.replace(/&#34;/g, '');
	searchString = searchString.replace(/&#39;/g, '');	
	
	document.getElementById('authorSearchForm').author.value = searchString;
	document.getElementById('authorSearchForm').submit();
}

function openAlibrisBooksLink(url, isbn)
{
	var link = url+isbn;
	window.open(link, "alibrisBooksWindow", "status=yes, resizable=yes, scrollbars=yes, titlebar=yes, toolbar=yes,  menubar=yes, location=yes");
}

function openAlibrisBooksKeywordLink(url, author, title)
{
	var link = url+title+'+'+author;
	window.open(link, "alibrisBooksWindow", "status=yes, resizable=yes, scrollbars=yes, titlebar=yes, toolbar=yes,  menubar=yes, location=yes");
}


function submitZipAction(postCodeString)
{
	document.findLocalStore.adrPostcode.value = postCodeString;
	document.findLocalStore.submit();
	
}

function openWindow(url, windowName, width, height)
{
	openWin = window.open(url, windowName, "width=" + width + ",height=" + height);
}
