/* ---------------------------------------------------------------------- Methods to show/hide awaitng layer when working with VIE Portal software ----------------------------------------------------------------------- */ function ___showAwaitingMessage() { var left = arguments[0]||-1; var top = arguments[1]||-1; var awaitingLayerId = "vieAwaiting"; var awaitingLayer = document.getElementById(awaitingLayerId); if(awaitingLayer) { if(left==-1) left = (document.body.clientWidth - awaitingLayer.style.width) / 2; if(top==-1) top = (document.body.clientHeight - awaitingLayer.style.height) / 2; awaitingLayer.style.position = "absolute"; awaitingLayer.style.visibility = "visible"; awaitingLayer.style.top = top + document.body.scrollTop; awaitingLayer.style.left = left; return; } var msg = "Please wait a moment..."; if(calLanguage && calLanguage == "vi") msg = "Xin vui lòng đợi một chút..."; var imgUrl = ___getRootUrl() + "Skins/Default/Images/Dialogs/"; awaitingLayer = document.createElement("DIV"); awaitingLayer.id = awaitingLayerId; awaitingLayer.innerHTML = "" + "" + "" + "" + "" + "" + "
" + "  " + msg + " " + "
"; awaitingLayer = document.body.appendChild(awaitingLayer); if(left==-1) left = (document.body.clientWidth - awaitingLayer.style.width) / 2; if(top==-1) top = (document.body.clientHeight - awaitingLayer.style.height) / 2; awaitingLayer.style.position = "absolute"; awaitingLayer.style.visibility = "visible"; awaitingLayer.style.top = top + document.body.scrollTop; awaitingLayer.style.left = left; } function ___hideAwaitingMessage() { var awaitingLayer = document.getElementById("vieAwaiting"); if(awaitingLayer) __hideMe(awaitingLayer); } /* ---------------------------------------------------------------------- Show the calendar (using PopCalendar.js library) invokeCtrl: The control that use to specify the postion of the calendar outputCtrlId: Id of the output control that store to selected date format: Format of the date, might be dd/mm/yyyy or dd-mm-yyyy or anything you like (must contains "dd", "mm" and "yyyy") ----------------------------------------------------------------------- */ function ___showCalendar(invokeCtrl, outputCtrlId, format){ var outputCtrl = document.getElementById(outputCtrlId); if(!outputCtrl) outputCtrl = document.getElementByName(outputCtrlId); if(!outputCtrl) return; popUpCalendar(invokeCtrl, outputCtrl, format.toLowerCase()); } function ___showCalendarWithUrl(invokeCtrl, format, url){ var outputCtrl = document.getElementById("___popCalendarOutput"); if(!outputCtrl) outputCtrl = document.getElementByName("___popCalendarOutput"); popUpCalendarWithUrl(invokeCtrl, outputCtrl, format.toLowerCase(), url); } /* ---------------------------------------------------------------------- Methods to get position of mouse pointer and show/hide a layer inside of other in the VIE Portal software desktops at the position of mouse pointer Reference: http://acko.net/blog/mouse-handling-and-absolute-positions-in-javascript ----------------------------------------------------------------------- */ function __getAbsoluteSizeById(id) { var obj = document.getElementById(id); if(obj) return __getAbsoluteSize(obj); else return { width:0, height:0 }; } function __getAbsoluteSize(obj) { var size = { width:0, height:0 }; if(obj) { if(obj.style.width) { size = { width:obj.style.width, height:obj.style.height }; size.width = size.width.replace('px','').replace('pt',''); size.height = size.height.replace('px','').replace('pt',''); } else size = { width:obj.width, height:obj.height }; } return size; } function __getAbsolutePositionById(id) { var obj = document.getElementById(id); if(obj) return __getAbsolutePosition(obj); else return { x:-1, y:-1 }; } function __getAbsolutePosition(obj) { if(!obj) return { x:-1, y:-1 }; var pos = { x:obj.offsetLeft, y:obj.offsetTop }; if(obj.offsetParent) { var tmpObj = __getAbsolutePosition(obj.offsetParent); pos.x += tmpObj.x; pos.y += tmpObj.y; } return pos; } function ___getRelativeCoordinates(event, obj) { var x = 0, y = 0; // IE if (!window.opera && typeof event.offsetX != 'undefined') { var pos = __getAbsolutePosition(obj); x = event.offsetX + pos.x; y = event.offsetY + pos.y; } else { x = event.pageX; y = event.pageY; } // subtract distance to middle return { x: x, y: y }; } // show a layer (by Id) at the current position of mouse pointer function ___showInside() { var parentObj = arguments[0]||null; var id = arguments[1]||''; if(parentObj==null || id=='') return; var offsetX = arguments[2]||0; var offsetY = arguments[3]||0; var e = arguments[4]||window.event; var obj = document.getElementById(id); if(!obj) return; var pos = ___getRelativeCoordinates(e, parentObj); obj.style.left = pos.x + offsetX + 'px'; obj.style.top = pos.y + offsetY + 'px'; } /* ---------------------------------------------------------------------- Methods to show tooltip at the position of mouse pointer ----------------------------------------------------------------------- */ var __tooltipOffsetX = -20; // customize X offset of tooltip var __tooltipOffsetY = 15; // customize Y offset of tooltip var __tooltipIsIE = document.all; var __tooltipIsNS = document.getElementById && !document.all; var __tooltipIsEnabled = false; var __tooltipIsLoaded = false; var __tooltipObj; var __tooltipAjax; function __ieTrueBody() { return (document.compatMode && document.compatMode != "BackCompat") ? document.documentElement : document.body; } // create tooltip layer function __createTooltip() { if(document.getElementById('vieTooltip')) return; var cssClass = arguments[0]||'cssDefaultHintBox'; try { __tooltipObj = document.createElement('DIV'); __tooltipObj.className = cssClass; __tooltipObj.id = 'vieTooltip'; __tooltipObj.style.display = 'block'; __tooltipObj.style.position = 'absolute'; document.body.appendChild(__tooltipObj); } catch(e) { return; } } // show tooltip function __showTooltip(tooltip) { var cssClass = arguments[1]||'cssDefaultHintBox'; var width = arguments[2]||260; if(document.readyState == "complete" || !__tooltipIsIE) { __createTooltip(cssClass); if(!__tooltipIsLoaded) { __tooltipObj.innerHTML = tooltip; __tooltipObj.style.width = width; __tooltipIsLoaded = true; } __tooltipIsEnabled = true; } } // show tooltip with content of a layer function __showTooltipOfLayer(tooltipLayerId) { var tooltipLayer = document.getElementById(tooltipLayerId); if(!tooltipLayer) return; var cssClass = arguments[1]||'cssDefaultHintBox'; var width = arguments[2]||260; __showTooltip(tooltipLayer.innerHTML, cssClass, width); } // show tooltip with content is loaded from AJAX object function __showTooltipOfAjax(ajaxUrl) { if(!ajaxUrl || ajaxUrl=='') return; var cssClass = arguments[1]||'cssDefaultHintBox'; var width = arguments[2]||260; var ajaxFunction = "__showAjaxTooltip('" + cssClass + "'," + width + ");"; __tooltipAjax = new Ajax(ajaxFunction, true); __tooltipAjax.makeGETRequest(ajaxUrl, ''); } function __showAjaxTooltip(cssClass, width) { if(!__tooltipAjax.isCompleted()) return; __showTooltip(__tooltipAjax.getResponseText(), cssClass, width); } // hide tooltip function __hideTooltip() { if(!__tooltipObj || (!__tooltipIsNS && !__tooltipIsIE)) return; __tooltipIsEnabled = false; __tooltipIsLoaded = false; __tooltipObj.style.visibility = "hidden"; __tooltipObj.style.left = "-1000px"; __tooltipObj.style.backgroundColor = ''; __tooltipObj.style.width = ''; } // re-positioning the tooltip function __positionTooltip(e) { if (!__tooltipIsEnabled) return; var curX = (__tooltipIsNS) ? e.pageX : event.clientX + __ieTrueBody().scrollLeft; var curY = (__tooltipIsNS) ? e.pageY : event.clientY + __ieTrueBody().scrollTop; // find out how close the mouse is to the corner of the window var rightEdge = __tooltipIsIE&&!window.opera ? __ieTrueBody().clientWidth-event.clientX - __tooltipOffsetX : window.innerWidth - e.clientX - __tooltipOffsetX - 20; var bottomEdge = __tooltipIsIE&&!window.opera ? __ieTrueBody().clientHeight-event.clientY - __tooltipOffsetY : window.innerHeight - e.clientY - __tooltipOffsetY - 20; var leftEdge = (__tooltipOffsetX<0) ? __tooltipOffsetX*(-1) : -1000; // if the horizontal distance isn't enough to accomodate the width of the context menu if (rightEdge < __tooltipObj.offsetWidth) // move the horizontal position of the menu to the left by it's width __tooltipObj.style.left = __tooltipIsIE ? __ieTrueBody().scrollLeft + event.clientX - __tooltipObj.offsetWidth + "px" : window.pageXOffset + e.clientX - __tooltipObj.offsetWidth + "px"; else if (curX < leftEdge) __tooltipObj.style.left = "5px"; else //position the horizontal position of the menu where the mouse is positioned __tooltipObj.style.left = curX + __tooltipOffsetX + "px"; // same concept with the vertical position if (bottomEdge < __tooltipObj.offsetHeight) __tooltipObj.style.top = __tooltipIsIE ? __ieTrueBody().scrollTop + event.clientY - __tooltipObj.offsetHeight - __tooltipOffsetY + "px" : window.pageYOffset + e.clientY - __tooltipObj.offsetHeight - __tooltipOffsetY + "px"; else __tooltipObj.style.top = curY + __tooltipOffsetY + "px"; // show the layer __tooltipObj.style.visibility = "visible"; } // attach window event document.onmousemove = __positionTooltip; /* ---------------------------------------------------------------------- Methods to show/hide a layer in the VIE Portal ----------------------------------------------------------------------- */ function __showLayer(parent, id, position, offsetLeft, offsetTop){ // check layer existing first var obj = document.getElementById(id); if(!obj) return; // computing positions var nTop = 0, nLeft = 0; var objParent = parent; while (objParent.tagName!="BODY") { nTop = nTop + objParent.offsetTop; nLeft = nLeft + objParent.offsetLeft; objParent = objParent.offsetParent; } // computing offset for the positions var nWidth = 0, nHeight = 0; switch(position) { case "left": nWidth = 0 - parent.offsetWidth; break; case "right": nWidth = parent.offsetWidth; break; break; case "top": nHeight = 0 - parent.offsetHeight; break; case "under": nHeight = parent.offsetHeight; break; default: break; } // re-position and show the layer obj.style.top = nTop + nHeight + offsetTop; obj.style.left = nLeft + nWidth + offsetLeft; obj.style.display = ""; obj.style.visibility = "visible"; } // hide a layer by Id on a webpage function __hideLayer(id){ var obj = document.getElementById(id); if(!obj) return; obj.style.visibility = "hidden"; } // show an inline element in the HTML document (by Id) function __show(){ var id = arguments[0]||''; if(id=='') return; var objElement = document.getElementById(id); if(!objElement) return; if(!objElement.style) return; var left = arguments[1]||-1; var top = arguments[2]||-1; var offsetLeft = arguments[3]||0; var offsetTop = arguments[4]||0; objElement.style.display = ""; objElement.style.visibility = "visible"; if(left>=0) objElement.style.left = left + offsetLeft; if(top>=0) objElement.style.top = top + offsetTop; } // hide an inline element in the HTML document (by Id) function __hide(id){ var objElement = document.getElementById(id); if(!objElement) return; if(!objElement.style) return; objElement.style.display = "none"; objElement.style.visibility = "hidden"; } // show an element itself function __showMe(obj){ obj.style.visibility = "visible"; } // hide an element itself function __hideMe(obj){ obj.style.visibility = "hidden"; } // set CSS class for a layer by Id on a webpage function __setLayerClass(id, className){ var obj = document.getElementById(id); if(!obj) return; obj.className = className; } // set CSS class for a object on a webpage function __setCssClass(obj, className) { if(!obj) return; obj.className = className; } /* ---------------------------------------------------------------------- Methods to show actions menu and VIE Portal elements ----------------------------------------------------------------------- */ // show action menu for a portlet function _showActionMenu(parent, id) { __showLayer(parent, id, "none", 0, 0); } // hide (minimize) a portlet in a desktop of ViePortal function _hide(id){ _hideViePortalElement(id); _hideViePortalElement(id + "_M"); _showViePortalElement(id + "_R"); } // show (restore) a minimized portlet in a desktop of ViePortal function _show(id){ _hideViePortalElement(id + "_R"); _showViePortalElement(id); _showViePortalElement(id + "_M"); } // temporary close a portlet in a desktop of ViePortal function _close(id){ _hideViePortalElement(id); } // show an element on ViePortal desktop (inline on webpage) function _showViePortalElement(id){ __show(id); } // hide an element on ViePortal desktop (inline on webpage) function _hideViePortalElement(id){ __hide(id); } /* ---------------------------------------------------------------------- Use this function to replace inner html of a control in a desktop by inner html of o layer. Useful for moving ASP.NET WebForms control to any position ----------------------------------------------------------------------- */ function ___replaceControlInnerHtmlByLayer(controlId, layerId){ var objControl = document.getElementById(controlId); var objLayer = document.getElementById(layerId); if(!objControl || !objLayer) return; if(objLayer.innerHTML=="") return; objControl.innerHTML = objLayer.innerHTML; objLayer.innerHTML = ""; } /* ---------------------------------------------------------------------- Working with URLs in VIE Portal ----------------------------------------------------------------------- */ // get index position of desktop page function ___getDesktopUrlIndex(url){ // refine: remove 'ReturnUrl=' var pos = url.indexOf("ReturnUrl="); if(pos>0) url = url.substring(0, pos); // special desktop (open individual portlet) pos = url.indexOf("Portlet.aspx"); if(pos>=0) return pos; pos = url.indexOf("PortletBlank.aspx"); if(pos>=0) return pos; // special desktop (open individual portlet with module name) pos = url.indexOf("PortletMod.aspx"); if(pos>=0) return pos; // normal desktop pos = url.indexOf("Desktop.aspx"); if(pos>=0) return pos; pos = url.indexOf("Default.aspx"); if(pos>=0) return pos; pos = url.indexOf("Index.aspx"); if(pos>=0) return pos; pos = url.indexOf("LogIn.aspx"); if(pos>=0) return pos; pos = url.indexOf("SignIn.aspx"); if(pos>=0) return pos; pos = url.indexOf("SignUp.aspx"); if(pos>=0) return pos; // personal desktop pos = url.indexOf("My.aspx"); if(pos>=0) return pos; // member desktop pos = url.indexOf("Member.aspx"); if(pos>=0) return pos; // B2B desktop (module desktop) pos = url.indexOf("B2B.aspx"); if(pos>=0) return pos; // e-Store desktop (module desktop) pos = url.indexOf("eStore.aspx"); if(pos>=0) return pos; // no desktop is found return -1; } // get root url for all desktops in the ViePortal function ___getRootUrl(){ var url = document.location.href; return url.substring(0, ___getDesktopUrlIndex(url)); } // get rest of all urls without desktop name in the ViePortal function ___getRestUrl(){ var url = document.location.href; return url.substring(___getDesktopUrlIndex(url)-1, url.length); } /* ---------------------------------------------------------------------- Working with dialogs (file selector, color selector, ... ) in VIE Portal ----------------------------------------------------------------------- */ // open window to select color (for Internet Explorer only) function ___selectColor(id){ var colorUrl = ___getRootUrl() + "OnlineEditor/dialogs/color2.html"; var width = 460; var height = 120; // IE if(document.all) { var color = color = window.showModalDialog(colorUrl,"","dialogHeight:" + height + "px;dialogWidth:" + width + "px;resizable:0;status:0;scroll:0"); if(color != null) { var colorCtrl = document.getElementById(id); if(colorCtrl) colorCtrl.value = color; } } else { var left = screen.width/2 - width/2; var top = screen.height/2 - height/2; colorUrl += "?output=" + id; window.open(colorUrl,"","top=" + top + ",left=" + left + ",height=" + height + ",width=" + width + ",resizable:0,status:0,scroll:0"); } } // open window to select/upload file function ___selectFile(language, relatedId, control){ var left = screen.width/2 - 600/2; var top = screen.height/2 - 500/2; var selectUrl = ___getRootUrl() + "OnlineEditor/FileUploadManager.aspx?language=" + language + "&insert=0&relatedid=" + relatedId + "&output=" + control; window.open(selectUrl, "","modal=1,left=" + left + ",top=" + top + ",height=500,width=600,resizable=0,status=0,scrollbars=1"); } /* ---------------------------------------------------------------------- Working with popup windows in VIE Portal ----------------------------------------------------------------------- */ // open an url into popup window function ___openPopup(){ var url = arguments[0]||'/'; var width = arguments[1]||500; if(width==null || width=='') width = 500; var height = arguments[2]||500; if(height==null || height=='') height = 500; var resizable = arguments[3]||'yes'; var scrollbars = arguments[3]||'yes'; var location = arguments[4]||'no'; var status = arguments[5]||'no'; var menubar = arguments[6]||'no'; var toolbar = arguments[7]||'no'; var left = (screen.width - width) / 2; if(!left) left = 400; var top = (screen.height - height) / 2; if(!top) top = 150; window.open(url, '', 'width='+width+',height='+height+',left='+left+',top='+top+',resizable='+resizable+',scrollbars='+scrollbars+',location='+location+',status='+status+',menubar='+menubar+',toolbar='+toolbar); } // open an url into fixed popup window (no scroll, no resize) function ___openFixedPopup(){ var url = arguments[0]||'/'; var width = arguments[1]||500; if(width==null || width=='') width = 500; var height = arguments[2]||500; if(height==null || height=='') height = 500; var left = (screen.width - width) / 2; if(!left) left = 400; var top = (screen.height - height) / 2; if(!top) top = 150; window.open(url, '', 'width='+width+',height='+height+',left='+left+',top='+top+',resizable=no,scrollbars=no', false); } // open an url into window function ___openWindow(){ var url = arguments[0]||'/'; var width = arguments[1]||800; if(width==null || width=='') width = 800; var height = arguments[2]||400; if(height==null || height=='') height = 400; var left = (screen.width - width) / 2; if(!left) left = 400; var top = (screen.height - height) / 2; if(!top) top = 100; window.open(url, '', 'width='+width+',height='+height+',left='+left+',top='+top+',resizable=yes,scrollbars=yes,location=yes,status=yes,menubar=yes,toolbar=yes'); } // resize window and move to center of the screen function ___resizeWindow(width, height){ window.resizeTo(width, height); var left = (screen.width - width) / 2; var top = (screen.height - height) / 2; window.moveTo(left, top); } // maximize window function ___maximizeWindow(){ window.moveTo(0, 0); window.resizeTo(screen.width, screen.height); } // open an image in a window function ___openImage(url, width, height) { if (url == '') return false; var wHeight = height; var wWidth = width; if(!document.all) // not IE { wHeight += 1; wWidth += 1; } var winDef = 'status=no,resizable=yes,scrollbars=no,toolbar=no,location=no,fullscreen=no,titlebar=yes,height='.concat(wHeight).concat(',').concat('width=').concat(wWidth).concat(','); winDef = winDef.concat('top=').concat((screen.height - wHeight)/2).concat(','); winDef = winDef.concat('left=').concat((screen.width - wWidth)/2); var newWin = open('', '_blank', winDef); var title = "Close"; if(calLanguage=="vi") title = "Đóng lại"; newWin.document.writeln('VIE Portal Image Viewer'); newWin.document.writeln(''); newWin.document.writeln(''); newWin.document.writeln(''); } /* ---------------------------------------------------------------------- Working with listboxes in VIE Portal ----------------------------------------------------------------------- */ // mark all items of a list box are selected function ___markAllListItemsSelected(controlId) { var listControl = document.getElementById(controlId); if(!listControl) return; var listOptions = listControl.options; if(!listOptions) return; for(var index=0;index=listOptions.length-1) return; else moveIndex = currentIndex + 1; } var moveText = listOptions[moveIndex].text; var moveValue = listOptions[moveIndex].value; listOptions[moveIndex].text = listOptions[currentIndex].text; listOptions[moveIndex].value = listOptions[currentIndex].value; listOptions[moveIndex].selected = true; listOptions[currentIndex].text = moveText; listOptions[currentIndex].value = moveValue; listOptions[currentIndex].selected = false; } /* ---------------------------------------------------------------------- Working with date/time in VIE Portal ----------------------------------------------------------------------- */ // return the string determines full date of client function ___getDateTime(showDate, dateFormat, showTime, showAsGMT) { var days = arguments[4]||new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"); var months = arguments[5]||new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"); var monthSeperate = arguments[6]||"-"; var yearSeperate = arguments[7]||"-"; var now = new Date(); var month = ""; var day = ""; var time = ""; var first_date_num =""; var result = ""; // show date if(showDate) { // long date if(dateFormat!="0") day = days[now.getDay()] + ", "; month = months[now.getMonth()]; if (now.getDate() < 10) first_date_num = "0"; result += day + first_date_num + now.getDate() + monthSeperate + month + yearSeperate + now.getFullYear(); } // show time if(showTime) { var symbol = "AM"; if(showAsGMT) time = new String(now.getUTCHours()); else time = new String(now.getHours()); if(time>=12) { time = time - 12; symbol = "PM"; } if (time.length < 2) time = "0" + time; var minute = new String(now.getMinutes()); if (minute.length < 2) minute = "0"+ minute; time = time + ":" + minute + " " + symbol; if(showAsGMT) time += " (GMT)"; if(result!="") result += "  "; result += time; } return result; } // show current date/time (international) function ___showDateTime(showDate, dateFormat, showTime, showAsGMT) { document.write(" " + ___getDateTime(showDate, dateFormat, showTime, showAsGMT) + " "); } // show current date/time (vietnamese) function ___showDateTimeVietnamese(showDate, dateFormat, showTime, showAsGMT) { var days = new Array("Chủ nhật","Thứ hai","Thứ ba","Thứ tư","Thứ năm","Thứ sáu","Thứ bảy"); var months = new Array("01","02","03","04","05","06","07","08","09","10","11","12"); var datetime = ___getDateTime(showDate, dateFormat, showTime, showAsGMT, days, months, "/", "/"); document.write(" " + datetime + " "); } /* ---------------------------------------------------------------------- Helper methods to generate shortname in VIE Portal (remove all non-English charaters) ----------------------------------------------------------------------- */ // generate short name function ___generateShortname(inputName) { return ___generateShortName(inputName, false); } // generate short name function ___generateShortName(inputName, replaceSpaceByMinues) { // initialize var result = inputName; if(!result) return ""; if(result=="") return ""; // convert Vietnamese Unicode to ANSI result= result.replace(/\u00E1/g,'a'); result= result.replace(/\u00C1/g,'A'); result= result.replace(/\u00E0/g,'a'); result= result.replace(/\u00C0/g,'A'); result= result.replace(/\u1EA3/g,'a'); result= result.replace(/\u1EA2/g,'A'); result= result.replace(/\u00E3/g,'a'); result= result.replace(/\u00C3/g,'A'); result= result.replace(/\u1EA1/g,'a'); result= result.replace(/\u1EA0/g,'A'); //á Á result= result.replace(/\u0103/g,'a'); result= result.replace(/\u0102/g,'A'); result= result.replace(/\u1EAF/g,'a'); result= result.replace(/\u1EAE/g,'A'); result= result.replace(/\u1EB1/g,'a'); result= result.replace(/\u1EB0/g,'A'); result= result.replace(/\u1EB3/g,'a'); result= result.replace(/\u1EB2/g,'A'); result= result.replace(/\u1EB5/g,'a'); result= result.replace(/\u1EB4/g,'A'); result= result.replace(/\u1EB7/g,'a'); result= result.replace(/\u1EB6/g,'A'); //a A result= result.replace(/\u00E2/g,'a'); result= result.replace(/\u00C2/g,'A'); result= result.replace(/\u1EA5/g,'a'); result= result.replace(/\u1EA4/g,'A'); result= result.replace(/\u1EA7/g,'a'); result= result.replace(/\u1EA6/g,'A'); result= result.replace(/\u1EA9/g,'a'); result= result.replace(/\u1EA8/g,'A'); result= result.replace(/\u1EAB/g,'a'); result= result.replace(/\u1EAA/g,'A'); result= result.replace(/\u1EAD/g,'a'); result= result.replace(/\u1EAC/g,'A'); // â Â result= result.replace(/\u00E9/g,'e'); result= result.replace(/\u00C9/g,'E'); result= result.replace(/\u00E8/g,'e'); result= result.replace(/\u00C8/g,'E'); result= result.replace(/\u1EBB/g,'e'); result= result.replace(/\u1EBA/g,'E'); result= result.replace(/\u1EBD/g,'e'); result= result.replace(/\u1EBC/g,'E'); result= result.replace(/\u1EB9/g,'e'); result= result.replace(/\u1EB8/g,'E'); // é É result= result.replace(/\u00EA/g,'e'); result= result.replace(/\u00CA/g,'E'); result= result.replace(/\u1EBF/g,'e'); result= result.replace(/\u1EBE/g,'E'); result= result.replace(/\u1EC1/g,'e'); result= result.replace(/\u1EC0/g,'E'); result= result.replace(/\u1EC3/g,'e'); result= result.replace(/\u1EC2/g,'E'); result= result.replace(/\u1EC5/g,'e'); result= result.replace(/\u1EC4/g,'E'); result= result.replace(/\u1EC7/g,'e'); result= result.replace(/\u1EC6/g,'E'); // ê Ê result= result.replace(/\u00ED/g,'i'); result= result.replace(/\u00CD/g,'I'); result= result.replace(/\u00EC/g,'i'); result= result.replace(/\u00CC/g,'I'); result= result.replace(/\u1EC9/g,'i'); result= result.replace(/\u1EC8/g,'I'); result= result.replace(/\u0129/g,'i'); result= result.replace(/\u0128/g,'I'); result= result.replace(/\u1ECB/g,'i'); result= result.replace(/\u1ECA/g,'I'); // í Í result= result.replace(/\u00F3/g,'o'); result= result.replace(/\u00D3/g,'O'); result= result.replace(/\u00F2/g,'o'); result= result.replace(/\u00D2/g,'O'); result= result.replace(/\u1ECF/g,'o'); result= result.replace(/\u1ECE/g,'O'); result= result.replace(/\u00F5/g,'o'); result= result.replace(/\u00D5/g,'O'); result= result.replace(/\u1ECD/g,'o'); result= result.replace(/\u1ECC/g,'O'); // ó Ó result= result.replace(/\u01A1/g,'o'); result= result.replace(/\u01A0/g,'O'); result= result.replace(/\u1EDB/g,'o'); result= result.replace(/\u1EDA/g,'O'); result= result.replace(/\u1EDD/g,'o'); result= result.replace(/\u1EDC/g,'O'); result= result.replace(/\u1EDF/g,'o'); result= result.replace(/\u1EDE/g,'O'); result= result.replace(/\u1EE1/g,'o'); result= result.replace(/\u1EE0/g,'O'); result= result.replace(/\u1EE3/g,'o'); result= result.replace(/\u1EE2/g,'O'); // o O result= result.replace(/\u00F4/g,'o'); result= result.replace(/\u00D4/g,'O'); result= result.replace(/\u1ED1/g,'o'); result= result.replace(/\u1ED0/g,'O'); result= result.replace(/\u1ED3/g,'o'); result= result.replace(/\u1ED2/g,'O'); result= result.replace(/\u1ED5/g,'o'); result= result.replace(/\u1ED4/g,'O'); result= result.replace(/\u1ED7/g,'o'); result= result.replace(/\u1ED6/g,'O'); result= result.replace(/\u1ED9/g,'o'); result= result.replace(/\u1ED8/g,'O'); // ô Ô result= result.replace(/\u00FA/g,'u'); result= result.replace(/\u00DA/g,'U'); result= result.replace(/\u00F9/g,'u'); result= result.replace(/\u00D9/g,'U'); result= result.replace(/\u1EE7/g,'u'); result= result.replace(/\u1EE6/g,'U'); result= result.replace(/\u0169/g,'u'); result= result.replace(/\u0168/g,'U'); result= result.replace(/\u1EE5/g,'u'); result= result.replace(/\u1EE4/g,'U'); // ú Ú result= result.replace(/\u01B0/g,'u'); result= result.replace(/\u01AF/g,'U'); result= result.replace(/\u1EE9/g,'u'); result= result.replace(/\u1EE8/g,'U'); result= result.replace(/\u1EEB/g,'u'); result= result.replace(/\u1EEA/g,'U'); result= result.replace(/\u1EED/g,'u'); result= result.replace(/\u1EEC/g,'U'); result= result.replace(/\u1EEF/g,'u'); result= result.replace(/\u1EEE/g,'U'); result= result.replace(/\u1EF1/g,'u'); result= result.replace(/\u1EF0/g,'U'); // u U result= result.replace(/\u00FD/g,'y'); result= result.replace(/\u00DD/g,'Y'); result= result.replace(/\u1EF3/g,'y'); result= result.replace(/\u1EF2/g,'Y'); result= result.replace(/\u1EF7/g,'y'); result= result.replace(/\u1EF6/g,'Y'); result= result.replace(/\u1EF9/g,'y'); result= result.replace(/\u1EF8/g,'Y'); result= result.replace(/\u1EF5/g,'y'); result= result.replace(/\u1EF4/g,'Y'); // ý Ý result= result.replace(/\u00D0/g,'D'); result= result.replace(/\u0110/g,'D'); result= result.replace(/\u0111/g,'d'); // d Ð // double spaces result = result.replace(/\s\s/g,' '); // double special charaters result = result.replace(/\s:\s/g,'-'); result = result.replace(/\s:/g,'-'); result = result.replace(/\s\!/g,'-'); result = result.replace(/\s\?/g,''); result = result.replace(/\s\./g,''); result = result.replace(/\s\,/g,''); // space charater if(replaceSpaceByMinues) result = result.replace(/\s/g,'-'); else result = result.replace(/\s/g,'_'); // special charater result = result.replace(/\+/g,'').replace(/\//g,'').replace(/\'/g,''); result = result.replace(/\\/g,'').replace(/\=/g,'').replace(/\&/g,'').replace(/\?/g,''); result = result.replace(/\,/g,'').replace(/\./g,'').replace(/\&/g,'').replace(/\?/g,''); result = result.replace(/\(/g,'').replace(/\)/g,'').replace(/\#/g,'').replace(/\%/g,''); result = result.replace(/\`/g,'').replace(/\!/g,'').replace(/\@/g,'').replace(/\$/g,''); result = result.replace(/\>/g,'').replace(/\'); html += (''); html += (''); html += (''); html += (''); html += (''); html += (''); html += (''); html += (''); html += (''); html += (''); html += (''); html += (''); html += (''); html += (''); html += (''); html += (''); html += (''); html += (''); html += (''); html += (''); html += (''); html += (''); html += (''); } // Windows Media Player 6.4 Code else { height -= 18; html += (' '); html += (''); html += (''); html += (''); html += (''); html += (''); html += (''); html += (''); html += (''); html += (''); html += (' '); html += (' '); } // return HTML code to show the player return html; } // get html code for showing Flash Player inline a web page function ___getFlashPlayerCode() { var mediaUrl = arguments[0]||''; if(mediaUrl=='') return ''; var width = arguments[1]||0; var height = arguments[2]||0; var html = '0) html += ' width="' + width + '"'; if(width>0) html += ' height="' + height + '"'; html += '>'; html += ''; html += ''; html += ''; html += '0) html += ' width="' + width + '"'; if(width>0) html += ' height="' + height + '"'; html += ' wmode="opaque">'; // return HTML code to show the player return html; } // ------------------------------------------------------------------------------ // show scrolling banner at the left/right of a webpage // ------------------------------------------------------------------------------ function ___showScrollingBanner(id, type, minScreenWidth, offsetTop) { // computing the starting positions of the banner var startX, startY = 0; if(document.body.clientWidth < minScreenWidth) startX = -200; else { if(type==0) // scroll left startX = 1; else // scroll right startX = document.body.clientWidth - 200; } // get the scroll banner by Id var floatObj = document.getElementById ? document.getElementById(id) : document.all ? document.all[id] : document.layers[id]; if(!floatObj) return; // set positions and scrolling floatObj.x = startX; floatObj.y = startY; ___stayFloat(floatObj, type, minScreenWidth, offsetTop); } // method for displaying/scrolling the banner ___stayFloat = function(floatObj, type, minScreenWidth, offsetTop) { // hide banner if screen width is less than minimum screen width (best value: 980 pixels) if (document.body.clientWidth < minScreenWidth) { floatObj.style.display = 'none'; return; } // re-computing the positions var ns = navigator.appName.indexOf("Netscape") != -1; var startX, startY; // computing offset if (document.documentElement && document.documentElement.scrollTop) var pY = ns ? pageYOffset : document.documentElement.scrollTop; else if (document.body) var pY = ns ? pageYOffset : document.body.scrollTop; // computing top position if (document.body.scrollTop > offsetTop) startY = 2; else startY = offsetTop; // computing left position if(type==0) // scroll left startX = 1; else // scroll right startX = document.body.clientWidth - floatObj.offsetWidth - 1; // re-positions floatObj.y += (pY + startY - floatObj.y)/8; floatObj.style.left = startX; floatObj.style.top = floatObj.y; // display the banner floatObj.style.display = ''; // for scrolling smoothly setTimeout(function(){___stayFloat(floatObj,type,minScreenWidth,offsetTop)}, 30); } // ------------------------------------------------------------------------------ // Show rotator banners and stickers (see sample on vnpec.com) // ------------------------------------------------------------------------------ function vieRotator() { this.GlobalID=''; this.ElementID=''; this.ContainerID=''; this.AutoStart=true; this.HideEffect=null; this.HideEffectDuration=0; this.Loop=true; this.PauseOnMouseOver=true; this.RotationType='ContentScroll'; this.ScrollDirection='up'; this.ScrollInterval=10; this.qw_bg=1; this.ShowEffect=null; this.ShowEffectDuration=0; this.SlidePause=2000; this.SmoothScrollSpeed='Medium'; this.Slides=new Array(); this.Tickers=new Array(); this.LeadTickers=new Array(); this.qw_e=-1; this.qw_m=0; this.qw_i=0; this.qw_f=0; this.qw_ae=0; this.qw_o=true; this.HasTickers=false; this.qw_cn=null; this.qw_u=false; this.qw_ba=false; this.qw_aj=''; } function rcr_Start(qw_a) { if(qw_a.RotationType=='SlideShow') { ss_ShowNextSlide(qw_a); } else { qw_bw(qw_a); scroll_ShowNextSlide(qw_a); } } function qw_bs(qw_a) { if(!qw_a.qw_u) return null; qw_a.qw_u=false; if(!qw_a.qw_ba) { if(qw_a.RotationType=='SlideShow') { qw_cm(qw_a); } else { qw_bv(qw_a); } } } function qw_av(qw_a) { if(qw_a.qw_u) return null; qw_a.qw_u=true; window.clearTimeout(qw_a.qw_f); window.clearTimeout(qw_a.qw_ae); if(qw_a.SlidePause==0) window.clearInterval(qw_a.qw_i); if(qw_a.RotationType=='SlideShow') { var qw_c=document.getElementById(qw_a.ContainerID); qw_c.style.visibility='visible'; } } function qw_v(qw_a) { if(qw_a.qw_e==-1) qw_a.qw_e=0; else if(qw_a.qw_e==qw_a.Slides.length-1) { qw_a.qw_e=0; qw_a.qw_o=false; } else qw_a.qw_e++; } function qw_bw(qw_a) { var qw_c=document.getElementById(qw_a.ContainerID); var qw_as=document.getElementById(qw_a.ElementID); var qw_bf var qw_ay; switch(qw_a.ScrollDirection) { case'up': qw_bf=parseInt(qw_as.style.height.replace('px',''))+'px'; qw_ay='0px'; break; case'left': qw_bf='0px'; qw_ay=parseInt(qw_as.style.width.replace('px',''))+'px'; break; } qw_c.style.top=qw_bf; qw_c.style.left=qw_ay; qw_c.style.visibility='visible' } function qw_bv(qw_a) { if(qw_a.qw_i==0) { scroll_ShowNextSlide(qw_a) } else if(qw_a.SlidePause==0) { var qw_b='scroll_NextSlideToView('+qw_a.GlobalID+')'; qw_a.qw_i=window.setInterval(qw_b,qw_a.ScrollInterval); } } function scroll_ShowNextSlide(qw_a) { qw_v(qw_a); if(!qw_a.Loop&&!qw_a.qw_o) { qw_av(qw_a); return null; } var qw_b='scroll_NextSlideToView('+qw_a.GlobalID+')'; qw_a.qw_i=window.setInterval(qw_b,qw_a.ScrollInterval); } function scroll_NextSlideToView(qw_a) { var qw_c=document.getElementById(qw_a.ContainerID); var qw_ak=document.getElementById(qw_a.Slides[qw_a.qw_e]); var qw_ax=parseInt(qw_c.style.top.replace('px','')); var qw_ap=parseInt(qw_c.style.left.replace('px','')); var qw_w=0,qw_s=0,qw_ad=document.getElementById(qw_a.Slides[qw_q(qw_a)]); if(!(qw_a.qw_o&&qw_a.qw_e==0)) { qw_w=qw_ad.offsetHeight; qw_s=qw_ad.offsetWidth; } var qw_az=0; switch(qw_a.ScrollDirection) { case'up': if(qw_a.RotationType=='ContentScroll') { qw_ax-=qw_a.qw_bg; } else { qw_az=abs(qw_w+qw_ax)/qw_p(qw_a); if(qw_az<=2) qw_az=1; qw_ax-=qw_az; }; break; case'left': if(qw_a.RotationType=='ContentScroll') { qw_ap-=qw_a.qw_bg; } else { qw_az=abs(qw_s+qw_ap)/qw_p(qw_a); if(qw_az<=2) qw_az=1; qw_ap-=qw_az; } break; } qw_c.style.top=qw_ax+'px'; qw_c.style.left=qw_ap+'px'; if((qw_ax+qw_w==0&&qw_a.ScrollDirection=='up')||(qw_ap+qw_s==0&&qw_a.ScrollDirection=='left')) { window.clearInterval(qw_a.qw_i); qw_a.qw_i=0; if(!(qw_a.qw_o&&qw_a.qw_e==0)) qw_al(qw_a); if(qw_a.HasTickers) { rcr_StartTickerSequence(qw_a); } else { var qw_b='scroll_ShowNextSlide('+qw_a.GlobalID+')'; if(!qw_a.qw_u) qw_a.qw_f=window.setTimeout(qw_b,qw_a.SlidePause); } } } function qw_al(qw_a) { var qw_c = document.getElementById(qw_a.ContainerID); if(qw_a.ScrollDirection=='up') { var qw_ad=document.getElementById(qw_a.Slides[qw_q(qw_a)]); var qw_br=qw_ad.cloneNode(true); qw_c.removeChild(qw_ad); qw_c.style.top='0px'; qw_c.appendChild(qw_br); qw_t(qw_a); } else { var qw_ck = document.getElementById(qw_a.ContainerRowID); var qw_bq = qw_ck.cells[0]; var qw_cv = qw_ck.removeChild(qw_bq); qw_c.style.left = '0px'; var qw_cw = qw_ck.appendChild(qw_cv); qw_t(qw_a); } } function qw_q(qw_a) { if(qw_a.qw_e==0) return qw_a.Slides.length-1; else return qw_a.qw_e-1; } function qw_p(qw_a) { switch(qw_a.SmoothScrollSpeed) { case'Slow': return 8; break; case'Medium': return 6; break; case'Fast': return 4; break; } } function qw_cm(qw_a) { if(qw_a.HasTickers&&qw_a.qw_aj=='PlayingShowEffect') return null; if(!qw_a.qw_ba) { ss_PlayHideEffect(qw_a); var qw_bb=0; if(qw_a.HideEffect) qw_bb=qw_a.HideEffectDuration; qw_b='ss_ShowNextSlide('+qw_a.GlobalID+')'; qw_a.qw_f=window.setTimeout(qw_b,qw_bb); } } function ss_ShowNextSlide(qw_a) { if(qw_a.qw_u) return null; qw_v(qw_a); var qw_c=document.getElementById(qw_a.ContainerID); var qw_ak=document.getElementById(qw_a.Slides[qw_a.qw_e]); qw_c.innerHTML=qw_ak.innerHTML; qw_ak.innerHTML=''; qw_t(qw_a); qw_bd(qw_a); if(qw_a.HasTickers) { var qw_b='rcr_StartTickerSequence('+qw_a.GlobalID+')'; var qw_cr=window.setTimeout(qw_b,qw_a.ShowEffectDuration); } else { var qw_b='ss_DisplaySlide('+qw_a.GlobalID+')'; qw_a.qw_f=window.setTimeout(qw_b,qw_a.ShowEffectDuration); } } function ss_DisplaySlide(qw_a) { if(qw_a.qw_u) return null; qw_a.qw_aj='DisplayingSlide'; window.clearTimeout(qw_a.qw_ae); window.clearTimeout(qw_a.qw_f); if(!qw_a.Loop&&qw_a.qw_e==qw_a.Slides.length-1) { qw_av(qw_a); return null; } var qw_b='ss_PlayHideEffect('+qw_a.GlobalID+')'; qw_a.qw_ae=window.setTimeout(qw_b,qw_a.SlidePause); var qw_bb=0; if(qw_a.HideEffect) qw_bb+=qw_a.HideEffectDuration; qw_bb+=qw_a.SlidePause; qw_b='ss_ShowNextSlide('+qw_a.GlobalID+')'; qw_a.qw_f=window.setTimeout(qw_b,qw_bb); } function qw_bd(qw_a) { qw_a.qw_aj='PlayingShowEffect'; var qw_c=document.getElementById(qw_a.ContainerID); if(qw_c.filters&&qw_a.ShowEffect) { qw_c.style.filter=qw_a.ShowEffect; qw_c.filters[0].apply(); } qw_c.style.visibility='visible'; if(qw_c.filters&&qw_a.ShowEffect) qw_c.filters[0].play() } function ss_PlayHideEffect(qw_a) { qw_a.qw_aj='PlayingHideEffect'; var qw_c=document.getElementById(qw_a.ContainerID); if(qw_c.filters&&qw_a.HideEffect) { qw_c.style.filter=qw_a.HideEffect; qw_c.filters[0].apply(); }; var qw_ak=document.getElementById(qw_a.Slides[qw_a.qw_e]); qw_ak.innerHTML=qw_c.innerHTML; qw_c.style.visibility='hidden'; if(qw_c.filters&&qw_a.HideEffect) qw_c.filters[0].play(); } function rcr_StartTickerSequence(qw_a) { qw_a.qw_aj='RunningTickers'; qw_a.qw_ba=true; rcr_StartTicker(qw_a.LeadTickers[qw_a.qw_m]); } function rcr_EndTickerSequence(qw_a) { qw_a.qw_ba=false; if(!qw_a.qw_u) { if(qw_a.RotationType=='SlideShow') { ss_DisplaySlide(qw_a); } else { var qw_b='scroll_ShowNextSlide('+qw_a.GlobalID+')'; qw_a.qw_f=window.setTimeout(qw_b,qw_a.SlidePause); } } qw_aq(qw_a); } function qw_aq(qw_a) { if(qw_a.qw_m==qw_a.LeadTickers.length-1) qw_a.qw_m=0; else qw_a.qw_m++; } function qw_t(qw_a) { if(qw_a.HasTickers) for(var qw_ct=0;qw_ctqw_bz)&&(qw_bo.pageXqw_cc)&&(qw_bo.pageY0) { x+=1; } } } while((qw_h=qw_h.offsetParent)); return x; } function qw_ch(qw_h) { var y=0; do { if(qw_h.style.position=='absolute') { return y+qw_h.offsetTop; } else { y+=qw_h.offsetTop; if(qw_h.offsetParent) if(qw_h.offsetParent.tagName=='TABLE') if(parseInt(qw_h.offsetParent.border)>0) { y+=1; } } } while((qw_h=qw_h.offsetParent)); return y; } function abs(x) { if(x<0) return-x; else return x; }