(function($) {
	$.checkboxes = {};
	$.checkboxes.defaults = {
		containerClass: "checkboxes",
		rowClass: "checkboxes",
		rowHoverClass: "hover",
		rowSelectedClass: "selected",
		labelClass: "label",
		checkboxName: null,
		checkboxClass: "checkbox",
		dataKey: "data",
		labelKey: "label"
	};
	var rnd = Math.floor(Math.random() * 11);
	var dataKey = "checkboxes_data" + rnd;
	var ownerKey = "checkboxes_owner" + rnd;
	function getData(dom) {
		return $(dom).data(dataKey);
	}
	var methods = {
		init: function(options) {
			var settings = $.extend({}, $.checkboxes.defaults, options || {});	
			return this.addClass(settings.containerClass).data(dataKey, settings);
		},
		destroy: function() {
			return this.each(function() {
				var data = getData(this);
				if (data) {
					if (data.containerClass) {
						$(this).removeClass(data.containerClass).empty();
					}
				}
				$(this).data(dataKey, null);
			});	
		},
		check: function(values) {
			if (values && values.length) {
				return this.each(function() {
					$(this).children().each(function() {
						var checkbox = $(this).find("input[type='checkbox']")[0];
						var checkboxVal = checkbox.value;
						if (checkboxVal && $.inArray(checkboxVal, values) > -1 && !checkbox.checked) {
							$(this).click();
						}
					});
				});
			}
			return this;
		},
		dataProvider: function(dataProvider) {
			function _getDataProvider(dom) {
				var arr = [];
				$("input[type='checkbox']:checked", dom).each(function() {
					arr.push(this.value);
				});
				return arr;
			}
			function _setDataProvider(dom) {
				var $element = $(dom).empty();
				var data = getData(dom);
				if (dataProvider && dataProvider.length) {
					var len = dataProvider.length;
					for (var i = 0; i < len; i++) {
						var itm = dataProvider[i]
						var $div = $('<div/>').data(ownerKey, dom).click(function() {
							var $checkbox = $(this).find("input[type='checkbox']");
							var checked = !$checkbox.attr("checked");
							$checkbox.attr("checked", checked);
							var data = getData($(this).data(ownerKey));
							if (data.rowSelectedClass) {
								if (checked) {
									$(this).addClass(data.rowSelectedClass);
								} else {
									$(this).removeClass(data.rowSelectedClass);
								}
							}							  
						}).mouseover(function(event) {
							var data = getData($(this).data(ownerKey));
							if (data.rowHoverClass) {
								$(this).addClass(data.rowHoverClass);
							}		
						}).mouseout(function(event) {
							var data = getData($(this).data(ownerKey));
							if (data.rowHoverClass) {
								$(this).removeClass(data.rowHoverClass);
							}		
						});
						var $chk = $('<input type="checkbox"/>').data(ownerKey, $div[0]).val(itm[data.dataKey]).click(function(event) {
							$($(this).data(ownerKey)).click();
						});
						if (data.checkboxName) {
							$chk.attr("name", data.checkboxName);
						}
						if (data.checkboxClass) {
							$chk.addClass(data.checkboxClass);
						}
						if (data.rowClass) {
							$div.addClass(data.rowClass);
						}
						var $span = $('<span/>').html(itm[data.labelKey]);
						if (data.labelClass) {
							$span.addClass(data.labelClass);
						}
						$element.append($div.append($chk).append($span));
					}
				}
			}
			if (dataProvider === undefined) {
				var len = this.length;
				if (len == 1) {
					return _getDataProvider(this[0]);
				} else if (len > 1) {
					var arr = [];
					this.each(function() {
						arr.push(_getDataProvider(this));
					});
					return arr;
				} else {
					return null;
				}
			} else {
				return this.each(function() {
					_setDataProvider(this);
				});
			}
		}
	};

	$.fn.checkboxes = function(method) {	
		// Method calling logic
		if (methods[method]) {
			return methods[ method ].apply(this, Array.prototype.slice.call(arguments, 1));
		} else if (typeof(method) === "object" || ! method ) {
			return methods.init.apply(this, arguments);
		} else {
			$.error('Method ' +  method + ' does not exist on jQuery.checkboxes');
		}    
	};
})(jQuery);


/**
*
*  Base64 encode / decode
*  http://www.webtoolkit.info/
*
**/
 
var Base64 = {
 
	// private property
	_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
 
	// public method for encoding
	encode : function (input) {
		var output = "";
		var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
		var i = 0;
 
		input = Base64._utf8_encode(input);
 
		while (i < input.length) {
 
			chr1 = input.charCodeAt(i++);
			chr2 = input.charCodeAt(i++);
			chr3 = input.charCodeAt(i++);
 
			enc1 = chr1 >> 2;
			enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
			enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
			enc4 = chr3 & 63;
 
			if (isNaN(chr2)) {
				enc3 = enc4 = 64;
			} else if (isNaN(chr3)) {
				enc4 = 64;
			}
 
			output = output +
			this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
			this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
 
		}
 
		return output;
	},
 
	// public method for decoding
	decode : function (input) {
		var output = "";
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;
 
		input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
 
		while (i < input.length) {
 
			enc1 = this._keyStr.indexOf(input.charAt(i++));
			enc2 = this._keyStr.indexOf(input.charAt(i++));
			enc3 = this._keyStr.indexOf(input.charAt(i++));
			enc4 = this._keyStr.indexOf(input.charAt(i++));
 
			chr1 = (enc1 << 2) | (enc2 >> 4);
			chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
			chr3 = ((enc3 & 3) << 6) | enc4;
 
			output = output + String.fromCharCode(chr1);
 
			if (enc3 != 64) {
				output = output + String.fromCharCode(chr2);
			}
			if (enc4 != 64) {
				output = output + String.fromCharCode(chr3);
			}
 
		}
 
		output = Base64._utf8_decode(output);
 
		return output;
 
	},
 
	// private method for UTF-8 encoding
	_utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
 
		for (var n = 0; n < string.length; n++) {
 
			var c = string.charCodeAt(n);
 
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
 
		}
 
		return utftext;
	},
 
	// private method for UTF-8 decoding
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
 
		while ( i < utftext.length ) {
 
			c = utftext.charCodeAt(i);
 
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
 
		}
		return string;
	}
};

// ORIX
(function() { 
	try {
		// just in case jQuery or block UI is not available
		jQuery.noConflict();
		var defaults = jQuery.blockUI.defaults;
		defaults.message = '<h1><img src="/_images/busy.gif"> Please wait...</h1>';
		defaults.css = { 
			border:         '3px solid #738CAD', 
			padding: 		'10px 15px', 
			backgroundColor:'#fff', 
			opacity: 		'1.0', 
			color: 			'#003163',   
			margin:         '0',
			width:          '30%', 
			top:            '30%', 
			left:           '30%', 
			textAlign:      'center', 
			cursor:         'wait',
			font: 'bold 10px Tahoma, Arial, Sans-serif'
		};
		defaults.overlayCSS = { 
			backgroundColor:'#fff', 
			opacity:        '0.2' 
		};
		
		jQuery.scrollTo.defaults.axis = "y";
		
		jQuery.ajaxSetup({
			cache: false
		});
		
	} catch (exception) {
	}
})();
function rollOver(obj,newImg){
	if(obj != null && newImg != ""){
		var imgDir = new String();
		imgDir = ""+obj.src;
		//replace with HOVER image
		obj.src = imgDir.substring(0,imgDir.lastIndexOf("/")) + "/" +  newImg;
	}else{
		var imgDir = new String();
		imgDir = ""+obj.src;
		//replace with Transparent image
		obj.src = imgDir.substring(0,imgDir.lastIndexOf("/")) + "/" +  "transparent.gif";
	}
}

//function for AJAX post request
function getXhttp(){
    var ajax_request;

    if(window.ActiveXObject){
        var mSoftVersions = [
            'MSXML2.DOMDocument.5.0',
            'MSXML2.DOMDocument.4.0',
            'MSXML2.DOMDocument.3.0',
            'MSXML2.DOMDocument.2.0',
            'MSXML2.DOMDocument',
            'Microsoft.XmlDom',
            'Msxml2.XMLHTTP',
            'Microsoft.XMLHTTP'
        ];

        for(i=0; i<mSoftVersions.length; i++){
            try {
                ajax_request = new ActiveXObject (  mSoftVersions[i]  );
            }catch(e){}
        }
    }else if(!ajax_request && typeof XMLHttpRequest != 'undefined'){
        try {
	            ajax_request = new XMLHttpRequest;
        }catch(e){}
    }else if(!ajax_request && window.createRequest){
        try {
	            ajax_request = window.createRequest;
        }catch(e){}
    }else{
        ajax_request = false;
   }
    return ajax_request;
}

//http://www.robertnyman.com/2005/11/07/the-ultimate-getelementsbyclassname/
function getElementsByClassName(oElm, strTagName, strClassName){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	strClassName = strClassName.replace(/\-/g, "\\-");
	var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
	var oElement;
	for(var i=0; i<arrElements.length; i++){
		oElement = arrElements[i];		
		if(oRegExp.test(oElement.className)){
			arrReturnElements.push(oElement);
		}	
	}
	return (arrReturnElements);
}

function popE(pref)
{
	var url = "mailto:" + pref + "@orix.com.au";
	newwindow=window.open(url,'myE','height=1,width=1');
	if (window.focus) {newwindow.focus();}
	newwindow.close();
	return false;
}

//this function expands/contracts the selected block contained by the clicked LI element
//in relies on /prototype-1.6.0.3.js and effects.js
function slideInOutBlock(targetLi){
	//where childNodes[2] refers to the child <p> element of parent <li>
	if(targetLi.childNodes[2].style.display == "none"){
		Effect.SlideDown(targetLi.childNodes[2].id, { duration: 0.3 });
		targetLi.className = "expanded";
	}else{
		Effect.SlideUp(targetLi.childNodes[2].id, { duration: 0.3 });
		targetLi.className = "";
	}
}

//this function filters out special characters from the input
function filterStr(str){
	if(str != null){
		str = str.replace(/[^a-zA-Z 0-9 &=;:@.,-\/]+/g,'');
	}
	return str;
}

//this function helps us to build the array of values which we then pass as string parameter
function buildValuesArray(objectList){
	var str = "";
	
	for(var i = 0; i < objectList.length; i++){
		if(objectList[i].checked == true){
			//if multiple values selected, insert separator
			if(i > 0 && str.length > 0){
				 str += "::";
			}
			str += objectList[i].value;
		}
	}
	return str;
}

//this function displays error messages
function redAlert(msg){
	//if message was specified, display it. Otherwise, display default message
	if(msg != ""){
		jQuery.blockUI({ message: msg,  
				         css: { backgroundColor: '#f00', color: '#fff', border: '3px solid #FFFFFF'},
				         overlayCSS:  { backgroundColor:'#000', opacity: '0.2' 
    					}});
	}else{
		jQuery.blockUI({ message: "<h1>Unspecified ERROR occurred. Please contact support!!</h1>",  
				         css: { backgroundColor: '#f00', color: '#fff', border: '3px solid #FFFFFF'},
				         overlayCSS:  { backgroundColor:'#000', opacity: '0.2' 
    					}});
	}
		setTimeout(jQuery.unblockUI, 3500);
}

//this function displays SUCESS messages
function blueAlert(msg){
	//if message was specified, display it. Otherwise, display default message
	if(msg != ""){
		jQuery.blockUI({ message: msg,  
				         css: { backgroundColor: '#003163', color: '#FFFFFF', border: '3px solid #738CAD'},
				         overlayCSS:  { backgroundColor:'#FFF', opacity: '0.4' 
    					}});
	}else{
		jQuery.blockUI({ message: "<h1>Requested Operation was performed successfully!!</h1>",  
				         css: { backgroundColor: '#f00', color: '#fff', border: '3px solid #FFFFFF'},
				         overlayCSS:  { backgroundColor:'#000', opacity: '0.2' 
    					}});
	}
		setTimeout(jQuery.unblockUI, 3500);
}

//this func assist with resizing iframes, based on its content
function resizeMe(objId){
	document.getElementById(objId).height = ""; // required for mozilla/firefox bugs, value can be "", null, or integer
	document.getElementById(objId).style.height = window.frames[objId].document.body.scrollHeight + "px";
}

var Application = function() {
	
	/***************************
	*@Author: Adrian "yEnS" Mato Gondelle
	*@website: www.yensdesign.com
	*@email: yensamg[AT]gmail[DOT]com
	*@license: Feel free to use it, but keep this credits please!					
	***************************/
	
	var POPUP_OPACITY = 0.7;
	var POPUP_BACKGROUND_ID = "backgroundPopup";
	var POPUP_FADE_IN = 400;
	var POPUP_FADE_OUT = 400;
	var CONTACT_WIN_NAME = "contactUs";
	var CONTACT_POPUP_TITLE = "<h2>Contact ORIX Australia Corporation Limited</h2>";
	var CONTACT_CONTAINER_ID = "popupContactUs";
	var CONTACT_BODY_ID = "popupContactUsRequestBody";
	var CONTACT_CLOSE_ID = "popupContactUsClose";
	var CONTACT_MSG_ERROR_ID = "errorMsg";
	var CONTACT_FORM_URL = "/_out/ContactUsForm.html";
	var CONTACT_INFORMATION_SELECTOR = "#orix-info a.email";
	var CONTACT_INFORMATION_LINKS_SELECTOR = "a.contact-orix";
	var FORM_MSG_ERROR_ID = "errorMsg";
	var TOOLTIP_CONTAINER_ID = "orix_tooltip";
	var ANCHOR_REL_EXTERNAL = "external";
	var LIGHTBOX_CONFIG = {	
		imageLoading:			'/_js/jQuery/jquery-lightbox-0.6/images/loading.gif',		// (string) Path and the name of the loading icon
		imageBtnPrev:			'/_js/jQuery/jquery-lightbox-0.6/images/lightbox-btn-prev.gif',			// (string) Path and the name of the prev button image
		imageBtnNext:			'/_js/jQuery/jquery-lightbox-0.6/images/lightbox-btn-next.gif',			// (string) Path and the name of the next button image
		imageBtnClose:			'/_js/jQuery/jquery-lightbox-0.6/images/lightbox-btn-close.gif',		// (string) Path and the name of the close btn
		imageBlank:				'/_js/jQuery/jquery-lightbox-0.6/images/lightbox-blank.gif'
	};
	
	//SETTING UP OUR POPUP
	//0 means disabled; 1 means enabled;
	var popupStatus = 0, hasInitializedContactUsForm = false, arrCurrentPopups = [];
	var mode = document.documentMode || 0;
	var ie6 = jQuery.browser.msie && /MSIE 6.0/.test(navigator.userAgent) && !mode;
	var _googleAnalyticsDone = false, _googleAnalyticsEnabled = true;
	
	jQuery(function() {
		
		jQuery.checkboxes.defaults.containerClass = "control";
		
		jQuery("ul#mainTopNav > li > a").html(function(i, html) {
			return "<div><span>" + html + "</span></div>";			   
		});
		
		var subMenu	 = jQuery("#sectionMenu");
		if (subMenu.length) {
			if (subMenu.children().length <= 1) {
				subMenu.css("visibility", "hidden");
			}
		}
		
		// add the backgroundPopup if it is not there
		if (!jQuery("#" + POPUP_BACKGROUND_ID).length) {
			// no popup background is available, add this
			jQuery("body").append(jQuery("<div/>").attr("id", POPUP_BACKGROUND_ID).click(function() {
				_disablePopup();
			}));
		}
		//Press Escape event!
		jQuery(document).keypress(function(e) {
			if (e.keyCode == 27 && popupStatus == 1) {
				_disablePopup();
			}
		});
		if (!jQuery("#" + TOOLTIP_CONTAINER_ID).length) {
			// no popup background is available, add this
			jQuery("body").append(jQuery("<div/>").attr("id", TOOLTIP_CONTAINER_ID));
		}
		jQuery("a[rel=" + ANCHOR_REL_EXTERNAL + "]").attr("target", "_blank");
		jQuery("a[rel=" + CONTACT_WIN_NAME + "]").click(function(event) {
			event.preventDefault();
			_openCenteredWindow("/contact-us-form.html?__t=" + jQuery(this).attr("msg"), 'form', 'form', null, CONTACT_WIN_NAME);
		});
		_parseWebContent("a[rel=_e_]");
		_initContactUsEvent(CONTACT_INFORMATION_LINKS_SELECTOR);
	});
	
	function popup_onAdjustViewport(event) {
		if (popupStatus == 1) {
			// recenter the popup and adjust the size of the mask
			var resizeTimer = null;
			if (resizeTimer) clearTimeout(resizeTimer);
			resizeTimer = setTimeout(function() {
				_centerPopup(event.data.arrContainerIds, event.data.scrollOnly);				  
			}, 100);
		}
	}
			
	function getPopupSelectors(arrContainerIds) {
		var ids = arrContainerIds ? arrContainerIds : Application.defaults.popup_arrContainerIds;
		if (ids) {
			var selector = null;
			if (typeof(ids) == "array") {
				if (ids.length) selector = ids.join(",");
			} else {
				selector = ids + "";
			}
			var j = jQuery(selector);
			if (j.length) return j;
		}
		return null;
	}
	function _centerPopup(arrContainerIds, scrollOnly) {
		//request data for centering
		//var windowWidth = document.documentElement.clientWidth;
		//var windowHeight = document.documentElement.clientHeight;
		
		var windowWidth = jQuery(window).width();
		var windowHeight = jQuery(window).height();
		var scrollTop = _scrollTop();
		var scrollLeft = _scrollLeft();
		//centering
		var j = getPopupSelectors(arrContainerIds);
		if (j) j.each(function(i, element) { 
			var jObj = jQuery(element);
			var popupHeight = jObj.height();
			var popupWidth = jObj.width();		
			var top = windowHeight/2-popupHeight/2;
			var left = windowWidth/2-popupWidth/2;
			if (ie6) {
				top += scrollTop;
				left += scrollLeft;
			}
			if (scrollOnly) {
				jObj.css({
					"position": "absolute",
					"top": top,
					"left": left
				});
			} else {	
				jObj.css({
					"position": "absolute"
				}).animate({
					"top": top,
					"left": left
				});
			}
		});

		//only need force for IE6
		if (ie6 && !scrollOnly) {
			jQuery("#" + POPUP_BACKGROUND_ID).css({
				"height": document.body.clientHeight,
				"width": document.body.clientWidth - 2
			});
		}
	}
	function _disablePopup(immediate) {
		//disables popup only if it is enabled
		if (popupStatus == 1) {
			if (immediate === true) {
				jQuery("#" + POPUP_BACKGROUND_ID).hide();
			} else {
				jQuery("#" + POPUP_BACKGROUND_ID).fadeOut(POPUP_FADE_OUT);
			}
			while (arrCurrentPopups.length) {
				var element = arrCurrentPopups.pop();
				if (element) {
					if (immediate === true) {
						jQuery(element).hide();	
					} else {
						jQuery(element).fadeOut(POPUP_FADE_OUT);	
					}
				}
			}
			popupStatus = 0;
		}	
	}
	function _isValidEmail(str) {
		return /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/.test(str); 
	}
	function _parseMail(str) {
		return str.replace(/\[\[_at_\]\]/ig, "@").replace(/\[\[_dot_\]\]/ig, ".");
	}
	function _parseWebContent_a(element) {
		var j = jQuery(element);
		var text = j.text();
		var strDecoded = Base64.decode(text);
		var sthParsed =  _parseMail(strDecoded);
		if (strDecoded == sthParsed) {
			// do nothing
		} else {
			j.text(sthParsed);
			if (_isValidEmail(sthParsed)) {
				j.attr("href", "mailto:" + sthParsed);
			}
		}
		if (!j.is(":visible")) {
			j.show();
		}
	}
	function _parseWebContent(selector) {
		jQuery(selector).each(function() {
			switch (this.tagName.toLowerCase()) {
				case "a":
					_parseWebContent_a(this);
					break;
				default:
					break;
			}											  
		});
	}
	function _initContactUsEvent(selector) {
		_parseWebContent(jQuery(selector).click(function(event) {
			// by default load contact popup
			var anc = jQuery(CONTACT_INFORMATION_SELECTOR);
			this.href = anc.attr("href");
			if (anc.data("success")) {
				event.preventDefault();
				anc.click();
			}
		}));
	}
	function _scrollTop() {
		return window.pageYOffset || document.documentElement.scrollTop || 0;	
	}
	function _scrollLeft() {
		return window.pageXOffset || document.documentElement.scrollLeft || 0;
	}
	function _openCenteredWindow(url, width, height, attributes, winName, completeHandler) {
		var defaultWinTypes = {
			"form": [700, 500]	
		};
		if (!url) {
			//url = "popup.html";
		}
		if (isNaN(width)) {
			if (defaultWinTypes[width]) {
				width = defaultWinTypes[width][0];
			} else {
				width = 600;
			}
		}
		if (isNaN(height)) {
			if (defaultWinTypes[height]) {
				height = defaultWinTypes[height][1];
			} else {
				height = 480;
			}
		}
		var left = parseInt((screen.availWidth/2) - (width/2));
		var top = parseInt((screen.availHeight/2) - (height/2));
		var objAttributes = {
			"width": width,
			"height": height,
			"left": left,
			"top": top,
			"screenX": left,
			"screenY": top,
			"resizable": "yes",
			"scrollbars": "yes"
		};
		if (attributes && typeof(attributes) == "object") {
			for (key in attributes) {
				objAttributes[key] = attributes[key];
			}
		}
		var strAttributes = "";
		for (key in objAttributes) {
			if (strAttributes != "") strAttributes += ",";
			strAttributes += key + "=" + objAttributes[key];
		}
		var win = window.open(url, winName, strAttributes);
		win.focus();
		if (typeof(completeHandler) == "function") {
			try {
				jQuery(win.document).ready(function() {
					completeHandler(win);
				});
			} catch (e) {}
		}
		return win;
	}
	function _displayFormMessage(cssClass, message, label, keepMessage) {
		var msg = jQuery("#" + FORM_MSG_ERROR_ID);
		if (msg.length) {
			msg.removeClass("error success").addClass(cssClass).html(label + message).show();
			jQuery.scrollTo(msg, 400);
			if (keepMessage !== true) {
				setTimeout(function() {
					msg.slideUp(150);					
				}, 7000);
			}
		}		
	}
	function _googleAnalytics() {
		if (_googleAnalyticsDone) {
			return;
		} else {
			if (_googleAnalyticsEnabled) {
				try {
					var href = document.location.href;
					var gaCode = null;
					if (href.indexOf("www.orix.com.au") >= 0) {
						gaCode = "UA-15678375-1";
					}
					if (gaCode) {
						jQuery.getScript((("https:" == document.location.protocol) ? "https://ssl." : "http://www.") + "google-analytics.com/ga.js", function() {
							var pageTracker = _gat._getTracker(gaCode);
							pageTracker._trackPageview();
							//alert(document.location.href);
						});
					}
				} catch(err) {}
			}
			_googleAnalyticsDone = true;
		}
	}
	return {
		test: function() {
			alert("OK");
		},
		defaults: {
			popup_arrContainerIds: "#" + CONTACT_CONTAINER_ID
		},
		disableGoogleAnalytics: function() {
			_googleAnalyticsEnabled = false;
		},
		googleAnalytics: function() {
			_googleAnalytics();
		},
		pageWidth: function() {
			// Firefox
			if (window.innerHeight && window.scrollMaxY) return window.innerWidth + window.scrollMaxX;
			// all but Explorer Mac
			else if (document.body.scrollHeight > document.body.offsetHeight) return document.body.scrollWidth;
			// works in Explorer 6 Strict, Mozilla (not FF) and Safari
			else return document.body.offsetWidth + document.body.offsetLeft;
		},
		pageHeight: function() {
			if (window.innerHeight && window.scrollMaxY) return window.innerHeight + window.scrollMaxY;
			else if (document.body.scrollHeight > document.body.offsetHeight) return document.body.scrollHeight;
			else return document.body.offsetHeight + document.body.offsetTop;
		},
		scrollTop: function() {
			return _scrollTop();
		},
		scrollLeft: function() {
			return _scrollLeft();
		},
		// Start popup functions
		//loading popup with jQuery magic!
		loadPopup: function(arrContainerIds) {
			//loads popup only if it is disabled
			var app = this;
			if (popupStatus == 0) {
				jQuery("#" + POPUP_BACKGROUND_ID).css({
					"opacity": POPUP_OPACITY
				});
				jQuery("#" + POPUP_BACKGROUND_ID).fadeIn(POPUP_FADE_IN);
				var j = getPopupSelectors(arrContainerIds);
				if (j) j.fadeIn(POPUP_FADE_IN).each(function() {
					arrCurrentPopups.push(this);	
				});
				popupStatus = 1;
				var win = jQuery(window);
				win.unbind("resize", popup_onAdjustViewport).bind("resize", {
					"arrContainerIds": arrContainerIds			
				}, popup_onAdjustViewport);
				if (ie6) {
					win.unbind("scroll", popup_onAdjustViewport).bind("scroll", {
						"arrContainerIds": arrContainerIds,
						"scrollOnly": true
					}, popup_onAdjustViewport);
				}
			}
		},
		//disabling popup with jQuery magic!
		disablePopup: function(immediate) {
			_disablePopup(immediate);
		},
		//centering popup
		centerPopup: function(arrContainerIds, scrollOnly) {
			_centerPopup(arrContainerIds, scrollOnly);
		},
		popup: function(arrContainerIds, force) {
			if (force === true) {
				_disablePopup(true);
			}
			this.centerPopup(arrContainerIds);
			this.loadPopup(arrContainerIds);
		},
		// Start contact us functions
		initContactUsForm: function(completeHandler) {
			var app = this;
			// we moved the contact us form to window popup => this is a hack
			// now we only load the form to ensure it works. the form is not used in the parent page
			if (hasInitializedContactUsForm) {
				// call complete handler directly
				if (typeof(completeHandler) == "function") completeHandler(hasInitializedContactUsForm);
			} else {
				jQuery(function() {
					if (!jQuery("#" + CONTACT_CONTAINER_ID).length) {
						// no popup contact us is available, add this
						jQuery("body").append(jQuery("<div></div>").append(
							jQuery("<a/>").attr("id", CONTACT_CLOSE_ID).click(function() {
								//CLOSING POPUP
								//Click the x event!
								app.disablePopup();
							})
						).append(CONTACT_POPUP_TITLE).append(
							jQuery("<div/>").attr("id", CONTACT_BODY_ID)
						).attr("id", CONTACT_CONTAINER_ID));
					}
					jQuery("#" + CONTACT_BODY_ID).load(CONTACT_FORM_URL, null, function(responseText, textStatus) {			
						if (textStatus == "error" || textStatus == "timeout" || textStatus == "parsererror") {
							this.innerHTML = "<p>Error Occurred. Please contact ORIX via Contact Us page.</p>";
						} else {
							hasInitializedContactUsForm = true;
						}
						if (typeof(completeHandler) == "function") completeHandler(hasInitializedContactUsForm);
					});
				});
			}
		},
		submitContactUsForm: function(form) {
			var output = document.getElementById(CONTACT_BODY_ID);
			var formElements = form.elements;
			var postValues = "";
			var xml = getXhttp();
			
			for (i=0; i<formElements.length; i++) {
				if (formElements[i].type == "text" && formElements[i].value != "") {
					postValues += formElements[i].name + "=" + formElements[i].value + "&";
				}else if (formElements[i].type == "textarea" && formElements[i].value != "") {
					postValues += formElements[i].name + "=" + formElements[i].value + "&";
				}else if (formElements[i].type == "checkbox" && formElements[i].checked == true) {
					postValues += formElements[i].name + "=" + formElements[i].value + "&";
				}else if (formElements[i].type == "radio" && formElements[i].checked == true) {
					postValues += formElements[i].name + "=" + formElements[i].value + "&";
				}else if (formElements[i].type == "select-one") {
					postValues += formElements[i].name + "=" + formElements[i][formElements[i].selectedIndex].value + "&";
				}else if(formElements[i].type == "hidden"){
					postValues += formElements[i].name + "=" + formElements[i].value + "&";
				}
			}
			
			if (!xml){
					output.innerHTML = "<p>Error Occurred. Please contact ORIX via Contact Us page.";
			}else{
				//prepare the submit string
				xml.open('POST', CONTACT_FORM_URL,false);
				//make sure to add following header to dynamically generated page!!
				xml.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
				xml.send(postValues);
				output.innerHTML = xml.responseText;
				setTimeout(function() {
					jQuery("#" + CONTACT_MSG_ERROR_ID).slideUp(150);					
				}, 4000); //hiding an error/success message, thus returning form to normal view
				xml = null;
			}
		},
		initContactUsEvent: function(selector) {
			_initContactUsEvent(selector);
		},
		openCenteredWindow: function(url, width, height, attributes, winName, completeHandler) {
			return _openCenteredWindow(url, width, height, attributes, winName, completeHandler);
		},
		tooltip: function (selector) {
			jQuery(selector).tooltip({
				tip: "#" + TOOLTIP_CONTAINER_ID,
				onBeforeShow: function() {
					jQuery("#" + TOOLTIP_CONTAINER_ID).html(function(i, html) {
						return "<div class=\"tooltip-top\"></div><div class=\"tooltip-middle\">" + html + "</div><div class=\"tooltip-bottom\"></div>";	  
					});
				}
			}).dynamic(); 	
		},
		lightbox: function(selector, config) {
			jQuery(selector).lightBox(jQuery.extend(LIGHTBOX_CONFIG, config));
		},
		parseWebContent: function(selector) {
			_parseWebContent(selector);	
		},
		getParameter: function(name) {
			name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
			var regexS = "[\\?&]" + name + "=([^&#]*)";
			var regex = new RegExp(regexS);
			var results = regex.exec(window.location.href);
			if (results == null) {
				return null;
			} else {
				return decodeURIComponent(results[1]);
			}
		},
		loadCss: function(href, context) {
			jQuery("head", context).append("<link/>").children(":last").attr({
				"rel": "stylesheet",
				"type": "text/css",
				"href": href
			});
		},
		displayFormErrorMessage: function(message, label) {
			if (label === null || label === undefined) {
				label = "<strong>ERROR OCCURRED: </strong>";
			}
			_displayFormMessage("error", message, label);
		},
		displayFormSuccessMessage: function(message, label, keepMessage) {
			_displayFormMessage("success", message, label, keepMessage);
		},
		setElementError: function(element) {
			jQuery(element).addClass("error");
		},
		removeElementError: function(element) {
			jQuery(element).removeClass("error");
		},
		isValidEmail: function(email) {
			var filter = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
			return filter.test(email);
		},
		fixIESelect: function($select, zIndex) {
			var version = jQuery.browser.version.substr(0, 1);
			var ie6 = jQuery.browser.msie && version == 6;
			var ie7 = jQuery.browser.msie && version == 7;
			if (!ie6 && !ie7) {
				return;
			}
			if (zIndex == null) {
				zIndex = 1;
			}
			var restore = function(event) {
				$this = jQuery(event.currentTarget);
				try {
					$this.unbind("click", restore).unbind("click", openDropdown).unbind("mouseout blur", restore).css("width", $this.data("width")).bind("mouseover", stretch);		} catch (exception) {
				}
			};
			var stretch = function(event) {
				$this = jQuery(event.currentTarget);
				try {
					$this.data("width", $this.outerWidth()).unbind("mouseover", stretch).css("width", "auto").bind("mouseout blur", restore).bind("click", openDropdown);
				} catch (exception) {
				}
			};
			var openDropdown = function(event) {
				$this = jQuery(event.currentTarget);
				try {
					$this.unbind("click", openDropdown).unbind("mouseover", stretch).unbind("mouseout", restore).bind("click", restore);
				} catch (exception) {
				}
			};
			jQuery($select).filter("select").each(function(index) {
				var $this = jQuery(this);
				$this.wrap(jQuery('<div/>').css({
					padding: 0,
					margin: 0,
					overflowX: ie6 ? "hidden" : "visible",
					zIndex: zIndex,
					position: "relative",
					width: $this.outerWidth(),
					display: "inline",
					zoom: 1
				})).bind("mouseover", stretch);
			});
		},
		numeric: function(selector) {
			jQuery(selector).filter('input[type="text"],input[type="password"],textarea').keypress(function(event) {
				var code = (event.keyCode ? event.keyCode : event.which);
				return (code < 32 || (code >= 48 && code <= 57));
			});
		}
	};
}();

//loop through the form, collect values and post them back - FOR CONTACT US FORM ONLY
//this is because the form output is postForm - will be good if we can call Application.submitContactUsForm() directly
function postForm(form) {
	Application.submitContactUsForm(form);
}
