var contextPath = '/ri';
// Basic nav rollover code
function rollover (imagename, objectsrc) {
if (document.images) {
document.images[imagename].src=eval(objectsrc+".src");
}
}
// Declare rollover images for nav
navcommercial = new Image;
navcommercial_on = new Image;
navnewhomes = new Image;
navnewhomes_on = new Image;
navprofilesearch = new Image;
navprofilesearch_on = new Image;
navmapsearch = new Image;
navmapsearch_on = new Image;
navmarketreports = new Image;
navmarketreports_on = new Image;
navnews = new Image;
navnews_on = new Image;
navrealnetsolutions = new Image;
navrealnetsolutions_on = new Image;
navhelpcentre = new Image;
navhelpcentre_on = new Image;
navaboutrealnet = new Image;
navaboutrealnet_on = new Image;
navrescommercial = new Image;
navrescommercial_on = new Image;
navresnewhomes = new Image;
navresnewhomes_on = new Image;
navresquickfind = new Image;
navresquickfind_on = new Image;
navresusermanagement = new Image;
navresusermanagement_on = new Image;
navressystem = new Image;
navressystem_on = new Image;
navresclientsite = new Image;
navresclientsite_on = new Image;
//REAL-164
navcommercial.src = contextPath + "/images/nav-commercial-off.gif";
navcommercial_on.src = contextPath + "/images/nav-commercial-on.gif";
navnewhomes.src = contextPath + "/images/nav-newhomes-off.gif";
navnewhomes_on.src = contextPath + "/images/nav-newhomes-on.gif";
navprofilesearch.src = contextPath + "/images/nav-profileSearch-off.gif";
navprofilesearch_on.src = contextPath + "/images/nav-profileSearch-on.gif";
navmapsearch.src = contextPath + "/images/nav-mapSearch-off.gif";
navmapsearch_on.src = contextPath + "/images/nav-mapSearch-on.gif";
navmarketreports.src = contextPath + "/images/nav-marketReports-off.gif";
navmarketreports_on.src = contextPath + "/images/nav-marketReports-on.gif";
navnews.src = contextPath + "/images/nav-newsEvents-off.gif";
navnews_on.src = contextPath + "/images/nav-newsEvents-on.gif";
navrealnetsolutions.src = contextPath + "/images/nav-realnetSolutions-off.gif";
navrealnetsolutions_on.src = contextPath + "/images/nav-realnetSolutions-on.gif";
navhelpcentre.src = contextPath + "/images/nav-helpCentre-off.gif";
navhelpcentre_on.src = contextPath + "/images/nav-helpCentre-on.gif";
navaboutrealnet.src = contextPath + "/images/nav-aboutRealnet-off.gif";
navaboutrealnet_on.src = contextPath + "/images/nav-aboutRealnet-on.gif";
navrescommercial.src = contextPath + "/images/nav-res-createCommercial-off.gif";
navrescommercial_on.src = contextPath + "/images/nav-res-createCommercial-on.gif";
navresnewhomes.src = contextPath + "/images/nav-res-createNewHomes-off.gif";
navresnewhomes_on.src = contextPath + "/images/nav-res-createNewHomes-on.gif";
navresquickfind.src = contextPath + "/images/nav-res-quickFind-off.gif";
navresquickfind_on.src = contextPath + "/images/nav-res-quickFind-on.gif";
navresusermanagement.src = contextPath + "/images/nav-res-userManagement-off.gif";
navresusermanagement_on.src = contextPath + "/images/nav-res-userManagement-on.gif";
navressystem.src = contextPath + "/images/nav-res-systemManagement-off.gif";
navressystem_on.src = contextPath + "/images/nav-res-systemManagement-on.gif";
navresclientsite.src = contextPath + "/images/nav-res-clientSite-off.gif";
navresclientsite_on.src = contextPath + "/images/nav-res-clientSite-on.gif";
//General form gymnastic code
//Removes all options from a select box
function removeAllOptions(selectbox) {
var i;
for(i = selectbox.options.length-1; i >= 0; i--) {
selectbox.remove(i);
}
}
//Adds an option to the bottom of the list in a select box
function addOption(selectbox, value, text ) {
var optn = document.createElement("OPTION");
optn.text = text;
optn.value = value;
selectbox.options.add(optn);
}
//Write HTML into a div dynamically
function writeInnerHTML(target, content,objSwitch) {
if (objSwitch) {
target.innerHTML = content;
} else {
if (document.getElementById) {
document.getElementById(target).innerHTML = content;
} else if (document.all) {
document.all[target].innerHTML = content;
} else if (document.layers && document.layers[object]) {
document.layers[target].document.open();
document.layers[target].document.write(content);
document.layers[target].document.close();
}
}
}
//Read HTML out of a div dynamically
function readInnerHTML(target) {
var content = "";
if (document.getElementById) {
content = document.getElementById(target).innerHTML;
} else if (document.all) {
content = document.all[target].innerHTML;
}
return content;
}
//Toggle layer visibility
function toggleLayer(target, status) {
document.getElementById(target).style.display = status;
}
//Format any number with commas (ie. 1000 to 1,000)
//Decimals are chopped off and then appended at the end
function formatWithCommas(number) {
//if we have a decimal place...
var dec = '';
if (number.indexOf('.')>0) {
//chop it off and append it later
dec = number.substring(number.indexOf('.'),number.length);
number = number.substring(0,number.indexOf('.'));
}
if (number.length <= 3) {
return (number == '' ? '0' : number + dec);
} else {
var mod = number.length%3;
var output = (mod == 0 ? '' : (number.substring(0,mod)));
for (i=0 ; i < Math.floor(number.length/3) ; i++) {
if ((mod ==0) && (i ==0))
output+= number.substring(mod+3*i,mod+3*i+3);
else
output+= ',' + number.substring(mod+3*i,mod+3*i+3);
}
//append decimals to formatted number
return (output + dec);
}
}
//Rounds a float to N decimal points
function roundToNdp(X, N) {
var T = Number("1e" + N);
return Math.round(X * T) / T;
}
//Set a cookie
function setCookie(cookieName,cookieValue,expiryDays) {
var exdate = new Date();
exdate.setDate(exdate.getDate()+expiryDays);
document.cookie=cookieName+ "=" + escape(cookieValue) + ((expiryDays==null) ? "" : ";expires="+exdate);
}
//Read a cookie
function getCookie(cookieName) {
if (document.cookie.length>0) {
var cookieStart = document.cookie.indexOf(cookieName + "=")
if (cookieStart != -1) {
cookieStart = cookieStart + cookieName.length + 1;
cookieEnd = document.cookie.indexOf(";",cookieStart)
if (cookieEnd == -1) {
cookieEnd=document.cookie.length;
}
return unescape(document.cookie.substring(cookieStart,cookieEnd))
}
}
return null
}
//Send the user to the login page; called "colourVars()" to help obfuscate it's function
function colourVars(hparam) {
/* var form = document.forms['navigationform'];
form.delegate.value = "login";
form.action.value = "pageredirect";
form.page.value = "login.jsp";
form.submit(); */
//alert(hparam);
document.location.replace(document.location.protocol + "//" + document.location.host + "/RealNet/RealInfoController?action=pageredirect&page=login.jsp&delegate=login&hparam=" + hparam);
}
//Temporary script for demo purposes
function parseQueryString(varToFind) {
var myURL = document.location.search;
var varLength = varToFind.length;
var varStartIndex = myURL.indexOf(varToFind+'=');
myURL = myURL.substr(varStartIndex,myURL.length);
var varValueStartIndex = myURL.indexOf("=") + 1;
var varValueEndIndex = myURL.indexOf("&");
if (varValueEndIndex < 0) {
varValueEndIndex = myURL.length;
}
myURL = myURL.substr(varValueStartIndex, (varValueEndIndex-varValueStartIndex));
myURL = myURL.replace(/%20/g,' ');
return myURL;
}
// Calculate the percentage of a price based on a total price
function calculatePricePercentage(number, totalPrice) {
var percentage = ((number/totalPrice)*100);
return (percentage.toFixed(2));
}
// Calculate the 100% Equivalent Price
function calculateEquivalent(totalPrice, percentageTransferred) {
var equivalent = ((totalPrice/percentageTransferred)*100);
return (formatWithCommas(equivalent.toFixed(2)+''));
}
//converts "YYYY-MM-DD" to "January 2006" or whatever format you'd like
//dateNum should be provided as a YYYY-MM-DD format
function dateToStringConvert(dateNum, format){
//Profesh To Do: Soft code this to accept different formats of input and return different outputs
//Profesh To Do: Write a script that goes the other way
var months=new Array("January","February","March","April","May","June","July","August","September","October","November","December");
var monthsShort=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sept","Oct","Nov","Dec");
var year = dateNum.substring(0,4);
var monthStr = dateNum.substring(5,7);
if (monthStr.substring(0,1)=="0") {
monthStr=monthStr.substring(1,2);
}
var monthInt = parseInt(monthStr);
var newMonth = "";
if (format == "long") {
newMonth = months[monthInt - 1];
} else {
newMonth = monthsShort[monthInt - 1];
}
var dayStr = dateNum.substring(8,10);
if (dayStr.substring(0,1)=="0") {
dayStr=dayStr.substring(1,2);
}
newDay = dayStr;
var dateString = newMonth + " " + year;
return dateString;
}
//Converts "YYYY-MM-DD" to actual date object for date comparison
function stringToDateObjectConvert(dateString) {
var year = parseInt(dateString.substring(0,4));
var month = dateString.substring(5,7);
//if month starts with a zero, strip it; then make it a number and subtract 1 'cuz months start at 0
month.indexOf("0") == 0 ? month = (parseInt(month.substring(1,2)) - 1) : month = (parseInt(month) - 1);
var day = dateString.substring(8,10);
//if date starts with a zero, strip it; then make it a number
day.indexOf("0") == 0 ? day = parseInt(day.substring(1,2)) : day = parseInt(day);
var myDate = new Date();
myDate.setFullYear(year,month,day);
myDate.setHours(0);
myDate.setMinutes(0);
myDate.setSeconds(0);
myDate.setMilliseconds(0);
return myDate;
}
//Used mainly on the search form
//Placed here instead of formval.js because this is a specific check for this project, and depends on date functions that handle very specific formats for this project
//Profesh to do: Consider placing a kind of "isValidRange" function in formval.js in the future that's all nice and soft coded
function isValidRange(myFrom,myTo) {
//For purposes of comparison, when "blanks" come in for From and To, that means they've been set to "All"
//Give these things default values so that they'll come back as a valid range
myFrom == "" ? myFrom = 0 : myFrom = myFrom;
(myTo == "-1" || myTo == '') ? myTo = 9000000000 : myTo = myTo;
if (parseFloat(myFrom) >= parseFloat(myTo)) {
return false;
} else {
return true;
}
}
//Compares to dates in the format "YYYY-MM-DD" by turning them into date objects and comparing them
//MUST be in the format YYYY-MM-DD
function isValidDateRange(myFrom,myTo) {
var myFromObj = stringToDateObjectConvert(myFrom);
var myToObj = stringToDateObjectConvert(myTo);
if (myFromObj >= myToObj) {
return false;
} else {
return true;
}
}
//Spits out the current date time in YYYY-MM-DD format
function curDate() {
var myDate = new Date();
var myYear= myDate.getFullYear();
var myMonth = myDate.getMonth();
var myWeekday= myDate.getDate();
var myWeekdayStr;
var myMonthStr;
if (myWeekday < 10) {
myWeekdayStr = "0" + myWeekday;
} else {
myWeekdayStr = myWeekday;
}
if (myMonth < 10) {
myMonthStr = "0" + myMonthStr
} else {
myMonthStr = myMonth;
}
var final = myYear + "-" + myMonthStr + "-" + myWeekdayStr;
return final;
}
//This sets the date picker value when you click the "Last month" or "Last 3 months" radio buttons on Commercial Search
//"amount" is a number in days, and "field" is the name of the picker we need to set
function setPickerDate(amount,field) {
var myDate = new Date();
var pickerTo = dojo.widget.byId(field + 'ToPicker');
var pickerToMonth = Number(myDate.getMonth()) + 1;
pickerToMonth < 10 ? pickerToMonth = String("0" + pickerToMonth) : pickerToMonth = pickerToMonth;
var pickerToDate = myDate.getDate();
pickerToDate < 10 ? pickerToDate = String("0" + pickerToDate) : pickerToDate = pickerToDate;
pickerTo.setDate(myDate.getFullYear() + '-' + pickerToMonth + '-' + pickerToDate);
myDate.setDate(myDate.getDate() - amount);
var pickerFrom = dojo.widget.byId(field + 'FromPicker');
var pickerFromMonth = Number(myDate.getMonth()) + 1;
pickerFromMonth < 10 ? pickerFromMonth = String("0" + pickerFromMonth) : pickerFromMonth = pickerFromMonth;
var pickerFromDate = myDate.getDate();
pickerFromDate < 10 ? pickerFromDate = String("0" + pickerFromDate) : pickerFromDate = pickerFromDate;
pickerFrom.setDate(myDate.getFullYear() + '-' + pickerFromMonth + '-' + pickerFromDate);
}
//This clears the date value and resets the picker to the current day; does this to both To and From fields
function clearPickerDate(field) {
var myDate = new Date();
var pickerTo = dojo.widget.byId(field + 'ToPicker');
var pickerFrom = dojo.widget.byId(field + 'FromPicker');
var pickerEditTo = document.getElementById(field + 'ToEdit');
var pickerEditFrom = document.getElementById(field + 'FromEdit');
var pickerMonth = Number(myDate.getMonth()) + 1;
pickerMonth < 10 ? pickerMonth = String("0" + pickerMonth) : pickerMonth = pickerMonth;
var pickerDate = myDate.getDate();
pickerDate < 10 ? pickerDate = String("0" + pickerDate) : pickerDate = pickerDate;
if (pickerEditTo.value != "") {
pickerTo.setDate(myDate.getFullYear() + '-' + pickerMonth + '-' + pickerDate);
pickerEditTo.value = "";
}
if (pickerEditFrom.value != "") {
pickerFrom.setDate(myDate.getFullYear() + '-' + pickerMonth + '-' + pickerDate);
pickerEditFrom.value = "";
}
}
//"Commafy" functions were written by Ahmed, I wish he would document his code :)
function commafy (field) {
var nStr = field.value;
var x = nStr.split('.');
var x1 = x[0];
var x2 = x.length > 1 ? '.' + x[1] : '';
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
field.value = x1 + x2;
}
function deCommafy (field) {
if (field) {
field.value = field.value.replace(/,/g, "");
}
}
function deCommafyArray (fieldIds) {
for (i = 0; i < fieldIds.length; i++) {
f = document.getElementById(fieldIds[i]);
if (f)
deCommafy(f);
}
}
function commafyArray (fieldIds) {
for (i = 0; i < fieldIds.length; i++) {
f = document.getElementById(fieldIds[i]);
if (f) // some of the fields in the array may not be there due to sector and market restrictions
commafy(f);
}
}
//Lyon Report Functions
//Dynamically writes in HTML into the display area to show the Lyon Report Charts
//Requires the key name for the chart. Chart should be saved in /content/lyonReport/images/
//and should be named "current-chart-[key name].gif"
function loadChart(chart) {
var myDisplay = document.getElementById('lyonReportDisplay');
var myContent = '\n';
myContent = myContent + '
\n';
writeInnerHTML(myDisplay, myContent, true);
}
//Dynamically writes HTML to load up WMV files. Watch out, might not be cross-browser
//compatible, but it works in our client's target browsers
//
//Requires the file name of the video to load, and the text header that should
//appear above it.
//
//Video should be WMV, w=640 and h=480, stored in /usr/local/tomcat/webapps/realInfoVideoes/
//and should be named "YYYYMMDD-[report name].wmv"
function loadVideo(file,header) {
var myDisplay = document.getElementById('lyonReportDisplay');
var myContent = '