var strShapeName = "圖形名稱"; var strShapeText = "圖形文字"; var strProps = "圖形資料"; var strResults = "搜尋結果關於:"; var strShape = "圖形名稱:"; var strNoCustomPropertiesToDisplayText = "CTRL+按一下繪圖中的圖形以檢視詳細資料。"; var FindShapeXML = parent.FindShapeXML; var Unquote = parent.Unquote; var put_Location = parent.put_Location; var strChkBox = "Chkbox"; var strPropChkBox = "PropChkbox"; function doExpando(xxx,yyy){ if (xxx.style.display=="none"){ xxx.style.display = "" yyy.src = up.src; }else{ xxx.style.display = "none" yyy.src = down.src; } } function doExp(xxx,yyy){ if (xxx.style.display=="none"){ xxx.style.display = "" yyy.src = "minus.gif"; }else{ xxx.style.display = "none" yyy.src = "plus.gif"; } } function FindOnClick() { var count, indexOfString; var fieldsToSearchArray = new Array(); if (parent.xmlData != null && document.theForm[strProps + strChkBox].checked) { for( count=0; count < document.theForm.length; count++ ) { indexOfString = document.theForm[count].name.indexOf(strPropChkBox); if( -1 != indexOfString && document.theForm[count].checked ) { fieldsToSearchArray[ fieldsToSearchArray.length ] = document.theForm[count].name.slice(0, indexOfString); } } } var searchTokensArray = CreateSearchTokens (document.theForm.findString.value); if (searchTokensArray.length > 0) { var findArray = Find(searchTokensArray, fieldsToSearchArray); var ArrayLength = findArray.length; var strResultsHTML = "找不到相符項目。"; var lastPageID = null; var shapeID; if(ArrayLength > 0) { strResultsHTML = strResults + ' '+ parent.HTMLEscape(document.theForm.findString.value) +''; for ( count = 0; count < ArrayLength; count++) { if( lastPageID != findArray[count].PageID ) { lastPageID = findArray[count].PageID; } shapeID = findArray[count].ShapeID; strResultsHTML += '

顯示/隱藏圖形詳細資料\n' strResultsHTML += '

\n' strResultsHTML += '\n'; strResultsHTML += '\n' } } var divAdvSrch = document.all("hideAdvSrch"); var imgAS0 = document.all("as0"); var tmpObj = document.all("hideResults"); if( tmpObj != null ) { tmpObj.innerHTML = strResultsHTML; tmpObj.open = "true"; tmpObj.style.display = "block"; } } } function CreateSearchTokens (strUserString) { var searchTokensArray = new Array(); var strToken = ""; var chCurChar; for (var count = 0; count < strUserString.length; count++) { chCurChar = strUserString.charAt(count); if (chCurChar == '"') { var nNextQuote = strUserString.indexOf('"', count + 1); if (nNextQuote >= 0) { strToken = strUserString.slice(count + 1, nNextQuote); searchTokensArray[searchTokensArray.length] = strToken; strToken = ""; count = nNextQuote; } } else if (chCurChar == ' ') { if (strToken.length > 0) { searchTokensArray[searchTokensArray.length] = strToken; } strToken = ""; } else { strToken += chCurChar; } } if (strToken.length > 0) { searchTokensArray[searchTokensArray.length] = strToken; } return searchTokensArray; } function populateSearchResultDetails( divID, pageID, shapeID ) { var tmpShape = FindShapeXML (pageID, shapeID); var strOutput = CreatePropTable( tmpShape ); var tmpObj = document.all(divID); if( tmpObj != null ) { tmpObj.innerHTML = strOutput; } } function makeAdvancedFindCheckboxes(div) { if (parent.xmlData) { var strOutput = ""; strOutput += "
\n"; strOutput += "
\n"; strOutput += "
\n"; strOutput += "
"; var objNodes = parent.xmlData.selectNodes(".//Shape/Prop/Label"); var filter = ""; var boolFirstPass = true; var tmpPropName; while( objNodes.length > 0) { tmpPropName = objNodes.item( 0 ).text; var escapedPropName = parent.EscapeString(tmpPropName); if( true == boolFirstPass ) { filter = ". != '" + escapedPropName + "'"; boolFirstPass = false; } else { filter += " and . != '" + escapedPropName + "'"; } tmpPropName = parent.HTMLEscape (tmpPropName); strOutput += "
\n"; objNodes = parent.xmlData.selectNodes(".//Shape/Prop/Label["+ filter + "]"); } strOutput += "
" div.innerHTML = strOutput; } } function AdvSearchCustomPropCheck () { for( count=0; count < document.theForm.length; count++ ) { indexOfString = document.theForm[count].name.indexOf(strPropChkBox); if( -1 != indexOfString ) { document.theForm[count].disabled = !document.theForm[strProps + strChkBox].checked; } } } function CResultItem(title, pageID, shapeID, pinX, pinY) { this["Title"] = title; this["PageID"] = pageID; this["ShapeID"] = shapeID; this["PinX"] = pinX; this["PinY"] = pinY; } function FindParentPage(nodeObject) { if(nodeObject == null) { return null; } if(nodeObject.baseName == "Page") return nodeObject; else return FindParentPage(nodeObject.parentNode); } function QueryStringForMatch(shapeNode, regTextForFind, filterString) { if (filterString.length > 0) { var nodesToCheck = shapeNode.selectNodes(filterString); var nodeCount = nodesToCheck.length; var stringToParse; for(var ncount = 0; ncount < nodeCount; ncount++) { stringToParse = nodesToCheck.item(ncount).text; stringToParse = stringToParse.toLowerCase (); if(stringToParse.indexOf(regTextForFind) > -1) { return true; } } } } function GetShapeTitle(shapeNode) { var objTempName = null; var objTempTextElement = shapeNode.selectSingleNode("./Text"); if(objTempTextElement != null) { var objTextNode = objTempTextElement.selectSingleNode("textnode()"); if (objTextNode != null) { return parent.HTMLEscape (objTextNode.text); } } objTempName = shapeNode.selectSingleNode("./@Name"); if(objTempName != null) { return parent.HTMLEscape (objTempName.text); } return ""; } function GetPageTitle(pageID) { var pagesObj = parent.xmlData.selectSingleNode("VisioDocument/Pages"); if(!pagesObj) { return ""; } var pageQuerryString = './/Page[@ID = "' + pageID + '"]'; var pageObj = pagesObj.selectSingleNode(pageQuerryString); if(!pageObj) { return ""; } var pageNameNode = pageObj.selectSingleNode("@Name"); if(!pageNameNode) { return ""; } return pageNameNode.text; } function Find(searchTokensArray, propsToSearchArray) { var bXMLNotValid = false; var findArray = new Array(); var findIndex = 0; if (parent.xmlData != null && searchTokensArray.length > 0) { var fieldsToSearchArray = new Array(); var filterString = ""; if( null != propsToSearchArray && propsToSearchArray.length > 0 ) { var propFilterString = ""; for( var count=0; count< propsToSearchArray.length; count++ ) { if( count == 0 ) { propFilterString = "[. = '" + parent.EscapeString (propsToSearchArray[count]) + "'"; } else { propFilterString += " or . = '"+ parent.EscapeString (propsToSearchArray[count]) + "'"; } } propFilterString += "]"; fieldsToSearchArray[fieldsToSearchArray.length] = "Prop[Label"+ propFilterString +"]/Value"; } if (document.theForm[strShapeText + strChkBox].checked) { fieldsToSearchArray[fieldsToSearchArray.length] = "Text"; } if (fieldsToSearchArray.length > 0) { filterString = "(.//("; for (var fieldCount = 0; fieldCount < fieldsToSearchArray.length; fieldCount++) { if (fieldCount != 0) { filterString += " | "; } filterString += fieldsToSearchArray[fieldCount]; } filterString += ")/textnode())"; } var objShapeNodes; if (document.theForm[strShapeName + strChkBox].checked) { if (filterString.length > 0) { filterString += " | "; } filterString += "(@Name)"; var objShapeNodes = parent.xmlData.selectNodes(".//Shape"); } else { var objShapeNodes = parent.xmlData.selectNodes(".//Shape[(Prop/Value | Prop/Label | Text)]"); } var shapeCount = objShapeNodes.length; var objTempData = new CResultItem("A Label","PageID","ShapeID","PinX","PinY"); var objTempShape = null; for (count = 0; count < shapeCount; count++) { objTempShape = objShapeNodes.item(count); var objParentPageNode = FindParentPage(objTempShape); if (objParentPageNode == null) { continue; } var objPageIDNode = objParentPageNode.selectSingleNode("@ID/textnode()"); if(objPageIDNode == null) { continue; } var pageID = objPageIDNode.text; var pageIndex = parent.PageIndexFromID (pageID); if (pageIndex < 0) { continue; } var objLayerMember = objTempShape.selectSingleNode("LayerMem/LayerMember"); if (objLayerMember != null && objLayerMember.text.length > 0) { var layerArray = objLayerMember.text.split (';'); var visibleLayer = false; for (var layerCount = 0; (layerCount < layerArray.length) && !visibleLayer; layerCount++) { var objLayerVisible = objParentPageNode.selectSingleNode("Layer[@IX=" + layerArray[layerCount] + "]/Visible"); if (objLayerVisible != null) { visibleLayer = (objLayerVisible.text != 0); } } if (!visibleLayer) { continue; } } for (var tokenCount = 0; tokenCount < searchTokensArray.length; tokenCount++) { var textToFind = searchTokensArray[tokenCount]; textToFind = textToFind.toLowerCase (); if (QueryStringForMatch(objTempShape, textToFind, filterString)) { objTempData.Title = GetShapeTitle(objTempShape); objTempData.PageID = pageID; objShapeIDNode = objTempShape.selectSingleNode("@ID/textnode()"); if(objShapeIDNode == null) { bXMLNotValid = true; break; } objTempData.ShapeID = objShapeIDNode.text; objPinXNode = objTempShape.selectSingleNode("XForm/PinX/textnode()"); if(objPinXNode == null) { bXMLNotValid = true; break; } objTempData.PinX = objPinXNode.text; objPinYNode = objTempShape.selectSingleNode("XForm/PinY/textnode()"); if(objPinYNode == null) { bXMLNotValid = true; break; } objTempData.PinY = objPinYNode.text; findArray[findIndex] = new CResultItem(objTempData.Title, objTempData.PageID, objTempData.ShapeID, objTempData.PinX, objTempData.PinY); findIndex++; break; } } } if(bXMLNotValid) { findArray.length = 0; } } return findArray; } function FindQuerySelect(pageID, shapeID, pinX, pinY) { if ((!widgets.GoTo && parent.g_FileList.length > 1) || (widgets.GoTo && parent.g_FileList[document.all("Select1").value].PageID != pageID)) { parent.g_callBackFunctionArray[parent.g_callBackFunctionArray.length] = function () { parent.viewMgr.put_Location (pageID, shapeID, pinX, pinY); }; parent.GoToPageByID(pageID); } else { if (parent.viewMgr != null) { parent.viewMgr.put_Location (pageID, shapeID, pinX, pinY); } } } function TreeSelect(pageID, shapeID) { var shapeNode = FindShapeXML (pageID, shapeID); if (shapeNode != null) { var pinXNode = shapeNode.selectSingleNode("XForm/PinX/textnode()"); var pinYNode = shapeNode.selectSingleNode("XForm/PinY/textnode()"); if (pinXNode != null && pinYNode != null) { FindQuerySelect (pageID, shapeID, pinXNode.text, pinYNode.text); } } } var g_RowStyleList = parent.g_RowStyleList; var FillPropPane = parent.FillPropPane; var CreatePropTable = parent.CreatePropTable;