Asia Asset Management
//
// -1) {
func = new Function(functionPrefix + " " + ev);
}
else {
func = new Function("event", functionPrefix + " " + ev);
}
eval("control." + eventType + " = func;");
}
function Anthem_GetXMLHttpRequest() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
} else {
if (window.Anthem_XMLHttpRequestProgID) {
return new ActiveXObject(window.Anthem_XMLHttpRequestProgID);
} else {
var progIDs = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];
for (var i = 0; i < progIDs.length; ++i) {
var progID = progIDs[i];
try {
var x = new ActiveXObject(progID);
window.Anthem_XMLHttpRequestProgID = progID;
return x;
} catch (e) {
}
}
}
}
return null;
}
// This array is used to keep track of clientCallBack functions when using
// an IOFrame to handle callbacks.
var callbackFrames = new Array();
// This function is called by the onload event of the IOFrame after the
// callback response is received. The function parses the response, updates
// the page, and invokes the clientCallBack function.
function Anthem_HandleIOFrameResponse(frameid) {
var iframe = document.getElementById(frameid);
if (iframe != null) {
var doc = Anthem_ExtractIFrameDocument(iframe);
if (doc.getElementsByTagName("textarea").length > 0) {
// Extract the response
var response = { responseText: doc.getElementById("response").value.replace(//, "") };
if (typeof(Anthem_DebugResponseText) == "function") {
Anthem_DebugResponseText(response.responseText);
}
// Parse the response
var result = Anthem_GetResult(response);
if (result.error) {
if (typeof(Anthem_DebugError) == "function") {
Anthem_DebugError(result.error);
}
if (typeof(window.Anthem_Error) == "function") {
Anthem_Error(result);
}
}
// Update the page
Anthem_UpdatePage(result);
// Run the client scripts
Anthem_EvalClientSideScript(result);
// Run the custom post callback function
for (var index in callbackFrames) {
var frame = callbackFrames[index];
if (frame != null && frame.id == frameid) {
callbackFrames.splice(index, 1);
frame.clientCallBack(result, frame.clientCallBackArg);
break;
}
}
// Run the common post callback function
if (typeof(window.Anthem_PostCallBack) == "function") {
Anthem_PostCallBack();
}
}
setTimeout("document.body.removeChild(document.getElementById(\"" + frameid + "\"))", 10);
}
}
// Returns the iframe document
function Anthem_ExtractIFrameDocument(iFrameEl) {
var doc = null;
if (iFrameEl.contentDocument) { // For NS6
doc = iFrameEl.contentDocument;
} else if (iFrameEl.contentWindow) { // For IE5.5 and IE6
doc = iFrameEl.contentWindow.document;
} else if (iFrameEl.document) { // For IE5
doc = iFrameEl.document;
} else {
//alert("Error: could not find iFrame document");
return null;
}
return doc;
}
// Returns the form that is posted back using AJAX
function Anthem_GetForm() {
var form = document.getElementById(Anthem_FormID);
return form;
}
// Returns the URL for callbacks
function Anthem_GetCallBackUrl() {
var form = Anthem_GetForm();
var action = form.action + (form.action.indexOf('?') == -1 ? "?" : "&") + "Anthem_CallBack=true";
return action;
}
function Anthem_CallBack(url, target, id, method, args, clientCallBack, clientCallBackArg, includeControlValuesWithCallBack, updatePageAfterCallBack) {
if (typeof(window.Anthem_PreCallBack) == "function") {
var preCallBackResult = Anthem_PreCallBack();
if (!(typeof preCallBackResult == "undefined" || preCallBackResult)) {
if (typeof(window.Anthem_CallBackCancelled) == "function") {
Anthem_CallBackCancelled();
}
return null;
}
}
var encodedData = "";
if (target == "Page") {
encodedData += "&Anthem_PageMethod=" + method;
} else if (target == "MasterPage") {
encodedData += "&Anthem_MasterPageMethod=" + method;
} else if (target == "Control") {
encodedData += "&Anthem_ControlID=" + id.split(":").join("_");
encodedData += "&Anthem_ControlMethod=" + method;
}
if (args) {
for (var argsIndex = 0; argsIndex < args.length; ++argsIndex) {
if (args[argsIndex] instanceof Array) {
for (var i = 0; i < args[argsIndex].length; ++i) {
encodedData += "&Anthem_CallBackArgument" + argsIndex + "=" + Anthem_Encode(args[argsIndex][i]);
}
} else {
encodedData += "&Anthem_CallBackArgument" + argsIndex + "=" + Anthem_Encode(args[argsIndex]);
}
}
}
if (updatePageAfterCallBack) {
encodedData += "&Anthem_UpdatePage=true";
}
// Anthem will normally use an XmlHttpRequest to communicate with the server.
// But if an Anthem.FileUpload control is discovered on the page, then Anthem
// will use a hidden IFRAME instead. This hidden IFRAME is often called an IOFrame
// by AJAX library authors, so that is the name we use here.
var useIOFrame = false;
// Scan the controls on the form and extract their values.
if (includeControlValuesWithCallBack) {
var form = Anthem_GetForm();
if (form != null) {
for (var elementIndex = 0; elementIndex < form.length; ++elementIndex) {
var element = form.elements[elementIndex];
if (element.name) {
var elementValue = null;
if (element.nodeName.toUpperCase() == "INPUT") {
var inputType = element.getAttribute("type").toUpperCase();
if (inputType == "TEXT" || inputType == "PASSWORD" || inputType == "HIDDEN") {
elementValue = element.value;
} else if (inputType == "CHECKBOX" || inputType == "RADIO") {
if (element.checked) {
elementValue = element.value;
}
} else if (inputType == "FILE") {
// If the FILE element has a value (the path to the file), then an
// IOFrame will be used to handle the callback.
useIOFrame = useIOFrame | !(element.value == null || element.value.length == 0);
}
} else if (element.nodeName.toUpperCase() == "SELECT") {
if (element.multiple) {
elementValue = [];
for (var i = 0; i < element.length; ++i) {
if (element.options[i].selected) {
elementValue.push(element.options[i].value);
}
}
} else if (element.length == 0) {
elementValue = null;
} else {
elementValue = element.value;
}
} else if (element.nodeName.toUpperCase() == "TEXTAREA") {
elementValue = element.value;
}
if (elementValue instanceof Array) {
for (var i = 0; i < elementValue.length; ++i) {
encodedData += "&" + element.name + "=" + Anthem_Encode(elementValue[i]);
}
} else if (elementValue != null) {
encodedData += "&" + element.name + "=" + Anthem_Encode(elementValue);
}
}
}
// ASP.NET 1.1 won't fire any events if neither of the following
// two parameters are not in the request so make sure they're
// always in the request.
if (typeof form.__VIEWSTATE == "undefined") {
encodedData += "&__VIEWSTATE=";
}
if (typeof form.__EVENTTARGET == "undefined") {
encodedData += "&__EVENTTARGET=";
}
}
}
if (encodedData.length > 0) {
encodedData = encodedData.substring(1);
}
if (typeof(Anthem_DebugRequestText) == "function") {
Anthem_DebugRequestText(encodedData.split("&").join("\n&"));
}
// Send the callback request to the server. Use an IOFrame if there is a file upload,
// otherwise use an XmlHttpRequest.
if (useIOFrame) {
// To allow multiple requests at the same time, all of the Anthem parameters are
// passed to the server via the querystring
var action = Anthem_GetCallBackUrl();
action = action + "&Anthem_IOFrame=true";
if (updatePageAfterCallBack) {
action = action + "&Anthem_UpdatePage=true";
}
// We could generate an anonymous function on the fly to handle the clientCallBack
// and assign that to the iframe onload event (in fact this is how XmlHttpRequests are
// handled). But that makes it very hard to debug the callback response. Instead
// we will stuff the clientCallBack function and args into an array and then hard code
// the onload event handler. The handler will find the appropriate callback info in
// the array and handle the clientCallBack.
var id = "f" + new String(Math.floor(9999 * Math.random())); // Generate frame number
if (typeof(clientCallBack) == "function") {
var frame = { "id":id, "clientCallBack":clientCallBack, "clientCallBackArg":clientCallBackArg };
callbackFrames.push(frame);
}
// Create a new, invisible iframe to handle the io.
var ioframe = null;
if (window.ActiveXObject) {
ioframe = document.createElement("");
} else {
ioframe = document.createElement("iframe");
ioframe.id = id;
ioframe.name = id;
ioframe.onload = function (){ Anthem_HandleIOFrameResponse(id); }
}
ioframe.style.visibility = "hidden";
ioframe.style.height = "1px";
document.body.appendChild(ioframe);
// Submit this form in the hidden iframe
var theForm = Anthem_GetForm();
var tempActionUri = theForm.action;
theForm.action = action;
theForm.target = id;
try {
theForm.submit();
} catch (e) {
result = { "value": null, "error": e.message };
if (typeof(Anthem_DebugError) == "function") {
Anthem_DebugError(e.name + ": " + e.message + " (" + e.number + ")");
}
if (typeof(window.Anthem_Error) == "function") {
Anthem_Error(result);
}
}
// Restore the form
theForm.target = "";
theForm.action = tempActionUri;
} else {
var x = Anthem_GetXMLHttpRequest();
var result = null;
if (!x) {
result = { "value": null, "error": "NOXMLHTTP" };
if (typeof(Anthem_DebugError) == "function") {
Anthem_DebugError(result.error);
}
if (typeof(window.Anthem_Error) == "function") {
Anthem_Error(result);
}
if (typeof(clientCallBack) == "function") {
clientCallBack(result, clientCallBackArg);
}
return result;
}
var action = Anthem_GetCallBackUrl();
x.open("POST", url ? url : action, clientCallBack ? true : false);
x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
x.setRequestHeader("Accept-Encoding", "gzip, deflate");
if (typeof(clientCallBack) == "function") {
x.onreadystatechange = function() {
if (x.readyState != 4) {
return;
}
if (typeof(Anthem_DebugResponseText) == "function") {
Anthem_DebugResponseText(x.responseText);
}
result = Anthem_GetResult(x);
if (result.error) {
if (typeof(Anthem_DebugError) == "function") {
Anthem_DebugError(result.error);
}
if (typeof(window.Anthem_Error) == "function") {
Anthem_Error(result);
}
}
if (updatePageAfterCallBack) {
Anthem_UpdatePage(result);
}
Anthem_EvalClientSideScript(result);
clientCallBack(result, clientCallBackArg);
x = null;
if (typeof(window.Anthem_PostCallBack) == "function") {
Anthem_PostCallBack();
}
}
}
x.send(encodedData);
if (typeof(clientCallBack) != "function") {
if (typeof(Anthem_DebugResponseText) == "function") {
Anthem_DebugResponseText(x.responseText);
}
result = Anthem_GetResult(x);
if (result.error) {
if (typeof(Anthem_DebugError) == "function") {
Anthem_DebugError(result.error);
}
if (typeof(window.Anthem_Error) == "function") {
Anthem_Error(result);
}
}
if (updatePageAfterCallBack) {
Anthem_UpdatePage(result);
}
Anthem_EvalClientSideScript(result);
if (typeof(window.Anthem_PostCallBack) == "function") {
Anthem_PostCallBack();
}
}
}
return result;
}
function Anthem_GetResult(x) {
var result = { "value": null, "error": null };
var responseText = x.responseText;
try {
result = eval("(" + responseText + ")");
} catch (e) {
if (responseText.length == 0) {
result.error = "NORESPONSE";
} else {
result.error = "BADRESPONSE";
result.responseText = responseText;
}
}
return result;
}
function Anthem_SetHiddenInputValue(form, name, value) {
var input = null;
if (form[name]) {
input = form[name];
} else {
input = document.createElement("input");
input.setAttribute("name", name);
input.setAttribute("type", "hidden");
}
input.setAttribute("value", value);
var parentElement = input.parentElement ? input.parentElement : input.parentNode;
if (parentElement == null) {
form.appendChild(input);
form[name] = input;
}
}
function Anthem_RemoveHiddenInput(form, name) {
var input = form[name];
if (input != null && typeof(input) != "undefined") {
var parentElement = input.parentElement ? input.parentElement : input.parentNode;
if (parentElement != null) {
form[name] = null;
parentElement.removeChild(input);
}
}
}
function Anthem_FireEvent(eventTarget, eventArgument, clientCallBack, clientCallBackArg, includeControlValuesWithCallBack, updatePageAfterCallBack) {
var form = Anthem_GetForm();
Anthem_SetHiddenInputValue(form, "__EVENTTARGET", eventTarget);
Anthem_SetHiddenInputValue(form, "__EVENTARGUMENT", eventArgument);
Anthem_CallBack(null, null, null, null, null, clientCallBack, clientCallBackArg, includeControlValuesWithCallBack, updatePageAfterCallBack);
form.__EVENTTARGET.value = "";
form.__EVENTARGUMENT.value = "";
}
function Anthem_UpdatePage(result) {
var form = Anthem_GetForm();
if (result.viewState) {
Anthem_SetHiddenInputValue(form, "__VIEWSTATE", result.viewState);
}
if (result.viewStateEncrypted) {
Anthem_SetHiddenInputValue(form, "__VIEWSTATEENCRYPTED", result.viewStateEncrypted);
}
if (result.eventValidation) {
Anthem_SetHiddenInputValue(form, "__EVENTVALIDATION", result.eventValidation);
}
if (result.controls) {
for (var controlID in result.controls) {
var containerID = "Anthem_" + controlID.split("$").join("_") + "__";
var control = document.getElementById(containerID);
if (control) {
control.innerHTML = result.controls[controlID];
if (result.controls[controlID] == "") {
control.style.display = "none";
} else {
control.style.display = "";
}
}
}
}
if (result.pagescript) {
Anthem_LoadPageScript(result, 0);
}
}
// Load each script in order and wait for each one to load before proceeding
function Anthem_LoadPageScript(result, index) {
if (index < result.pagescript.length) {
try {
var script = document.createElement('script');
script.type = 'text/javascript';
if (result.pagescript[index].indexOf('src=') == 0) {
script.src = result.pagescript[index].substring(4);
} else {
if (script.canHaveChildren ) {
script.appendChild(document.createTextNode(result.pagescript[index]));
} else {
script.text = result.pagescript[index];
}
}
var heads = document.getElementsByTagName('head');
if (heads != null && typeof(heads) != "undefined" && heads.length > 0) {
var head = heads[0];
// The order that scripts appear is important since later scripts can
// redefine a function. Therefore it is important to add every script
// to the page and in the same order that they were added on the server.
// On the other hand, if we just keep adding scripts the DOM will grow
// unnecessarily. This code scans the element block and removes
// previous instances of the identical script.
var found = false;
for (var child = 0; child < head.childNodes.length; child++) {
var control = head.childNodes[child];
if (typeof(control.tagName) == "string") {
if (control.tagName.toUpperCase() == "SCRIPT") {
if (script.src.length > 0) {
if (script.src == control.src) {
found = true;
break;
}
} else if (script.innerHTML.length > 0) {
if (script.innerHTML == control.innerHTML) {
found = true;
break;
}
}
}
}
}
if (found) {
head.removeChild(control);
}
// Now we append the new script and move on to the next script.
// Note that this is a recursive function. It stops when the
// index grows larger than the number of scripts.
document.getElementsByTagName('head')[0].appendChild(script);
if (typeof script.readyState != "undefined") {
script.onreadystatechange = function() {
if (script.readyState != "complete" && script.readyState != "loaded") {
return;
} else {
Anthem_LoadPageScript(result, index + 1);
}
}
} else {
Anthem_LoadPageScript(result, index + 1);
}
}
} catch (e) {
if (typeof(Anthem_DebugError) == "function") {
Anthem_DebugError("Error adding page script to head. " + e.name + ": " + e.message);
}
}
}
}
function Anthem_EvalClientSideScript(result) {
if (result.script) {
for (var i = 0; i < result.script.length; ++i) {
try {
eval(result.script[i]);
} catch (e) {
alert("Error evaluating client-side script!\n\nScript: " + result.script[i] + "\n\nException: " + e);
}
}
}
}
//Fix for bug #1429412, "Reponse callback returns previous response after file push".
//see http://sourceforge.net/tracker/index.php?func=detail&aid=1429412&group_id=151897&atid=782464
function Anthem_Clear__EVENTTARGET() {
var form = Anthem_GetForm();
Anthem_SetHiddenInputValue(form, "__EVENTTARGET", "");
}
function Anthem_InvokePageMethod(methodName, args, clientCallBack, clientCallBackArg) {
Anthem_Clear__EVENTTARGET(); // fix for bug #1429412
return Anthem_CallBack(null, "Page", null, methodName, args, clientCallBack, clientCallBackArg, true, true);
}
function Anthem_InvokeMasterPageMethod(methodName, args, clientCallBack, clientCallBackArg) {
Anthem_Clear__EVENTTARGET(); // fix for bug #1429412
return Anthem_CallBack(null, "MasterPage", null, methodName, args, clientCallBack, clientCallBackArg, true, true);
}
function Anthem_InvokeControlMethod(id, methodName, args, clientCallBack, clientCallBackArg) {
Anthem_Clear__EVENTTARGET(); // fix for bug #1429412
return Anthem_CallBack(null, "Control", id, methodName, args, clientCallBack, clientCallBackArg, true, true);
}
function Anthem_PreProcessCallBack(
control,
e,
eventTarget,
causesValidation,
validationGroup,
imageUrlDuringCallBack,
textDuringCallBack,
enabledDuringCallBack,
preCallBackFunction,
callBackCancelledFunction,
preProcessOut
) {
var valid = true;
if (causesValidation && typeof(Page_ClientValidate) == "function") {
valid = Page_ClientValidate(validationGroup);
}
if (typeof(WebForm_OnSubmit) == "function") {
valid = WebForm_OnSubmit();
}
if (valid) {
var preCallBackResult = true;
if (typeof(preCallBackFunction) == "function") {
preCallBackResult = preCallBackFunction(control, e);
}
if (typeof(preCallBackResult) == "undefined" || preCallBackResult) {
var inputType = control.getAttribute("type");
inputType = (inputType == null) ? '' : inputType.toUpperCase();
if (inputType == "IMAGE" && e != null) {
var form = Anthem_GetForm();
if (e.offsetX) { // IE
Anthem_SetHiddenInputValue(form, eventTarget + ".x", e.offsetX);
Anthem_SetHiddenInputValue(form, eventTarget + ".y", e.offsetY);
} else { // FireFox + ???
var offset = GetControlLocation(control);
Anthem_SetHiddenInputValue(form, eventTarget + ".x", e.clientX - offset.x + 1 + window.pageXOffset);
Anthem_SetHiddenInputValue(form, eventTarget + ".y", e.clientY - offset.y + 1 + window.pageYOffset);
}
}
if (imageUrlDuringCallBack || textDuringCallBack) {
var nodeName = control.nodeName.toUpperCase();
if (nodeName == "INPUT") {
if (inputType == "CHECKBOX" || inputType == "RADIO" || inputType == "TEXT") {
preProcessOut.OriginalText = GetLabelText(control.id);
SetLabelText(control.id, textDuringCallBack);
} else if (inputType == "IMAGE") {
if (imageUrlDuringCallBack) {
preProcessOut.OriginalText = control.src;
control.src = imageUrlDuringCallBack;
} else {
preProcessOut.ParentElement = control.parentElement ? control.parentElement : control.parentNode;
if (preProcessOut.ParentElement) {
preProcessOut.OriginalText = preProcessOut.ParentElement.innerHTML;
preProcessOut.ParentElement.innerHTML = textDuringCallBack;
}
}
} else if (inputType == "SUBMIT" || inputType == "BUTTON") {
preProcessOut.OriginalText = control.value;
control.value = textDuringCallBack;
}
} else if (nodeName == "SELECT" || nodeName == "SPAN") {
preProcessOut.OriginalText = GetLabelText(control.id);
SetLabelText(control.id, textDuringCallBack);
} else {
preProcessOut.OriginalText = control.innerHTML;
control.innerHTML = textDuringCallBack;
}
}
// Disable the control during callback if required
control.disabled = (typeof(enabledDuringCallBack) == "undefined") ? false : !enabledDuringCallBack;
return true;
} else {
// Callback cancelled
if (typeof(callBackCancelledFunction) == "function") {
callBackCancelledFunction(control, e);
}
return false;
}
} else {
// Validation failed
return false;
}
}
function Anthem_PreProcessCallBackOut() {
// Fields
this.ParentElement = null;
this.OriginalText = '';
}
function Anthem_PostProcessCallBack(
result,
control,
e,
eventTarget,
clientCallBack,
clientCallBackArg,
imageUrlDuringCallBack,
textDuringCallBack,
postCallBackFunction,
preProcessOut
) {
if (typeof(postCallBackFunction) == "function") {
postCallBackFunction(control, e);
}
// Re-enable the control if it was disabled during callback
control.disabled = false;
var inputType = control.getAttribute("type");
inputType = (inputType == null) ? '' : inputType.toUpperCase();
if (inputType == "IMAGE") {
var form = Anthem_GetForm();
Anthem_RemoveHiddenInput(form, eventTarget + ".x");
Anthem_RemoveHiddenInput(form, eventTarget + ".y");
}
if (imageUrlDuringCallBack || textDuringCallBack) {
var nodeName = control.nodeName.toUpperCase();
if (nodeName == "INPUT") {
if (inputType == "CHECKBOX" || inputType == "RADIO" || inputType == "TEXT") {
SetLabelText(control.id, preProcessOut.OriginalText);
} else if (inputType == "IMAGE") {
if (imageUrlDuringCallBack) {
control.src = preProcessOut.OriginalText;
} else {
preProcessOut.ParentElement.innerHTML = preProcessOut.OriginalText;
}
} else if (inputType == "SUBMIT" || inputType == "BUTTON") {
control.value = preProcessOut.OriginalText;
}
} else if (nodeName == "SELECT" || nodeName == "SPAN") {
SetLabelText(control.id, preProcessOut.OriginalText);
} else {
control.innerHTML = preProcessOut.OriginalText;
}
}
if (typeof(clientCallBack) == "function") {
clientCallBack(result, clientCallBackArg);
}
}
function Anthem_FireCallBackEvent(
control,
e,
eventTarget,
eventArgument,
causesValidation,
validationGroup,
imageUrlDuringCallBack,
textDuringCallBack,
enabledDuringCallBack,
preCallBackFunction,
postCallBackFunction,
callBackCancelledFunction,
includeControlValuesWithCallBack,
updatePageAfterCallBack
) {
// Cancel the callback if the control is disabled. Although most controls will
// not raise their callback event if they are disabled, the LinkButton will.
// This check is for the LinkButton. See SourceForge Patch 1639700.
if (control.disabled) return;
var preProcessOut = new Anthem_PreProcessCallBackOut();
var preProcessResult = Anthem_PreProcessCallBack(
control,
e,
eventTarget,
causesValidation,
validationGroup,
imageUrlDuringCallBack,
textDuringCallBack,
enabledDuringCallBack,
preCallBackFunction,
callBackCancelledFunction,
preProcessOut
);
if (preProcessResult) {
var eventType = e.type;
Anthem_FireEvent(
eventTarget,
eventArgument,
function(result) {
Anthem_PostProcessCallBack(
result,
control,
eventType,
eventTarget,
null,
null,
imageUrlDuringCallBack,
textDuringCallBack,
postCallBackFunction,
preProcessOut
);
},
null,
includeControlValuesWithCallBack,
updatePageAfterCallBack
);
}
}
function AnthemListControl_OnClick(
e,
causesValidation,
validationGroup,
textDuringCallBack,
enabledDuringCallBack,
preCallBackFunction,
postCallBackFunction,
callBackCancelledFunction,
includeControlValuesWithCallBack,
updatePageAfterCallBack
) {
var target = e.target || e.srcElement;
if (target.nodeName.toUpperCase() == "LABEL" && target.htmlFor != '')
return;
var eventTarget = target.id.split("_").join("$");
Anthem_FireCallBackEvent(
target,
e,
eventTarget,
'',
causesValidation,
validationGroup,
'',
textDuringCallBack,
enabledDuringCallBack,
preCallBackFunction,
postCallBackFunction,
callBackCancelledFunction,
true,
true
);
}
// Returns the top, left control location in FireFox
function GetControlLocation(control) {
var offsetX = 0;
var offsetY = 0;
var parent;
for (parent = control; parent; parent = parent.offsetParent) {
if (parent.offsetLeft) {
offsetX += parent.offsetLeft;
}
if (parent.offsetTop) {
offsetY += parent.offsetTop;
}
}
return { x: offsetX, y: offsetY };
}
function GetLabelText(id) {
var labels = document.getElementsByTagName('label');
for (var i = 0; i < labels.length; i++) {
if (labels[i].htmlFor == id) {
return labels[i].innerHTML;
}
}
return null;
}
function SetLabelText(id, text) {
var labels = document.getElementsByTagName('label');
for (var i = 0; i < labels.length; i++) {
if (labels[i].htmlFor == id) {
labels[i].innerHTML = text;
return;
}
}
}
// Used by encodeURIComponentNew to mimic function encodeURIComponent in
// IE 5.5+, Netscape 6+, and Mozilla
function utf8(wide) {
var c, s;
var enc = "";
var i = 0;
while(i=0xDC00 && c=0xD800 && c=wide.length) continue;
s= wide.charCodeAt(i++);
if (s=0xDE00) continue;
c= ((c-0xD800)>6&0x3F),0x80+(c&0x3F));
else enc += String.fromCharCode(0xF0+(c>>18),0x80+(c>>12&0x3F),0x80+(c>>6&0x3F),0x80+(c&0x3F));
}
return enc;
}
var hexchars = "0123456789ABCDEF";
function toHex(n) {
return hexchars.charAt(n>>4)+hexchars.charAt(n & 0xF);
}
var okURIchars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-";
// Mimics function encodeURIComponent in IE 5.5+, Netscape 6+, and Mozilla
function encodeURIComponentNew(s) {
var s = utf8(s);
var c;
var enc = "";
for (var i= 0; i
Account Login
Please login to access your asiaasset.com account.
Login ID:
*
Password:
*
Forgot your password?
Remember me on this computer.
Submit
Cancel
Home
Current IssueEventsUpcoming EventsPast EventsBest of The Best AwardsSubscriptionAbout UsCompanyMedia KitContact UsWhite PapersPublicationsGalleryBest of the Best AwardsRoundtables 2008Roundtables 2007Roundtables 2006
Login
Last Updated: 7/29/2008 4:19 PM
Search
News Update
HSBC to raise stake in Vietnam’s Techcombank to 20%
August 28, 2008
HSBC will become the first foreign bank in Vietnam to hold a 20% interest in a domestic bank as it increases its stake in Vietnam Technological and Commercial Joint Stock Bank (Techcombank) from 14.4% to 20% for a total consideration of VND1,272 billion (US$77.1 million). The transaction follows the...
RREEF Korea sells Daewoo Securities building in Seoul
August 27, 2008
RREEF Alternative Investments, the global alternative investment management arm of Deutsche Bank, has on behalf of one of its offshore real estate investment funds sold the Daewoo Securities office building in Seoul for Korean Won 181 billion (US$167 million) to the property’s primary tenant, Daewoo...
HSBC Amanah Malaysia Berhad now open for business
August 27, 2008
HSBC Amanah Malaysia Berhad (HSBC Amanah Malaysia) is now open for business. The new fully fledged Islamic Bank, a wholly owned subsidiary of HSBC Bank Malaysia Berhad (HSBC Bank) and licensed under the Islamic Banking Act 1983, commenced its operations on August 24, 2008. “This licence allows HSBC...
Fortis to sell ABN AMRO TEDA share to Old Mutual
August 27, 2008
Fortis Bank, Old Mutual plc and Tianjin TEDA Investment Holding Co Ltd have entered into an agreement for Old Mutual to acquire the 49% stake that Fortis holds in ABN AMRO TEDA Fund Management Co Ltd, a major Chinese asset management joint venture, for a cash consideration of approximately EUR 165...
Russell makes senior appointments as it expands Asian operations
August 26, 2008
Global investment company Russell Investments has announced the appointment of a number of senior hires in its regional office in Singapore. These appointments are a result of the company’s plans to provide regional clients with country-specific specialists as well as set up dedicated Asian-based...
JPMorgan and IFC join forces to boost trade finance in Asia-Pacific
August 26, 2008
JPMorgan and IFC, a member of the World Bank Group, have announced that they have jointly launched an innovative trade finance structure in Asia and the Pacific to help facilitate and boost trade activities in the region. The funded trade advance, a component of the IFC Global Trade Finance...
Templeton opens rep office in Ho Chi Minh City
August 25, 2008
Templeton Asset Management Ltd has announced the establishment of a representative office in Ho Chi Minh City, underscoring its commitment to the financial services sector in Vietnam. This representative office will focus on emerging markets investment research as well as the promotion of financial...
New Fortis Private Banking Asia leadership announced
August 25, 2008
With preparations of the integration of ABN AMRO Private Banking into Fortis well on track in Asia, Fortis has announced the new private banking Asia leadership team for the combined private bank, which will take effect from January 1, 2009. The new management team has collectively accumulated over...
Fortis Investments' half-year results
August 25, 2008
Net commissions and fees decreased in the second quarter, leading to a year-to-date figure of EUR 297 million due to a negative market effect, net outflows and a change in product mix from high-margin (equity and fixed income) to low-margin (money market) products across all key geographies. Despite...
Asiaasset.com now one simple plan
Register now! 3-DAY TRIAL SUBSCRIPTION »
Now you can get access to an unparalleled level of business and investment information more easily with asiaasset.com's new simple plan. One affordable annual fee gives you:All the articles you need: With many sources, including Country Reports, the 13-year archive of Asia Asset Management.Digital Edition: Asia Asset Management's digital edition, the convenient online version of the paper exactly as it appears in print.So don't delay, subscribe to asiaasset.com today. Sign up now for a free 3-day trial ** Conditions apply.
Subscriber Content
White Papers
In-sourcing on the increase due to demand for alpha
July 29, 2008
FMs save on brokerage commissions
Steer towards customised indexes to evaluate portfolios
July 29, 2008
Structured products satisfy individual institutional requirements By Samuel RidingThe use of indexes by major Asian institutions is a hot topic of late, with last month's news that MSCI scored a major coup in being hired to provide five international equities as performance benchmarks for externally...
Petroleum fund prepares to diversify
July 29, 2008
Plans to become a full-fledged sovereign wealth fund
JPM builds sub-custody platform
July 29, 2008
Global custodian JPMorgan is building a sub-custodian capability in India, a new strategy to meet the growing demand of its institutional investors who are investing into the sub-continent. Expected to be fully operational by the end of 2008, the Indian sub-custody business in India will complement...
Asian growth expected to remain resilient
July 29, 2008
When it comes to Asian financial markets, State Street views the cup as half full rather than half empty. In its global and economic outlook for the second half of 2008, State Street Global Advisors (SSGA) remains optimistic that Asian markets will show resiliency amid the ongoing global slowdown....
Go to complete list
If you are a financial professional interested in contributing articles or recent research works, please email us at enquiries@asiaasset.com or call (852) 2547 7331. All submissions will be subject to the discretion of the publisher. Disclaimer: Please be aware that Asia Asset Management does not control or guarantee the accuracy, relevance, timeliness, or completeness of this outside information. With respect to documents available from this section, neither Asia Asset Management nor any of its employees assumes any legal liability or responsibility for the accuracy, completeness, or usefulness of any information disclosed, nor does it guarantee that its use would not infringe privately owned rights. Information available and views expressed on the White Papers section do not, in any way, reflect the opinion of Asia Asset Management, its publisher or any of its employees.Click here for more information.
Highlights
- China Roundtable 2008 (Shenzhen)
--[[insert more here]] Welcome to Asia Asset Management Asia Asset Management is Asia's oldest monthly journal covering the institutional investment management and pension markets. Each month, Asia Asset Management delivers news, analysis and reports on the activities of institutional investors.Read more... --[[insert more here]] Current Issue - July 2008 Vol. 13 No. 7 The easing of restrictions for Taiwanese mutual funds to invest in PRC stocks and those listed on the Hong Kong exchange (red chips and H-shares) have taken years to materialise. As announced by the Taiwanese cabinet earlier this month, mutual funds in Taiwan can invest up to 10% in the share market (up from a measly 0.4% before) while removing the 10% limit on investing in red chips and H-shares. Read more... --[[insert more here]] --[[insert more here]]
Previous
Next
Most Popular
Most Emailed
Taiwan funds receive boost
Fidelity pushes for more Asian institutional business
Directory of Manager Appointments & Searches
Customisation is king
JPM builds sub-custody platform
Mutual funds investing in overseas markets
Asian growth expected to remain resilient
EPFO appoints three private managers
Petroleum fund prepares to diversify
In-sourcing on the increase due to demand for alpha
Go to complete list
Global custodians beef up capabilities
Taiwan funds receive boost
Gold as a safe bet
Fortis: Equities can stage a rebound
New managing director for Vanguard in Asia
Directory of Manager Appointments and Searches
EPFO appoints three private managers
Go to complete list
Terms of Service | Privacy
Information | Sitemap | XHTML 1.0
| Site Help | Copyright © 2008 Asia Asset Management.
All Rights Reserved.
Produced by Javacatz
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src="http://www.asiaasset.com//" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
var pageTracker = _gat._getTracker("UA-773571-48");
pageTracker._initData();
pageTracker._trackPageview();
|
|