function processMbox(strMboxDivID, strTargetDivID, strSnippetSelector, strErrorHandlerFunction) {
	var mboxDefault, strMboxContents, strMboxSnippetURL, strProtocol;
	//Get the host root
	var strURL = window.location.href.toLowerCase();
	re = /^https?:\/\/(www\.)?([^/]+)?/i;
	strURL.match( re );
	var arrDomainSpecificSites = new Array("australia/en/","newzealand/en/","cambodia/");
	var strWCMContextRoot = "/cp/wcm/";
	var strConnectServlet = "cp/wcm/connect/";
	var strConnectServletAuth = "cp/wcm/myconnect/";
	var strHost = RegExp.$1 + RegExp.$2;
	switch (document.location.protocol){
		case "https:" : 
			strProtocol = "https:";
			break;
		default: 
			strProtocol = "http:";
	}
	var strMboxURLRoot = strProtocol + "//" + strHost + "/";
	// Check if host is a WCM portlet
	if(strURL.indexOf(strWCMContextRoot) > -1){
		if(strURL.indexOf(strConnectServlet) > -1){
			strMboxURLRoot = strMboxURLRoot + strConnectServlet;
		} else if(strURL.indexOf(strConnectServletAuth) > -1) {
			strMboxURLRoot = strMboxURLRoot + strConnectServletAuth;
		}
		// Tailor the root for domain specific sites 
		for(i=0;i<arrDomainSpecificSites.length;i++){
			if(strURL.indexOf(strMboxURLRoot + arrDomainSpecificSites[i]) > -1){
				strMboxURLRoot = strMboxURLRoot + arrDomainSpecificSites[i];
				break;
			}
		}
	}
	try {
		// Get relative URL path to snippet from mbox
		strMboxContents = $(strMboxDivID).text();
		var whlist = /[^\w\.\/\-]/;
		if(strMboxContents != "" && !whlist.test(strMboxContents)){
				$(strMboxDivID).remove(); // Remove the original mbox content
				strMboxSnippetURL = strMboxURLRoot + strMboxContents;
				// Retrieve snippet
				$.ajax({
					url: strMboxSnippetURL,
					dataType: "html",
					success: function(response) {
						// Validate response with snippet selector	
						response = "<div>"+response+"</div>";
						if($(strSnippetSelector, $(response)).length > 0){
							var snippet = $(strSnippetSelector, $(response));
							// Manual manipulation required to retrieve complete outer HTML of snippet due to jQuery's removal of script tags
							var strSnippetInnerHTML = snippet.html();
							var d=document.createElement('div');
							var snippetClone = snippet.eq(0).clone().empty(); 
							d.appendChild(snippetClone[0]);
							var strSnippetOuterHTMLWrapper = d.innerHTML;
							arrTagContents = strSnippetOuterHTMLWrapper.split("<");
							if(arrTagContents.length > 1){
								var strSnippetHTML = "<" + arrTagContents[1] + strSnippetInnerHTML;
								if(arrTagContents.length > 2){
									strSnippetHTML = strSnippetHTML + "<" + arrTagContents[2];		
								}
								// Load snippet in target
								$(strTargetDivID).html(strSnippetHTML);
							}
						} 
					},
					complete: function() {
						// Check target has been loaded successfully
						if($(strTargetDivID + " " + strSnippetSelector).length == 0){
							eval(strErrorHandlerFunction); // Load default on error
						}
					}
				});
		} else {	
			$(strMboxDivID).remove(); // Remove the original mbox content
			eval(strErrorHandlerFunction); // Load default on empty mbox
		}
	} catch (err) {	
		$(strMboxDivID).remove(); // Remove the original mbox content
		eval(strErrorHandlerFunction); // Load default on error
	}
}

