// added by someone outside HW
function openiBank(lang) {
window.open("https://ibanking.cncbinternational.com")
}
HW = {};
HW.HeaderLoginLinks = {
config:{
idLogin:"jsHeaderLogin",
classLoginPersonal:"jsHeaderLoginPersonal",
classLoginCITICfirst:"jsHeaderLoginCITICfirst",
classLoginCorporates:"jsHeaderLoginCorporates",
classLoginItem:"jsHeaderLoginItem",
classLoginBusiness:"jsHeaderLoginBusiness"
},
CKWB_win:null,
// this openIBank function is carried from existing JavaScript code
openIBank:function(url){
var BrowserName = navigator.appName;
var BrowserVersion = parseInt(navigator.appVersion);
var BrowserHeight2 = screen.height-150;
var BrowserWidth2 = screen.width-30;
var CKWB_win = this.CKWB_win;
// by CBI ITD Start
if (url=="https://ibanking.cncbinternational.com/CKWPortal/appmanager/Portal/CKWPerson?displayLang=en_US") {
url = "https://ibanking.cncbinternational.com/CKWPortal/resources/index.jsp?isPPB=0&displayLang=en_US";
} else if (url=="https://ibanking.cncbinternational.com/CKWPortal/appmanager/Portal/CKWPerson?isPPB=1&displayLang=en_US") {
url = "https://ibanking.cncbinternational.com/CKWPortal/resources/index.jsp?isPPB=1&displayLang=en_US";
} else if (url=="https://ibanking.cncbinternational.com/CKWPortal/appmanager/Portal/CKWPerson?displayLang=zh_HK") {
url = "https://ibanking.cncbinternational.com/CKWPortal/resources/index.jsp?isPPB=0&displayLang=zh_HK";
} else if (url=="https://ibanking.cncbinternational.com/CKWPortal/appmanager/Portal/CKWPerson?isPPB=1&displayLang=zh_HK") {
url = "https://ibanking.cncbinternational.com/CKWPortal/resources/index.jsp?isPPB=1&displayLang=zh_HK";
} else if (url=="https://ibanking.cncbinternational.com/CKWPortal/appmanager/Portal/CKWPerson?displayLang=zh_CN") {
url = "https://ibanking.cncbinternational.com/CKWPortal/resources/index.jsp?isPPB=0&displayLang=zh_CN";
} else if (url=="https://ibanking.cncbinternational.com/CKWPortal/appmanager/Portal/CKWPerson?isPPB=1&displayLang=zh_CN") {
url = "https://ibanking.cncbinternational.com/CKWPortal/resources/index.jsp?isPPB=1&displayLang=zh_CN";
}
// by CBI ITD End
if(!CKWB_win || CKWB_win.closed) {
CKWB_win = window.open(url,"CKWBPerson1","toolbar=0,width="+BrowserWidth2+",height="+BrowserHeight2+",status=1,scrollbars=1,resizable=1,menubar=0,top=0,left=0");
}else{ CKWB_win.focus(); }
this.CKWB_win = CKWB_win;
},
init:function(){
var obj = this;
var config = obj.config;
var login = $("#"+config.idLogin);
// check if header login exists
if(!login.length) return;
// Corporate login
var loginCorporates = login.find("."+config.classLoginCorporates);
if(loginCorporates.length){
loginCorporates.click(function(e){
e.preventDefault();
window.open($(this).attr("href"),"popup","top=0,left=0,toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=no,resizable=yes,width=800,height=600",true);
});
}
// Personal login
var loginPersonal = login.find("."+config.classLoginPersonal);
if(loginPersonal.length){
loginPersonal.click(function(e){
e.preventDefault();
window.open($(this).attr("href"),"popup","top=0,left=0,toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=no,resizable=yes",true);
});
}
// CITICfirst login
var loginCITICfirst = login.find("."+config.classLoginCITICfirst);
if(loginCITICfirst.length){
loginCITICfirst.click(function(e){
e.preventDefault();
window.open($(this).attr("href"),"popup","top=0,left=0,toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=no,resizable=yes",true);
});
}
// Header login items
var loginItems = login.find("."+config.classLoginItem);
loginItems.click(function(e){
e.preventDefault();
window.open($(this).attr("href"),"popup","top=0,left=0,toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=no,resizable=yes",true);
});
// Business login items
var loginBusiness = login.find("."+config.classLoginBusiness);
loginBusiness.click(function(e){
e.preventDefault();
window.open($(this).attr("href"),"popup","top=0,left=0,toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=no,resizable=yes",true);
});
}
}
HW.HeaderLogin = {
config:{
idLogin:"jsHeaderLogin",
classLogin:"jsHeaderLogin",
classButton:"jsHeaderLoginButton",
classSelected:"jsHeaderLoginSelected"
},
hideMenu:function(params){
var config = this.config;
var login = params.login || [];
var menu = params.menu || [];
// no progress if login or menu does not exist
if(!login.length || !menu.length) return;
login.removeClass(config.classSelected);
menu.hide();
},
showMenu:function(params){
var config = this.config;
var login = params.login || [];
var menu = params.menu || [];
// no progress if login or menu does not exist
if(!login.length || !menu.length) return;
login.addClass(config.classSelected);
menu.show();
},
init:function(){
var self = this;
var config = self.config;
var login = $("#"+config.idLogin);
// check if header login exists
if(!login.length) return;
login.addClass(config.classLogin);
var button = login.find("."+config.classButton);
var menu = login.find("ul");
// check if the login submenu exists
if(!menu.length || !button.length) return;
// hide the menu initially
menu.hide();
button.click(function(e){
e.preventDefault();
// stop propagation so the body click event will not be triggered
e.stopPropagation();
if(login.hasClass(config.classSelected)){
self.hideMenu({login:login,menu:menu});
}else{
self.showMenu({login:login,menu:menu});
}
});
var $body = $("body");
login.focusin(function(e){
// close menu when the user no longer focus on the header login
$body.one("click",function(e){
self.hideMenu({login:login,menu:menu});
});
var closeMenu = function(e){
e.stopPropagation();
var target = $(e.target).closest("#"+config.idLogin);
if(target.length == 0){
killEvent();
self.hideMenu({login:login,menu:menu});
}
};
var killEvent = function(e){
$body.die("focusin",closeMenu);
}
$body.live("focusin",closeMenu);
});
}
};
HW.MainNavigation = {
config:{
idMainNav:"jsMainNav",
idSubNav:"jsSubNav",
classMenu:"jsMenu",
classMenuContainer:"jsMenuContainer",
classHighlight:"jsHighlight",
classCurrent:"current"
},
removeHighlight:function(params){
var collection = params.collection || [];
var config = this.config;
collection.each(function(){
$(this).removeClass(config.classHighlight);
});
},
init:function(){
var self = this;
var config = self.config;
var mainNav = $("#"+config.idMainNav);
var subNav = $("#"+config.idSubNav);
// check if any of main navigation or sub navigation does not exist
if(!mainNav.length || !subNav.length) return;
var mainMenus = mainNav.find("."+config.classMenu);
var subMenus = subNav.find("."+config.classMenu);
var menuContainer = mainNav.find("."+config.classMenuContainer);
// does not progress further if there is no sub navigation or no menu container
if(!subMenus.length || !menuContainer.length) return;
// check if the browser is IE7 or under
var isTargetIE = $.browser.msie && ($.browser.version < 8.0);
// add decor to the last sub menu
subMenus.filter(":last").find(".content").append($(''));
// move non-current sub menus as corresponding sub menus of the main navigation
subMenus.each(function(){
var subMenuItem = $(this);
if(!subMenuItem.hasClass(config.classCurrent)){
// find the identifier by pattern matching
var itemIdentifier = subMenuItem.attr("className").match(/menu[1-9]/);
// get the target container and move the subment to the target
var target = menuContainer.filter("."+ itemIdentifier);
var contentToAdd;
if(target.length){
contentToAdd = $('
');
if(isTargetIE){
contentToAdd = $('');
}
// set the width to avoid IE display inproperly
contentToAdd.find("ul").css({ width:subMenuItem.innerWidth() });
if(isTargetIE){
contentToAdd.find("iframe").css({width:subMenuItem.innerWidth()+20, height:subMenuItem.innerHeight()+24});
}
target.append(contentToAdd);
subMenuItem.remove();
}
}
});
// setup highlight on main nav
mainMenus.each(function(){
var mainMenuItem = $(this);
mainMenuItem.bind("mouseenter", function(e){
mainMenuItem.addClass(config.classHighlight);
if(isTargetIE){
mainMenuItem.find("iframe").css({height:mainMenuItem.find(".subMenu").height()-18});
}
});
mainMenuItem.bind("mouseleave", function(e){
mainMenuItem.removeClass(config.classHighlight);
});
mainMenuItem.bind("focusin", function(e){
if(!mainMenuItem.hasClass(config.classHighlight)){
self.removeHighlight({collection:mainMenus});
mainMenuItem.addClass(config.classHighlight);
if(isTargetIE){
mainMenuItem.find("iframe").css({height:mainMenuItem.find(".subMenu").height()-18});
}
}
});
mainMenuItem.bind("focusout", function(e){
// prevent main menu receiving focusout
e.stopPropagation();
});
});
// clear highlight when the user is no longer focus on the main nav
mainMenus.focusout(function(e){
self.removeHighlight({collection:mainMenus});
});
}
};
HW.SideNavigation = {
config:{
idNav:"jsSideNav",
classNavItem:"sideNavItem",
classNavMenu:"sideNavMenu",
classNavMenuDecor:"sideNavMenuc",
classJSNavItemContainer:"jsSideNavItemContainer",
classJSNavItem:"jsSideNavItem",
classJSNavItemHighlight:"jsSideNavItemHighlight"
},
clearHighlight:function(params){
var collection = params.collection || [];
var config = this.config;
collection.each(function(){
$(this).removeClass(config.classJSNavItemHighlight);
});
},
init:function(){
var self = this;
var config = self.config;
var sideNav = $("#"+config.idNav);
// check if side navigation exists
if(!sideNav.length) return;
var navItemContainers = sideNav.find("."+config.classJSNavItemContainer);
// no progress if no nav item containers
if(!navItemContainers.length) return;
navItemContainers.each(function(){
var navItemContainer = $(this);
var navItems = navItemContainer.find("."+config.classNavItem);
// no further progress if nav items did not exist
if(!navItems.length) return;
navItems.each(function(){
var navItem = $(this);
// turn the nav item as the corresponding JS version
navItem.addClass(config.classJSNavItem);
var navItemDecor = navItem.find("."+config.classNavMenuDecor);
navItem.hover(
function(){
navItem.addClass(config.classJSNavItemHighlight);
if(navItemDecor.length){
navItemDecor.css({height: navItem.height()-4 });
}
},
function(){
navItem.removeClass(config.classJSNavItemHighlight);
}
);
navItem.bind("focusin",function(e){
if(!navItem.hasClass(config.classJSNavItemHighlight)){
self.clearHighlight({collection:navItems});
if(navItemDecor.length){
navItemDecor.css({height: navItem.height()-4 });
}
navItem.addClass(config.classJSNavItemHighlight);
}
});
});
// clear all highlights if the user is no longer focus on this sub item list
navItemContainer.bind("focusout",function(e){
self.clearHighlight({collection:navItems});
});
});
}
};
HW.FooterLinks = {
config:{
idFooter:"jsFooter",
classOverlay:"jsOverlayNormal"
},
init:function(){
var config = this.config;
var footer = $("#"+config.idFooter);
if(!footer.length) return;
var footerLinks = footer.find("."+config.classOverlay);
if(!footerLinks.length) return;
footerLinks.each(function(){
var footerLink = $(this);
// using HW JS overlay plugin
footerLink.click(
function(e){
e.preventDefault();
$.portal(footerLink.attr("href"));
}
);
});
}
}
HW.RotatingBanner = {
config:{
valueMaxPageItem:5,
htmlBannerControlNoPages:'',
// the order of next and prev button in reverse order for the display sake
htmlBannerControlWithPages:'',
idBannerNoPages:"jsBannerNoPages",
idBannerWithPages:"jsBannerWithPages",
classCurrent:"jsCurrent",
classSelected:"sel",
classBanner:"jsBanner",
classScrollItem:"scrollEl",
classColumn:"column04"
},
timer:0,
current:0,
totalItem:0,
controls:[],
btnPages:[],
scrollItems:[],
inTransition:false,
resetDefault:function(){
var obj = this;
obj.timer = 0;
obj.current = 0;
obj.totalItem = 0;
obj.controls = [];
obj.btnPages = [];
obj.scrollItems = [];
obj.inTransition = false;
},
getInformation:function(){
return {
config:this.config,
current:this.current,
totalItem:this.totalItem,
btnPages:this.btnPages,
scrollItems:this.scrollItems
};
},
setColumnHeight:function(){
var obj = this;
var columns = obj.scrollItems.find("."+obj.config.classColumn);
if( columns.length == 0 ){ columns = obj.scrollItems; }
var maxHeight = 0;
columns.each(function(index){
var columnHeight = $(this).height();
if(columnHeight > maxHeight){
maxHeight = columnHeight;
}
});
columns.height(maxHeight);
return maxHeight;
},
move:function(direction){
var obj = this;
direction = (typeof direction == "undefined")? "forward" : direction;
var withPage = (obj.btnPages.length > 0)? true : false;
if(withPage){
obj.btnPages.eq(obj.current).removeClass(obj.config.classSelected);
}
obj.scrollItems.eq(obj.current).fadeOut(100,function(){
$(this).removeClass(obj.config.classCurrent);
});
if(direction == "forward"){
obj.current = (obj.current == obj.totalItem -1)? 0 : obj.current+1;
}else{
obj.current = (obj.current == 0)? obj.totalItem-1 : obj.current-1;
}
if(withPage){
obj.btnPages.eq(obj.current).addClass(obj.config.classSelected);
}
obj.scrollItems.eq(obj.current).fadeIn(800,function(){
$(this).addClass(obj.config.classCurrent);
obj.isInTransition = false;
});
},
loop:function(){
var obj = HW.RotatingBanner.getInformation();
var withPage = (obj.btnPages.length > 0)? true : false;
if(withPage){
obj.btnPages.eq(obj.current).removeClass(obj.config.classSelected);
}
obj.scrollItems.eq(obj.current).fadeOut(100,function(){
$(this).removeClass(obj.config.classCurrent);
});
obj.current = (obj.current == obj.totalItem -1)? 0 : obj.current+1;
if(withPage){
obj.btnPages.eq(obj.current).addClass(obj.config.classSelected);
}
obj.scrollItems.eq(obj.current).fadeIn(800,function(){
$(this).addClass(obj.config.classCurrent);
});
// update the actual current value
HW.RotatingBanner.current = obj.current;
},
init:function(){
var obj = this;
var config = obj.config;
var bannerWithPages;
var banner = $("#"+config.idBannerWithPages);
// check for banner type
if(banner.length){
bannerWithPages = true;
}else{
banner = $("#"+config.idBannerNoPages);
if(banner.length){
bannerWithPages = false;
}else{
// no banner is found
obj.resetDefault();
return;
}
}
// update the object components
obj.scrollItems = banner.find("."+config.classScrollItem);
obj.totalItem = obj.scrollItems.length;
// no further progess if there is no scroll item
if(!obj.totalItem) return;
// update the object components
if(bannerWithPages){
var $control = $(config.htmlBannerControlWithPages);
var numPage = (obj.totalItem > config.valueMaxPageItem)? config.valueMaxPageItem : obj.totalItem ;
var pageItemToAppend = '';
for(var i=0; i < numPage; i++){
pageItemToAppend = pageItemToAppend + '' + (i+1) + '';
}
$control.find(".pageIndex").wrapInner(pageItemToAppend);
obj.controls = $control;
}else{
obj.controls = $(config.htmlBannerControlNoPages);
}
obj.btnPages = obj.controls.find(".page") || [];
obj.curent = 0;
obj.isInTransition = false;
var btnPrevious = obj.controls.find(".prev");
var btnNext = obj.controls.find(".next");
var withPage = (obj.btnPages.length>0)? true : false;
// find and set the max height among columns
banner.height(obj.setColumnHeight());
// append the control dynamically according to the banner type
banner.append(obj.controls);
// handle each page button click
if(withPage){
obj.btnPages.each(function(index){
$(this).click(function(e){
if(obj.timer>0){
clearTimeout(obj.timer);
}
if(!obj.isInTransition){
obj.isInTransition = true;
obj.btnPages.eq(obj.current).removeClass(obj.config.classSelected);
obj.scrollItems.eq(obj.current).fadeOut(100,function(){
$(this).removeClass(obj.config.classCurrent);
});
obj.current = index;
obj.btnPages.eq(obj.current).addClass(obj.config.classSelected);
obj.scrollItems.eq(obj.current).fadeIn(800,function(){
$(this).addClass(config.classCurrent);
obj.isInTransition = false;
});
}
});
});
}
// handle button next click
btnNext.click(function(e){
if(obj.timer>0){
clearTimeout(obj.timer);
}
if(!obj.isInTransition){
obj.isInTransition = true;
obj.move("forward");
}
});
// handle button previous click
btnPrevious.click(function(e){
if(obj.timer>0){
clearTimeout(obj.timer);
}
if(!obj.isInTransition){
obj.isInTransition = true;
obj.move("backward");
}
});
// add the JS class to HTML to avoid flickering in IE6
$("html").addClass("js");
banner.addClass(config.classBanner);
if(withPage){
obj.btnPages.eq(obj.current).addClass(config.classSelected);
}
// show the first scroll item initially
obj.scrollItems.eq(obj.current).addClass(config.classCurrent);
// start looping
HW.RotatingBanner.timer = setInterval(HW.RotatingBanner.loop,10000);
}
}
HW.Accordian = {
config:{
idAccordian:"JSTaccordion"
},
init:function(){
var config = this.config;
var accordian = $("."+config.idAccordian);
if(!accordian.length) return;
$('div.JSTaccordion').accordion({ node:'div.JSTaccordionNode', heading:'div.JSTaccordionHeading', content:'div.JSTaccordionContent', open:'selected'/*, update:[ {selector:'a.update',text:['close','open']} ]*/ }).bind('accordion.open',function(e,node){ try{ console.log(node); }catch(error){}} );
}
}
HW.Tab = {
config:{
wrapperClass:"jsTab",
triggerClass:"jsTabTrigger",
targetClass:"jsTabTarget"
},
init:function(){
var config = this.config;
var wrapperDiv = $("."+config.wrapperClass);
var targets = $("."+config.targetClass);
var triggers = $("."+config.triggerClass);
if(!wrapperDiv.length) { return; }
var defaultIndex = 0;
/*
assumption: the location bar will have the following pattern:
someName.html(#jsTabX)(@qX)
where X are digits
*/
var tabHref = location.href;
var posHash = tabHref.indexOf("#");
var posHint = tabHref.lastIndexOf("@");
var targetString = null;
/*
If the default tab is set, use the value as the target string
*/
var defaultTab = $("#jsDefaultTab");
if(defaultTab.length) {
targetString = defaultTab.val();
}
/*
if both hash and hint exist
*/
if(posHint > -1 && posHash > -1){
targetString = tabHref.substring((posHash + 1),posHint);
}
else if(posHash > -1) {
targetString = tabHref.substring(posHash + 1);
}
/*
only find the default index when target string exists
*/
if(targetString){
targets.each(function(index){
if (targetString === $(this).attr("id")){
defaultIndex = index;
}
});
}
targets.each(function(index){
if(index != defaultIndex){
$(this).hide();
} else {
$(this).show();
}
});
triggers.eq(defaultIndex).closest("li").addClass("selected");
triggers.each(function(){
$(this).click(function(e){
e.preventDefault();
$(this).closest("li").siblings(".selected").removeClass("selected");
targets.each(function(){
if ($(this).css("display") != "none") {
$(this).hide();
}
});
$(this).closest("li").addClass("selected");
$("#"+$(this).attr("href").substring(1)).show();
});
});
}
};
HW.HomeHeroArea = {
config:{
wrapperClass:"jsHomeHero",
triggerClass:"jsHomeHeroTrigger",
targetClass:"jsHomeHeroTarget",
classTargetController:"jsTargetController",
classTargetItemHidden:"jsTargetItemHidden"
},
hideAll:function(collection){
var config = this.config;
collection.each(function(index){
if(!$(this).hasClass(config.classTargetItemHidden)){
$(this).addClass(config.classTargetItemHidden);
}
});
},
init:function(){
var myself = this;
var config = this.config;
var wrapperDiv = $("#"+config.wrapperClass);
var targets = $("."+config.targetClass);
var triggers = $("."+config.triggerClass);
if(!wrapperDiv.length) return;
var targetController = wrapperDiv.find("."+config.classTargetController);
if(!targetController.length) return;
var maxHeight = 0;
var maxTargetHeight = 0;
targets.each(function(index){
var obj = $(this);
var objHeight = obj.height();
if(objHeight > maxTargetHeight ) maxTargetHeight = objHeight;
if(index > 0) obj.addClass(config.classTargetItemHidden);
});
$("."+config.targetWrapper).height(maxTargetHeight);
triggers.each(function(index){
var obj = $(this);
var objHeight = obj.height();
if (objHeight > maxHeight) maxHeight = objHeight;
obj.bind("mouseenter",function(e){
myself.hideAll(targets);
targets.eq(index+1).removeClass(config.classTargetItemHidden);
});
});
triggers.each(function(index){
$(this).height(maxHeight);
});
targets.find("a").bind("mouseleave",function(e){
e.preventDefault();
e.stopPropagation();
});
targetController.bind("mouseleave",function(e){
myself.hideAll(targets);
targets.eq(0).removeClass(config.classTargetItemHidden);
});
}
}
HW.ContactUsForm = {
config:{
idContactUsForm:"jsContactUsForm"
},
errorSetup:function(params){
var element = params.element || null;
if(element){
var offset = params.offset;
var left = params.left || 85;
var top = params.top || 24;
element.css({
display:"none",
position:"absolute",
left:offset.left + left + "px",
top:offset.top - top + "px"
});
$("body").append(element);
}
},
init:function(){
var config = this.config;
var form = $("#"+config.idContactUsForm);
// no further progress if the form does not exist
if(!form.length) return;
// variables
var firstName = $('#firstname');
var lastName = $('#lastname');
var daytimephone = $('#daytimephone');
// add by vnb
var email = $('#email');
var captcha = $('#captcha');
// add by vnb end
var message = $('#message');
var products = $("#productsAndServices");
var errorName = $("#errorName");
var errorContactInfo = $("#errorContactInfo");
var errorProductsAndServices = $("#errorProductsAndServices");
var errorMessage = $("#errorMessage");
// add by vnb
var errorEmail = $('#errorEmail');
var errorCaptcha = $('#errorCaptcha');
// add by vnb end
// error hiding handlers
var hideAllErrors = function(){
errorName.css({display:"none"});
errorContactInfo.css({display:"none"});
errorProductsAndServices.css({display:"none"});
errorMessage.css({display:"none"});
// add by vnb
errorEmail.css({display:"none"});
errorCaptcha.css({display:"none"});
// add by vnb end
}
var hideNameError = function(){
if ( (firstName.val() != "") && (lastName.val() != "") ) {
errorName.css({display: 'none'});
}
}
var hideContactInfoError = function(){
if ( (daytimephone.val() != "") && (email.val() != "") ) {
errorContactInfo.css({display: 'none'});
}
}
var hideProductsError = function(){
if ( products.attr("selectedIndex") > 0 ) {
errorProductsAndServices.css({display: 'none'});
}
}
var hideMessageError = function(){
if (message.val() != "") {
errorMessage.css({display: 'none'});
}
}
// add by vnb
var hideEmailError = function(){
if (email.val() != "") {
errorEmail.css({display: 'none'});
}
}
var hideCaptchaError = function(){
if (captcha.val() != "") {
errorCaptcha.css({display: 'none'});
}
}
// add by vnb end
// error message setup
if(firstName){
this.errorSetup({ element:errorName, offset:firstName.offset() });
}
if(daytimephone){
this.errorSetup({ element:errorContactInfo, offset:daytimephone.offset() });
}
if(products){
this.errorSetup({ element:errorProductsAndServices, offset:products.offset(), left:135 });
}
if(message){
this.errorSetup({ element:errorMessage, offset:message.offset() });
}
// add by vnb
if(email){
this.errorSetup({ element:errorEmail, offset:email.offset() });
}
if(captcha){
this.errorSetup({ element:errorCaptcha, offset:captcha.offset() });
}
// add by vnb end
// submit event
form.submit(function(e){
e.preventDefault();
hideAllErrors();
var pass = true;
// check names
if( (firstName.val() == "") || (lastName.val() == "") ){
pass = false;
errorName.show();
firstName.keyup( hideNameError );
lastName.keyup ( hideNameError );
}
// check contact info
if ( (daytimephone.val() == "") || (email.val() == "") ) {
pass = false;
errorContactInfo.show();
daytimephone.keyup( hideContactInfoError );
email.keyup ( hideContactInfoError );
}
// check products
// show error only when the default option is selected, that is selectedIndex = 0
if(products.attr("selectedIndex") < 1){
pass = false;
errorProductsAndServices.show();
products.change( hideProductsError );
}
// check message
if(message.val() == "") {
pass = false;
errorMessage.show();
message.keyup( hideMessageError );
}
// and check Email by vnb
if(email.val() == "") {
pass = false;
errorEmail.show();
message.keyup( hideEmailError );
}else{
var value = email.val();
if(value.indexOf('@') > -1){
var emailid = value.substring(0, value.indexOf('@'));
var emaildomain = value.substring(value.indexOf('@')+1, value.length);
if (/^\w+([\.-]?\w+)+$/.test(emailid)){
if (!(/^\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(emaildomain))){
pass = false;
errorEmail.show();
message.keyup( hideEmailError );
}
}else{
pass = false;
errorEmail.show();
message.keyup( hideEmailError );
}
}else{
pass = false;
errorEmail.show();
message.keyup( hideEmailError );
}
}
if(captcha.val() == "") {
pass = false;
errorCaptcha.show();
message.keyup( hideCaptchaError );
}
// and check Email by vnb end
// send the form when all fields pass validation
if(pass){
this.submit();
}
});
// form reset
form.bind('reset',function(e){
hideAllErrors();
});
}
}
HW.OverlayGallery = {
config:{
htmlOverlayGalleryControl:'',
htmlOverlayGalleryTracker:'',
idOverlayGallery:"jsOverlayGallery",
idOverlayGalleryTracker:"jsOverlayGalleryTracker",
idOverlayGalleryPrevious:"jsOverlayGalleryPrevious",
idOverlayGalleryNext:"jsOverlayGalleryNext",
classOverlayGallery:"jsOverlayGallery",
classOverlayGalleryItemContainer:"jsOverlayGalleryItemContainer",
classOverlayGalleryItem:"jsOverlayGalleryItem",
classOverlayGalleryItemCurrent:"jsOverlayGalleryItemCurrent"
},
init:function(){
var obj = this;
var config = obj.config;
var gallery = $("#"+config.idOverlayGallery);
if(!gallery.length) return;
var items = gallery.find("."+config.classOverlayGalleryItem);
var numItem = items.length;
if(!numItem) return;
gallery.addClass(config.classOverlayGallery);
gallery.data("current",0);
items.eq(0).addClass(config.classOverlayGalleryItemCurrent);
gallery.append(config.htmlOverlayGalleryControl);
if(!(gallery.find("#"+config.idOverlayGalleryTracker).length)){
gallery.find("."+config.classOverlayGalleryItemContainer).before(config.htmlOverlayGalleryTracker);
}
var previous = gallery.find("#"+config.idOverlayGalleryPrevious);
var next = gallery.find("#"+config.idOverlayGalleryNext);
var tracker = gallery.find("#"+config.idOverlayGalleryTracker);
tracker.html((gallery.data("current")+1)+"/"+numItem);
previous.click(function(e){
e.preventDefault();
var current = gallery.data("current");
if(current==0){
items.eq(0).removeClass(config.classOverlayGalleryItemCurrent);
items.eq(numItem-1).addClass(config.classOverlayGalleryItemCurrent);
gallery.data("current",numItem-1);
}else{
items.eq(current).removeClass(config.classOverlayGalleryItemCurrent);
items.eq(current-1).addClass(config.classOverlayGalleryItemCurrent);
gallery.data("current",current-1);
}
tracker.html((gallery.data("current")+1)+"/"+numItem);
});
next.click(function(e){
e.preventDefault();
var current = gallery.data("current");
if(current==numItem-1){
items.eq(numItem-1).removeClass(config.classOverlayGalleryItemCurrent);
items.eq(0).addClass(config.classOverlayGalleryItemCurrent);
gallery.data("current",0);
}else{
items.eq(current).removeClass(config.classOverlayGalleryItemCurrent);
items.eq(current+1).addClass(config.classOverlayGalleryItemCurrent);
gallery.data("current",current+1);
}
tracker.html((gallery.data("current")+1)+"/"+numItem);
});
}
}
HW.OverlayGalleryTrigger = {
config:{
idTrigger:"jsOverlayGalleryTrigger",
pathImage:""
},
init:function(){
var config = this.config;
var trigger = $("#"+config.idTrigger);
if(!trigger.length) return;
// get the relative path for the images of overlay gallery
var imageHref = trigger.attr("href");
HW.OverlayGalleryTrigger.pathImage = imageHref.substring(0,imageHref.lastIndexOf("/")+1);
trigger.click(function(e){
e.preventDefault();
$.ajaxportal(trigger.attr("href"),
function(){
HW.OverlayGallery.init();
var items = $("."+HW.OverlayGallery.config.classOverlayGalleryItem);
items.each(function(){
var img = $(this).find("img");
var src = img.attr("src");
// build the image path according to which page the overlay gallery is called
var target_src = HW.OverlayGalleryTrigger.pathImage + src.substring(src.indexOf("_images/"));
img.attr("src",target_src).bind("load",function(){
var img_height = $(this).height();
var img_width = $(this).width();
// update the maximum height of the container as the image is loaded
var img_gallery = $(this).parents("#jsOverlayGallery");
if(img_height > img_gallery.height()){
img_gallery.height(img_height);
}
if(img_width > img_gallery.width()){
img_gallery.width(img_width);
}
});
// update the overlay wrapper
var overlayWrapper = $(".overlayWrapper");
var overlayGallery = $("#jsOverlayGallery");
var target_width = overlayGallery.outerWidth() + 64;
overlayWrapper.width(target_width);
// center the overlay wrapper
var winw = $(window).width();
var w = overlayWrapper.width();
overlayWrapper.css({left:Math.max((winw-w)/2,0) + 'px'});
});
},
{ contentSelector:'#jsOverlayGallery', cache:true });
});
}
}
HW.AlignMoreInfo = {
init:function(){
$("div.row:not(:has(div.row)):has(div.ts01)").each( function(){
var maxOffsetTop = 0;
$(this).find("div.ts01").each( function(){ if ($(this).position().top > maxOffsetTop) maxOffsetTop = $(this).position().top;});
$(this).find("div.ts01").each( function(){
if ($(this).position().top < maxOffsetTop){
//$(this).css("padding-top", parseInt($(this).css("padding-top").replace("px", "")) + maxOffsetTop - $(this).position().top);
}
});
});
}
}
HW.AlignItems = {
init:function(){
var containers = $(".jsAlignContainer");
if(containers.length > 0){
containers.each(function(){
var maxOffsetTop = 0,
items = $(this).find(".jsAlignItem");
// no alignment is needed if only 1 item in the container
if(items.length > 1){
items.each(function(){
var top = $(this).position().top;
if(top > maxOffsetTop){
maxOffsetTop = top;
}
});
items.each(function(){
var top = $(this).position().top,
adjustment;
if(top < maxOffsetTop){
adjustment = parseInt($(this).css("padding-top").replace("px", "")) + (maxOffsetTop - top);
$(this).css("padding-top", adjustment);
}
});
}
});
}
}
};
/* Popus for Credit Card application form, carried from exisiting script */
HW.CreditCardPopup = {
config:{
classPopupTrigger:".jsCardPopupTrigger"
},
init:function(){
var config = this.config,
triggers = $(config.classPopupTrigger),
size = triggers.length,
pWidth = (screen.width > 1024) ? 1024 : screen.width - 10,
pHeight = (screen.height > 768) ? 768 : screen.height - 45;
if(size > 0){
triggers.each(function(){
$(this).click(function(e){
e.preventDefault();
window.open($(this).attr("href"),"CBICardPopup","toolbar=0,width=" + pWidth + ", height=" + pHeight + ",status=1,scrollbars=1,resizable=1,menubar=0,top=0,left=0");
});
});
}
}
};
HW.ContentOverlay = {
config:{
classTrigger:".jsContentOverlayTrigger"
},
init:function(){
var config = this.config;
var triggers = $(config.classTrigger);
if(!triggers.length) { return };
triggers.each(function(){
var trigger = $(this);
// using HW JS overlay plugin
trigger.click(
function(e){
e.preventDefault();
$.ajaxportal(trigger.attr("href"));
// 1604482560
$(".skipToLinks a, .citicPageFramework01 input, .citicPageFramework01 a, .citicPageFramework01 select, .citicPageFramework01 textarea, .citicPageFramework01 button").addClass("tabindexNum").attr("tabindex", -1);
$(".buttonHeroStyle1").addClass("tabindexNum").attr("tabindex", -1);
$(".overlay, .overlayWrapper01 a").click(function () {
$(".tabindexNum").removeClass("tabindexNum").removeAttr("tabindex");
e.target.focus();
})
// 1604482560
}
);
});
}
}
$(document).ready(function(){
// scripts for all pages
HW.AlignMoreInfo.init();
HW.HeaderLogin.init();
HW.HeaderLoginLinks.init();
HW.MainNavigation.init();
HW.SideNavigation.init();
HW.FooterLinks.init();
HW.RotatingBanner.init();
HW.Accordian.init();
HW.Tab.init();
HW.HomeHeroArea.init();
HW.ContactUsForm.init();
// scripts for specific pages
HW.OverlayGallery.init();
HW.OverlayGalleryTrigger.init();
HW.CreditCardPopup.init();
HW.ContentOverlay.init();
HW.AlignItems.init();
if ( jQuery("#featuredBanner1").length ) {
jQuery("#featuredBanner1").tabs({fx:{opacity: "toggle"}}).tabs("rotate", 6000, true);
}
// For IE 8
$('.citicPageSubNav .menu8:not(.current)').hide();
// For SMEs slick
$('.sme-landing-video .slick-dots a').attr('href','javascript:;').css('text-decoration','none');
});