﻿// JAVASCRIPT LIBRARY - COPYRIGHT 2007-2010 DIGITAL TRIP LTD - ALL RIGHTS RESERVED
// NO PORTION OF THIS LIBRARY MAY BE COPIED WITHOUT PRIOR WRITTEN CONSENT
var siteBasePath = '/';
// BROWSER SNIFFER
var brMac = (navigator.appVersion.indexOf("Mac") != -1) ? true : false; var brNS4 = (document.layers) ? true : false; var brIEMac = ((document.all) && (brMac)) ? true : false; var brIE4Plus = (document.all) ? true : false; var brIE4 = ((document.all) && (navigator.appVersion.indexOf("MSIE 4.") != -1)) ? true : false; var brIE5 = ((document.all) && (navigator.appVersion.indexOf("MSIE 5.") != -1)) ? true : false; var brIE6 = ((document.all) && (navigator.appVersion.indexOf("MSIE 6.") != -1)) ? true : false; var brVer4 = (brNS4 || brIE4Plus) ? true : false; var brNS6 = (!document.layers) && (navigator.userAgent.indexOf('Netscape') != -1) ? true : false;
// DOM OBJECT HANDLERS
function objAttach(i) { if (brNS4) { return document.layers[i]; } else if (brIE4) { return document.all[i]; } else { return document.getElementById(i); } }
function objShow(i) { o = objAttach(i); if (!o) { return; } else { o.style.display = 'block'; } }
function objHide(i) { o = objAttach(i); if (!o) { return; } else { o.style.display = 'none'; } }
function objShowHideAuto(i) { o = objAttach(i); if (!o) { return; } else { o.style.display = (o.style.display == 'none' ? 'block' : 'none'); } }
function objVisible(i) { o = objAttach(i); if (!o) { return; } else { o.style.visibility = 'visible'; } }
function objHidden(i) { o = objAttach(i); if (!o) { return; } else { o.style.visibility = 'hidden'; } }
function objVisibleAuto(i) { o = objAttach(i); if (!o) { return; } else { o.style.visibility = (o.style.visibility == 'hidden' ? 'visible' : 'hidden'); } }
// SAFE ONLOAD HANDLERS
var gSafeOnload = new Array();
function SafeAddOnload(f) { if (brIEMac && brIE4) { window.onload = SafeOnload; gSafeOnload[gSafeOnload.length] = f; } else if (window.onload) { if (window.onload != SafeOnload) { gSafeOnload[0] = window.onload; window.onload = SafeOnload; } gSafeOnload[gSafeOnload.length] = f; } else { window.onload = f; } }
function SafeOnload() { for (var i = 0; i < gSafeOnload.length; i++) { gSafeOnload[i](); } }
// OPEN POPUP WINDOW
function openPopupWin(u, w, h, s, r) { pW = window.open(u, 'popupWin', 'width=' + w + ',height=' + h + ',left=' + ((screen.width - w) / 2) + ',top=' + ((screen.height - h) / 2) + ',status=yes,toolbar=no,menubar=no,scrollbars=' + s + ',resizable=' + r); if (!pW.opener) { pW.opener = self; } }
// EMAIL OBFUSCATOR
function sendMail(d, a, s) { self.location.href = 'mai' + 'lto:' + a + '@' + d + '?subject=' + escape(s); }
// CLEARS CONTENTS OF A FIELD
function clearField(o, m, c) { if (c == null) { c = ''; } if (o.value == m) { o.value = c; } }
// GETS POSITIONS OF OBJECTS
function findPosX(o) { var cL = 0; if (o.offsetParent) { while (o.offsetParent) { cL += o.offsetLeft; o = o.offsetParent; } } else if (o.x) { cL += o.x; } return cL; }
function findPosY(o) { var cT = 0; if (o.offsetParent) { while (o.offsetParent) { cT += o.offsetTop; o = o.offsetParent; } } else if (o.y) { cT += o.y; } return cT; }
function findPageScroll() {
    var yScroll;
    if (self.pageYOffset) { yScroll = self.pageYOffset; } else if (document.documentElement && document.documentElement.scrollTop) { yScroll = document.documentElement.scrollTop; } else if (document.body) { yScroll = document.body.scrollTop; }
    arrayPageScroll = new Array('', yScroll); return arrayPageScroll;
}
function findPageSize() {
    var xScroll, yScroll;
    if (window.innerHeight && window.scrollMaxY) { xScroll = document.body.scrollWidth; yScroll = window.innerHeight + window.scrollMaxY; } else if (document.body.scrollHeight > document.body.offsetHeight) { xScroll = document.body.scrollWidth; yScroll = document.body.scrollHeight; } else { xScroll = document.body.offsetWidth; yScroll = document.body.offsetHeight; }
    var windowWidth, windowHeight;
    if (self.innerHeight) { windowWidth = self.innerWidth; windowHeight = self.innerHeight; } else if (document.documentElement && document.documentElement.clientHeight) { windowWidth = document.documentElement.clientWidth; windowHeight = document.documentElement.clientHeight; } else if (document.body) { windowWidth = document.body.clientWidth; windowHeight = document.body.clientHeight; }
    if (yScroll < windowHeight) { pageHeight = windowHeight; } else { pageHeight = yScroll; }
    if (xScroll < windowWidth) { pageWidth = windowWidth; } else { pageWidth = xScroll; }
    arrayPageSize = new Array(pageWidth, pageHeight, windowWidth, windowHeight); return arrayPageSize;
}
function wordCount(i, t, d) { if (d == null) d = ' '; var tS = t.split(d); objAttach(i).innerHTML = tS.length; }
function morphImage(i, s) { var o = objAttach(i); if (document.all && !brIE6) { o.style.filter = "blendTrans(duration=1)"; o.filters.blendTrans.Apply(); } o.src = s; if (document.all && !brIE6) { o.filters.blendTrans.Play(); } }
// DATE HANDLERS
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');
var MONTH_MAXDAYS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
function LZ(x) { return ((x >= 0 && x <= 9) ? '0' : '') + x }
function isDate(val, format) { var date = getDateFromFormat(val, format); if (date == 0) { return false; } return true; }
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; }
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; 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; }
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; }
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) { c = format.charAt(i_format); token = ""; while ((format.charAt(i_format) == c) && (i_format < format.length)) { token += format.charAt(i_format++); } 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 (i_val != val.length) { return 0; } if (month == 2) { if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) { 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; } } 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.getTime(); }
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 daysInMonth(month, year) { if (month != 2) { return MONTH_MAXDAYS[month - 1]; } if (year % 4 != 0) { return MONTH_MAXDAYS[1]; } if (year % 100 == 0 && year % 400 != 0) { return MONTH_MAXDAYS[1]; } return MONTH_MAXDAYS[1] + 1; }
// FORMAT CURRENCY
function formatCurrency(num) {
    num = num.toString().replace(/\$|\,/g, '');
    if (isNaN(num))
        num = "0";
    sign = (num == (num = Math.abs(num)));
    num = Math.floor(num * 100 + 0.50000000001);
    cents = num % 100;
    num = Math.floor(num / 100).toString();
    if (cents < 10)
        cents = "0" + cents;
    for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++)
        num = num.substring(0, num.length - (4 * i + 3)) + ',' + num.substring(num.length - (4 * i + 3));
    return (((sign) ? '' : '-') + num + '.' + cents);
}
// QUERYSTRING HANDLER
function pageQuery(q) {
    if (q.length > 1) { this.q = q.substring(1, q.length); } else { this.q = null; }
    this.kVP = new Array();
    if (q) { for (var i = 0; i < this.q.split("&").length; i++) { this.kVP[i] = this.q.split("&")[i]; } }
    this.getKeyValuePairs = function () { return this.kVP; }
    this.getValue = function (s) { for (var j = 0; j < this.kVP.length; j++) { if (this.kVP[j].split("=")[0] == s) return this.kVP[j].split("=")[1]; } return ''; }
    this.getParameters = function () { var a = new Array(this.getLength()); for (var j = 0; j < this.kVP.length; j++) { a[j] = this.kVP[j].split("=")[0]; } return a; }
    this.getLength = function () { return this.keyValuePairs.length; }
}
function queryString(k) { var page = new pageQuery(window.location.search); return unescape(page.getValue(k)); }
function printPage() { window.print ? window.print() : alert('Your browser does not support this function.\nPlease use the browsers print button.'); return false; }
function addToFavourites() { if (window.sidebar) { window.sidebar.addPanel(document.title, document.location.href, ''); } else if (window.external) { window.external.AddFavorite(document.location.href, document.title); } else { alert('Your browser does not support this function.\nPlease use the browsers favourite button.'); } return false; }
function changeHeight(i, oH, nH) { if (objAttach(i).style.height == oH) { objAttach(i).style.height = nH; objAttach('mapSizing').innerHTML = "[-] Click here to minimize the map"; } else { objAttach(i).style.height = oH; objAttach('mapSizing').innerHTML = "[+] Click here to enlarge the map"; } }
function socialBookmark(u) { u = u.replace('TITLE', encodeURIComponent(document.title)); u = u.replace('URL', encodeURIComponent(document.location.href)); openPopupWin(u, 740, 620, 'yes', 'yes'); return false; }
function selectAddOption(fId, txt, val) { var opt = document.createElement('option'); opt.text = txt; opt.value = val; try { fId.add(opt, null); } catch (ex) { fId.add(opt); } }
//Swap Image Expandable Search Box
function toggleSearch() { Effect.toggle('searchBoxSmall', 'slide'); objAttach('imgYourSearch').src = (objAttach('imgYourSearch').src.indexOf('ModifySearchOn') == -1 ? '/Assets/Themes/' + themeID + '/Images/ModifySearchOn.png' : '/Assets/Themes/' + themeID + '/Images/ModifySearch.png'); return false; }
// CREATE MODAL DIALOG FROM EXISTING DIV ON PAGE
var overlayDiv; var overlayId;
function renderModalWin(id, w, h, opacity, disableHide) {
    if (opacity == null) opacity = 0.8;
    if (disableHide == null) disableHide = false;
    overlayId = id;
    if (!overlayDiv) {
        var new_obj;
        new_obj = document.createElement('div');
        new_obj.setAttribute('id', 'modalOverlay');
        if (!disableHide) new_obj.onclick = function () { hideModalWin(); return false; }
        new_obj.style.display = 'none';
        new_obj.style.position = 'absolute';
        new_obj.style.top = '0';
        new_obj.style.left = '0';
        new_obj.style.zIndex = '90';
        new_obj.style.width = '100%';
        var objBody = document.getElementsByTagName('body').item(0);
        objBody.style.overflow = 'hidden';
        objBody.insertBefore(new_obj, objBody.firstChild);
        overlayDiv = new_obj;
    }
    if (brIE6) {
        var selects = document.getElementsByTagName('select');
        for (i = 0; i != selects.length; i++) { selects[i].style.visibility = 'hidden'; }
    }
    var arrayPageSize = findPageSize();
    var arrayPageScroll = findPageScroll();
    var modalTop = arrayPageScroll[1] + ((arrayPageSize[3] - 35 - h) / 2);
    var modalLeft = ((arrayPageSize[0] - 20 - w) / 2);
    Element.setWidth(id, w);
    Element.setHeight(id, h);
    Element.setTop(id, modalTop);
    Element.setLeft(id, modalLeft);
    Element.show(id);
    Element.setWidth('modalOverlay', arrayPageSize[2]);
    Element.setHeight('modalOverlay', arrayPageSize[1]);
    new Effect.Appear('modalOverlay', { duration: 0.2, from: 0.0, to: opacity });
}
function hideModalWin() {
    objHide('modalOverlay'); objHide(overlayId);
    var objBody = document.getElementsByTagName('body').item(0);
    objBody.style.overflow = 'visible';
    if (brIE6) {
        var selects = document.getElementsByTagName('select');
        for (i = 0; i != selects.length; i++) { selects[i].style.visibility = 'visible'; }
    }
}
