var MSIE = false; var ver = 0; var indexOfMSIE = navigator.userAgent.indexOf("MSIE"); if(indexOfMSIE != -1) { MSIE = true; ver = parseFloat(navigator.userAgent.substring(indexOfMSIE + 5, navigator.userAgent.indexOf(";", indexOfMSIE))); } var isMac = (navigator.appVersion.indexOf("Macintosh") >= 0); var isUpLevel = (MSIE && ver >= 5 && !isMac); var xmlData = XMLData("drbl_mode.files/data.xml"); var g_RowStyleList = new Array( "propViewerEvenRow", "propViewerOddRow" ); var strShape = "圖形名稱:"; function XMLData(file) { var temp = null; if(isUpLevel) { temp = CreateObject("Microsoft.XMLDOM"); if (temp == null) { temp = CreateObject("MSXML2.DOMDocument"); } if (temp != null) { temp.async = false; temp.load(file); if (temp.parseError.errorCode != 0) { temp = null; } } } return temp; } function CreateObject (strObj) { var obj = null; eval ("try { obj = new ActiveXObject(strObj); } catch (e) {}"); return obj; } function doVersion() { if(isUpLevel) { frmToolbar.divDownLevel.innerHTML = ""; frmToolbar.divUpLevel.innerHTML = frmWidgets.divData.innerHTML; } } function FindShapeXML (pageID, shapeID) { var shapeObj = null; if (xmlData != null) { var pagesObj = xmlData.selectSingleNode("VisioDocument/Pages"); if(!pagesObj) { return null; } var pageQuerryString = './/Page[@ID = "' + pageID + '"]'; var pageObj = pagesObj.selectSingleNode(pageQuerryString); if(pageObj == null) { return null; } var shapeQuerryString = './/Shape[@ID = "' + shapeID + '"]'; shapeObj = pageObj.selectSingleNode(shapeQuerryString); } return shapeObj; } function OnShapeKey(pageID, shapeID) { var e = window.frmDrawing.event; if(e.keyCode == 13 && e.ctrlKey) //ctrl + enter { UpdateProps (pageID, shapeID); } else if (e.keyCode == 13) { OnShapeClick (pageID, shapeID); } } function OnShapeClick (pageID, shapeID) { if (isUpLevel) { var e = frmDrawing.window.event; var elem = e.srcElement; if (e != null && e.ctrlKey && frmToolbar.widgets && frmToolbar.widgets.Details) { UpdateProps (pageID, shapeID); } else { var shapeNode = FindShapeXML (pageID, shapeID); var hlObj = GetHLAction (shapeNode, pageID, shapeID); if (hlObj != null) { if (hlObj.DoFunction.length > 0) { eval (hlObj.DoFunction); } else if (hlObj.Hyperlink.length > 0) { if (hlObj.NewWindow) { window.open (hlObj.Hyperlink); } else { top.location.href = hlObj.Hyperlink.substr (0, 510); } } else if (elem != null) { var href = elem.origHref; if (href == null) { href = elem.href; } var target = elem.origTarget; if (target == null) { target = elem.target; } if (href && href.length > 0) { href = HTMLEscape (href); if (target && target == "_blank") { window.open (href); } else { top.location.href = href.substr (0, 510); } } } } } } return (!isUpLevel); } function UpdateProps(pageID, shapeID) { var shape = FindShapeXML (pageID, shapeID); FillPropPane(shape, frmToolbar.hideDetails); } function UpdatePropsByShapeName(pageName, shapeName) { var shape = FindShapeXMLByName (pageName, shapeName); FillPropPane(shape, frmToolbar.hideDetails); } function FillPropPane (shapeNode, outputDivObj ) { if (shapeNode != null && outputDivObj != null) { if(outputDivObj.style.display == "none") { frmToolbar.ToggleWidget(outputDivObj); } var strCPHTML = ""; var shapeNameAttr = shapeNode.attributes.getNamedItem ("Name"); if (shapeNameAttr) { strCPHTML += "" + strShape + " " + HTMLEscape(shapeNameAttr.text) + ""; } var strTableHTML = CreatePropTable (shapeNode); if(strTableHTML.indexOf(""; } if (strTableHTML.length > 0) { strCPHTML += strTableHTML; } else { strCPHTML = strNoCustomPropertiesToDisplayText; } outputDivObj.innerHTML = strCPHTML; outputDivObj.minHeight = 75; } } function CreatePropTable (shapeNode) { var strCPHTML = ""; var strStartTable = ""; strStartTable += ""; var strEndTable = "
標籤
"; if (shapeNode != null) { var propColl = shapeNode.selectNodes ("Prop"); var propCount = propColl.length; for (var count = 0; count < propCount; count++) { strCPHTML += ""; var strLabelText = ""; oPropLabel = propColl.item(count).selectSingleNode("Label/textnode()"); if (oPropLabel != null) { strLabelText = HTMLEscape (oPropLabel.text); } else { oPropName = propColl.item(count).attributes.getNamedItem ("Name"); if (oPropName) { strLabelText = HTMLEscape (oPropName.text); } } if (strLabelText.length > 0) { strCPHTML += "" + strLabelText + ""; strCPHTML += "" var strValueText = " "; oPropValue = propColl.item(count).selectSingleNode("Value/textnode()"); if (oPropValue) { strValueText = HTMLEscape (oPropValue.text); } strCPHTML += strValueText + ""; } } if(strCPHTML != "") { strCPHTML = strStartTable + strCPHTML + strEndTable; } else { strCPHTML = "沒有可使用的詳細資料。"; } } return strCPHTML; } function keyHandler() { var e = frmDrawing.window.event; if(e.keyCode == 13) //enter { e.srcElement.click(); } } function GoToPage(index) { if (viewMgr) { viewMgr.loadPage (index); } else { DefPageLoad (index); } } function GoToPageByID(pageID) { var pageIndex = PageIndexFromID (pageID); if (pageIndex >= 0) { GoToPage (pageIndex); } } function PageIndexFromID (pageID) { if (g_FileList != null) { var entry; var count; var fileEntry; var bFoundEntry = false; for (count = 0; count < g_FileList.length && !bFoundEntry; count++) { if (pageID == g_FileList[count].PageID) { return count; } } } return -1; } function PageIndexFromName (strPageName) { if (g_FileList != null) { var entry; var strPageNameLower = strPageName; strPageNameLower = strPageNameLower.toLowerCase (); var count; var fileEntry; var bFoundEntry = false; for (count = 0; count < g_FileList.length && !bFoundEntry; count++) { var strFileListPageName = g_FileList[count].PageName; strFileListPageName = HTMLUnescape (strFileListPageName); strFileListPageName = strFileListPageName.toLowerCase (); if (strPageNameLower == strFileListPageName) { return count; } } } return -1; } function PageIndexFromFileName (strFileName) { if (g_FileList != null) { var entry; var strFileNameLower = strFileName; strFileNameLower = strFileNameLower.toLowerCase (); var count; var fileEntry; var bFoundEntry = false; for (count = 0; count < g_FileList.length && !bFoundEntry; count++) { var strFileListFileName = g_FileList[count].PriImage; strFileListFileName = strFileListFileName.toLowerCase (); if (strFileNameLower == strFileListFileName) { return count; } strFileListFileName = g_FileList[count].SecImage; strFileListFileName = strFileListFileName.toLowerCase (); if (strFileNameLower == strFileListFileName) { return count; } } } return -1; } function PageIndexFromVisioPageIndex (pageIndex) { if (g_FileList != null) { var entry; var count; var fileEntry; var bFoundEntry = false; for (count = 0; count < g_FileList.length && !bFoundEntry; count++) { if (pageIndex == g_FileList[count].PageIndex) { return count; } } } return -1; } function FindShapeXML (pageID, shapeID) { var shapeObj = null; if (xmlData) { var pagesObj = xmlData.selectSingleNode("VisioDocument/Pages"); if(!pagesObj) { return null; } var pageQuerryString = './/Page[@ID = "' + pageID + '"]'; var pageObj = pagesObj.selectSingleNode(pageQuerryString); if(!pageObj) { return null; } var shapeQuerryString = './/Shape[@ID = "' + shapeID + '"]'; shapeObj = pageObj.selectSingleNode(shapeQuerryString); } return shapeObj; } function FindShapeXMLByName (pageName, shapeName) { var shapeObj = null; if (xmlData) { var pagesObj = xmlData.selectSingleNode("VisioDocument/Pages"); if(!pagesObj) { return null; } var pageQuerryString = './/Page[@Name $ieq$ "' + EscapeString (pageName) + '"]'; var pageObj = pagesObj.selectSingleNode(pageQuerryString); if(!pageObj) { return null; } var shapeQuerryString = './/Shape[@Name $ieq$ "' + EscapeString (shapeName) + '"]'; shapeObj = pageObj.selectSingleNode(shapeQuerryString); } return shapeObj; } function Unquote (str) { var nStartIndex = 0; var nEndIndex = str.length; if (str.charAt (0) == '"') { nStartIndex = 1; } if (str.charAt (nEndIndex - 1) == '"') { nEndIndex -= 1; } return str.substring (nStartIndex, nEndIndex); } function ConvertXorYCoordinate(PosValue, OldMin, OldMax, NewMin, NewMax, MapBackwards) { var OldMid = (OldMax - OldMin) / 2; var NewMid = (NewMax - NewMin) / 2; var ConvertResult = 1 * PosValue; ConvertResult = ConvertResult - (OldMin + OldMid); ConvertResult = ConvertResult / OldMid; if(MapBackwards != 0) { ConvertResult = 0 - ConvertResult; } ConvertResult = ConvertResult * NewMid; ConvertResult = ConvertResult + (NewMin + NewMid); return ConvertResult; } function showObject( divObject, divID ) { if( divObject == null ) divObject = getObj( divID ); if( divObject != null ) { divObject.style.display = ""; divObject.style.visibility = "visible" } return divObject; } function hideObject( divObject, divID ) { if( divObject == null ) divObject = getObj( divID ); if( divObject != null ) { divObject.style.visibility = "hidden"; divObject.style.display = "none"; } return divObject; } function EscapeString (str) { var strResult = ""; for (var i = 0 ; i < str.length ; i++) { var curChar = str.charAt(i); if (curChar == '\\') { strResult += "\\\\"; } else if (curChar == "\"") { strResult += "\\\""; } else if (curChar == "\'") { strResult += "\\\'"; } else { strResult += curChar; } } return strResult; } function HTMLEscape (str) { var strResult = ""; for (var i = 0 ; i < str.length ; i++) { var curChar = str.charAt(i); if (curChar == '\\') { strResult += "\"; } else if (curChar == '\"') { strResult += """; } else if (curChar == '\'') { strResult += "'"; } else if (curChar == '<') { strResult += "<"; } else if (curChar == '<') { strResult += ">"; } else if (curChar == '&') { strResult += "&"; } else { strResult += curChar; } } return strResult; } function HTMLUnescape (str) { var strResult = ""; var strEscapePattern = "&#xx;"; for (var i = 0 ; i < str.length - strEscapePattern.length + 1; i++) { if (str.charAt(i) == '&' && str.charAt(i + 1) == '#' && str.charAt(i + 4) == ';') { var charCode = str.charAt(i + 2); charCode += str.charAt(i + 3); if (charCode == "34") { strResult += '"'; } else if (charCode == "39") { strResult += '\''; } else if (charCode == "60") { strResult += '<'; } else if (charCode == "62") { strResult += '>'; } else if (charCode == "92") { strResult += '\\'; } else if (charCode == "38") { strResult += '&'; } i = i + strEscapePattern.length - 1; } else { strResult += str.charAt(i); } } strResult += str.substring (i, str.length); return strResult; }