			var DHTML = false, DOM = false, MSIE4 = false, NS4 = false, OP = false;

			if (document.getElementById) {
				DHTML = true;
				DOM = true;
			} else {
				if (document.all) {
					DHTML = true;
					MSIE4 = true;
				} else {
					if (document.layers) {
						DHTML = true;
						NS4 = true;
					}
				}
			}
			if (window.opera) {
				OP = true;
			}

			function getElement (Mode, Identifier, ElementNumber) {
				var Element;
				if (DOM) {
					if (Mode.toLowerCase() == "id") {
						if (typeof document.getElementById(Identifier) == "object") {
							Element = document.getElementById(Identifier);
						} else {
							Element = false;
						}
						return Element;
					}
					if (Mode.toLowerCase() == "name") {
						var ElementList = document.getElementsByName(Identifier);
						if (typeof ElementList == "object" || (OP && typeof ElementList == "function")) {
							Element = ElementList[ElementNumber];
						} else {
							Element = false;
						}
						return Element;
					}
					if (Mode.toLowerCase() == "tagname") {
						var ElementList = document.getElementsByTagName(Identifier);
						if (typeof ElementList == "object" || (OP && typeof ElementList == "function")) {
							Element = ElementList[ElementNumber];
						} else {
							Element = false;
						}
						return Element;
					}
					return null;
				}
				if (MSIE4) {
					if (Mode.toLowerCase() == "id") {
						if (typeof document.all[Identifier] == "object") {
							Element = document.all[Identifier];
						} else {
							Element = false;
						}
						return Element;
					}
					if (Mode.toLowerCase() == "tagname") {
						if (typeof document.all.tags(Identifier) == "object") {
							Element = document.all.tags(Identifier)[ElementNumber];
						} else {
							Element = false;
						}
						return Element;
					}
					if (Mode.toLowerCase() == "name") {
						if (typeof document[Identifier] == "object") {
							Element = document[Identifier];
						} else {
							Element = false;
						}
						return Element;
					}
					return false;
				}
				if (NS4) {
					if (Mode.toLowerCase() == "id" || Mode.toLowerCase() == "name") {
						if (typeof document[Identifier] == "object") {
							Element = document[Identifier];
						} else {
							Element = false;
						}
						return Element;
					}
					if (Mode.toLowerCase() == "index") {
						if (typeof document.layers[Identifier] == "object") {
							Element = document.layers[Identifier];
						} else {
							Element = false;
						}
						return Element;
					}
					return false;
				}
				return false;
			}

			function getContent (Mode, Identifier, ElementNumber) {
				var Content;
				var Element = getElement(Mode, Identifier, ElementNumber);

				if (!Element) {
					return false;
				}

				if (DOM && Element.firstChild) {
					if (Element.firstChild.nodeType == 3) {
						Content = Element.firstChild.nodeValue;
					} else {
						Content = "";
					}
					return Content;
				}

				if (MSIE4) {
					Content = Element.innerText;
					return Content;
				}

				return false;
			}

			function getAttribute (Mode, Identifier, ElementNumber, AttributeName) {
				var Attribute;
				var Element = getElement(Mode, Identifier, ElementNumber);
				if (!Element) {
					return false;
				}

				if (DOM || MSIE4) {
					Attribute = Element.getAttribute(AttributeName);
					return Attribute;
				}

				if (NS4) {
					if (typeof Element[ElementNumber] == "object") {
						Attribute = Element[ElementNumber][AttributeName];
					} else {
						Attribute = Element[AttributeName]
					}
					return Attribute;
				}
				return false;
			}

			function setContent (Mode, Identifier, ElementNumber, Text) {
				var Element = getElement(Mode, Identifier, ElementNumber);
				if (!Element) {
					return false;
				}

				if (DOM && Element.firstChild) {
					Element.firstChild.nodeValue = Text;
					return true;
				}

				if (MSIE4) {
					Element.innerText = Text;
					return true;
				}

				if (NS4) {
					Element.document.open();
					Element.document.write(Text);
					Element.document.close();
					return true;
				} 
			}
			
			var bikky = document.cookie;

			function getCookie(name) { // use: getCookie("name");
				bikky = document.cookie;
				var index = bikky.indexOf(name + "=");
				if (index == -1) { return null; }
				index = bikky.indexOf("=", index) + 1;
				var endstr = bikky.indexOf(";", index);
				if (endstr == -1) { endstr = bikky.length; }
				return unescape(bikky.substring(index, endstr));
			}

			var today = new Date();
			var expiry = new Date(today.getTime() + 36500 * 24 * 60 * 60 * 1000); // plus 100 years

			


			function getSearchCriteria() {
				if (getQueryString("OID") == "")
				{
					if (getQueryString("email") != "")
					{
						// load property alert
						propertyAlert();
					}

					document.writeln("SEARCH CRITERIA: ");
			
					if (getQueryString("Sub") != "") {
						document.write(getQueryString("Sub"));
						document.write("; ");
					}

					if (getQueryString("Reg") != "") {
						document.write(getQueryStringConcat("Reg"));
						document.write("; ");
					}


					if (getQueryString("PT") != "") {
						document.write(getQueryStringConcat("PT"));
						document.write("; ");
					}


					if ((getQueryString("PrL") != "") && (getQueryString("PrL") != "0")) {
						document.write(getPrice(getQueryString("PrL")));
					}
					
					if ((getQueryString("PrL") != "") && (getQueryString("PrL") != "0") && (getQueryString("PrH") != "") && (getQueryString("PrH") != "99999")) {
						document.write(" - ");
					}

					if ((getQueryString("PrH") != "") && (getQueryString("PrH") != "99999")) {
						document.write(getPrice(getQueryString("PrH")));
					}
					
					if (((getQueryString("PrL") != "") && (getQueryString("PrL") != "0")) || ((getQueryString("PrH") != "") && (getQueryString("PrH") != "99999"))) {
						document.write("; ");
					}

					if ((getQueryString("BeL") != "") && (getQueryString("BeL") != "0")) {
						document.write(getQueryString("BeL"));
					}

					if ((getQueryString("BeL") != "") && (getQueryString("BeL") != "0") && (getQueryString("BeH") != "") && (getQueryString("BeH") != "9999")) {
						document.write(" - ");
					}
					
					if ((getQueryString("BeH") != "") && (getQueryString("BeH") != "9999"))
					{
						document.write(getQueryString("BeH"));
					}
					
					if (((getQueryString("BeL") != "") && (getQueryString("BeL") != "0")) || ((getQueryString("BeH") != "") && (getQueryString("BeH") != "9999"))) {
						document.write(" bedrooms; ");
					}

					document.write("Sort Order: " + getSorderOrder(getQueryString("Order")));
				}
			}
						
			function getSorderOrder(sOrderBy) {
				switch (sOrderBy)
				{
					case "listed":
						return "Most Recent";
					case "suburb":
						return "Suburb";
					case "beds":
						return "Bedrooms";
					case "updated":
						return "Last Updated";
					case "price":
						return "Price";
					case "rent":
						return "Rent";
					default:
						return "";
				}
			}

			function getQueryString(sParam) {
				var sQueryString = location.search.substring(1, location.search.length);
				var aQueryString = sQueryString.split('&');

				for ( var x = 0 ; x < aQueryString.length ; x++ ) {
					var aParams = aQueryString[x].split('=');
					if (sParam == aParams[0]) {
						if (aParams[1] != "")
						{
							return unescape(replace(aParams[1], "+", " "));
						}
					}
				}

				return "";
			}
			
			function getPrice(sPrice) {
				if (sPrice.length == 3) {
					if (getQueryString("Con")=="S"){
						return "$" + sPrice + ",000";
					}
					else {
						return "$" + sPrice;
					}
				}

				if (sPrice.length == 4) {
					if (getQueryString("Con")=="S"){
						return "$" + sPrice.substring(0, 1) + "," + sPrice.substring(1, 4) + ",000";
					}
					else {
						return "$" + sPrice;
					}
				}
			}

			function getPropertyType(sPropertyType) {

				switch (sPropertyType)
				{
					case "hou":
						return "House";
					case "uni":
						return "Unit/Apartment";
					case "stu":
						return "Studio";
					case "tow":
						return "Townhouse";
					case "lan":
						return "Vacant Land (Res)";
					case "dev":
						return "Development Site (Res)";
					case "inv":
						return "Investment (Res)";	
					case "ter":
						return "Terrace";
					case "vil":
						return "Villa";
					case "sem":
						return "Semi";
					case "dup":
						return "Duplex";
					case "pen":
						return "Penthouse";
					case "hol":
						return "Holiday";
					case "cwg":
						return "Commonwealth Games Rental";
					case "bnb":
						return "Bed & Breakfast";
					case "rta":
						return "Retirement Accommodation";
					case "alp":
						return "Alpine";
					case "wac":
						return "Warehouse Conversion";
					case "car":
						return "Car Space (Res)";
					case "bof":
						return "Block of Flats";
					case "bho":
						return "Boat House";
					case "bus":
						return "Business";
					case "caf":
						return "Cafe";
					case "cli":
						return "Clinic";
					case "com":
						return "Commercial";
					case "dvc":
						return "Development Site";
					case "fac":
						return "Factory";
					case "gue":
						return "Guest House";
					case "hot":
						return "Hotel";
					case "ind":
						return "Industrial";
					case "lac":
						return "Vacant Land";
					case "lei":
						return "Leisure";
					case "lic":
						return "Licensed Premises";
					case "mot":
						return "Motel";
					case "off":
						return "Office(s)";
					case "rec":
						return "Reception Centre";
					case "rso":
						return "Resort";
					case "res":
						return "Restaurant";
					case "ret":
						return "Retail";
					case "rti":
						return "Retirement Village";
					case "sap":
						return "Serviced Apartments/Offices";
					case "sho":
						return "Shop(s)";
					case "sct":
						return "Shopping Centre";
					case "shw":
						return "Showroom";
					case "tou":
						return "Tourism";
					case "war":
						return "Warehouse";
					case "inc":
						return "Investment";
					case "cac":
						return "Car Space (Commercial)";
					default:
						return "";
				}

				return "";
			}

			function getQueryStringConcat(sParam) {

				var aConcat = new Array();
				var sQueryString = location.search;
				var aQueryString = sQueryString.split('&');

				for ( var x = 0 ; x < aQueryString.length ; x++ ) {
					var aParams = aQueryString[x].split('=');
					if (sParam == aParams[0]) {
						if (aParams[1] != "") {
							if (sParam == "PT") {
								aConcat.push(replace(getPropertyType(aParams[1]), "+", " "));
							}
							else {
								aConcat.push(replace(aParams[1], "+", " "));
							}
						}
					}
				}

				var sOutput = aConcat.join(', ');
				//return sOutput.substring(0, sOutput.length);
				return aConcat.join(', ');
			}

			function replace(s, t, u) {
				i = s.indexOf(t);
				r = "";
				if (i == -1) { 
					return s;
				}

				r += s.substring(0,i) + u;
				if ( i + t.length < s.length)
				r += replace(s.substring(i + t.length, s.length), t, u);
				return unescape(r);
			}

			function pagingBottom(intNumRecords) {
					var intPageSize = getQueryString("BS");
					if (intPageSize == "")
					{
						intPageSize = 10;
					}
					var intNumPages = Math.ceil(intNumRecords/intPageSize);
					var intCurPage = parseInt(document.NextForm.p.value);
					var objPager = document.getElementById('pagerBottom');
					var objLastNode = document.getElementById('pagerLastBottom');
					var intStartPage;
					var intLastPage;

				
					if (intCurPage > 10) {
						intStartPage = 11;
						intLastPage = intNumPages;
				
						
						document.getElementById('lnkLastBottom').style.display = 'none';
						document.getElementById('lnkFirstBottom').style.display = '';

					}
					else {
						intStartPage = 1;
						if (intNumPages < 10) {
							document.getElementById('lnkLastBottom').style.display = 'none';
							intLastPage = intNumPages;
						}
						else {
							document.getElementById('lnkLastBottom').style.display = '';
							intLastPage = 10;
						}

						document.getElementById('lnkFirstBottom').style.display = 'none';
					}

					for (var x = intStartPage; x <= intLastPage; x++ ) {
						var objNewNode = document.createElement("td");
						var objLink = document.createElement("a");
						var objText = document.createTextNode(x);

						if (intCurPage == x) {
							objNewNode.className = "pagerSelected";
						}
						else {
							objNewNode.className = "pagerNumber";
						}

						objLink.href = 'javascript:gotoPage(' + x + ')';
						objLink.nodeValue = x;
						objLink.appendChild(objText);
						objNewNode.appendChild(objLink);
						
						objPager.insertBefore(objNewNode, objLastNode);


					}
			}
			
			function paging() {
					var intPageSize = getQueryString("BS");
					if (intPageSize == "")
					{
						intPageSize = 10;
					}
					var intNumPages = Math.ceil(intNumRecords/intPageSize);
					var intCurPage = parseInt(document.NextForm.p.value);
					var objPager = document.getElementById('pager');
					var objLastNode = document.getElementById('pagerLast');
					var intStartPage;
					var intLastPage;

				
					if (intCurPage > 10) {
						intStartPage = 11;
						intLastPage = intNumPages;
				
						
						document.getElementById('lnkLast').style.display = 'none';
						document.getElementById('lnkFirst').style.display = '';

					}
					else {
						intStartPage = 1;
						if (intNumPages < 10) {
							document.getElementById('lnkLast').style.display = 'none';
							intLastPage = intNumPages;
						}
						else {
							document.getElementById('lnkLast').style.display = '';
							intLastPage = 10;
						}

						document.getElementById('lnkFirst').style.display = 'none';
					}

					for (var x = intStartPage; x <= intLastPage; x++ ) {
						var objNewNode = document.createElement("td");
						var objLink = document.createElement("a");
						var objText = document.createTextNode(x);

						if (intCurPage == x) {
							objNewNode.className = "pagerSelected";
						}
						else {
							objNewNode.className = "pagerNumber";
						}

						objLink.href = 'javascript:gotoPage(' + x + ')';
						objLink.nodeValue = x;
						objLink.appendChild(objText);
						objNewNode.appendChild(objLink);
						
						objPager.insertBefore(objNewNode, objLastNode);


					}
			}
			
			
			function pagingBottom() {
					var intPageSize = getQueryString("BS");
					if (intPageSize == "")
					{
						intPageSize = 10;
					}
					var intNumPages = Math.ceil(intNumRecords/intPageSize);
					var intCurPage = parseInt(document.NextForm.p.value);
					var objPager = document.getElementById('pagerBottom');
					var objLastNode = document.getElementById('pagerLastBottom');
					var intStartPage;
					var intLastPage;

				
					if (intCurPage > 10) {
						intStartPage = 11;
						intLastPage = intNumPages;
				
						
						document.getElementById('lnkLastBottom').style.display = 'none';
						document.getElementById('lnkFirstBottom').style.display = '';

					}
					else {
						intStartPage = 1;
						if (intNumPages < 10) {
							document.getElementById('lnkLastBottom').style.display = 'none';
							intLastPage = intNumPages;
						}
						else {
							document.getElementById('lnkLastBottom').style.display = '';
							intLastPage = 10;
						}

						document.getElementById('lnkFirstBottom').style.display = 'none';
					}

					for (var x = intStartPage; x <= intLastPage; x++ ) {
						var objNewNode = document.createElement("td");
						var objLink = document.createElement("a");
						var objText = document.createTextNode(x);

						if (intCurPage == x) {
							objNewNode.className = "pagerSelected";
						}
						else {
							objNewNode.className = "pagerNumber";
						}

						objLink.href = 'javascript:gotoPage(' + x + ')';
						objLink.nodeValue = x;
						objLink.appendChild(objText);
						objNewNode.appendChild(objLink);
						
						objPager.insertBefore(objNewNode, objLastNode);


					}
			}
			
			function sort(obj) {
				document.NextForm.Order.value = obj.options[obj.options.selectedIndex].value;
				document.NextForm.submit();
			}
			
			function gotoPage(numPage) {
				document.NextForm.p.value = numPage;
				document.NextForm.submit();
			}
			
			function moveFirst() {
				document.NextForm.p.value = 10;
				document.NextForm.submit();	
			}

			function moveLast() {
				document.NextForm.p.value = 11;
				document.NextForm.submit();		
			}

			function movePage(numPage) {
				document.NextForm.p.value = parseInt(document.NextForm.p.value)+(numPage);
				document.NextForm.submit();
			}

			function propertyAlert() {
				window.open('pa_popup.pl?s=' + document.NextForm.s.value + '&rev=&GID=2&tp=2pa&Email=' + getQueryString("email"), 'ConsolePA', 'resizable=1,scrollbars=0,width=356,height=405');
			}

			function sendToFriend(sLink, sTemplate) {
				window.open(sLink + '&tp=' + sTemplate, 'ConsoleEmail', 'resizable=1,scrollbars=0,width=356,height=457');
			}

			function getShortlist(sType, sTemplate) {
				var contents = getCookie('BookmarkCookieRev'); 
				if (contents.length == 0){
					contents = 'null,';
				}

				contents = contents.slice(0, -1); 
				
				window.location = '/cgi-bin/results.pl?OID=' + contents + '&tp=' + sTemplate + '&Con=' + sType + '&GID=2&GID=5&CID=0';
			}

			function setCookie(name, value, action, obj) { // use: setCookie("name", value, action);
			
				if (value != null && value != "") {

					//box = eval("document.ResultsForm.Shortlist" + value);

					var contents = getCookie(name) || "";
					//check if value in contents
					var each_cookie = contents.split(",");
					var inCookie = false;

					for (i = 0; i < each_cookie.length; i++){
						if (each_cookie[i]==value) {

							//if (box.checked == true)
							if (action == "createOrReplace") {
								//remove from cookie
								contents = contents.replace(each_cookie[i] + ",", "");
								document.cookie=name + "=" + escape(contents) + "; expires=" + expiry.toGMTString();
								bikky = document.cookie; // update bikky
					
								
								obj.childNodes[0].nodeValue = 'Add To Shortlist';

								//document.getElementById('saveOrRemove' + value).innerHTML="<img src='/images/results_saveprop.gif'>";

							}
							else if (action == "check") {
								//document.getElementById('saveOrRemove' + value).innerHTML="<img src='/images/results_removeprop.gif'>";
								obj.childNodes[0].nodeValue = 'Remove';

							}
								i=each_cookie.length;
								inCookie = true;
						}
					}

					if ((inCookie == false) && (action == "createOrReplace")) {
						//add to cookie
						contents = value + "," + contents;
						document.cookie=name + "=" + escape(contents) + "; expires=" + expiry.toGMTString();
						bikky = document.cookie; // update bikky

						//document.getElementById('saveOrRemove' + value).innerHTML="<img src='/images/results_removeprop.gif'>";
						obj.childNodes.item(0).nodeValue = 'Remove';
					}

					if (inCookie == false && action == "check") {
						//document.getElementById('saveOrRemove' + value).innerHTML="<img src='/images/results_saveprop.gif'>";
						obj.childNodes.item(0).nodeValue = 'Add To Shortlist';
					}
				}
			}

			function addToShortlist(OID, obj) {
				setCookie('BookmarkCookieRev', OID, 'createOrReplace', obj);
			}

			function GetSaleText(sToSplit, intElementToReturn) {
				var aSaleInfo = new Array();

				if (sToSplit.indexOf("|") != -1) {
					aSaleInfo = sToSplit.split("|");
					
					//if (aSaleInfo.length > (intElementToReturn+1)) {
						document.write(aSaleInfo[intElementToReturn]);
						return;
					//}
				}

				document.write(sToSplit);
			}

			function stripblank(str) {
			var s = str
				if (s != null) {
					while (s.length>0 && s.charAt(0)==" ") {
						s = s.substring(1,s.length)
					}
					while (s.length>0 && s.charAt(s.length-1)==" ") {
						s = s.substring(0,s.length-1)
					}
				}
				return s
			}

			function fm_validate(fm) {
				fm.Email.value = stripblank(fm.Email.value)
				if (fm.Email.value.length < 6) {
					alert("Please enter your Email address in the field provided.");
					fm.Email.focus();
					return false;
				}
				if (fm.Email.value.indexOf("@")==-1 || fm.Email.value.indexOf(".")==-1
						|| fm.Email.value.indexOf(",")>=0 || fm.Email.value.indexOf(" ")>=0 ) {
					fm.Email.focus()
					fm.Email.select()
					alert("You have entered an incorrect Email address. Please re-type.")
					return false
				}
				return true;
			}
			
			function StripToLet(sInput) {
				if (sInput.length > 0) {
					if (sInput.indexOf("To Let") != -1) {
						document.write(sInput.substring(7, sInput.length));
						return;
					}
				}
				
				document.write( sInput );
			}
			
			function StripAuction(sInput, intLength) {
				if (sInput.indexOf("Auction") == 0) {
					var sOut = sInput.substring(sInput.indexOf("Auction")+intLength, sInput.length);

					document.writeln(SetDate(sOut));
					return;
				}
				
				document.writeln(sInput);
			}
			
			function ChangeAuction(sInput) {
				if (sInput.indexOf("Auction") == 0) {
					var sOut = sInput.substring(0, 7) + "<br/>";
					var sDateTime = sInput.substring(8, sInput.length);
					
					var aDateTime = sDateTime.split(',');
					var aDate = aDateTime[1].split(' ');
					
					sDateTime = aDate[1] + " " + aDate[3] + " " + aDate[2] + "<br/>" + aDateTime[0];
					
					sOut = sOut + sDateTime;
					
					document.writeln(sOut);
					return;
				}
				
				document.writeln(sInput);
			}
				
			function SetDate(sInput) {
				if (sInput.indexOf("/") != -1) {
					var objDate = getDateFromFormat(sInput, "d/M/y");
				}
				else if (sInput == "NOW") {
					return "NOW";
				}
				else if (sInput == "Avail Now") {
					return "NOW";
				}
				else {
					var objDate = getDateFromFormat(sInput, "E MMM d, yyyy");
				}
				
				if (objDate == 0) {
					return sInput;
				}
				
				return formatDate(objDate, "EE d MMM");
			}
			
			function SetAuctionDate(sInput) {
				var objDate = getDateFromFormat(sInput, "MMM d, yyyy");
				document.writeln(formatDate(objDate, "EE d MMM"));	
			}
			
			function Logo() {
				document.writeln('<img src="http://esvc001261.wic012u.server-web.com/images/logo_' + getQueryString("LogoID") + '.gif"  alt="Woodards Logo"/>');
			}
			
			function appendLogo(obj) {
				obj.href += '&LogoID=' + getQueryString('LogoID');
			}
		
			// ===================================================================
			// Author: Matt Kruse <matt@mattkruse.com>
			// WWW: http://www.mattkruse.com/
			//
			// NOTICE: You may use this code for any purpose, commercial or
			// private, without any further permission from the author. You may
			// remove this notice from your final code if you wish, however it is
			// appreciated by the author if at least my web site address is kept.
			//
			// You may *NOT* re-distribute this code in any way except through its
			// use. That means, you can include it in your product, or your web
			// site, or any other form where the code is actually being used. You
			// may not put the plain javascript up on your site for download or
			// include it in your javascript libraries for download. 
			// If you wish to share this code with others, please just point them
			// to the URL instead.
			// Please DO NOT link directly to my .js files from your site. Copy
			// the files to your server and use them there. Thank you.
			// ===================================================================

			// HISTORY
			// ------------------------------------------------------------------
			// May 17, 2003: Fixed bug in parseDate() for dates <1970
			// March 11, 2003: Added parseDate() function
			// March 11, 2003: Added "NNN" formatting option. Doesn't match up
			//                 perfectly with SimpleDateFormat formats, but 
			//                 backwards-compatability was required.

			// ------------------------------------------------------------------
			// These functions use the same 'format' strings as the 
			// java.text.SimpleDateFormat class, with minor exceptions.
			// The format string consists of the following abbreviations:
			// 
			// Field        | Full Form          | Short Form
			// -------------+--------------------+-----------------------
			// Year         | yyyy (4 digits)    | yy (2 digits), y (2 or 4 digits)
			// Month        | MMM (name or abbr.)| MM (2 digits), M (1 or 2 digits)
			//              | NNN (abbr.)        |
			// Day of Month | dd (2 digits)      | d (1 or 2 digits)
			// Day of Week  | EE (name)          | E (abbr)
			// Hour (1-12)  | hh (2 digits)      | h (1 or 2 digits)
			// Hour (0-23)  | HH (2 digits)      | H (1 or 2 digits)
			// Hour (0-11)  | KK (2 digits)      | K (1 or 2 digits)
			// Hour (1-24)  | kk (2 digits)      | k (1 or 2 digits)
			// Minute       | mm (2 digits)      | m (1 or 2 digits)
			// Second       | ss (2 digits)      | s (1 or 2 digits)
			// AM/PM        | a                  |
			//
			// NOTE THE DIFFERENCE BETWEEN MM and mm! Month=MM, not mm!
			// Examples:
			//  "MMM d, y" matches: January 01, 2000
			//                      Dec 1, 1900
			//                      Nov 20, 00
			//  "M/d/yy"   matches: 01/20/00
			//                      9/2/00
			//  "MMM dd, yyyy hh:mm:ssa" matches: "January 01, 2000 12:30:45AM"
			// ------------------------------------------------------------------
			//
			// 

			var MONTH_NAMES=new Array('January','February','March','April','May','June','July','August','September','October','November','December','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
			var DAY_NAMES=new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sun','Mon','Tue','Wed','Thu','Fri','Sat');
			function LZ(x) {return(x<0||x>9?"":"0")+x}

			// ------------------------------------------------------------------
			// isDate ( date_string, format_string )
			// Returns true if date string matches format of format string and
			// is a valid date. Else returns false.
			// It is recommended that you trim whitespace around the value before
			// passing it to this function, as whitespace is NOT ignored!
			// ------------------------------------------------------------------
			function isDate(val,format) {
				var date=getDateFromFormat(val,format);
				if (date==0) { return false; }
				return true;
				}

			// -------------------------------------------------------------------
			// compareDates(date1,date1format,date2,date2format)
			//   Compare two date strings to see which is greater.
			//   Returns:
			//   1 if date1 is greater than date2
			//   0 if date2 is greater than date1 of if they are the same
			//  -1 if either of the dates is in an invalid format
			// -------------------------------------------------------------------
			function compareDates(date1,dateformat1,date2,dateformat2) {
				var d1=getDateFromFormat(date1,dateformat1);
				var d2=getDateFromFormat(date2,dateformat2);
				if (d1==0 || d2==0) {
					return -1;
					}
				else if (d1 > d2) {
					return 1;
					}
				return 0;
				}

			// ------------------------------------------------------------------
			// formatDate (date_object, format)
			// Returns a date in the output format specified.
			// The format string uses the same abbreviations as in getDateFromFormat()
			// ------------------------------------------------------------------
			function formatDate(date,format) {
				format=format+"";
				var result="";
				var i_format=0;
				var c="";
				var token="";
				var y=date.getYear()+"";
				var M=date.getMonth()+1;
				var d=date.getDate();
				var E=date.getDay();
				var H=date.getHours();
				var m=date.getMinutes();
				var s=date.getSeconds();
				var yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,H,KK,K,kk,k;
				// Convert real date parts into formatted versions
				var value=new Object();
				if (y.length < 4) {y=""+(y-0+1900);}
				value["y"]=""+y;
				value["yyyy"]=y;
				value["yy"]=y.substring(2,4);
				value["M"]=M;
				value["MM"]=LZ(M);
				value["MMM"]=MONTH_NAMES[M-1];
				value["NNN"]=MONTH_NAMES[M+11];
				value["d"]=d;
				value["dd"]=LZ(d);
				value["E"]=DAY_NAMES[E+7];
				value["EE"]=DAY_NAMES[E];
				value["H"]=H;
				value["HH"]=LZ(H);
				if (H==0){value["h"]=12;}
				else if (H>12){value["h"]=H-12;}
				else {value["h"]=H;}
				value["hh"]=LZ(value["h"]);
				if (H>11){value["K"]=H-12;} else {value["K"]=H;}
				value["k"]=H+1;
				value["KK"]=LZ(value["K"]);
				value["kk"]=LZ(value["k"]);
				if (H > 11) { value["a"]="PM"; }
				else { value["a"]="AM"; }
				value["m"]=m;
				value["mm"]=LZ(m);
				value["s"]=s;
				value["ss"]=LZ(s);
				while (i_format < format.length) {
					c=format.charAt(i_format);
					token="";
					while ((format.charAt(i_format)==c) && (i_format < format.length)) {
						token += format.charAt(i_format++);
						}
					if (value[token] != null) { result=result + value[token]; }
					else { result=result + token; }
					}
				return result;
				}
				
			// ------------------------------------------------------------------
			// Utility functions for parsing in getDateFromFormat()
			// ------------------------------------------------------------------
			function _isInteger(val) {
				var digits="1234567890";
				for (var i=0; i < val.length; i++) {
					if (digits.indexOf(val.charAt(i))==-1) { return false; }
					}
				return true;
				}
			function _getInt(str,i,minlength,maxlength) {
				for (var x=maxlength; x>=minlength; x--) {
					var token=str.substring(i,i+x);
					if (token.length < minlength) { return null; }
					if (_isInteger(token)) { return token; }
					}
				return null;
				}
				
			// ------------------------------------------------------------------
			// getDateFromFormat( date_string , format_string )
			//
			// This function takes a date string and a format string. It matches
			// If the date string matches the format string, it returns the 
			// getTime() of the date. If it does not match, it returns 0.
			// ------------------------------------------------------------------
			function getDateFromFormat(val,format) {
				val=val+"";
				format=format+"";
				var i_val=0;
				var i_format=0;
				var c="";
				var token="";
				var token2="";
				var x,y;
				var now=new Date();
				var year=now.getYear();
				var month=now.getMonth()+1;
				var date=1;
				var hh=now.getHours();
				var mm=now.getMinutes();
				var ss=now.getSeconds();
				var ampm="";
				
				while (i_format < format.length) {
					// Get next token from format string
					c=format.charAt(i_format);
					token="";
					while ((format.charAt(i_format)==c) && (i_format < format.length)) {
						token += format.charAt(i_format++);
						}
					// Extract contents of value based on format token
					if (token=="yyyy" || token=="yy" || token=="y") {
						if (token=="yyyy") { x=4;y=4; }
						if (token=="yy")   { x=2;y=2; }
						if (token=="y")    { x=2;y=4; }
						year=_getInt(val,i_val,x,y);
						if (year==null) { return 0; }
						i_val += year.length;
						if (year.length==2) {
							if (year > 70) { year=1900+(year-0); }
							else { year=2000+(year-0); }
							}
						}
					else if (token=="MMM"||token=="NNN"){
						month=0;
						for (var i=0; i<MONTH_NAMES.length; i++) {
							var month_name=MONTH_NAMES[i];
							if (val.substring(i_val,i_val+month_name.length).toLowerCase()==month_name.toLowerCase()) {
								if (token=="MMM"||(token=="NNN"&&i>11)) {
									month=i+1;
									if (month>12) { month -= 12; }
									i_val += month_name.length;
									break;
									}
								}
							}
						if ((month < 1)||(month>12)){return 0;}
						}
					else if (token=="EE"||token=="E"){
						for (var i=0; i<DAY_NAMES.length; i++) {
							var day_name=DAY_NAMES[i];
							if (val.substring(i_val,i_val+day_name.length).toLowerCase()==day_name.toLowerCase()) {
								i_val += day_name.length;
								break;
								}
							}
						}
					else if (token=="MM"||token=="M") {
						month=_getInt(val,i_val,token.length,2);
						if(month==null||(month<1)||(month>12)){return 0;}
						i_val+=month.length;}
					else if (token=="dd"||token=="d") {
						date=_getInt(val,i_val,token.length,2);
						if(date==null||(date<1)||(date>31)){return 0;}
						i_val+=date.length;}
					else if (token=="hh"||token=="h") {
						hh=_getInt(val,i_val,token.length,2);
						if(hh==null||(hh<1)||(hh>12)){return 0;}
						i_val+=hh.length;}
					else if (token=="HH"||token=="H") {
						hh=_getInt(val,i_val,token.length,2);
						if(hh==null||(hh<0)||(hh>23)){return 0;}
						i_val+=hh.length;}
					else if (token=="KK"||token=="K") {
						hh=_getInt(val,i_val,token.length,2);
						if(hh==null||(hh<0)||(hh>11)){return 0;}
						i_val+=hh.length;}
					else if (token=="kk"||token=="k") {
						hh=_getInt(val,i_val,token.length,2);
						if(hh==null||(hh<1)||(hh>24)){return 0;}
						i_val+=hh.length;hh--;}
					else if (token=="mm"||token=="m") {
						mm=_getInt(val,i_val,token.length,2);
						if(mm==null||(mm<0)||(mm>59)){return 0;}
						i_val+=mm.length;}
					else if (token=="ss"||token=="s") {
						ss=_getInt(val,i_val,token.length,2);
						if(ss==null||(ss<0)||(ss>59)){return 0;}
						i_val+=ss.length;}
					else if (token=="a") {
						if (val.substring(i_val,i_val+2).toLowerCase()=="am") {ampm="AM";}
						else if (val.substring(i_val,i_val+2).toLowerCase()=="pm") {ampm="PM";}
						else {return 0;}
						i_val+=2;}
					else {
						if (val.substring(i_val,i_val+token.length)!=token) {return 0;}
						else {i_val+=token.length;}
						}
					}
				// If there are any trailing characters left in the value, it doesn't match
				if (i_val != val.length) { return 0; }
				// Is date valid for month?
				if (month==2) {
					// Check for leap year
					if ( ( (year%4==0)&&(year%100 != 0) ) || (year%400==0) ) { // leap year
						if (date > 29){ return 0; }
						}
					else { if (date > 28) { return 0; } }
					}
				if ((month==4)||(month==6)||(month==9)||(month==11)) {
					if (date > 30) { return 0; }
					}
				// Correct hours value
				if (hh<12 && ampm=="PM") { hh=hh-0+12; }
				else if (hh>11 && ampm=="AM") { hh-=12; }
				var newdate=new Date(year,month-1,date,hh,mm,ss);
				return newdate;
				}

			// ------------------------------------------------------------------
			// parseDate( date_string [, prefer_euro_format] )
			//
			// This function takes a date string and tries to match it to a
			// number of possible date formats to get the value. It will try to
			// match against the following international formats, in this order:
			// y-M-d   MMM d, y   MMM d,y   y-MMM-d   d-MMM-y  MMM d
			// M/d/y   M-d-y      M.d.y     MMM-d     M/d      M-d
			// d/M/y   d-M-y      d.M.y     d-MMM     d/M      d-M
			// A second argument may be passed to instruct the method to search
			// for formats like d/M/y (european format) before M/d/y (American).
			// Returns a Date object or null if no patterns match.
			// ------------------------------------------------------------------
			function parseDate(val) {
				var preferEuro=(arguments.length==2)?arguments[1]:false;
				generalFormats=new Array('y-M-d','MMM d, y','MMM d,y','y-MMM-d','d-MMM-y','MMM d');
				monthFirst=new Array('M/d/y','M-d-y','M.d.y','MMM-d','M/d','M-d');
				dateFirst =new Array('d/M/y','d-M-y','d.M.y','d-MMM','d/M','d-M');
				var checkList=new Array('generalFormats',preferEuro?'dateFirst':'monthFirst',preferEuro?'monthFirst':'dateFirst');
				var d=null;
				for (var i=0; i<checkList.length; i++) {
					var l=window[checkList[i]];
					for (var j=0; j<l.length; j++) {
						d=getDateFromFormat(val,l[j]);
						if (d!=0) { return new Date(d); }
						}
					}
				return null;
			}
			
			function CheckTruncation() {
				var elements = $$('.property p');
				var links = $$('h3 a');
				for ( var x = 0 ; x < elements.length ; x++ ) {
					var p = $(elements[x]);
					var link = $(links[x]);
					var text = p.innerHTML;
					
					if (text.length != (text.lastIndexOf(".")+1)) {
						var a = document.createElement('a');
						var space = document.createTextNode('... ');
						a = $(a);
						a.href = link;
						a.style.color = "#8E6E53";
						a.update("More");
						
						p.appendChild(space);
						p.appendChild(a);	
					}
				}
			}
			
			if (typeof(Event) != "undefined") {
				Event.observe(window, 'load', CheckTruncation);
			}
