﻿function MM_reloadPage(init) {  //reloads the window if Nav4 resized


  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {


    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}


  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();


}


MM_reloadPage(true);




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_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_findObj(n, d) { //v3.0


  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); 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 ISEmail()


{


	email = form1.email.value;


	errorm = "";


	if (email == "")


	{


		errorm += "Please enter your email address\nthen click Go.";


	}


	else if(!email.match(/^[A-Za-z0-9\._\-+]+@[A-Za-z0-9_\-+]+(\.[A-Za-z0-9_\-+]+)+$/))


	{


		errorm += "Please check that you have entered\na valid email address.";


	}


	if (errorm != "")


	{


		errorm2 = "Please fill the following: \n";


		errorm2 += errorm;


		alert(errorm);


		return false;


	}


	else


	{


		return true;


	}


}








//--[CONTROL: open a new window with passed content reference. ]-------------------------|


function new_window( contentURL, winWidth, winHeight ) {





// Calculate new window coordinates so that it is centred in user's computer screen.


	var winTop = (screen.height / 2) - (winHeight / 2);


	var winLeft = (screen.width / 2) - (winWidth /2);


	


// Define specification string for new window.


	winSpec = "'toolbar=0, location=0, directories=no, status=0, menubar=0, scrollbars=0, resizable=0, top=" + winTop + ", left=" + winLeft + ", width=" + winWidth + ", height=" + winHeight + "'";





// Open new window.


	window.open(contentURL,"",winSpec);





} // end: new_window()











//--[RANDOM: choose first element to display.]------------------------------------------|


function choose_element( elementPrefix, contentMax ) {


	// choose a random number between 1 and the content maximum.


	var contentNum = Math.round((contentMax - 1) * Math.random()) + 1;


	


	// display randomly chosen display element.


	set_display( elementPrefix, contentNum, contentMax, 1 );





}








//--[DISPLAY: update count of displayed testimonial. ]----------------------------------|


function update_controls( contentNum, contentMax ) {


	


	// update values for content count indicators.


	document.getElementById("content_numbers").innerHTML = contentTitle + "&nbsp;" + contentNum + " of " + contentMax;





	// setup start graphic to controls code block.


	var controlCode = "<img src='images/bullet_r.gif' width='6' height='9' alt='process image' /> &nbsp;";


	


	// setup content control range value to get previous item.


	var previousNum = eval(contentNum - 1)


	if (previousNum < 1) {


		previousNum = contentMax;



	}


	


	// setup control code with previous control new value.


	controlCode += "<a class='link' href='javascript:set_display(\"t\"," + previousNum + ", " + eval(contentMax) +", 1);' title='To: view " + contentTitle + " " + previousNum + " of " + contentMax + ".'><strong>Previous</strong></a>";


	


	// setup content control range value to get next item.


	var nextNum = eval(contentNum + 1)


	if (nextNum > contentMax) {


		nextNum = 1;


	}


	


	// amend control code with next control new value.


	controlCode += " | <a class='link' href='javascript:set_display(\"t\"," + nextNum + ", " + eval(contentMax) + ", 1);' title='To: view " + contentTitle + " " + nextNum + " of " + contentMax + ".'><strong>Next</strong></a> &nbsp;";


	


	// add end graphic to controls code block.


	controlCode += "<img src='images/bullet.gif' width='6' height='9' alt='process image' />";


	


	// write control code to document.


	document.getElementById("content_controls").innerHTML = controlCode;





} // end: update_controls()








//--[DISPLAY: control of document element visibility. ]---------------------------------|


function set_display( elementPrefix, elementNum, elementRange, displayState ) {


	


	// Setup display default value for all elements in range.


	displayValue = (displayState == 1) ? "none" : "block";


		


	// reset all elements to default state.


	for (var c = 1; c <= elementRange; c++) 


	{


		document.getElementById(elementPrefix + c).style.display = displayValue;


	}


	


	// Setup display value for target element.


	displayValue = (displayState == 0) ? "none" : "block";


	document.getElementById(elementPrefix + elementNum).style.display = displayValue;


	


	if (contentTitle == "Testimonial") {


		update_controls( elementNum, elementRange ); // call display counter update.


	} else {


		if (elementNum == 1) {


			var controlCode = "Click Sample Book Cover image to view enlargement. &nbsp;| &nbsp;<a class='link' href='covers.asp' title='To: refresh display of randomly chosen sample book covers'><strong>Refresh</strong></a> &nbsp;<img src='images/bullet_r.gif' width='6' height='9' alt='process image' />";


		} else {


			var controlCode = "<img src='images/bullet_r.gif' width='6' height='9' alt='process image' /> &nbsp;";


			controlCode += "<a class='link' href='javascript:set_display(\"" + elementPrefix + "\",1," + elementRange + ",1);' title='To: go back to sample book covers list'><strong>Back to sample book covers list.</strong></a>";


			


		}


		document.getElementById("content_controls").innerHTML = controlCode;


	}


} // end: set_display()








//--[VALIDATE: online form for mandatory field completion.]


function validate_form( formID, promptID, checkEmail) {





	var enquiryForm = document.forms[formID]; // setup reference to calling form object.





// Define variables.


	var fldPrmpt = "Required";


	var titleValid = true;


	var nameValid = true;


	var phoneValid = true;


	var emailValid = true;


	var addressValid = true;





// Read mandatory form fields to variables.


	var titleWork = enquiryForm.title_of_work.value;


	var fname = enquiryForm.writers_name.value;


	var phone = enquiryForm.phone.value;


	var email = enquiryForm.email.value;


	var address = enquiryForm.home_address.value;





// Set default values for fields.


	var defaultValue = "&nbsp;";


	


// Trap for invalid field values.


	if ((titleWork==fldPrmpt) || (titleWork=="") || (titleWork==" ") ||(titleWork==defaultValue)) titleValid = false;


	if ((fname==fldPrmpt) || (fname=="") || (fname==" ") ||(fname==defaultValue)) nameValid = false;


	if ((phone==fldPrmpt) || (phone=="") || (phone==" ") || (phone==defaultValue)) phoneValid = false;


	if ((email==fldPrmpt) || (email=="") || (email==" ") || (email==defaultValue)) emailValid = false;


	if ((address==fldPrmpt) || (address=="") || (address==" ") || (address==defaultValue)) addressValid = false;


	


//Set form valid flag. Titleor Work, Writer's Name, Telephone and Address must be valid.


	var formValid = ((titleValid==true) && (nameValid==true) && (phoneValid==true) && (addressValid==true));


	


//If form is not valid then set alerts.


	if (formValid == false) {





//Set field box with prompt for any invalid field.


		if ((titleValid==false) && (titleWork!=fldPrmpt)) enquiryForm.title_of_work.value = fldPrmpt;


		if ((nameValid==false) && (fname!=fldPrmpt)) enquiryForm.writers_name.value = fldPrmpt;


		//if ((emailValid==false) && (email!=fldPrmpt)) enquiryForm.email.value = fldPrmpt;


		if ((phoneValid==false) && (phone!=fldPrmpt)) enquiryForm.phone.value = fldPrmpt;


		if ((addressValid==false) && (address!=fldPrmpt)) enquiryForm.home_address.value = fldPrmpt;





//Prompt user with alert message.


		document.getElementById(promptID).innerHTML = "Please fill in at least the indicated 'Required' fields. Thank You.";





	}


	


	if (formValid == false) return;	//Jump out if form is invalid.





	if ((checkEmail) && (enquiryForm.email.value !="")) {


		emailValid = validate_email( formID, promptID, false );


	} else {


		emailValid = true;


	}





	if (formValid && emailValid) {


		enquiryForm.submit(); // submit the form.


	}





} 	// end function check_form().











//--[VALIDATE: Email form field for inclusion of key characters.]---------------------------------|


function validate_email( enquiryForm, promptID, sendFromHere ) {





	enquiryForm = document.forms[enquiryForm]; // setup reference to calling form object.


	var email = enquiryForm.email.value; // grab value for email field.




	//Setup regular expression for email matching.


	var objRegex = /^[A-Za-z0-9\._\-+]+@[A-Za-z0-9_\-+]+(\.[A-Za-z0-9_\-+]+)+$/




//Check format of email field and set valid flag.


	var emailValid = objRegex.test(email);


		


//If an invalid email field value exists, alert user.


	if (emailValid == false) {


			enquiryForm.email.select();


			document.getElementById(promptID).innerHTML = 'Is the email address entered correctly?';


	}


	


	// All is well then submit for data to server.


	if (sendFromHere == true && emailValid == true) {


		enquiryForm.redirect.value = window.location.href; // set form hidden redirect field value.


		enquiryForm.submit(); // submit the form.


		return 0; // exit.


	} else {


		return emailValid;


	}


	


}	// end: function validate_email().








//--[RESET: Function to clear emailForm prompt area and form elements to defaults.]---------------|


function reset_form(formID, promptID) {


	


	document.getElementById(promptID).innerHTML = ""; // clear error message area.


	document.forms[formID].reset(); // reset form.


}








//--[VALIDATE: Single Form field as not blank or reset.]------------------------------------------|


function validate_field( formID, fieldName, defaultText, promptID, emailValid ) {





	var formValid = false


	var enquiryForm = document.forms[formID]; // setup reference to calling form object.


	var formField = enquiryForm.elements[fieldName].value;


	if (formField == defaultText || formField == "") {


		document.getElementById(promptID).innerHTML = "Please enter your message or question before clicking 'Submit'.";


		return;


	} else {


		formValid = true;


	}


	


	if (emailValid) {


		emailValid = validate_email( formID, promptID, false );


	} else {


		emailValid = true;


	}


	


	if (formValid && emailValid) {


		enquiryForm.redirect.value = window.location.href; // set form hidden redirect field value.


		enquiryForm.submit(); // submit form.


	}


}






function dw_Rotator(id,speed,path,bTrans,bMouse,bRand){var imgObj=document.getElementById(id);if(!imgObj){imgObj=document.images[id];if(!imgObj)return;imgObj.id=id;}
this.id=id;this.speed=speed||4500;this.path=path||"";this.bRand=bRand;this.ctr=0;this.timer=0;this.imgs=[];this._setupLink(imgObj,bMouse);this.bTrans=bTrans&&typeof imgObj.filters!='undefined';var index=dw_Rotator.col.length;dw_Rotator.col[index]=this;this.animString="dw_Rotator.col["+index+"]";}
dw_Rotator.col=[];dw_Rotator.resumeDelay=400;dw_Rotator.prototype._setupLink=function(imgObj,bMouse){if(imgObj.parentNode&&imgObj.parentNode.tagName.toLowerCase()=='a'){var parentLink=this.parentLink=imgObj.parentNode;if(bMouse){dw_Event.add(parentLink,'mouseover',dw_Rotator.pause);dw_Event.add(parentLink,'mouseout',dw_Rotator.resume);}}}
dw_Rotator.getInstanceById=function(id){var len=dw_Rotator.col.length,obj;for(var i=0;i<len;i++){obj=dw_Rotator.col[i];if(obj.id&&obj.id==id){return obj;}}
return null;}
dw_Rotator.prototype.on_rotate=function(){}
dw_Rotator.prototype.addImages=function(){var img;for(var i=0;arguments[i];i++){img=new Image();img.src=this.path+arguments[i];this.imgs[this.imgs.length]=img;}}
dw_Rotator.prototype.rotate=function(){clearTimeout(this.timer);this.timer=null;var imgObj=document.getElementById(this.id);if(this.bRand){this.setRandomCtr();}else{if(this.ctr<this.imgs.length-1)this.ctr++;else this.ctr=0;}
if(this.bTrans){this.doImageTrans(imgObj);}else{imgObj.src=this.imgs[this.ctr].src;}
this.swapAlt(imgObj);this.prepAction();this.on_rotate();this.timer=setTimeout(this.animString+".rotate()",this.speed);}
dw_Rotator.prototype.setRandomCtr=function(){var i=0,ctr;do{ctr=Math.floor(Math.random()*this.imgs.length);i++;}while(ctr==this.ctr&&i<6)
this.ctr=ctr;}
dw_Rotator.prototype.doImageTrans=function(imgObj){imgObj.style.filter='blendTrans(duration=1)';if(imgObj.filters.blendTrans)imgObj.filters.blendTrans.Apply();imgObj.src=this.imgs[this.ctr].src;imgObj.filters.blendTrans.Play();}
dw_Rotator.prototype.swapAlt=function(imgObj){if(!imgObj.setAttribute)return;if(this.alt&&this.alt[this.ctr]){imgObj.setAttribute('alt',this.alt[this.ctr]);}
if(this.title&&this.title[this.ctr]){imgObj.setAttribute('title',this.title[this.ctr]);}}
dw_Rotator.prototype.prepAction=function(){if(this.actions&&this.parentLink&&this.actions[this.ctr]){if(typeof this.actions[this.ctr]=='string'){this.parentLink.href=this.actions[this.ctr];}else if(typeof this.actions[this.ctr]=='function'){var id=this.id;this.parentLink.href="javascript: void "+this.actions[this.ctr]+"('"+id+"')";}}}
dw_Rotator.prototype.showCaption=function(){if(this.captions&&this.captionId){var el=document.getElementById(this.captionId);if(el&&this.captions[this.ctr]){el.innerHTML=this.captions[this.ctr];}}}
dw_Rotator.start=function(){var len=dw_Rotator.col.length,obj;for(var i=0;i<len;i++){obj=dw_Rotator.col[i];if(obj&&obj.id)
obj.timer=setTimeout(obj.animString+".rotate()",obj.speed);}}
dw_Rotator.stop=function(){var len=dw_Rotator.col.length,obj;for(var i=0;i<len;i++){obj=dw_Rotator.col[i];if(obj){clearTimeout(obj.timer);obj.timer=null;}}}
dw_Rotator.pause=function(e){e=dw_Event.DOMit(e);var id=e.target.id;var obj=dw_Rotator.getInstanceById(id);if(obj){clearTimeout(obj.timer);obj.timer=null;}}
dw_Rotator.resume=function(e){e=dw_Event.DOMit(e);var id=e.target.id;var obj=dw_Rotator.getInstanceById(id);if(obj&&obj.id){obj.timer=setTimeout(obj.animString+".rotate()",dw_Rotator.resumeDelay);}}
dw_Rotator.setup=function(){if(!document.getElementById)return;var i,j,rObj,r,imgAr,len;for(i=0;arguments[i];i++){rObj=arguments[i];r=new dw_Rotator(rObj.id,rObj.speed,rObj.path,rObj.bTrans,rObj.bMouse,rObj.bRand);try{imgAr=rObj.images;len=imgAr.length;for(j=0;j<len;j++){r.addImages(imgAr[j]);}
if(rObj.num)r.ctr=rObj.num;if(rObj.actions&&rObj.actions.length==len){r.addProp('actions',rObj.actions);}
if(rObj.alt&&rObj.alt.length==len){r.addProp('alt',rObj.alt);}
if(rObj.title&&rObj.title.length==len){r.addProp('title',rObj.title);}
if(rObj.captions){r.addProp('captions',rObj.captions);r.captionId=rObj.captionId;dw_Rotator.addRotateEvent(r,function(id){return function(){dw_Rotator.getInstanceById(id).showCaption();}}(rObj.id));}}catch(e){}}
dw_Rotator.start();}
dw_Rotator.addRotateEvent=function(r,fp){var old_on_rotate=r.on_rotate;r.on_rotate=function(){old_on_rotate();fp();}}
dw_Rotator.prototype.addProp=function(prop,ar){if(!this[prop]){this[prop]=[];}
var len=ar.length;for(var i=0;i<len;i++){this[prop][this[prop].length]=ar[i];}}
function dw_getRandomImage(rObj){var imgAr=rObj.images;if(!imgAr)return;var num=Math.floor(Math.random()*imgAr.length);var imgStr='';var imgFile=imgAr[num];rObj.num=num;var path=rObj.path||'';var id=rObj.id||'';var title,alt='',url;if(rObj.alt){alt=rObj.alt[num]?rObj.alt[num]:rObj.alt[0]?rObj.alt[0]:'';}
if(rObj.title){title=rObj.title[num]?rObj.title[num]:rObj.title[0]?rObj.title[0]:'';}
if(rObj.actions){url=rObj.actions[num]?rObj.actions[num]:rObj.actions[0]?rObj.actions[0]:null;}
if(url){imgStr+='<a href="';imgStr+=typeof url=='string'?url:'javascript: void '+url;imgStr+=rObj.loadNewWin?'" target="_blank">':'">';}
imgStr+='<img src="'+path+imgFile+'"';imgStr+=id?' id="'+id+'"':'';if(title){imgStr+=' title="'+title+'"';}
imgStr+=' alt="'+alt+'" border="0" />';if(url){imgStr+='</a>';}
document.write(imgStr);document.close();}
dw_Rotator.addControls=function(){var els=dw_getElementsByClassName('rotator_controls');for(var i=0;els[i];i++){var links=els[i].getElementsByTagName('a');for(var j=0;links[j];j++){if(dw_hasClass(links[j],'stop')){links[j].onclick=function(){dw_Rotator.stop();return false}}else if(dw_hasClass(links[j],'start')){links[j].onclick=function(){dw_Rotator.restart();return false}}}
els[i].style.display='block';}}
dw_Rotator.restart=function(){var len=dw_Rotator.col.length,obj;for(var i=0;i<len;i++){obj=dw_Rotator.col[i];if(obj&&obj.id)
obj.timer=setTimeout(obj.animString+".rotate()",dw_Rotator.resumeDelay);}}
function dw_hasClass(el,cl){var re=new RegExp("\\b"+cl+"\\b","i");if(re.test(el.className)){return true;}
return false;}
function dw_getElementsByClassName(sClass,sTag,oCont){var result=[],list,i;var re=new RegExp("\\b"+sClass+"\\b","i");oCont=oCont?oCont:document;if(document.getElementsByTagName){if(!sTag||sTag=="*"){list=oCont.all?oCont.all:oCont.getElementsByTagName("*");}else{list=oCont.getElementsByTagName(sTag);}
for(i=0;list[i];i++)
if(re.test(list[i].className))result.push(list[i]);}
return result;};function displayImgInSubWin(id){var rObj=dw_Rotator.getInstanceById(id);var file=rObj.imgs[rObj.ctr].src;openSubWin(file);return false;}
function openSubWin(url,nm,x,y,w,h,atts){nm=nm||"subwindow";atts=atts||"menubar,resizable,scrollbars";w=w||600;h=h||450;x=(typeof x=="number")?x:Math.round((screen.availWidth-w)/2);y=(typeof y=="number")?y:Math.round((screen.availHeight-h)/2);atts+=',width='+w+',height='+h+',left='+x+',top='+y;var win=window.open(url,nm,atts);if(win){if(!win.closed){win.resizeTo(w,h);win.moveTo(x,y);win.focus();return false;}}
return true;}
var dw_Event={add:function(obj,etype,fp,cap){cap=cap||false;if(obj.addEventListener)obj.addEventListener(etype,fp,cap);else if(obj.attachEvent)obj.attachEvent("on"+etype,fp);},remove:function(obj,etype,fp,cap){cap=cap||false;if(obj.removeEventListener)obj.removeEventListener(etype,fp,cap);else if(obj.detachEvent)obj.detachEvent("on"+etype,fp);},DOMit:function(e){e=e?e:window.event;if(!e.target)e.target=e.srcElement;if(!e.preventDefault)e.preventDefault=function(){e.returnValue=false;return false;}
if(!e.stopPropagation)e.stopPropagation=function(){e.cancelBubble=true;}
return e;},getTarget:function(e){e=dw_Event.DOMit(e);var tgt=e.target;if(tgt.nodeType!=1)tgt=tgt.parentNode;return tgt;}}
function addLoadEvent(func){var oldQueue=window.onload?window.onload:function(){};window.onload=function(){oldQueue();func();}}




