// JavaScript Document
/* Create new XMLHttpRequest objects to talk to the Web server*/
function createXMLHttpObj()
{
    var ret = null;
    try {
        ret = new ActiveXObject('Msxml2.XMLHTTP');
    }
    catch (e) {
        try {
            ret = new ActiveXObject('Microsoft.XMLHTTP');
        }
        catch (ee) {
            ret = null;
        }
    }
    if (!ret && typeof XMLHttpRequest != 'undefined')
        ret = new XMLHttpRequest();

    return ret;
}

function bgdShadeChange(elmt, shd) {
	if (shd == 1) {
		elmt.style.backgroundColor = "#E5E5E5";
	} else {
		elmt.style.backgroundColor = "#F2F2F2";
	}
}

function appendToDropdown(dd, option_descrip, option_id, format) {
	slctBox = document.getElementById(dd);
	ops = slctBox.length;
	slctBox.options[ops] = new Option(option_descrip, option_id);
	slctBox.options[ops].style.textAlign = "right";
	if (format) {
		slctBox.options[ops].style.fontWeight = "bold";
		slctBox.options[ops].style.backgroundColor = "#DDDDDD";
	}

	return ops;
}

function changeElmnt(the_elmnt,the_change)
{
  var the_style = getStyleObject(the_elmnt);
  if (the_style != false)
  {
    the_style.display = the_change;
  }
}

function getStyleObject(objectId) {
  // checkW3C DOM, then MSIE 4, then NN 4.
  //
  if(document.getElementById && document.getElementById(objectId)) {
	return document.getElementById(objectId).style;
   }
   else if (document.all && document.all(objectId)) {
	return document.all(objectId).style;
   }
   else if (document.layers && document.layers[objectId]) {
	return document.layers[objectId];
   } else {
	return false;
   }
}

function checkSelection(slctBox) {
	i = slctBox.selectedIndex;
	svl = slctBox.options[i].value;
	stl = slctBox.options[i].style.fontWeight;
	sid = slctBox.id;
	ln = sid.length;
	fldname = sid.substr(0,ln-7);
	if (fldname == "year") {
		if (svl == "spec") {
			document.getElementById('yearfrom').style.display = "inline";
			document.getElementById('yearto').style.display = "inline";
		} else {
			document.getElementById('yearfrom').style.display = "none";
			document.getElementById('yearto').style.display = "none";
			document.getElementById('yearfrom_entry').value = "";
			document.getElementById('yearto_entry').value = "";
		}
	} else if ((fldname == "hp") || (fldname == "price") || (fldname == "size")) {
		if (stl == "bold") {
			var url = "./ajax/dropdown_options.php?fld=" + fldname + "&typ=" + svl;
			var xmlHttp = createXMLHttpObj();
			xmlHttp.open("GET", url, true);
			xmlHttp.onreadystatechange = function() {
				if (xmlHttp.readyState == 4) {
					populateDropdown(xmlHttp, fldname, slctBox.options[0].text);
				}
			}
			xmlHttp.send(null);
		}
	} else if (fldname == "make") {
		if (document.getElementById('model_select')) {
			var xmlHttp = createXMLHttpObj();
			var url = "./ajax/domodels.php?make=" + svl;
			xmlHttp.open("GET", url, true);
			xmlHttp.onreadystatechange = function() {
				if (xmlHttp.readyState == 4) {
					populateModelDropdown(xmlHttp);
				}
			}
			xmlHttp.send(null);
		}
	} else if (sid == 'farmertype') {
		var tbox = document.getElementById('otherfarmertype');
		var val = slctBox.options[slctBox.selectedIndex].value;
		if (val == 4) {
			tbox.disabled = false;
			tbox.focus();
		} else {
			tbox.disabled = true;
			tbox.value = "";
			window.focus();
		}
	} else if (sid == 'bnr_context') {
		var catsarea = document.getElementById('bnr_categories');
		var cat1 = document.getElementById('category1');
		var cat2 = document.getElementById('category2');
		var cat3 = document.getElementById('category3');
		if (svl == "Cat") {
			cat1.disabled = false;
			cat2.disabled = false;
			cat3.disabled = false;
			catsarea.style.display = "block";
		} else {
			cat1.selectedIndex = 0;
			cat2.options.length = 0;
			cat3.options.length = 0;
			cat1.disabled = true;
			cat2.disabled = true;
			cat3.disabled = true;
			catsarea.style.display = "none";
		}
	}
}

function togglePlaceInCat(chkbox) {
	var cat1 = document.getElementById('category1');
	var cat2 = document.getElementById('category2');
	var cat3 = document.getElementById('category3');
	if (chkbox.checked) {
		cat1.disabled = false;
		cat2.disabled = false;
		cat3.disabled = false;
	} else {
		var uncheck = false;
		var xcats = document.getElementById('extracats').value;
		if (xcats != "") {
			if (confirm('On update, this action will remove all other listing categories for this ad. Proceed?'))
			{ uncheck = true; }
		} else {
			uncheck = true;
		}
		if (uncheck) {
			cat1.selectedIndex = 0;
			cat2.options.length = 0;
			cat3.options.length = 0;
			cat1.disabled = true;
			cat2.disabled = true;
			cat3.disabled = true;
		} else {
			chkbox.checked = true;
		}
	}
}

function togglePlacement(chkbox) {
	var ctxt = document.getElementById('bnr_context');
	var pos = document.getElementById('bnr_position');
	var cat1 = document.getElementById('category1');
	var cat2 = document.getElementById('category2');
	var cat3 = document.getElementById('category3');
	if (chkbox.checked) {
		ctxt.disabled = false;
		pos.disabled = false;
	} else {
		cat1.selectedIndex = 0;
		cat2.options.length = 0;
		cat3.options.length = 0;
		cat1.disabled = true;
		cat2.disabled = true;
		cat3.disabled = true;
		var catsarea = document.getElementById('bnr_categories');
		catsarea.style.display = "none";
		ctxt.selectedIndex = 0;
		ctxt.disabled = true;
		pos.selectedIndex = 0;
		pos.disabled = true;
	}
}

function populateDropdown(xmlReq, fld, ddTitle)
{
	//var objNodeList = ddxmlDoc.selectNodes('/ddoptions/ddoption');
	var objNodeList = xmlReq.responseXML.getElementsByTagName('ddoption');

	var currentdd = document.getElementById(fld+'_select');
	currentdd.options.length = 0;
	currentdd.options[0] = new Option(ddTitle, "");
	for(i=0;i<objNodeList.length;i++)
	{
		currentdd.options[i+1] = 
		new Option(objNodeList.item(i).getAttribute("description"),objNodeList.item(i).getAttribute("id"));
		currentdd.options[i+1].style.textAlign = "right";
		if (objNodeList.item(i).getAttribute("type") == "active") {
			currentdd.options[i+1].style.backgroundColor = "#DDDDDD";
			currentdd.options[i+1].style.fontWeight = "bold";
		}
	}

	window.focus();
}

function populateModelDropdown(req) {
	var response = req.responseText;
	var modeldd = document.getElementById('model_select');
	modeldd.options.length = 0;
	modeldd.options[0] = new Option("Model", "");
	modeldd.options[1] = new Option("Any", "0");
	modeldd.options[1].style.textAlign = "right";
	if (response != '') {
		var models = response.split(",");
		for(i=0;i<models.length;i++) {
			modeldd.options[i+2] = new Option(models[i], models[i]);
			modeldd.options[i+2].style.textAlign = "right";
		}
	}
}

function getMultiDurations(typ) {
	if (typ != "") {
		var url = "./ajax/durations.php?mtyp=" + typ;
		var xmlHttp = createXMLHttpObj();
		xmlHttp.open("GET", url, true);
		xmlHttp.onreadystatechange = function() {
			if (xmlHttp.readyState == 4) {
				var objNodeList = xmlHttp.responseXML.getElementsByTagName('duration');
				var advDrtn = document.getElementById('advert_duration_select');
				advDrtn.options.length = 0;
				advDrtn.options[0] = new Option("Duration required", "");

				for(i=0;i<objNodeList.length;i++)
				{
					advDrtn.options[i+1] = 
					new Option(objNodeList.item(i).getAttribute("description"),objNodeList.item(i).getAttribute("id"));
					advDrtn.options[i+1].style.textAlign = "right";
				}
			}
		}
		xmlHttp.send(null);
		//document.getElementById('adprice').value = "";
	} else {
		var advDrtn = document.getElementById('advert_duration_select');
		advDrtn.options.length = 0;
		advDrtn.options[0] = new Option("Duration required", "");
		document.getElementById('adprice').value = "";
	}
	window.focus();
}

function toggleCTDsoloAd(chkbox) {
	var cat1 = document.getElementById('category1');
	var cat2 = document.getElementById('category2');
	var cat3 = document.getElementById('category3');
	if (chkbox.checked) {
		/*var url = "./ajax/ajax_categories.php?id=0&adtyp=sol";
		xmlHttp.open("GET", url, true);
		xmlHttp.onreadystatechange = PopulateTopCategories;
		xmlHttp.send(null);*/

		var xmlHttp = createXMLHttpObj();
		var url = "./ajax/ctdetails.php";
		xmlHttp.open("GET", url, true);
		xmlHttp.onreadystatechange = function() {
			if (xmlHttp.readyState == 4) {
				setCTDdata(xmlHttp);
			}
		}
		xmlHttp.send(null);

		cat1.disabled = true;
		cat2.disabled = true;
		cat3.disabled = true;

		hideAllFields();
		changeElmnt("heading_field","block");
		changeElmnt("description_field","block");
		changeElmnt("photos_field","block");
	} else {
		cat1.disabled = false;
		cat2.disabled = false;
		cat3.disabled = false;
	}
}

function setCTDdata(xmlReq) {
	var ctdAdXMLDoc = xmlReq.responseXML.getElementsByTagName('ctd_ad');

	var ct = getAttribValue(ctdAdXMLDoc[0],'category','value');
	var ct1 = getAttribValue(ctdAdXMLDoc[0],'category1','value');
	var ct2 = getAttribValue(ctdAdXMLDoc[0],'category2','value');
	var ct3 = getAttribValue(ctdAdXMLDoc[0],'category3','value');
	var hdg = getAttribValue(ctdAdXMLDoc[0],'heading','value');
	var dsc = getAttribValue(ctdAdXMLDoc[0],'descrip','value');

	selectCategoryOption("category1", ct1);

	var xmlHttp1 = createXMLHttpObj();
	var url = "./ajax/ajax_categories.php?id=" + ct1 + "&adtyp=sol";
	xmlHttp1.open("GET", url, true);
	xmlHttp1.onreadystatechange = function () {
		if (xmlHttp1.readyState == 4) {
			PopulateSubCategories(xmlHttp1, true);
			selectCategoryOption("category2", ct2);
		}
	}
	xmlHttp1.send(null);

	if (ct3 != "") {
		var xmlHttp2 = createXMLHttpObj();
		var url = "./ajax/ajax_categories.php?id=" + ct2 + "&adtyp=sol";
		xmlHttp2.open("GET", url, true);
		xmlHttp2.onreadystatechange = function () {
			if (xmlHttp2.readyState == 4) {
				PopulateSubCategories2(xmlHttp2);
				selectCategoryOption("category3", ct3);
			}
		}
		xmlHttp2.send(null);
	}
	document.getElementById("heading").value = hdg;
	document.getElementById("description").value = dsc;
	//document.getElementById("category").value = ct;
}

function clearFileInput(elmtId, elmtName) {
	var inp = document.getElementById(elmtId);

	var inpElmt = document.createElement("input");
	inpElmt.type = "file";
	inpElmt.id = elmtId;
	inpElmt.name = elmtName;

	inp.parentNode.replaceChild(inpElmt, inp);
}

function deleteCategory(id, act)
{
  if (confirm('Are you sure you want to delete this category?'))
  {
	advertDiv = document.getElementById("postdiv");
	var categoryForm = document.createElement("Form");
	categoryForm.id = "catsForm"
	categoryForm.name = "catsForm"
	if (act == 'admin') {
		categoryForm.action = "../doadvcategory.php"
	} else {
		categoryForm.action = "doadvcategory.php"
	}
	categoryForm.method = "POST";

	var inputElement = document.createElement("input");
	inputElement.type = "hidden";
	inputElement.id = "id";
	inputElement.name = "id";
	categoryForm.appendChild(inputElement);

	var inputElement = document.createElement("input");
	inputElement.type = "hidden";
	inputElement.id = "advert_type";
	inputElement.name = "advert_type";
	categoryForm.appendChild(inputElement);

	var inputElement = document.createElement("input");
	inputElement.type = "hidden";
	inputElement.id = "mode";
	inputElement.name = "mode";
	categoryForm.appendChild(inputElement);

	var inputElement = document.createElement("input");
	inputElement.type = "hidden";
	inputElement.id = "category";
	inputElement.name = "category";
	categoryForm.appendChild(inputElement);

	var inputElement = document.createElement("input");
	inputElement.type = "hidden";
	inputElement.id = "extracats";
	inputElement.name = "extracats";
	categoryForm.appendChild(inputElement);

	if (act == 'admin') {
		var inputElement = document.createElement("input");
		inputElement.type = "hidden";
		inputElement.id = "adm_update";
		inputElement.name = "adm_update";
		categoryForm.appendChild(inputElement);
	}

	advertDiv.appendChild(categoryForm);

	document.forms["catsForm"].category.value = id;
	document.forms["catsForm"].mode.value = "del";
	document.forms["catsForm"].id.value = document.forms["myForm"].id.value;
	document.forms["catsForm"].advert_type.value = document.forms["myForm"].advert_type.value;
	document.forms["catsForm"].extracats.value = document.forms["myForm"].extracats.value;
	if (act == 'admin') {
		document.forms["catsForm"].adm_update.value = 1;
	}
	document.forms["catsForm"].submit();
  }
}

function delBnrPlacement(id, ctxt, spec, pos) {
	if (ctxt != "") {
		delItem = "banner placement";
	} else {
		delItem = "banner entirely";
	}
	if (confirm('Are you sure you want to delete this '+delItem+'?'))
	{
		var ids = new Array();
		var vals = new Array();
		ids[0] = "bnrid"; vals[0] = id;
		ids[1] = "mode"; vals[1] = "del";
		ids[2] = "bnr_context"; vals[2] = ctxt;
		ids[3] = "specific"; vals[3] = spec;
		ids[4] = "bnr_position"; vals[4] = pos;
		ids[5] = "update_placement"; vals[5] = 1;
		doDynamicForm("dobanner.php", "POST", "", ids, vals);
	}
}

function doDynamicForm(actn, meth, trgt, elmts, values) {
	var fdiv = document.getElementById("postdiv");
	var dynForm = document.createElement("Form");
	dynForm.id = "dhtmlForm"
	dynForm.name = "dhtmlForm"
	dynForm.action = actn;
	dynForm.method = meth;
	dynForm.target = trgt != "" ? trgt : "";

	for (i=0; i<elmts.length; i++) {
		var inputElement = document.createElement("input");
		inputElement.type = "hidden";
		inputElement.id = elmts[i];
		inputElement.name = elmts[i];
		inputElement.value = values[i];
		dynForm.appendChild(inputElement);
	}

	fdiv.appendChild(dynForm);
	document.forms["dhtmlForm"].submit();
}

function NF_findObj(n, d) {
  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=NF_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function NF_validateForm() {
	var i,p,q,nm,test,num,min,max,errors='',args=NF_validateForm.arguments;
	for (i=0; i<(args.length-2); i+=3) {
		test=args[i+2];
		val=NF_findObj(args[i]);
		if (val && !val.disabled) {
			nm=val.name;
			if (args[i]=='loctn') {
				nm = 'location';
				args[i]='location';
			}
			inputfield = document.getElementById(args[i]+'_field');
			if (inputfield) {
				if (inputfield.style.display == 'none') continue;
			}
			if (args[i]=='category1') nm = 'Top category';
			if (args[i]=='category2') nm = 'First sub-category';
			if (args[i]=='category3') {
				var ct2 = document.getElementById('category2').value;
				var ct3options = document.getElementById('category3').length;
				if ((ct2 != "") && (ct3options == 1)) {
					continue;
				} else {
					nm = 'Second sub-category';
				}
			}
			if (args[i]=='description') nm = 'Description';
			if (args[i]=='csvfile') nm = 'CSV file';
			if (args[i]=='pswd') nm = 'Password';
			if (args[i]=='regtype') nm = 'Account type';
			if (args[i]=='otherfarmertype') nm = 'Other farmer type';
			if (args[i]=='user_code') nm = 'verification';
			if (args[i]=='stl_title') nm = 'Multi Ad title';
			if (args[i]=='yearfrom_entry') nm='Year From';
			if (args[i]=='yearto_entry') nm='Year To';
			if (args[i]=='mtp_adtype_select') nm='Package type';
			if (args[i]=='advert_duration_select') nm = 'Duration';
			if (args[i]=='bannerimg') nm='Banner photo';
			if (args[i]=='bnr_context') nm='Placement';
			if (args[i]=='bnr_position') nm='Position';
			if ((val=val.value)!="") {
				if (test.indexOf('isEmail')!=-1) {
					p=val.indexOf('@');
					if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
				} else if (test!='R') {
					num = parseFloat(val);
					if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
					if (test.indexOf('inRange') != -1) {
						p=test.indexOf(':');
						min=test.substring(8,p);
						max=test.substring(p+1);
						if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
					}
				}
			} else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n';
		}
	}
	if (errors) alert('The following error(s) occurred:\n'+errors);
	document.NF_returnValue = (errors == '');
}

function getNodeValue(obj,tag)
{
	return obj.getElementsByTagName(tag)[0].firstChild.nodeValue;
}

function getAttribValue(obj,tag,atrb)
{
	return obj.getElementsByTagName(tag)[0].getAttribute(atrb);
}

function categoryChange(slct, ctgryid, ct_elmnt, adtyp) {
	if (slct <= 2) {
		var xmlHttp = createXMLHttpObj();
		var url = "/ajax/ajax_categories.php?id=" + ctgryid;
		if (adtyp) {
			url += "&adtyp=" + adtyp;
		}

		xmlHttp.open("GET", url, true);
		if (slct == 1) {
			xmlHttp.onreadystatechange = function () {
				if (xmlHttp.readyState == 4) {
					var skipct3 = (document.getElementById('category3')?false:true);
					PopulateSubCategories(xmlHttp, skipct3);
				}
			}
		} else if (slct == 2) {
			xmlHttp.onreadystatechange = function () {
				if (xmlHttp.readyState == 4) {
					PopulateSubCategories2(xmlHttp);
				}
			}
		}
		xmlHttp.send(null);
	}

	if (ct_elmnt) {
		document.getElementById(ct_elmnt).value = ctgryid;
	}
	window.focus();
}

function PopulateSubCategories(xmlReq, skipCat3)
{
	var catsList = xmlReq.responseXML.getElementsByTagName('category');

	// Populate level 2 sub categories
	document.forms['myForm'].category2.options.length = 0;
	document.forms['myForm'].category2.options[0] = new Option("Select sub category","");
	for(i=0;i<catsList.length;i++)
	{
		document.forms['myForm'].category2.options[i+1] = 
		new Option(catsList.item(i).getAttribute("description"),catsList.item(i).getAttribute("id"));
	}

	//Empty level 3 sub categories (prechecked as category_move form has no category3)
	if (!skipCat3) {
		document.forms['myForm'].category3.options.length = 0;
	}
}

function PopulateSubCategories2(xmlReq)
{
	var catsList = xmlReq.responseXML.getElementsByTagName('category');

	document.forms['myForm'].category3.options.length = 0;
	document.forms['myForm'].category3.options[0] = new Option("Select sub category","");
	for(i=0;i<catsList.length;i++)
	{
		document.forms['myForm'].category3.options[i+1] = 
		new Option(catsList.item(i).getAttribute("description"),catsList.item(i).getAttribute("id"));
	}
}

function selectCategoryOption(selectId, selectVal) {
	var slct = document.getElementById(selectId);
	var ops = slct.options.length;
	for(i=0;i<ops;i++) {
		if (slct.options[i].value == selectVal) {
			slct.selectedIndex = i;
			break;
		}
	}
}

function doSelect(hlink) {
	var chkboxes = document.getElementsByName('checklist[]');
	var n = chkboxes.length;

	if (hlink.innerHTML == 'All') {
		hlink.innerHTML = 'None';
		chk_state = true;
	} else if (hlink.innerHTML == 'None') {
		chk_state = false;
		hlink.innerHTML = 'All';
	}

	for (i=0;i<n;i++) {
		chkboxes[i].checked = chk_state;
	}
}

function doMoreActions(act_slct) {
	var act = act_slct.options[act_slct.selectedIndex].value;
	var ntt = act_slct.form['listing'].value;
	if (act != '') {
		var item_selected = false;
		var chkboxes = document.getElementsByName('checklist[]');
		var n = chkboxes.length;
		for (i=0;i<n;i++) {
			if (chkboxes[i].checked) {
				item_selected = true;
				break;
			}
		}
		if (item_selected) {
			if ((act == 'del') || (act == 'plc')) {
				if (act == 'del') msg = 'Are you sure you want to delete the selected items?'
				if (act == 'plc') msg = 'The selected items will now be actived. Proceed?'
				if (confirm(msg))
				{
					act_slct.form.submit();
				} else {
					act_slct.selectedIndex = 0;
					window.focus();
				}
			} else {
				act_slct.form.submit();
			}
		} else {
			alert('Select at least one '+ntt);
			act_slct.selectedIndex = 0;
			window.focus();
		}
	}
}

function toggleBuy(id, buy, adtyp)
{
	if (document.getElementById('ordertotal')) {
		var xmlHttp = createXMLHttpObj();
		var url = "ajax/dobuytoggle.php?id=" + id + "&buy=" + (buy?1:0);
		xmlHttp.open("GET", url, true);
		xmlHttp.onreadystatechange = function() {
			if (xmlHttp.readyState == 4) {
				/* Deactivate order price update handling
				updateOrderTotal(xmlHttp);
				*/
			}
		}
		xmlHttp.send(null);

		var e_order = document.getElementById(adtyp+'order');
		var e_orders = document.getElementById(adtyp+'orders');
		var cur_orders = parseInt(e_orders.innerHTML);
		if (buy) {
			if (cur_orders == 0) e_order.style.display = 'inline';
			cur_orders++;
			e_orders.innerHTML = cur_orders;
		} else {
			cur_orders--;
			if (cur_orders == 0) e_order.style.display = 'none';
			e_orders.innerHTML = cur_orders;
		}
	}
	window.focus();
}

function updateOrderTotal(req) {
	var response = req.responseText;
	if (response != '') {
		document.getElementById('ordertotalval').innerHTML = "£" + currencyformat(response);
		var vatval = (response*1.175)+'';
		document.getElementById('ordertotalvat').innerHTML = "£" + currencyformat(vatval);
	}
}

function showMap() {
	var pctxt = document.getElementById('postcode').innerHTML;
	var ids = new Array();
	var vals = new Array();
	ids[0] = "q"; vals[0] = pctxt;
	ids[1] = "hl"; vals[1] = "en";
	doDynamicForm("http://maps.google.co.uk/maps", "GET", "_blank", ids, vals);
}

function refreshCaptcha() {
	var cpImg = document.getElementById("captcha");
	var url = cpImg.src;
	cpImg.src = url + '?' + Math.random();
	document.getElementById("captcha_refresh").blur();
}

function addtofavourites(id) {
	var xmlHttp = createXMLHttpObj();
	var url = "./ajax/dofavourites.php?act=add&itemid=" + id;
	xmlHttp.open("GET", url, true);
	xmlHttp.onreadystatechange = function() {
		favouritesAmemnded(xmlHttp);
	}
	xmlHttp.send(null);
}

function favouritesAmemnded(req) {
	if (req.readyState == 4) {
		var response = req.responseText;
		if (response == 1) {
			var btn = document.getElementById("favsbtn");
			btn.value = "In my favourites";
			btn.disabled = true;
			btn.blur();
		}
	}
}
//====================================================================
function checkNum(data) {      // checks if all characters
	var valid = "0123456789."; // are valid numbers or a "."
	var ok = 1; var checktemp;
	for (var i=0; i<data.length; i++) {
		checktemp = "" + data.substring(i, i+1);
		if (valid.indexOf(checktemp) == "-1") return 0;
	}
	return 1;
}

function currencyformat(Num) {
	Num = "" + (Math.round(Num*100)/100);
	dec = Num.indexOf(".");
	end = ((dec > -1) ? "" + Num.substring(dec,Num.length) : ".00");
	Num = "" + parseInt(Num);

	var temp1 = "";
	var temp2 = "";

	if (checkNum(Num) == 0) {
		return null;
	} else {
		if (end.length == 2) end += "0";
		if (end.length == 1) end += "00";
		if (end == "") end += ".00";

		var count = 0;
		for (var k = Num.length-1; k >= 0; k--) {
			var oneChar = Num.charAt(k);
			if (count == 3) {
				temp1 += ",";
				temp1 += oneChar;
				count = 1;
				continue;
			} else {
				temp1 += oneChar;
				count ++;
			}
		}
		for (var k = temp1.length-1; k >= 0; k--) {
			var oneChar = temp1.charAt(k);
			temp2 += oneChar;
		}
		//temp2 = "£" + temp2 + end;
		//eval("document." + form + "." + field + ".value = '" + temp2 + "';");
		temp2 += end;
		return temp2;
	}
}

function pad(number,length) {
    var str = '' + number;
    while (str.length < length)
        str = '0' + str;
    return str;
}
//==================================================================

function positionInfo(object) {

  var p_elm = object;

  this.getElementLeft = getElementLeft;
  function getElementLeft() {
    var x = 0;
    var elm;
    if(typeof(p_elm) == "object"){
      elm = p_elm;
    } else {
      elm = document.getElementById(p_elm);
    }
    while (elm != null) {
      x+= elm.offsetLeft;
      elm = elm.offsetParent;
    }
	//UA 23-01-2007 To offset element position a little in IE6
	x += (navigator.appName == "Microsoft Internet Explorer") ? 3 : 0;
    return parseInt(x);
  }

  this.getElementWidth = getElementWidth;
  function getElementWidth(){
    var elm;
    if(typeof(p_elm) == "object"){
      elm = p_elm;
    } else {
      elm = document.getElementById(p_elm);
    }
    return parseInt(elm.offsetWidth);
  }

  this.getElementRight = getElementRight;
  function getElementRight(){
    return getElementLeft(p_elm) + getElementWidth(p_elm);
  }

  this.getElementTop = getElementTop;
  function getElementTop() {
    var y = 0;
    var elm;
    if(typeof(p_elm) == "object"){
      elm = p_elm;
    } else {
      elm = document.getElementById(p_elm);
    }
    while (elm != null) {
      y+= elm.offsetTop;
      elm = elm.offsetParent;
    }
    return parseInt(y);
  }

  this.getElementHeight = getElementHeight;
  function getElementHeight(){
    var elm;
    if(typeof(p_elm) == "object"){
      elm = p_elm;
    } else {
      elm = document.getElementById(p_elm);
    }
    return parseInt(elm.offsetHeight);
  }

  this.getElementBottom = getElementBottom;
  function getElementBottom(){
    return getElementTop(p_elm) + getElementHeight(p_elm);
  }
}
