function trim(str){
   return str.replace(/^\s*|\s*$/g,"");
}

function toggleMore(){
	document.getElementById("textdiv").style.overflow="visible";
	document.getElementById("textdiv").style.height="auto";
	document.getElementById("morelink").style.visibility = "hidden";
	document.getElementById("infobar").className="showit";
}

function init(){
	var x,y;
	var test1 = document.body.scrollHeight;
	var test2 = document.body.offsetHeight
	if (test1 > test2) // all but Explorer Mac
	{
		x = document.body.scrollWidth;
		y = document.body.scrollHeight;
	}
	else // Explorer Mac;
		 //would also work in Explorer 6 Strict, Mozilla and Safari
	{
		x = document.body.offsetWidth;
		y = document.body.offsetHeight;
	}
	//document.images['sizer'].height = y-140;
}

function showProgress(percent){
	document.getElementById('pblabel').innerHTML = percent + '%';
	var bar = document.getElementById('progressbar');
	if(bar.style) {bar = bar.style;}
	var noPx = document.childNodes ? 'px' : 0;
	bar.width = 200*(percent/100) + noPx;
	bar.pixelWidth = 200*(percent/100);
}

function enlargeImage(path, title){
	if(title==undefined){
		title=":: image ::";
	}
	var iw = window.open('', 'iw', 'toolbars=no,width=300,height=200,top=100,left=100,resizable=yes');
	iw.document.open();
	iw.document.writeln('<html><head>');
	iw.document.writeln('<title>' + title + '</title>');
	iw.document.writeln('<META HTTP-EQUIV="imagetoolbar" content="no">');
	iw.document.writeln('<script language="javascript" type="text/javascript">function resizeWin(){if (document.all || document.layers) window.resizeTo(document.images[0].width+10,document.images[0].height+30);}</script>');
	iw.document.writeln('</head>');
	iw.document.writeln('<body onload="resizeWin();" style="margin:0px;" onblur="self.close();">');
	iw.document.writeln('<div align="center"><img src="' + path + '" onclick="self.close();" onmouseover="this.style.cursor=\'pointer\';"></div>');
	iw.document.writeln('</body></html>');
	iw.document.close();
	return false;
}

function openWindow(strHref){
	var iw = window.open(strHref, '', 'toolbars=no,width=800,height=600,scrollbars=1,resizable=1');
	if(!iw.opener){
		iw.opener = self;
	}
	return false;
}

function previewEmail(id){
	var req;
	try {
		req = window.XMLHttpRequest ? new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP");
	}
	catch(e){
	}
	req.open("GET", "/common/script/preview-email.php?id=" + id);
	req.onreadystatechange = function(){
		if ((req.readyState == 4) && (req.status == 200)){
			var iw = window.open('', 'emailpreviewer', 'toolbars=no,width=640,height=800,top=0,left=0,resizable=yes,scrollbars=yes');
			iw.document.open();
			iw.document.writeln(req.responseText);
			iw.document.close();
		}
	}
	req.send(null);
	return true;
}

function checkSendMailForm(frm){
	switch(frm.currentstep.value){
		case '1':
			if(!frm.loadexisting.checked && !frm.createnewemail.checked){
				alert('please select an option');
				return false;
			}
			if(frm.mode.value=='deletenewsletter' && frm.selNewsletter.value=='0'){
				alert('you need to select a newsletter to delete');
				return false;
			}
			if(frm.mode.value=='deletenewsletter' && frm.selNewsletter.value!=='0'){
				var agree = confirm('are you sure you want to delete this newsletter?');
				if(!agree){
					return false;
				}
			}
			if(frm.loadexisting.checked && frm.selNewsletter.value=='0'){
				alert('please select an existing newsletter, or change the option');
				return false;
			}
			break;
		case '2':
			if(frm.selTemplates.value=='0'){
				alert('please select a template');
				return false;
			}
			if(frm.radMembers.checked==false && frm.radSubscribers.checked==false){
				alert('Please choose whether to send to Members or Subscribers');
				return false;
			}
			break;
		case '6':
			if(frm.radLive.checked){
				var agree = confirm("are you sure you want to send this to live?");
				if(!agree){
					return false;
				}
			}
			if(frm.radTest.checked && frm.taTestSubscribers.value==''){
				alert('you must supply at least one address to send to');
				return false;
			}
			frm.action = '/common/script/sendmail.php';
			frm.target = frm.action;
			break;
	}
	return true;
}

function checkForm(frm){ /* test if element will work here */
	if(!validEmail(frm.txtEmail.value)){
		alert("please enter a valid email address");
		return false;
	}
	if(trim(frm.security_code.value)==""){
		alert("please complete the security check");
		frm.security_code.select();
		return false;
	}
	switch(frm.selPreference.value){
		case "telephone" :
			if(!validTelephone(frm.txtTelephone.value)){
				alert("Please supply a valid telephone number if you would like to be contacted by this method");
				return false;
			}
			break;
		case "email" :
			return true;
			break;
		default:
			return false;
			break;
	}
	return true;
}

function checkMemberForm(frm){
	if(frm.businessname.value==""){
		alert("business name is a mandatory field");
		frm.businessname.select();
		return false;
	}
	if((frm.businessemail.value!="") && (!validEmail(frm.businessemail.value))){
		alert("please check \'business email\' is a valid email address");
		frm.businessemail.select();
		return false;
	}
	if((frm.contactemail.value!="") && (!validEmail(frm.contactemail.value))){
		alert("please check \'contact email\' is a valid email address");
		frm.contactemail.select();
		return false;
	}
	if((frm.businessurl.value!="") && (!validURL(frm.businessurl.value))){
		alert("please check \'business url\' is a valid web address");
		frm.businessurl.select();
		return false;
	}
	var wordcount = countWords(frm.businessdescription, false, false);
	if(((frm.selLevel.value=='2') && (wordcount>50)) || ((frm.selLevel.value=='3') && (wordcount>100))){
		alert("word count: " + wordcount + "\ntoo many words in \'business description\' for this membership level");
		frm.taBusinessDescription.focus();
		return false;	
	}
	if(frm.selRegion.value==0){
		alert("please set the \'region\' for this member");
		frm.selRegion.focus();
		return false;
	}
	return true;
}

function checkSubscriberForm(frm){
	if(frm.taMessage){
		if(trim(frm.taMessage.value)==""){
			alert("please leave a message!");
			frm.taMessage.select();
			return false;
		}
	}
	if(trim(frm.selTitle.value)=="0"){
		alert("your title is a mandatory field");
		frm.selTitle.focus();
		return false;
	}
	if(trim(frm.txtFirstName.value)==""){
		alert("your first name is a mandatory field");
		frm.txtFirstName.select();
		return false;
	}
	if(trim(frm.txtSurname.value)==""){
		alert("your surname is a mandatory field");
		frm.txtSurname.select();
		return false;
	}
	if(!validEmail(frm.txtEmail.value)){
		alert("please supply a valid email address");
		frm.txtEmail.select();
		return false;
	}
	if(frm.txtEmail2.value!=frm.txtEmail.value){
		alert("your email address confirmation does not match");
		frm.txtEmail2.value="";
		frm.txtEmail2.select();
		return false;
	}
	if(trim(frm.txtAddress1.value)==""){
		alert("your address is a mandatory field");
		frm.txtAddress1.select();
		return false;
	}
	if(trim(frm.txtAddress4.value)==""){
		alert("your town is a mandatory field");
		frm.txtAddress4.select();
		return false;
	}
	if(trim(frm.selCountry.value)=="0"){
		alert("your country is a mandatory field");
		frm.selCountry.focus();
		return false;
	}
	if(trim(frm.txtPostcode.value)==""){
		alert("your postcode is a mandatory field");
		frm.txtPostcode.select();
		return false;
	}
	if(trim(frm.security_code.value)==""){
		alert('please complete the security check');
		return false;
	}
/*	if(getCheckedValue(frm.answers)==""){
		alert("you need to answer the question to enter the competition!");
		return false;
	}*/
	return true;
}

function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}


function validTelephone(str){
	str = str.replace(/\s/g, '');
	var regpat = /^(\+)?[\d\(\)]{6,}$/;
	var b = regpat.test(str);
	return b;
}

function confirmDelete(){
	var agree=confirm("Are you sure you want to delete this item?");
	if (agree)
		return true ;
	else
		return false ;
}

function validURL(str){
	return true;
	// Shouldn't check for TLDs, these can change..
	//var regpat = new RegExp("^(((http(s?))|(ftp))\:\/\/)(www.|[a-zA-Z].)[a-zA-Z0-9\-\.]+\.(com|edu|gov|mil|net|org|biz|info|name|museum|us|ca|uk)(\:[0-9]+)*(\/($|[a-zA-Z0-9\.\,\;\?\'\\\+&%\$#\=~_\-]+))*$");
	//var b = regpat.test(str);
	//return b;
}

function buildBreadcrumb() {
	var aFolders = new Array();
	var href = document.location.toString();
	aFolders = href.split('/');
	
	var strout = '';
	for(var i=2; i<aFolders.length; i++){
		if(i==2){aFolders[i]='home'}
		strout += '<a href="';
		if(i==aFolders.length-1){
			strout += buildDepth((aFolders.length-i)+1) + aFolders[i];
		}
		else {
			strout += buildDepth((aFolders.length-i)+1) + 'default.php';
		}
		strout += '">' + tidyLabel(aFolders[i]) + '</a>&nbsp;&gt;&nbsp;';
	}
	document.write(strout);
}

function buildDepth(iterations){
	var iterations=iterations-3;
    var depthStr='';
	
    for (i=0;i<iterations;i++)
    {
        depthStr=depthStr + '../';
    }
    return depthStr;
}

function tidyLabel(str){
	var strout = '';
	var a = str.split(".")
	strout = a[0];
	strout = strout.replace(/(_)/g, " ");
	strout = strout.replace(/(-)/g, " ");
	return strout;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
function MM_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];}}
}

var requester = null;

function checkBusinessName(str){
	if (requester != null && requester.readyState != 0 && requester.readyState != 4){ 
		requester.abort(); 
	} 
	try { 
		requester = new XMLHttpRequest(); 
	} 
	catch (error){ 
		try { 
			requester = new ActiveXObject("Microsoft.XMLHTTP"); 
		} 
		catch (error) { 
			requester = null; 
			return false; 
		} 
	} 
	requester.open("GET", "/common/script/checkbusinessname.php?name=" + str);
	requester.onreadystatechange = onreadystatechangecheck; 
	requester.send(null);
	return true;
}

function onreadystatechangecheck(){ 
	if (requester.readyState == 4){ 
		if (requester.status == 200){
			writeOutput();
		} 
		else if (requester.status != 0){ 
			alert("There was an error while retrieving the URL: " + requester.statusText); 
		} 
	} 
	return true; 
}

function writeOutput(){
	if(requester.responseText=='1'){
		alert('there is already a business with that name in the database');
		document.getElementById("businessname").select();
	}
	return true;
}

function countWords(this_field, show_word_count, show_char_count) {
	if (show_word_count == null) {
		show_word_count = true;
	}
	if (show_char_count == null) {
		show_char_count = false;
	}
	var char_count = this_field.value.length;
	var fullStr = this_field.value + " ";
	var initial_whitespace_rExp = /^[^A-Za-z0-9]+/gi;
	var left_trimmedStr = fullStr.replace(initial_whitespace_rExp, "");
	var non_alphanumerics_rExp = rExp = /[^A-Za-z0-9]+/gi;
	var cleanedStr = left_trimmedStr.replace(non_alphanumerics_rExp, " ");
	var splitString = cleanedStr.split(" ");
	var word_count = splitString.length-1;
	if (fullStr.length <2) {
		word_count = 0;
	}
	if (word_count == 1) {
		wordOrWords = " word";
	}
	else {
		wordOrWords = " words";
	}
	if (char_count == 1) {
		charOrChars = " character";
	}
	else {
		charOrChars = " characters";
	}
	if (show_word_count & show_char_count) {
		alert ("Word Count:\n" + "    " + word_count + wordOrWords + "\n" + "    " + char_count + charOrChars);
	}
	else {
		if (show_word_count) {
			alert ("Word Count:  " + word_count + wordOrWords);
		}
		else {
			if (show_char_count) {
			alert ("Character Count:  " + char_count + charOrChars);
		  	}
	   	}
	}
	return word_count;
}

function doSubscription(strEmailAddress){
	if (requester != null && requester.readyState != 0 && requester.readyState != 4){ 
		requester.abort(); 
	} 
	try { 
		requester = new XMLHttpRequest(); 
	} 
	catch (error){ 
		try { 
			requester = new ActiveXObject("Microsoft.XMLHTTP");
		} 
		catch (error) { 
			requester = null; 
			return false; 
		} 
	} 
	requester.open("GET", "/common/script/signup.php?address=" + strEmailAddress);
	requester.onreadystatechange = onreadystatechangeSubscribe;  
	requester.send(null); 
	return true;
}

function onreadystatechangeSubscribe(){ 
	if (requester.readyState == 4){ 
		if (requester.status == 200){ 
			writeSubscribe(); 
		} 
		else if (requester.status != 0){ 
			alert("There was an error while retrieving the URL: " + requester.statusText); 
		} 
	} 
	return true; 
}

function writeSubscribe(){
	var btn = document.getElementById("btnSubscribe");
	if (requester.responseText){
		switch(requester.responseText){
			case 'invalid address':
				document.getElementById('divresponse').innerHTML = '<span class="alert">*' + requester.responseText + '*</span>';
				break;
			case 'added':
				document.getElementById('divresponse').innerHTML = '<span class="alert">*' + requester.responseText + '*</span>';
				btn.disabled = true;
				break;
			case 'failed':
				document.getElementById('divresponse').innerHTML = '<span class="alert">*' + requester.responseText + '*</span>';
				break;
			case 'already in':
				document.getElementById('divresponse').innerHTML = '<span class="alert">*' + requester.responseText + '*</span>';
				btn.disabled = true;
				break;
			case 'quickadded':
				location.href='/sign-up.php';
				break;
			case 'quickfailed':
				document.getElementById('divresponse').innerHTML = '<span class="alert">* failed *</span>';
				break;
			case 'quickalreadyin':
				document.getElementById('divresponse').innerHTML = '<span class="alert">* already in *</span>';
				break;
			default:
				document.getElementById('divresponse').innerHTML = '<span class="alert">* oops *</span>';
				break;
		}
	}
	else{
		//do nothing
	}
	return true;
}

function fetchSubCategories(id){
	try{
		requester = window.XMLHttpRequest ? new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP");
	}
	catch(e){
	}
	requester.open("GET", "/common/script/business-categories.php?id=" + id);
	requester.onreadystatechange = writeCategorySelect;  
	requester.send(null); 
	return true;
}

function fetchTowns(id){
	if (id == -1){
		document.getElementById("divNew").style.visibility = 'hidden';
		return true;
	}
	try{
		requester = window.XMLHttpRequest ? new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP");		
	}
	catch(e){
		
	}
	requester.open("GET", "/common/script/towns.php?id=" + id);
	requester.onreadystatechange = writeTownSelect;
	requester.send(null);
	return true;
}

function writeCategorySelect(){
	if ((requester.readyState == 4) && (requester.status == 200)){
		document.getElementById("2ndCategoryEditForm").style.visibility = 'visible';
		document.getElementById("sel2ndCategory").innerHTML = requester.responseText;
	}
}

function writeTownSelect(){
	if ((requester.readyState == 4) && (requester.status == 200)){		
		document.getElementById("selTowns").innerHTML = requester.responseText;		
		document.getElementById("divNew").style.visibility = 'visible';
	}
}

function allow_agecategory_edit(frm){
	document.getElementById("txtAgeCategory").value = frm.selAges.options[frm.selAges.selectedIndex].text;
	document.getElementById("btnAgeSubmit").value = "update";
	frm.mode.value = "updateagecategory";
	document.getElementById("ageid").value = frm.selAges.value;
	document.getElementById("btnDelete").disabled = false;
	document.getElementById("btnAgeUp").disabled = false;
	document.getElementById("btnAgeDown").disabled = false;
}

function allow_title_edit(frm){
	document.getElementById("txtTitle").value = frm.selTitles.options[frm.selTitles.selectedIndex].text;
	document.getElementById("btnTitleSubmit").value = "update";
	frm.mode.value = "updatetitle";
	document.getElementById("titleid").value = frm.selTitles.value;
	document.getElementById("btnTitleDelete").disabled = false;
	document.getElementById("btnTitleUp").disabled = false;
	document.getElementById("btnTitleDown").disabled = false;
}

function allow_interests_edit(frm){
	document.getElementById("txtInterest").value = frm.selInterests.options[frm.selInterests.selectedIndex].text;
	document.getElementById("btnInterestSubmit").value = "update";
	frm.mode.value = "updateinterest";
	document.getElementById("interestid").value = frm.selInterests.value;
	document.getElementById("btnInterestDelete").disabled = false;
	document.getElementById("btnInterestUp").disabled = false;
	document.getElementById("btnInterestDown").disabled = false;
}

function allow_referrers_edit(frm){
	document.getElementById("txtReferrer").value = frm.selReferrers.options[frm.selReferrers.selectedIndex].text;
	document.getElementById("btnReferrerSubmit").value = "update";
	frm.mode.value = "updatereferrer";
	document.getElementById("referrerid").value = frm.selReferrers.value;
	document.getElementById("btnReferrerDelete").disabled = false;
	document.getElementById("btnReferrerUp").disabled = false;
	document.getElementById("btnReferrerDown").disabled = false;
}

function openWindow(strHref){
	var iw = window.open(strHref, '', 'toolbars=no,width=500,height=400,scrollbars=yes,resizable=yes');
	if(!iw.opener){
		iw.opener = self;
	}
	return false;
}

function allowAllocation(){
	if(document.getElementById("chkDefault").checked){
		document.getElementById("selPage").disabled = true;
	}
	else {
		document.getElementById("selPage").disabled = false;
	}
}

function removeAllocation(sel){
	var i;
	try {
		var req = window.XMLHttpRequest ? new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP");
	}
	catch(e){
	}
	for(i=sel.options.length-1;i>=0;i--){
		if(sel.options[i].selected){
			req.open("GET", "/common/script/remove-allocation.php?id=" + sel.options[i].value);
			req.onreadystatechange = function(){
				if ((req.readyState == 4) && (req.status == 200)){
					sel.remove(i);
				}
			}
			req.send(null);
			return true;
		}
	}
}

function removeNcvaAllocation(sel){
	var i;
	try {
		var req = window.XMLHttpRequest ? new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP");
	}
	catch(e){
	}
	for(i=sel.options.length-1;i>=0;i--){
		if(sel.options[i].selected){
			req.open("GET", "/common/script/remove-ncva-allocation.php?id=" + sel.options[i].value);
			req.onreadystatechange = function(){
				if ((req.readyState == 4) && (req.status == 200)){
					sel.remove(i);
				}
			}
			req.send(null);
			return true;
		}
	}
}

function link_handler(advertid, memberid, bannerid){
	var req;
	try {
		req = window.XMLHttpRequest ? new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP");
	}
	catch(e){
	}
	req.open("GET", "/common/script/link-handler.php?advertid=" + advertid + "&memberid=" + memberid + "&bannerid=" + bannerid);
	req.onreadystatechange = function(){
		if ((req.readyState == 4) && (req.status == 200)){
		}
	}
	req.send(null);
	return true;
}

function validEmail(str){
	var regpat = /^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*\s+<(\w[-._\w]*\w@\w[-._\w]*\w\.\w{2,4})>$|^(\w[-._\w]*\w@\w[-._\w]*\w\.\w{2,4})$/;
	var b = regpat.test(str);
	return b;
}
