var cat=''; var prod=''; var package=-1;
var group=''; var category=''; var stitle=''; var pages=''; var stypes=''; var xtratot='0';
var slanguage=''; var sdomain=''; var howtopay='normal';
var inc_gr8=true; var inc_sms=true; var inc_map=false;
var qt_first='true'; var selcat=false; var quoted=false;
var email=''; var sprem='';

var quotetypes=new Array(); quotetypestitle=new Array();
var webprods=new Array(); var webprodstitle=new Array(); var weblang=new Array();
var hostfee=new Array(); var domainregfee=new Array(); var domainxferfee=new Array();
var domainrenfee=new Array(); var gr8stuff1=new Array(); var gr8stuff2=new Array();
var maxpages=new Array(); var maxtypes=new Array();
var fee_otherpages=new Array();

var fee_page=new Array(); var fee_extrapages=new Array();
var fee_interestperc=new Array(); var fee_languagepage=new Array();
var fee_debitorder=new Array();

quotetypes[0]="web"; quotetypestitle[0]='A Website';
quotetypes[1]="sw"; quotetypestitle[1]='Software';
quotetypes[2]="mkt"; quotetypestitle[2]='Marketing Sevices';
quotetypes[3]="isp1"; quotetypestitle[3]='Domain Services';
quotetypes[4]="isp2"; quotetypestitle[4]='Internet Access';

webprods[0]='starter'; webprodstitle[0]='Starter Website Package'; weblang[0]='english|afrikaans';
webprods[1]='standard'; webprodstitle[1]='Standard Website Package'; weblang[1]='english|afrikaans|both';
webprods[2]='advanced'; webprodstitle[2]='Advanced Website Package'; weblang[2]='english|afrikaans|both';
webprods[3]='shopping'; webprodstitle[3]='Shopping Website Package'; weblang[3]='english|afrikaans|both';
webprods[4]='special'; webprodstitle[4]='Special Website Package'; weblang[4]='english|afrikaans';

// FEES
	var def_page=200;           // Page price
	var def_extra=100;          // Extra pages or products/property detail pages
	var def_other=200;          // Other pages not on menu
	var def_interestrate=0.2;   // Interest rate for installments
	var def_language=100;       // Language cost per page
	var def_debitorder=5;       // Debit Order fee
	var def_special=800;		// Total development cost for special
	var def_gr8stuff=300;		// Gr8stuff annual licence fee

// starter
	var p=0;
	domainregfee[p]=200; domainxferfee[p]=100; domainrenfee[p]=0;
	hostfee[p]=0; maxpages[p]=5; maxtypes[p]=0;
	gr8stuff1[p]=def_gr8stuff; gr8stuff2[p]=def_gr8stuff;
	fee_page[p]=def_page; fee_extrapages[p]=def_extra; fee_debitorder[p]=def_debitorder;
	fee_otherpages[p]=def_other;
	fee_interestperc[p]=def_interestrate; fee_languagepage[p]=def_language;
// standard
	p=1;
	domainregfee[p]=350; domainxferfee[p]=200; domainrenfee[p]=100;
	hostfee[p]=100; maxpages[p]=0; maxtypes[p]=0;
	gr8stuff1[p]=def_gr8stuff; gr8stuff2[p]=def_gr8stuff;
	fee_page[p]=def_page; fee_extrapages[p]=def_extra; fee_debitorder[p]=def_debitorder;
	fee_otherpages[p]=def_other;
	fee_interestperc[p]=def_interestrate; fee_languagepage[p]=def_language;
// advanced
	p=2;
	domainregfee[p]=350; domainxferfee[p]=200; domainrenfee[p]=100;
	hostfee[p]=150; maxpages[p]=0; maxtypes[p]=0;
	gr8stuff1[p]=0; gr8stuff2[p]=def_gr8stuff;
	fee_page[p]=def_page; fee_extrapages[p]=def_extra; fee_debitorder[p]=def_debitorder;
	fee_otherpages[p]=def_other;
	fee_interestperc[p]=def_interestrate; fee_languagepage[p]=def_language;
// shopping
	p=3
	domainregfee[p]=350; domainxferfee[p]=200; domainrenfee[p]=100;
	hostfee[p]=150; maxpages[p]=0; maxtypes[p]=0;
	gr8stuff1[p]=0; gr8stuff2[p]=def_gr8stuff;
	fee_page[p]=def_page+100; fee_extrapages[p]=def_extra+100; fee_debitorder[p]=def_debitorder;
	fee_otherpages[p]=def_other;
	fee_interestperc[p]=def_interestrate; fee_languagepage[p]=def_language+100;
// special
	p=4
	domainregfee[p]=0; domainxferfee[p]=0; domainrenfee[p]=0;
	hostfee[p]=0; maxpages[p]=4; maxtypes[p]=0;
	gr8stuff1[p]=0; gr8stuff2[p]=0;
	fee_page[p]=0; fee_extrapages[p]=def_extra; fee_debitorder[p]=def_debitorder;
	fee_otherpages[p]=def_other;
	fee_interestperc[p]=def_interestrate; fee_languagepage[p]=def_language;

// *****************
// Special pricing
// *****************
//	domainregfee[2]=200;
//	fee_page[2]=175;
// *****************

var groups=new Array();

groups[0]='';
groups[1]='Tourism|Accommodation|Tours & Adventures|Tourist Info';
groups[2]='Commodities|Products & Services|Arts & Crafts|Health & Lifestyle';
groups[3]='Properties|Estate Agents|Private Property Sales';
groups[4]='Business';
groups[5]='Classifieds';
groups[6]='Shopping|eCommerce Shop';
groups[7]='Other|General';

var categories=new Array();

categories[0]='';
categories[1]='Accommodation'; var p_accom=1;
categories[2]='Tours & Adventures'; var p_tours=2;
categories[3]='Tourist Info'; var p_tinfo=3;
categories[4]='Products & Services'; var p_prods=4;
categories[5]='Arts & Crafts'; var p_arts=5;
categories[6]='Health & Lifestyle'; var p_health=6;
categories[7]='Estate Agents'; var p_estate=7;
categories[8]='Private Property Sales'; var p_prop=8;
categories[9]='eCommerce Shop'; var p_shop=9;
categories[10]='General'; var p_gen=10;

var webpages=new Array(); var types=new Array();
var xtra=new Array(); var defprod=new Array(); var defgr8=new Array();

webpages[0]=''; types[0]=''; xtra[0]=''; defprod[0]='0'; defgr8[0]=0;

// Accommodation
webpages[p_accom]='Home|Facilities|Activities|Reservations|Contact Us';
types[p_accom]='Other Pages|'; xtra[p_accom]='Other pages';
defprod[p_accom]=1; defgr8[p_accom]=1;

// Estate Agents
webpages[p_estate]='Home|Properties|The Area|General Info|Contact Us';
types[p_estate]='Property Types|Residential(1)|Residential Stands(0)|Small Holdings(0)|Farms(0)|Commercial(0)';
xtra[p_estate]='Total no of initial property detail pages';
defprod[p_estate]=2; defgr8[p_estate]=1;

// General
webpages[p_gen]='Home|General Info|Contact Us';
types[p_gen]='Other Pages|'; xtra[p_gen]='Other pages';
defprod[p_gen]=1; defgr8[p_gen]=1;

// Products & Services
webpages[p_prods]='Home|Background|Products/Services|General Info|Contact Us';
types[p_prods]='Product Types|Widgets(1)|Nuts(0)|Bolts(0)';
xtra[p_prods]='Total no of Product/Services detail pages';
defprod[p_prods]=1; defgr8[p_prods]=1;

// Health & Lifestyle
webpages[p_health]='Home|Products|General Info|Bookings/Orders|Contact Us';
types[p_health]='Other Pages|'; xtra[p_health]='Other pages';
defprod[p_health]=1; defgr8[p_health]=1;

// Arts & Crafts
webpages[p_arts]='Home|Products|General Info|Orders|Contact Us';
types[p_arts]='Arts & Craft Types|Paintings(1)|Sculptures(0)|Pottery(0)';
xtra[p_arts]='Total no of detail pages'; defprod[p_arts]=1; defgr8[p_arts]=1;

// Tours & Adventures
webpages[p_tours]='Home|Tours|About our Tours|Contact Us';
types[p_tours]='Tour Categories|Mpumalanga(1)|Western Cape(0)';
xtra[p_tours]='Total no of tour detail pages'; defprod[p_tours]=1; defgr8[p_tours]=1;

// Tourist Info
webpages[p_tinfo]='Home|Activities|Accommodation|Members & Links|Contact Us';
types[p_tinfo]='Activity Types|Cultural History(1)|Drives(0)|Hikes(0)|Adventures(0)|Mountain Biking(0)|Fishing(0)';
xtra[p_tinfo]='Total no of detailed activity pages'; defprod[p_tinfo]=2; defgr8[p_tinfo]=1;

// Private Property Sales
webpages[p_prop]='Property Details|Contact Owner';
types[p_prop]='Other Pages|Photo Gallery'; xtra[p_prop]='Other pages';
defprod[p_prop]=0; defgr8[p_prop]=0;

// eCommerce Shop
webpages[p_shop]='Home|About Us|FAQ|Contact Us';
types[p_shop]='Product Categories|Widgets(1)|Nuts(0)|Bolts(0)';
xtra[p_shop]='Total no of Products to include';
defprod[p_shop]=3; defgr8[p_shop]=1;

// floating_div
document.write('<DIV style="POSITION: absolute; DISPLAY: none; TOP: 0px; LEFT: 0px; border: 2px outset LIGHTSKYBLUE" id=floating_div><DIV id=float_header width=100%></DIV><DIV id=float_content align=center></DIV></DIV>');
function hide_floating_div() { getEle('floating_div').style.display='none'; }

function runningInGr8stuff() { if (parent.location.href==location.href) { return false; } else { return true; } }

function IE() { if(navigator.appName == "Microsoft Internet Explorer") { return true; } else { return false; } }

function init () {
//	getEle('quotebuts').innerHTML='';
	getEle('quotebuts').innerHTML='';
	if (cat=='' || prod=='') {
		if (window.location.search=='') {
			cat=''; typeofQuote(); return;
//			cat='web'; quoteFor(); return;
		} else {
			var p=unescape(window.location.search.substr(1)).split('&');
			for (var i=0; i<p.length; i++) {
				var k=p[i].toLowerCase().split('=');
				switch (k[0]) {
					case 'cat': { cat=k[1]; break; }
					case 'prod': { prod=k[1]; break }
					case 'category': { category=unescape(k[1]).replace(/\//g,' & ');
//									   alert('cat='+cat+'\nprod='+prod+'\ncategroy='+category);
									   initNxt(); return; break }
					default: { alert('unknown parameters: '+p[i]); return; }
				}
			}
		}
	}
	quoteType();
}

function typeofQuote() {
		var s='<b>What are you looking for?</b><br>';
		s+='<table cellpadding=2 cellspacing=2 width=100% class=textsmallleft bgcolor=#ffffff>';
		s+='<tr><td><div align=center><center><table class=textsmallleft cellspacing=0 cellpadding=0>';
		for (var i=0; i<quotetypes.length; i++) {
			var rs='';
			if (cat==quotetypes[i]) rs=' CHECKED';
			s+='<tr><td nowrap>&nbsp;<input type=radio name=rpack value="'+quotetypes[i]+'" onclick="cat=this.value; package=-1; quoteType();"'+rs+'>'+quotetypestitle[i]+'</td></tr>';
		}
		s+='</table></center></div></td></tr>';
		if (cat!='') {
			s+='<tr><td align=center class=bg_light><IMG title="Continue to next step" height=15 alt=next_button.gif src="pics/next_button.gif" width=38 style="cursor: pointer" onclick=quoteType();></td></tr>';
		}
		s+='</table>';
		getEle('quotebox').innerHTML=s;
		getEle('quotebuts').innerHTML='';
}

function quoteFor() {
		var s='<b>What do you want to be quoted on?</b><br>';
		s+='<table cellpadding=2 cellspacing=2 width=100% class=textsmallleft bgcolor=#ffffff>';
		s+='<tr><td><div align=center><center><table class=textsmallleft cellspacing=0 cellpadding=0>';
		for (var i=0; i<webprods.length; i++) {
			var rs='';
			if (prod==webprods[i]) rs=' CHECKED';
			s+='<tr><td nowrap>&nbsp;<input type=radio name=rpack value="'+webprods[i]+'" onclick="prod=this.value; package='+i+'; quoteType();"'+rs+'>'+webprodstitle[i]+'</td></tr>';
		}
		s+='</table></center></div></td></tr>';
		if (prod!='') {
			s+='<tr><td align=center class=bg_light><IMG title="Continue to next step" height=20 alt=next_button.gif src="pics/button_next_100.jpg" width=100 style="cursor: pointer" onclick=quoteType();></td></tr>';
		}
		s+='</table>';
		getEle('quotebox').innerHTML=s;
		getEle('quotebuts').innerHTML='';

}

function quoteType() {
//	var quotehdr='<B>'+prod.toUpperCase()+'</B>';
//	getEle('quotehdr').innerHTML=quotehdr;
	selcat=true;
	if (cat=='web') {
		if (package<0) {
			for (var i=0; i<webprods.length; i++) {
				if (webprods[i]==prod) { package=i; break; }
			}
//			if (package<0) { quoteFor(); return; }
		}
		if (package<0) { var quotehdr='<B>ONLINE QUOTATION</B>'; } else { var quotehdr='<B>'+webprodstitle[package].toUpperCase()+'</B>'; }
		if (webprods[package]=='special') inc_gr8=false; else inc_gr8=true;
		getEle('quotehdr').innerHTML=quotehdr;
		var s='<b>Please indicate the type of website that best suites your needs:</b><br>';
		s+='<table cellpadding=2 cellspacing=2 width=100% class=textsmallleft bgcolor=#ffffff>';
		
		var tcols=1;
		for (var i=0; i<groups.length; i++) {
			if (groups[i].indexOf('|')>0) {
				var gp=groups[i].split('|');
				if (gp.length>tcols) tcols=gp.length;
			}
		}

		for (var i=0; i<groups.length; i++) {
			if (groups[i].indexOf('|')>0) {
				var gp=groups[i].split('|');
				s+='<tr><td class=bg_light>'+gp[0]+'</td>';
				for (var j=1; j<tcols; j++) { 
					if (j<gp.length) {
						if (category=='') { var rs=''; } else {
							if (gp[j]==category) { var rs=' CHECKED'; } else { var rs=''; } }
						s+='<td nowrap>&nbsp;<input type=radio name=rcat value="'+gp[j]+'" onclick="setGroupCat('+"'"+gp[j]+"'"+');"'+rs+'>'+gp[j]+'</td>';
					} else {
						s+='<td></td>';
					}
				}
				s+='</tr>';
			}
		}
		s+='</table>';
		getEle('quotebox').innerHTML=s;

		if (category!='') {
			getEle('quotebuts').innerHTML='<IMG title="Continue to next step" height=20 alt=button_next_100.jpg src="pics/button_next_100.jpg" width=100 style="cursor: pointer" onclick="initNxt();">';
		}
	}
}

function initNxt() {
	setGroupCat(category);
}

function setGroupCat(scat) {
	if (cat=='web') {
		if (category!=scat) { pages=''; stypes=''; xtratot=0; }
		category=scat;
		if (package<0) {
			for (var i=0; i<categories.length; i++) {
				if (categories[i].toLowerCase()==scat.toLowerCase()) { category=categories[i]; package=defprod[i]; break; }
			}
		}
		if (package<0) { var quotehdr='<B>ONLINE QUOTATION</B>'; } else { var quotehdr='<B>'+webprodstitle[package].replace(/Website/,category+' Website').toUpperCase()+'</B>'; }
		getEle('quotehdr').innerHTML=quotehdr;
		if (category=='Estate Agents' && webprods[package]!='advanced') alert('Warning: The Advanced Website Package is more suitable for Estate Agents as the property portfolio is likely to change often.');
		
		for (var i=0; i<groups.length; i++) {
			var g=groups[i]+'|';
			if (g.toLowerCase().indexOf('|'+scat.toLowerCase()+'|')>0) { group=groups[i].split('|')[0]; break; }
		}
		setTitle('');
		return;

		var s='<b>Please provide your '+category+' name (or title for your website):</b><br>';
		s+='<table cellpadding=2 cellspacing=2 width=100% class=textsmallleft bgcolor=#ffffff>';
		s+='<tr><td class=bg_light>Title</td>';
		s+='<td><input type=text name=wtitle size=50 title="The title for you web site - normally your business/company name" value="'+stitle+'" onkeypress="if (event.keyCode==13) setTitle(getEle('+"'wtitle'"+').value);"></td>';
//		s+='<td><input type=text name=wtitle size=50 title="The title for you web site - normally your business/company name" value="'+stitle+'" onkeypress="if (event.keyCode==13) setTitle('+"'"+event.srcElement.value+"'"+');"></td>';
		s+='</tr>';
		s+='<tr><td class=bg_light></td><td align=center class=bg_light><IMG title="Go back" height=20 alt=button_back_100.jpg src="pics/button_back_100.jpg" onclick="init();" width=39 style="cursor: pointer"> <IMG title="Continue to next step" height=15 alt=next_button.gif src="pics/next_button.gif" width=100 style="cursor: pointer" onclick=setTitle(getEle("wtitle").value);></td></tr>'
		s+='<tr><td class=bg_light>Quote for</td><td class=quote_done onclick="quoteFor();" style="cursor:pointer">'+webprodstitle[package]+'</td></tr>';
		s+='<tr><td class=bg_light>Group</td><td class=quote_done><table class=textsmallleft cellspacing=0 cellpadding=0><tr><td onclick="init();" style="cursor:pointer">'+group+'&nbsp;</td>';
		s+='<td class=bg_light>Category</td><td onclick="init();" style="cursor:pointer">&nbsp;'+category+'</td></tr></table></td></tr>';
		s+='</table>';
		getEle('quotebox').innerHTML=s;
		getEle('quotebuts').innerHTML='';
		runit=setInterval("giveFocus('wtitle')",100)
//var x=getEle('wtitle').value;
//		getEle('wtitle').focus();
	}
//alert('cat='+cat+'\nprod='+prod+'\npackage='+package+'\ngroup='+group+'\ncategory='+category);
}

function giveFocus(cont) {
	clearInterval(runit);
	try { getEle(cont).focus(); } catch(e) {}
}

function getCatid() {
	var c=0;
	for (var i=0; i<categories.length; i++) {
		if (categories[i]==category) { c=i; break; }
	}
	return c;
}

function setTitle(stit) {
//	if (stit=='') { alert('The title is required. Please enter a title for your website.'); return; }
//	stitle=stit;
	if (cat=='web') {
		qt_first=true;
		var c=getCatid();
		if (pages=='') pages=webpages[c];
		var s='<table cellpadding=0 cellspacing=0 width=100% class=bg_light>';
		s+='<tr><td valign=top>';
		
		s+='<table cellpadding=2 cellspacing=2 width=100% class=textsmallleft bgcolor=#ffffff>';
		s+='<tr><td></td><td class="bg_light textcenter"><b>What menus do you want in your website?</b><br><span class=textsmallcenter>Please enter one menu item per line.</span></td></tr>';
		s+='<tr><td class=bg_light align=right>Menu<br>Pages</td>';
		s+='<td><textarea id=wpages cols=30 rows=9 title="Enter one web page title per line" onkeyup="changePages();">'+pages.replace(/\|/g,'\n')+'</textarea></td>';
		s+='</tr>';
		s+='<tr><td height=9></td><td></td></tr>';
		s+='<tr><td class=bg_light></td>';
		s+='<td align=center class=bg_light>';
		if (selcat) var backto="quoteType();"; else var backto="window.history.go(-1);";
		if (!quoted) {
			s+='<IMG title="Go back" height=20 alt=button_back_100.jpg src="pics/button_back_100.jpg" onclick="'+backto+'" width=100 style="cursor: pointer">&nbsp;&nbsp;&nbsp;&nbsp;';
		}
		s+='<IMG title="Continue to next step" height=20 alt=button_next_100.jpg src="pics/button_next_100.jpg" width=100 style="cursor: pointer" onclick=getLanguages();>';
		s+='</td></tr>'
		s+='</table>';
		
		s+='</td><td class="bg_smoke textcenter" valign=top>'+showTypes();
		s+='</td></tr>';
		s+='</table>';

		getEle('quotebox').innerHTML=s;
		getEle('quotebuts').innerHTML='';
		doQuote();
		getEle('wpages').focus();
	}
}

function showTypes() {
	if (cat=='web') {
		var c=getCatid();
		if (types[c]=='' || maxtypes[package]<0) { stypes=''; xtratot=0; return ''; }
		
		if (stypes=='') { stypes=types[c]; xtratot=0; }
		var desc=stypes.split('|')[0];
		var s='<b>What '+desc.toLowerCase();
		if (stypes.toLowerCase().indexOf('other')==0) {
			s+=' do you need?</b><br><span class=textsmallcenter>Please enter one page title per line.</span><br>';
		} else {
			s+=' do you have & how many '+pluralWord(firstWord(desc)).toLowerCase()+' are in each category?</b><br><span class=textsmallcenter>Please enter one category per line and put numbers in brackets.</span><br>';
		}
		s+='<table cellpadding=2 cellspacing=2 width=100% class=textsmallleft>';
//		s+='<tr><td class=bg_smoke>'+lastWord(desc)+'</td>';
		s+='<tr><td class=bg_smoke align=right>'+desc.replace(/ /g,'<br>')+'</td>';
		rtypes=stypes.substr(stypes.indexOf('|')+1); var rtypes=rtypes.replace(/\|/g,'\n');
		s+='<td><textarea id=wtypes cols=30 rows=10 title="Enter one '+desc.toLowerCase()+' per line and put the number of '+pluralWord(firstWord(desc)).toLowerCase()+' in the category in brackets" onkeyup="changeTypes();">'+rtypes+'</textarea></td>';
		s+='</tr>';
		if (xtra[c]!='') {

			var t=stypes.split('('); xtratot=0;
			for (var i=0; i<t.length; i++) {
				var a=parseInt(t[i]);
				if (!isNaN(a)) xtratot+=a;
			}
			s+='<tr><td class=bg_smoke></td><td><table cellspacing=0 cellpadding=0 class=textleft><tr><td>'+xtra[c]+':&nbsp;<input type=text name=wxtra size=4 value="'+xtratot+'" readonly class=textsmallleft style="border: none"></td></tr></table></td></tr>';
		}
		s+='</table>';
		return s;
	}
}

function changePages() {
	pages=getEle('wpages').value.replace(/\n/g,'|');
	pages=pages.replace(/\r/g,'');
	while (pages.substr(pages.length-1,1)=='|') { pages=pages.substr(0,pages.length-1); }
}

function getTypes() {
	if (cat=='web') {
		if (maxpages[package]>0) {
			if (pages.split('|').length>maxpages[package]) { alert('You can have a maximum of '+maxpages[package]+' pages with the '+webprodstitle[package]); setTitle(stitle); return; }
		}
		var c=getCatid();
		if (types[c]=='' || maxtypes[package]<0) { stypes=''; xtratot=0; getLanguages(); return; }
		
		if (stypes=='') { stypes=types[c]; xtratot=0; }
		var desc=stypes.split('|')[0];
		var s='<b>What '+desc.toLowerCase()+' do you have & how many '+pluralWord(firstWord(desc)).toLowerCase()+' are in each category?</b> (enter one category per line and put numbers in brackets)<br>';
		s+='<table cellpadding=2 cellspacing=2 width=100% class=textsmallleft bgcolor=#ffffff>';
		s+='<tr><td class=bg_light>'+lastWord(desc)+'</td>';
		rtypes=stypes.substr(stypes.indexOf('|')+1); var rtypes=rtypes.replace(/\|/g,'\n');
		s+='<td><textarea id=wtypes cols=50 rows=9 title="Enter one '+desc.toLowerCase()+' per line and put the number of '+pluralWord(firstWord(desc)).toLowerCase()+' in the category in brackets" onkeyup="changeTypes();">'+rtypes+'</textarea></td>';
		s+='</tr>';
		if (xtra[c]!='') {
			s+='<tr><td class=bg_light></td><td><table cellspacing=0 cellpadding=0 class=textleft><tr><td>'+xtra[c]+':&nbsp;<input type=text name=wxtra size=4 value="" readonly class=textsmallleft style="border: none"></td></tr></table></td></tr>';
//			s+='<tr><td class=bg_light></td><td><table cellspacing=0 cellpadding=0 class=textleft><tr><td>'+xtra[c]+'&nbsp;<input type=text name=wxtra size=4 value="'+xtratot+'" onchange=xtratot=getEle("wxtra").value></td></tr></table></td></tr>';
		}
		s+='<tr><td class=bg_light></td><td align=center class=bg_light><IMG title="Go back" height=15 alt=back_button.gif src="pics/back_button.gif" onclick="setTitle(stitle);" width=39 style="cursor: pointer"> <IMG title="Continue to next step" height=15 alt=next_button.gif src="pics/next_button.gif" width=38 style="cursor: pointer" onclick=getLanguages();></td></tr>'
		s+='<tr><td class=bg_light>Quote for</td><td class=quote_done onclick="quoteFor();" style="cursor:pointer">'+webprodstitle[package]+'</td></tr>';
		s+='<tr><td class=bg_light>Group</td><td class=quote_done><table class=textsmallleft cellspacing=0 cellpadding=0><tr><td class=quote_done>'+group+'&nbsp;</td>';
		s+='<td class=bg_light>Category</td><td onclick="init();" style="cursor:pointer">&nbsp;'+category+'</td></tr></table></td></tr>';
//		s+='<tr><td class=bg_light>Title</td><td class=quote_done onclick="setGroupCat(category);" style="cursor:pointer">'+stitle+'</td></tr>';
		s+='<tr><td class=bg_light>Pages</td><td class=quote_done onclick="setTitle(stitle);" style="cursor:pointer">'+pages.replace(/\|/g,', ')+'</td></tr>';
		s+='</table>';
		getEle('quotebox').innerHTML=s;
		getEle('quotebuts').innerHTML='';
		changeTypes();
		getEle('wtypes').focus();
	}
}

function changeTypes() {
	stypes=stypes.split('|')[0]+'|'+getEle('wtypes').value.replace(/\n/g,'|');
	stypes=stypes.replace(/\r/g,'');
	while (stypes.substr(stypes.length-1,1)=='|') { stypes=stypes.substr(0,stypes.length-1); }
	var t=stypes.split('('); xtratot=0;
	for (var i=0; i<t.length; i++) {
		var a=parseInt(t[i]);
		if (!isNaN(a)) xtratot+=a;
	}
	getEle("wxtra").value=xtratot;
//	var a=t[i].split(')')[0];
}

function lastWord(s) {
	var y=s.lastIndexOf(' ');
	if (y<0) { s1=s; } else { s1=s.substr(y+1); }
	if (s1=='') return s1;
	s1=s1.substr(0,1).toUpperCase()+s1.substr(1).toLowerCase();
	return s1;
}
function firstWord(s) {
	var y=s.indexOf(' ');
	if (y<0) { s1=s; } else { s1=s.substr(0,y); }
	if (s1=='') return s1;
	s1=s1.substr(0,1).toUpperCase()+s1.substr(1).toLowerCase();
	return s1;
}
function pluralWord(s) {
	if (s=='') return s;
	if (s.substr(s.length-1)=='s') return s;
	if (s.substr(s.length-1)=='y') return s.substr(0,s.length-1)+'ies';
	return s+'s';
}

function getLanguages() {
	if (slanguage=='') slanguage='english';

	if (maxpages[package]>0) {
		if (pages.split('|').length+stypes.split('|').length-1>maxpages[package]) { alert('You can have a maximum of '+maxpages[package]+' pages with the '+webprodstitle[package]); setTitle(stitle); return; }
	}

	qt_first=false;
	doQuote();
	return;
	
	var s='<b>What languages do you want your website to be developed in?</b><br>';
	s+='<table cellpadding=2 cellspacing=2 width=100% class=textsmallleft bgcolor=#ffffff>';
	s+='<tr><td class=bg_light>Languages</td>';
	s+='<td><table cellspacing=0 cellpadding=0 class=textsmallleft><tr>';
	if (slanguage=='both' && weblang[package].indexOf('both')<0) slanguage='english';
	if (slanguage=='english') { ch=' CHECKED'; } else { ch=''; }
	s+='<td nowrap>&nbsp;<input type=radio name=rlang value="english" onclick="slanguage=this.value;"'+ch+'>English Only</td></tr>';
	if (slanguage=='afrikaans') { ch=' CHECKED'; } else { ch=''; }
	s+='<tr><td nowrap>&nbsp;<input type=radio name=rlang value="afrikaans" onclick="slanguage=this.value;"'+ch+'>Afrikaans Only</td></tr>';
	if (weblang[package].indexOf('both')>=0) {
		if (slanguage=='both') { ch=' CHECKED'; } else { ch=''; }
		s+='<tr><td nowrap>&nbsp;<input type=radio name=rlang value="both" onclick="slanguage=this.value;"'+ch+'>English and Afrikaans</td></tr>';
	}
	s+='</table></td></tr>';
	if (stypes=='') { var gb="setTitle('"+stitle+"');"; } else { var gb='getTypes();'; }
	s+='<tr><td class=bg_light></td><td align=center class=bg_light><IMG title="Go back" height=15 alt=back_button.gif src="pics/back_button.gif" onclick="'+gb+'" width=39 style="cursor: pointer"> <IMG title="Continue to next step" height=15 alt=next_button.gif src="pics/next_button.gif" width=38 style="cursor: pointer" onclick=getDomain();></td></tr>'
	s+='<tr><td class=bg_light>Quote for</td><td class=quote_done onclick="quoteFor();" style="cursor:pointer">'+webprodstitle[package]+'</td></tr>';
	s+='<tr><td class=bg_light>Group</td><td class=quote_done><table class=textsmallleft cellspacing=0 cellpadding=0><tr><td class=quote_done" style="cursor:pointer">'+group+'&nbsp;</td>';
	s+='<td class=bg_light>Category</td><td onclick="init();" style="cursor:pointer">&nbsp;'+category+'</td></tr></table></td></tr>';
//	s+='<tr><td class=bg_light>Title</td><td class=quote_done onclick="setGroupCat(category);" style="cursor:pointer">'+stitle+'</td></tr>';
	s+='<tr><td class=bg_light>Pages</td><td class=quote_done onclick="setTitle(stitle);" style="cursor:pointer">'+pages.replace(/\|/g,', ')+'</td></tr>';
	if (stypes!='') {
		var st=pluralWord(firstWord(stypes.split('|')[0]));
		if (stypes.indexOf('|')>0) { var sts=stypes.substr(stypes.indexOf('|')+1); } else { var sts=''; }
		var sts=sts.replace(/\|/g,', ');
		s+='<tr><td class=bg_light>'+st+'</td><td class=quote_done onclick="getTypes();" style="cursor:pointer">'+sts+'</td></tr>';
	}
	s+='</table>';
	getEle('quotebox').innerHTML=s;
	getEle('quotebuts').innerHTML='';
}

function getDomain() {
	qt_first=false;
	doQuote();
}

function changePackage() {
	var opack=package;
	package=getEle('webpack').selectedIndex;
	if (maxpages[package]>0) {
		if (pages.split('|').length>maxpages[package]) {
			if (confirm('You can have a maximum of '+maxpages[package]+' pages with the '+webprodstitle[package]+'.\n\nClick OK to change the pages you have selected.')) {
				setTitle(stitle); return;
			} else {
				package=opack;
			}
		}
	}
	if (category=='Estate Agents' && webprods[package]!='advanced') alert('Warning: The Advanced Website Package is more suitable for Estate Agents as the property portfolio is likely to change often.');

//	if (slanguage=='both') slanguage='english';

	var quotehdr='<B>'+webprodstitle[package].replace(/Website/,category+' Website').toUpperCase()+'</B>';
	getEle('quotehdr').innerHTML=quotehdr;
	doQuote();
}

function changeGr8stuff() { inc_gr8=getEle('gr8inc').checked; doQuote(); }
function changeSms() { inc_sms=getEle('gr8sms').checked; doQuote(); }
function changeGmap() { inc_map=getEle('gr8map').checked; doQuote(); }

function changeLanguage() { weblang=getEle('weblang'); slanguage=weblang.options[weblang.selectedIndex].value; doQuote(); }
function changeInstructions() { sprem=getEle('instructions').value; }

function changePaymethod() {
	var pm=getEle('paymethod'); howtopay=pm.options[pm.selectedIndex].value;
	if (webprods[package]=='special' || webprods[package]=='starter') { howtopay='normal'; }
	doQuote();
}

function changeCategory() {
	var wc=getEle('webcategories'); var i=wc.options[wc.selectedIndex].value; category=categories[i];
	stypes=''; pages='';
	setGroupCat(category);
	return;
	
	for (var i=0; i<groups.length; i++) {
		var g=groups[i]+'|';
		if (g.toLowerCase().indexOf('|'+category.toLowerCase()+'|')>0) { group=groups[i].split('|')[0]; break; }
	}
	doQuote();
}

function doQuote() {
	if (!qt_first) {
		getEle('quotebox').innerHTML='.. Calculating ..';
		calcQuote(); quoted=true;
	}
	var m=' Please see your full quote for details.'; var xactmsg=getEle('xactmsg');
	if (inc_gr8 && inc_sms) { xactmsg.innerHTML='<STRONG><FONT color=#ff0000>Note</FONT></STRONG>: <FONT color=#ff0000>Transaction fees will apply for sending SMS messages and for Gr8stuff usage.</FONT>'+m;
	} else {
		xactmsg.innerHTML='Thank you for your interest';
		if (inc_gr8) { xactmsg.innerHTML='<STRONG><FONT color=#ff0000>Note</FONT></STRONG>: <FONT color=#ff0000>Transaction fees will apply for Gr8stuff usage.</FONT>'+m; }
		if (inc_sms) { xactmsg.innerHTML='<STRONG><FONT color=#ff0000>Note</FONT></STRONG>: <FONT color=#ff0000>Transaction fees will apply for sending SMS messages.</FONT>'+m; }
	}
//	if (inc_gr8 || inc_sms) getEle('xact').style.display='inline'; else getEle('xact').style.display='none';
	var s='';

	s+='<form name=qoptions id=qoptions style="display:block; margin: 0px; padding: 0px">';
	s+='<table cellpadding=2 cellspacing=2 width=100% class=textsmallleft bgcolor=#ffffff align=center>';
	s+='<tr><td colspan=2 align=center class=quote_options>Quote Options</td></tr>';

// Quote for
	s+='<tr><td class=bg_light>Quote for</td><td class=quote_done>';
	s+='<select id=webpack onchange="javascript: changePackage();" class="textsmallleft quote_done">';
	for (var i=0; i<webprodstitle.length; i++) {
		if (i==package) var sl=' selected'; else sl='';
		s+='<option value='+i+sl+'>'+webprodstitle[i]+'</option>';
	}
	s+='</select>';
	s+='</td></tr>';
	
// Include options
	s+='<tr><td class=bg_light>Include</td><td class=quote_done>';
	s+='<table cellpadding=0 cellspacing=0 width=100% class=textsmallleft>';
		s+='<tr><td></td>';
		s+='<td class=bg_light>&nbsp;';
		s+='</td><td class=quote_done nowrap>Gr8stuff</td>';
		if (inc_gr8) sl=' checked'; else sl='';
		s+='<td class=bg_light><input name=gr8inc type=checkbox'+sl+' onclick="javascript:changeGr8stuff();">&nbsp;';
		s+='</td><td>&nbsp;&nbsp;</td><td class=quote_done nowrap>SMS msgs</td>';
		if (inc_sms) sl=' checked'; else sl='';
		s+='<td class=bg_light><input name=gr8sms type=checkbox'+sl+' onclick="javascript:changeSms();">&nbsp;';;
		s+='</td><td>&nbsp;&nbsp;</td><td class=quote_done nowrap>Google Map</td>';
		if (inc_map) sl=' checked'; else sl='';
		s+='<td class=bg_light><input name=gr8map type=checkbox'+sl+' onclick="javascript:changeGmap();">';
	s+='</td></tr></table>';
	s+='</td></tr>';

// Group
	s+='<tr><td class=bg_light>Group</td><td class=quote_done><table class=textsmallleft cellspacing=0 cellpadding=0><tr><td class=quote_done>'+group+'&nbsp;</td>';

// Category
	s+='<td class=bg_light>Category</td>';
	s+='<td class=quote_done>&nbsp;<select id=webcategories onchange="javascript: changeCategory();" class="textsmallleft quote_done">';
	for (var i=1; i<categories.length; i++) {
		if (categories[i]==category) sl=' selected'; else sl='';
		s+='<option value='+i+sl+'>'+categories[i]+'</option>';
	}
	s+='</select></td>';
//	s+='<td onclick="init();" style="cursor:pointer">&nbsp;'+category+'</td>';
	s+='</tr></table></td></tr>';

//	s+='<tr><td class=bg_light>Title</td><td class=quote_done onclick="setGroupCat(category);" style="cursor:pointer">'+stitle+'</td></tr>';

// Pages
	s+='<tr><td class=bg_light>Pages</td><td class=quote_done onclick="setTitle(stitle);" style="cursor:pointer">'+pages.replace(/\|/g,', ')+'</td></tr>';

// Additional pages
	if (stypes!='') {
		var st=pluralWord(firstWord(stypes.split('|')[0]));
		if (stypes.indexOf('|')>0) { var sts=stypes.substr(stypes.indexOf('|')+1); } else { var sts=''; }
		var sts=sts.replace(/\|/g,', ');
		s+='<tr><td class=bg_light>'+st+'</td><td class=quote_done onclick="setTitle(stitle);" style="cursor:pointer">'+sts+'</td></tr>';
	}

// Language
	s+='<tr><td class=bg_light>Language</td>';
	s+='<td class=quote_done><select id=weblang onchange="javascript: changeLanguage();" class="textsmallleft quote_done">';
		if (slanguage=='english') sl=' selected'; else sl='';
		s+='<option value="english"'+sl+'>English</option>';
		if (slanguage=='afrikaans') sl=' selected'; else sl='';
		s+='<option value="afrikaans"'+sl+'>Afrikaans</option>';
		if (slanguage=='both') sl=' selected'; else sl='';
		s+='<option value="both"'+sl+'>English and Afrikaans</option>';
	s+='</select></td></tr>';

// Payment method
	s+='<tr><td class=bg_light>Pay Method</td>';
	if (webprods[package]!='special' && webprods[package]!='starter') {
		s+='<td class=quote_done><select id=paymethod onchange="javascript: changePaymethod();" class="textsmallleft quote_done">';
			if (howtopay=='normal') sl=' selected'; else sl='';
			s+='<option value="normal"'+sl+'>Pay development cost on completion</option>';
			if (howtopay=='install') sl=' selected'; else sl='';
			s+='<option value="install"'+sl+'>Pay for development cost over 12 months</option>';
		s+='</select></td></tr>';
	}

// Special Instructions
	s+='<tr><td colspan=2 class=bg_light>Special Instructions</td></tr>';
	s+='<tr><td colspan=2 class=quote_done align=center><textarea id=instructions class=quote_done cols=31 rows=5 title="NOTE: Your special instructions may affect the final price. This will be handled during the order process." onchange="javascript: changeInstructions();">'+sprem+'</textarea></td></tr>';
	
	s+='</table></form>';
//	getEle('quotebox').innerHTML=getEle('quotefrm').innerHTML+s;
	qtpictd.style.display='none';
//	qtpictd.className=''; qtpic.src='pics/title_bg-fade-2px.jpg';
	if (!qt_first) { getEle('quotebox').innerHTML=getEle('quotefrm').innerHTML; }
	getEle('qtdets').innerHTML=s;
}

function calcQuote() {
	var i,rate,totcost,mcost,pcost,pprice,eprice,ecost,lcost,np,dofee;
	var regfee=domainregfee[package]; ; var transferfee=domainxferfee[package];
	var domrenfee=domainrenfee[package]; 
	var gr8stuff1fee=gr8stuff1[package]; var gr8stuff2fee=gr8stuff2[package];
	pprice=fee_page[package];
	if (stypes.toLowerCase().indexOf('other')==0) {
		eprice=fee_otherpages[package];
	} else {
		eprice=fee_extrapages[package];
	}
	dofee=fee_debitorder[package];
	rate=fee_interestperc[package]; lcost=0;
	np=1;
	if (slanguage=='both') lcost=fee_languagepage[package];
	np=pages.split('|').length;
	if (inc_map) np+=1;
	var tp=0;
	if (stypes!='') {
		tp=stypes.split('|').length-1;
		if (stypes.substr(stypes.length-1)=='|') tp=tp-1;
		if (tp<0) tp=0;
	}
	if (pprice==0) { pcost=def_special; } else {
		pcost=(np*pprice)+(np*lcost)+(tp*eprice)+(tp*lcost)+(xtratot*eprice)+(xtratot*lcost);
	}
//alert(np+'\n'+tp+' - '+stypes+'\n'+xtratot+'\n'+pcost+'\n'+howtopay);
	mcost=Math.round((pcost+(pcost*rate))/12)+dofee;
	
	quotesum.regfee.value=regfee+'.00'; quotesum.domren.value=domrenfee+'.00';
	var c=getCatid();
//	if (defgr8[c]!=0 && inc_gr8) {
//		quotesum.gr8lic1.value=gr8stuff1fee+'.00'; quotesum.gr8lic2.value=gr8stuff2fee+'.00';
//	} else {
//		quotesum.gr8lic1.value=''; quotesum.gr8lic2.value='';
//	}
	if (webprods[package]=='special' && inc_gr8) { quotesum.gr8lic1.value=def_gr8stuff+'.00'; quotesum.gr8lic2.value=def_gr8stuff+'.00';}
	if (hostfee[package]>0) { quotesum.hostyr1.value=hostfee[package]+'.00'; quotesum.hostyr2.value=hostfee[package]+'.00'; } else { quotesum.hostyr1.value=''; quotesum.hostyr2.value=''; }
	switch (howtopay) {
		case 'normal': { 
				quotesum.pay[1].checked=true; quotesum.devonce.value=pcost+'.00'; quotesum.devyr1.value='';
				FF_fix_opt(quotesum.pay[0],false);
				FF_fix_opt(quotesum.pay[1],true);
				break; }
		case 'install': {
				if (regfee==0) quotesum.regfee.value=(mcost*2)+'.00';
				quotesum.pay[0].checked=true; quotesum.devonce.value=mcost+'.00'; quotesum.devyr1.value=mcost+'.00';
				FF_fix_opt(quotesum.pay[0],true);
				FF_fix_opt(quotesum.pay[1],false);
				break; }
	}

	showTotals();

	FF_fix(quotesum.regfee,quotesum.regfee.value);
	FF_fix(quotesum.domren,quotesum.domren.value);
//	FF_fix(quotesum.gr8lic1,quotesum.gr8lic1.value);
//	FF_fix(quotesum.gr8lic2,quotesum.gr8lic2.value);
	FF_fix(quotesum.hostyr1,quotesum.hostyr1.value);
	FF_fix(quotesum.hostyr2,quotesum.hostyr2.value);
	FF_fix(quotesum.devonce,quotesum.devonce.value);
	FF_fix(quotesum.devyr1,quotesum.devyr1.value);

	FF_fix(quotesum.totonce,quotesum.totonce.value);
	FF_fix(quotesum.totyr1,quotesum.totyr1.value);
	FF_fix(quotesum.totyr2,quotesum.totyr2.value);
	FF_fix(quotesum.totannualyr1,quotesum.totannualyr1.value);
	FF_fix(quotesum.totannualyr2,quotesum.totannualyr2.value);

//	FF_fix_opt(quotesum.pay[0],quotesum.pay[0].checked);
//	FF_fix_opt(quotesum.pay[1],quotesum.pay[1].checked);
//alert(quotesum.pay[0].parentNode.innerHTML+' '+quotesum.pay[0].checked+'\n'+quotesum.pay[1].parentNode.innerHTML+' '+quotesum.pay[1].checked);
}

function FF_fix(e,eval) {
	if (IE()) return;
	if (eval=='') return;
	var ehtm=e.parentNode.innerHTML;
	var y=ehtm.indexOf(' value=');
	if (y<0) {
		ehtm=ehtm.replace(/\>/,' value='+eval+'>');
	} else {
		var ehtm=ehtm.substr(0,y)+' value='+eval+'>';
	}
	e.parentNode.innerHTML=ehtm;
}

function FF_fix_opt(e,eval) {
	if (IE()) return;
	var ehtm=e.parentNode.innerHTML;
	if (eval) var chk=' checked'; else var chk='';
	if (ehtm.indexOf('opt1')>0) {
		ehtm='<input onclick=option1(); value=opt1 name=pay type=radio'+chk+'>';
	} else {
		ehtm='<input onclick=option2(); value=opt2 name=pay type=radio'+chk+'>';
	}
	e.parentNode.innerHTML=ehtm;
}

function showTotals() {
	var tonce,v1,v2;
	var t=getEle('quotesum');
	tonce=0; v1=0; v2=0;
	v1=t.regfee.value*1; v2=t.devonce.value*1; tonce=v1+v2;
	t.totonce.value=tonce+'.00';
	v1=t.devyr1.value*1; v2=t.hostyr1.value*1; tonce=v1+v2;
	t.totyr1.value=tonce+'.00';
	tonce=t.hostyr1.value*1;
	t.totyr2.value=tonce+'.00';
//	v1=t.gr8lic1.value; v2=((t.gr8lic2.value*1)+(t.domren.value*1))+'.00';
	v1=''; v2=(t.domren.value*1)+'.00';
	t.totannualyr1.value=v1; t.totannualyr2.value=v2;
}

function option1() { 
	if (webprods[package]=='special' || webprods[package]=='starter') { howtopay='normal'; } else { howtopay='install'; }
	doQuote();
}
function option2() { howtopay='normal'; doQuote(); }


function floatPrompt(title,scont,fwidth,posiEle,posi) {
	setFloatHeader(title); setFloatContent(scont); setFloatPosi(fwidth,posiEle,posi);
}
function setFloatHeader(title) {
	var float_header=getEle('float_header');
	var s='<TABLE class=float_hdr cellSpacing=0 cellPadding=0 width=100% height=20>';
	s+='<TR><TD width=6></TD><TD id=img_title nowrap>'+title+'&nbsp;&nbsp;</TD><TD width=18>';
	s+='<A href="javascript:hide_floating_div();"><IMG title=Close border=0 alt=pics_close.gif src="pics/pics_close.gif" width=14 height=14></A></TD></TR></TABLE>';
	float_header.innerHTML=s;
}
function setFloatContent(scont) {
	var float_content=getEle('float_content');
	float_content.innerHTML=scont;
}
function setFloatPosi(fwidth,posiEle,posi) {
	// fwidth = width to set floating div to (eg '380px')
	// posiEle = name of element to use for positioning (''=>screen)
	// posi    = Position relative to posiEle
	//            bl => bottom left of floating_div is at bottom left of posiEle
	//            bc => bottom of floating_div is centered at bottom of posiEle
	//            center => floating_div centered on screen
	//
	// eg. setFloatPosi('380px','but_email','bl');
	//     setFloatPosi('400px','','center');
	
	var floating_div=getEle('floating_div');
	floating_div.style.width='380px';
	floating_div.style.display='inline';
	if (posiEle=='') {
		floating_div.style.left=(parseInt(screen.availWidth)-parseInt(floating_div.offsetWidth))/2;
		floating_div.style.top=(parseInt(screen.availHeight)-parseInt(floating_div.offsetHeight))/2;
	} else {
	 	var pe=getEle(posiEle); var p = getElePosi(pe);
		switch (posi) {
		case 'bl': {
			floating_div.style.left=p.x;
			floating_div.style.top=(p.y+pe.offsetHeight)-parseInt(floating_div.offsetHeight);
			break; }
		default: { alert('Positioning not setup for: '+posi); break; }
		}
	}
}

function get_email_addr() {
	var s='<TABLE class="bg_light textsmall" cellSpacing=2 cellPadding=2 width=100%>';
	s+='<tr><td>Your detailed quote will now be prepared and sent to you. You should receive the email within a few minutes.</td></tr>';
	s+='<tr><td height=6></td></tr>';
	s+='<tr><td align=center><font color=#000000>Please enter your email address and then click the "Email Full Quote" button.</font></td></tr>';
	s+='<tr><td align=center><form name=gemail action="javascript:email_quote();"><input name=emailaddr type=text value="'+email+'" size=50></form></td></tr>';
	s+='<tr><td align=center><A href="javascript:email_quote();"><IMG class=piclink title="Your detailed quote will be generated electronically and sent to you immediately with ORDER INSTRUCTIONS" alt=button_email_quote_24.gif src="pics/button_email_quote_24.gif" width=120 height=24></A></td></tr>';
	s+='<tr><td id=errmsg align=center></td></tr>';
	s+='</table>';
	
	floatPrompt('Email Detailed Quote',s,'380px','but_email','bl')
	runit=setInterval("giveFocus('emailaddr')",100)
}

function validEmail() {
    email=getEle('emailaddr').value;
    if (email=='') { badEmail('** PLEASE ENTER AN EMAIL ADDRESS **'); return false; }
	if (email.indexOf('@')<0) { badEmail('** PLEASE ENTER A VALID EMAIL ADDRESS **'); return false; }
	var e=email.split('@');
	if (e[0].indexOf(' ')>=0 || e[0].indexOf(',')>=0) { badEmail('** THE EMAIL ADDRESS APPEARS TO BE INVALID**'); return false; }
	if (e[1].indexOf(' ')>=0 || e[1].indexOf(',')>=0) { badEmail('** THE EMAIL ADDRESS APPEARS TO BE INVALID**'); return false; }
	if (e[1].indexOf('.')<0) { badEmail('** PLEASE ENTER A VALID EMAIL ADDRESS **'); return false; }
	return true;
}

function badEmail(msg) {
	getEle('errmsg').innerHTML='<font color=red>'+msg+'</FONT>';
	runit=setInterval("giveFocus('emailaddr')",100);
}

function email_quote() {
    if (!validEmail()) return;
    badEmail('');
	var s='<TABLE class="bg_light textsmall" cellSpacing=2 cellPadding=2 width=100%>';
	s+='<tr><td align=center><font color=#0000FF>Your quote is now being prepared and emailed to you.</FONT></td></tr>';
	s+='<tr><td height=6></td></tr>';
	s+='<tr><td align=center><IMG class=piclink title="PLEASE WAIT" alt=aniloading.gif src="pics/aniloading.gif" width=150 height=15></A></td></tr>';
	s+='<tr><td height=6></td></tr>';
	s+='<tr><td align=center>Please wait while your email is being sent.</td></tr>';
	s+='<tr><td id=errmsg align=center></td></tr>';
	s+='</table>';
	setFloatContent(s);
//	runit=setInterval("email_quote_prep()",100);
//}
//function email_quote_prep() {    
    
    if (runningInGr8stuff()) { var pg='http://pandanote:90/webclients/pandasam.co.za/'; } else { var pg=''; }
    pg+='quote.php';
    var ps='p='+escape(webprods[package])+'&g='+escape(group)+'&c='+escape(category);
    ps+='&ref=';
    ps+='&eml='+escape(email);
	if (inc_gr8) ps+='&gr8=1'; else ps+='&gr8=0';
	if (inc_sms) ps+='&sms=1'; else ps+='&sms=0';
	if (inc_map) ps+='&gmap=1'; else ps+='&gmap=0';
	ps+='&pg='+escape(pages);
	if (stypes!='') {
		var st=pluralWord(firstWord(stypes.split('|')[0]));
		if (stypes.indexOf('|')>0) { var sts=stypes.substr(stypes.indexOf('|')+1); } else { var sts=''; }
		if (st=='Others') {
			if (sts!='') ps+='&opgs='+escape(sts);
		} else {
			if (sts!='') {
				if (st!='Properties') st='Products';
				ps+='&pcat='+st.toLowerCase()+'&pcats='+escape(sts);
			}
		}
	}
	ps+='&l='+escape(slanguage);
	ps+='&rem='+escape(sprem);
	ps+='&pt='+howtopay;
    
    var pay=getEle('pay').value;

    var regfee=quotesum.regfee.value;
    var domren=quotesum.domren.value;
    var devonce=quotesum.devonce.value;
    var devyr1=quotesum.devyr1.value;
//    var gr8lic1=quotesum.gr8lic1.value;
//    var gr8lic2=quotesum.gr8lic2.value;
	var c=getCatid();
	var gr8stuff1fee=gr8stuff1[package]; var gr8stuff2fee=gr8stuff2[package];
	if (defgr8[c]!=0 && inc_gr8) {
		var gr8lic1=gr8stuff1fee; var gr8lic2=gr8stuff2fee;
	} else {
		var gr8lic1=''; var gr8lic2='';
	}
    var hostyr1=quotesum.hostyr1.value;
    var hostyr2=quotesum.hostyr2.value;
    var totonce=quotesum.totonce.value;
    var totyr1=quotesum.totyr1.value;
    var totyr2=quotesum.totyr2.value;
    var totannualyr1=quotesum.totannualyr1.value;
    var totannualyr2=quotesum.totannualyr2.value;

/*
    var regfee=getEle('regfee').value;
    var domren=getEle('domren').value;
    var devonce=getEle('devonce').value;
    var devyr1=getEle('devyr1').value;
//    var gr8lic1=getEle('gr8lic1').value;
//    var gr8lic2=getEle('gr8lic2').value;
	var c=getCatid();
	var gr8stuff1fee=gr8stuff1[package]; var gr8stuff2fee=gr8stuff2[package];
	if (defgr8[c]!=0 && inc_gr8) {
		var gr8lic1=gr8stuff1fee; var gr8lic2=gr8stuff2fee;
	} else {
		var gr8lic1=''; var gr8lic2='';
	}
    var hostyr1=getEle('hostyr1').value;
    var hostyr2=getEle('hostyr2').value;
    var totonce=getEle('totonce').value;
    var totyr1=getEle('totyr1').value;
    var totyr2=getEle('totyr2').value;
    var totannualyr1=getEle('totannualyr1').value;
    var totannualyr2=getEle('totannualyr2').value;
*/
    
//sched = oo_r,oo_d,oo_h,oo_tot,my1_r,my1_d,my1_h,my1_tot,my2_r,my2_d,my2_h,my2_tot,
//        ay1_d,ay1_g,ay1_tot,ay2_d,ay2_g,ay2_tot
// p=standard&g=Commodities&c=Products%20%26%20Services&ref=&eml=rob@ps.co.za&gr8=1
// &sms=0&gmap=1&pg=Home%7CBackground%7CProducts/Services%7CGeneral%20Info%7CContact%20Us
// &pcat=products&pcats=Widgets%281%29%7CNuts%280%29%7CBolts%280%29&l=english&rem=&pt=install
// &sched=350.00,165.00,,515.00,,165.00,100.00,265.00,,,100.00,100.00,,300,,100.00,300,100.00
	var sched='&sched='+regfee+','+devonce+',,'+totonce+',';
	sched+=','+devyr1+','+hostyr1+','+totyr1+',';
	sched+=',,'+hostyr2+','+totyr2+',';
	sched+=','+gr8lic1+','+totannualyr1;
	sched+=','+domren+','+gr8lic2+','+totannualyr2;
	
	ps+=sched;
//	alert(pg+'\n'+ps);
	ajax_post(pg,ps,quote_prep);
//	runit=setInterval("prepQuote('"+pg+"','"+ps+"')",200);
}

function prepQuote(pg,ps) { clearInterval(runit); ajax_post(pg,ps,quote_prep); }

function quote_prep() {
	if (axmlhttp.readyState != 4) return;
	if (!(r=ajax())) {
		if (errstate=='') { errstate='An UNKNOWN error occurred.'; }
		send_error(errstate); return;
	}
//   -- code goes here -- r contains response
	var nr=r.split('<gr8>')[1]; r=nr.split('</gr8>')[0];
//alert(r);
	var snd=false;
	if (r.substr(0,3)=='OK:') {
		snd=true;
		var s='<TABLE class="bg_light textsmall" cellSpacing=2 cellPadding=2 width=100%>';
		s+='<tr><td align=center><font color=#0000FF>Your quote has been prepared and is now being emailed to you.</FONT></td></tr>';
		s+='<tr><td height=6></td></tr>';
		s+='<tr><td align=center><IMG class=piclink title="PLEASE WAIT" alt=aniloading.gif src="pics/aniloading.gif" width=150 height=15></A></td></tr>';
		s+='<tr><td height=6></td></tr>';
		s+='<tr><td align=center>Please wait while your email is being sent.</td></tr>';
		s+='<tr><td id=errmsg align=center></td></tr>';
		s+='</table>';
	} else {
		var s='<TABLE class="bg_light textsmall" cellSpacing=2 cellPadding=2 width=100%>';
		s+='<tr><td align=center><font color=#0000FF>'+r+'</FONT></td></tr>';
		s+='</table>';
	}
	setFloatContent(s);
	if (snd) {
//alert(r.substr(3));
		ajax_post('mailserver.asp','template=quote_send_email&'+r.substr(3),email_sent);
	}
}

function email_sent() {
	if (axmlhttp.readyState != 4) return;
	if (!(r=ajax())) {
		if (errstate=='') { errstate='An UNKNOWN error occurred.'; }
		send_error(errstate); return;
	}
//   -- code goes here -- r contains response
//alert(r);
	if (r.substr(0,3)=='OK:') {
		r=r.substr(3);
		var s='<TABLE class="bg_light textsmall" cellSpacing=2 cellPadding=2 width=100%>';
		s+='<tr><td align=center><font color=#0000FF>THANK YOU FOR REQUESTING A QUOTE.</FONT></td></tr>';
		s+='<tr><td height=6></td></tr>';
		s+='<tr><td align=center><font color=#FF0000>Your quote has sent to:'+r+'</FONT></td></tr>';
		s+='<tr><td height=6></td></tr>';
		s+='<tr><td align=center>Please check your inbox.</td></tr>';
		s+='<tr><td id=errmsg align=center></td></tr>';
		s+='</table>';
	} else {
		var s='<TABLE class="bg_light textsmall" cellSpacing=2 cellPadding=2 width=100%>';
		s+='<tr><td align=center><font color=#FF0000>'+r+'</FONT></td></tr>';
		s+='</table>';
	}
	setFloatContent(s);
}

function send_error(msg) {
	var s='<TABLE class="bg_light textsmall" cellSpacing=2 cellPadding=2 width=100%>';
	s+='<tr><td align=center><font color=#0000FF>We are SORRY but an error occurred while trying to send your quote.</FONT></td></tr>';
	s+='<tr><td height=6></td></tr>';
	s+='<tr><td align=center class=textcenter><font color=#FF0000>'+msg+'</FONT></td></tr>';
	s+='<tr><td height=6></td></tr>';
	s+='<tr><td align=center><IMG class=piclink title="Cancel" alt=back_button.gif src="pics/back_button.gif" width=39 height=15 onclick="javascript:hide_floating_div();" style="cursor:pointer"></A></td></tr>';
	s+='<tr><td id=errmsg align=center></td></tr>';
	s+='</table>';
	setFloatContent(s);
}

// --------------------
// ASYNC AJAX Functions
// --------------------
/*
 * USAGE:
 *
 * in code: ajax_get(url,nextstep);
 *
 * function nextstep() {
 *    if (!(r=ajax())) { if (errstate!='') { alert(errstate); } return; }
 *    -- code goes here -- r contains response
 * }
*/

document.write('<DIV id="ajaxmsg" style="display:none;position:absolute;left: 45%;top: 40%;vertical-align:middle;background-color:transparent;z-index:40;"><img src=pics/activityanimation.gif></DIV>');

var errstate='';
var axmlhttp = xmlhttp_create();

function ajax_get(serverUrl,respFunc) {
	var rand = Math.floor(Math.random()*1000001);
	try {
		errstate='';
//		getEle('ajaxmsg').style.display='inline';
		if (serverUrl.indexOf('?')>=0) { var url=serverUrl+'&r='+rand; } else { var url=serverUrl+'?r='+rand; }
		axmlhttp.open("GET", url, true);
		axmlhttp.onreadystatechange = respFunc;
		axmlhttp.send(null);
	} catch (genException) { errstate=''; }
//	} catch (genException) { alert('Error: Unable to connect.'); }

}

/*
function ajax_post(serverUrl,postdata,respFunc) {
	var rand = Math.floor(Math.random()*1000001);
	try {
//		getEle('ajaxmsg').style.display='inline';
		var pdata=postdata; errstate='';
		axmlhttp.open("POST", serverUrl+'?r'+rand, false);
		axmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		axmlhttp.setRequestHeader('Content-Length',pdata.length);
		axmlhttp.onreadystatechange = respFunc;
		axmlhttp.send(pdata);
	} catch (genException) { errstate=''; }
//	} catch (genException) { alert('Error: Unable to connect.'); }
}
*/

function ajax_post(serverUrl,postdata,respFunc) {
	var asy=false;
	if (!IE()) { axmlhttp = xmlhttp_create(); asy=true; }
	var rand = Math.floor(Math.random()*1000001);
	try {
//		getEle('ajaxmsg').style.display='inline';
		var pdata=postdata; errstate='';
		if (serverUrl.indexOf('?')>=0) { var url=serverUrl+'&r='+rand; } else { var url=serverUrl+'?r='+rand; }
//		axmlhttp.open("POST", url, false);
//		axmlhttp.open("POST", url, true);
		axmlhttp.open("POST", url, asy);
		axmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		axmlhttp.setRequestHeader('Content-Length',pdata.length);
		axmlhttp.onreadystatechange = respFunc;
		axmlhttp.send(pdata);
//if (axmlhttp.readyState==4) alert(axmlhttp.responseText);
	} catch (genException) { errstate=''; }
//	} catch (genException) { alert('Error: Unable to connect.'); }
}

function ajax() {

	try {
		if (axmlhttp.readyState == 4) // Completed
		{
			
			getEle('ajaxmsg').style.display='none';

			if (axmlhttp.status == 200) // “OK”
			{ errstate=''; return fixreply(axmlhttp.responseText); }

			else if (axmlhttp.status == 403) // “Forbidden”
			{ errstate="Error (axmlhttp): Access denied.!"; }

			else if (axmlhttp.status == 404) // “URL Not Found”
			{ errstate="Error (axmlhttp): URL not found. Please check the URL!"; }

			else // Miscellaneous
			{ errstate="Error (axmlhttp): status code " + axmlhttp.status; }
		}
		return false;
	}
	catch (genException) { errstate="Error (axmlhttp): Unknown"; }
}

function fixreply(r) {
	var s=r.replace(/\r/g,'').replace(/\n/g,'');
	s=Trim(s);
	s=s.replace(/\{10\}/g,'\n').replace(/\{13\}/g,'\r');
	return s;
}
function Trim(v) {
	if (v=='') return v;
	var s=v;
	while (s.substr(0,1)==' ') { s=s.substr(1); }
	while (s.substr(s.length-1,1)==' ') { s=s.substr(0,s.length-1); }
	return s;
}

// Create the xmlHttpRequest object and return it.

function xmlhttp_create() {

	var xmlHttpRequest = false;
	//Internet Explorer
	try { xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP"); }
	catch (xml2Exception) {
		try { xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP"); }
		catch (xmlException) { xmlHttpRequest = false; }

	}

	//Netscape, Mozila, Firefox, Safari, Opera
	if (!xmlHttpRequest && typeof XMLHTTPRequest == 'undefined') {
		try { xmlHttpRequest = new XMLHttpRequest(); }
		catch (genException) { XMLHttpRequest = false; }
	}
	return xmlHttpRequest;
}

