function HUBRIS_getCall(namespace, url1, url2, isOnLoad) {
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
    }
	if (isOnLoad)
		req.open("POST", url1, true);
    else 
		req.open("POST", url2 + "&stockCode=" + document.getElementsByName(namespace + "stockCode")[0].value + "&SuppressAlert=" + document.getElementsByName(namespace+"SuppressAlert")[0].value, true);
    req.onreadystatechange = window[namespace + "callback"];
    req.send(null);
	document.getElementsByName(namespace + "stockCode")[0].disabled = true;
}


function HUBRIS_processCallback(namespace, msg1, msg2) {
	var display1 = document.getElementById(namespace + "display_1");
	var display2 = document.getElementById(namespace + "display_2");
	var wait = "....";
	display1.innerHTML= msg1 + wait.substring(0,req.readyState);

    if (req.readyState == 4) {
		var camLevel="";
		var language="en";
		var msg3='<table class="hsbcTableStyle02" style="margin-top:0px;margin-bottom:0px;"/>';
		document.getElementsByName(namespace + "stockCode")[0].disabled = false;
        if (req.status == 200 && req.responseText != null) {

            // update the HTML DOM based on whether or not message is valid
				var str = req.responseText;
				var x1 = str.indexOf("<!--\"DISPLAY1\"-->");
				var y1 = str.indexOf("<!--\"/DISPLAY1\"-->");
				var x2 = str.indexOf("<!--\"DISPLAY2\"-->");
				var y2 = str.indexOf("<!--\"/DISPLAY2\"-->");
				var c1 = str.indexOf("<!--\"/1/");
				var c2 = str.indexOf("/1/\"-->");
				var a1 = str.indexOf("<!--\"/2/");
				var a2 = str.indexOf("/2/\"-->");
				var s1 = str.indexOf("<!--\"/4/");
				var s2 = str.indexOf("/4/\"-->");
									
				if(x1==-1 || y1==-1 || x2==-1 || y2==-1 || c1 ==-1 || c2 ==-1 || a1==-1 || a2==-1 || s1==-1 || s2==-1){
				    //received string error
	        		display1.innerHTML = msg2;
	        		display2.innerHTML = msg3;
	        		HUBRIS_jsfTriggerInputFieldText("jsIdStockCode");
	        		document.getElementsByName(namespace + "stockCode")[0].blur();
	        		return;
				}
				if(c2-8>c1)document.getElementsByName(namespace + "stockCode")[0].value = str.substring(c1+8, c2);
				document.getElementById(namespace + "searchAction").href = str.substring(a1+8, a2);
				document.getElementsByName(namespace + "SuppressAlert")[0].value = str.substring(s1+8,s2);
				display1.innerHTML = str.substring(x1, y1);
				display2.innerHTML = str.substring(x2, y2);

				//get camlevel from backEnd
				var cam1 = str.indexOf("HUBRIS_HSBC.SITE.cam=\"");
				var cam2 = str.indexOf("\";" , cam1);
				if(cam1!=-1) camLevel=str.substring(cam1+15,cam2);
				//get language from backEnd
				var lan1 = str.indexOf("HUBRIS_HSBC.SITE.language=\"");
				var lan2 = str.indexOf("\";" , lan1);
				if(lan1!=-1) language=str.substring(lan1+20,lan2);
				//logging to HUBRIS_WT
				var isOnLoad = window[namespace + "isOnLoad"];
				if(!isOnLoad)	HUBRIS_logToWT(language, camLevel);

				HUBRIS_jsfTriggerInputFieldText("jsIdStockCode");
				document.getElementsByName(namespace + "stockCode")[0].blur();
				//popup if received popup tag
				if(isOnLoad) {
				    window[namespace + "isOnLoad"] = false;
				}
				else if(str.indexOf("<!--\"POPUP_EXCEED_QUOTE/\"-->") != -1 && (str.indexOf("<!--\"/3/")!=-1) && (str.indexOf("/3/\"-->")!=-1)) {
					HUBRIS_popup_exceed_quickQuote(str.substring(str.indexOf("<!--\"/3/")+8, str.indexOf("/3/\"-->")), namespace, document.getElementsByName(namespace + "stockCode")[0].value);
				}
        } else {
        	//receive code error
	        display1.innerHTML = msg2;
	        display2.innerHTML = msg3;
	        HUBRIS_jsfTriggerInputFieldText("jsIdStockCode");
	        document.getElementsByName(namespace + "stockCode")[0].blur();
	        return;
	    }
    }
}


function HUBRIS_popup_exceed_quickQuote(link , nameSpace, stockCode){
	var code = "&namespace=" + nameSpace + "&stockCode=" + stockCode;
	if (navigator.appName=="Netscape"){
		var bw=window.open(link+code,'popup',"ScreenX=210,ScreenY=90,width=388,height=188,resizable=yes,scrollbars=no,status=no");
	}
	else{
		var bw=window.open(link+code,'popup',"left=210,top=90,width=388,height=188,resizable=yes,scrollbars=no,status=no");
	}
	if (bw.opener == null){
		bw.opener=self;
	}
	bw.focus();
	bw.topFrame=parent.TopFrame;	// the popup window can redirect page to top frame by using this property
}

function HUBRIS_dcsMapHSBC_QuickQuote() {
	for (N in HUBRIS_HSBC) {
		if (N == "SITE")  {
			for (S in HUBRIS_HSBC.SITE) {
				if (S != "logon" &&  S!= "registration")
					HUBRIS_DCSext[S] = HUBRIS_HSBC.SITE[S];
				else
					HUBRIS_DCSext[S] = undefined;
			}
		}
		if (N == "PAGE") {
			for (S in HUBRIS_HSBC.PAGE) {
				if (S != "seg_1" && S != "seg_2" && S!="seg_3" && S!="seg_4" && S!="tx_u" && S!="tx_e" && S!="tx_s")
					HUBRIS_WT[S] = HUBRIS_HSBC.PAGE[S];
				else
					HUBRIS_WT[S] = undefined;
			}
		}
		if (N == "EXT") {
			for (S in HUBRIS_HSBC.EXT) {
				HUBRIS_DCSext[S] = HUBRIS_HSBC.EXT[S];
			}
		}
		if (N == "LOG") {
			for (S in HUBRIS_HSBC.LOG) {
				HUBRIS_DCS[S] = HUBRIS_HSBC.LOG[S];
			}
		}
		if (N == "HUBRIS_DCS") {
			HUBRIS_gDcsId = HUBRIS_HSBC.DCS.ID;
		}
	}
}

function HUBRIS_logToWT(language, camLevel) {
	if (typeof(HUBRIS_HSBC) !=  "undefined") {
		HUBRIS_DCSext.HSBC_ad = undefined;
		HUBRIS_DCSext.HSBC_au = undefined;
		HUBRIS_DCSext.HSBC_ae = undefined;
		HUBRIS_HSBC.LOG.dcsuri = "/MiQuickQuotePortlet/cmd_miquickquote";
		HUBRIS_HSBC.SITE.custgrp="PFS";
		HUBRIS_HSBC.SITE.busline="Investments";
		HUBRIS_HSBC.SITE.prodline="Investments";
		HUBRIS_HSBC.SITE.language=language;
		HUBRIS_HSBC.SITE.cam=camLevel;
		HUBRIS_HSBC.SITE.site="IB";
		HUBRIS_HSBC.PAGE.cg_n="IB;PIB";
		HUBRIS_HSBC.PAGE.pn_sku="AMH-QuickQuotewireframe";
		HUBRIS_HSBC.EXT.HSBC_u="1";
		HUBRIS_HSBC.EXT.HSBC_e="apst";
		HUBRIS_HSBC.PAGE.si_n="ProdConvAll";
		HUBRIS_HSBC.PAGE.si_x="2";
	}
	
	HUBRIS_DCSext.dcsVersion = "7.5.1";
	HUBRIS_DCSext.HSBCCookie = HUBRIS_dcsGetHSBCCookie('HSBC_COOKIEMI');
	HUBRIS_dcsVar();
	HUBRIS_dcsMapHSBC_QuickQuote();
	HUBRIS_dcsMeta();
	HUBRIS_dcsFunc("HUBRIS_dcsAdv");
	HUBRIS_dcsTag();
}
