//////////////////////////////////////////////////////////////////////////////// // File: MENU.AS // Desc: File chứa các hàm và dữ liệu phục vụ việc khởi tạo, xử lý các chức // năng của Menu, Toolbar, các nút bấm trên giao diện chính, các hộp // nhập liệu (dialog) và hộp thoại (alert),... // // Author: Đinh Hải Minh, VicoSoft // Date: 01/12/2003 //////////////////////////////////////////////////////////////////////////////// import mx.controls.Alert; function CreateMenuBar() { /* // // CREATE THE MENUBAR OF APPLICATION // // Delete all menu items while( mnuBar.getMenuAt(0) ) mnuBar.removeMenuAt(0); var menuObj = new XML( ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""); mnuBar.addMenu(menuObj); var menuObj = new XML( ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""); mnuBar.addMenu(menuObj); menuObj = new XML( ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""); mnuBar.addMenu(menuObj); menuObj = new XML( ""+ (webbase? "": ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ "")+ ""+ ""+ ""); mnuBar.addMenu(menuObj); menuObj = new XML( ""+ ""+ (webbase? "": "")+ ""+ ""+ ""); mnuBar.addMenu(menuObj); if (online) { menuObj = new XML( ""+ ""+ ""+ ""+ ""+ ""); mnuBar.addMenu(menuObj); } // // GET SUBMENUS OF MENUBAR AND HANDLE THEM // mnuFile = mnuBar.getMenuAt(0); mnuEdit = mnuBar.getMenuAt(1); mnuSlide = mnuBar.getMenuAt(2); mnuOption = mnuBar.getMenuAt(3); mnuHelp = mnuBar.getMenuAt(4); //if (online) mnuAccount = mnuBar.getMenuAt(5); mnuFile.addEventListener("change", onSelectFile); mnuEdit.addEventListener("change", onSelectEdit); mnuSlide.addEventListener("change", onSelectSlide); mnuOption.addEventListener("change", onSelectWindow); mnuHelp.addEventListener("change", onSelectHelp); //if (online) mnuAccount.addEventListener("change", onSelectAccount); // hide the Menu Bar //mnuBar.visible = false; */ // // TOOLTIP TEXT OF INTERFACE BUTTONS // btnNew.tooltipText = lang.mnuNew; btnOpen.tooltipText = lang.mnuOpen + "..."; btnSave.tooltipText = lang.mnuSave; btnSaveAs.tooltipText = lang.mnuSaveAs + "..."; btnUndo.tooltipText = lang.mnuUndo; btnRedo.tooltipText = lang.mnuRedo; btnSync.tooltipText = lang.mnuSync + "..."; btnLibrary.tooltipText = lang.mnuLibrary + "..."; btnPack.tooltipText = lang.mnuPack + "..."; btnCover.tooltipText = lang.mnuCover + "..."; btnBackground.tooltipText = lang.mnuBackGround + "..."; btnLayout.tooltipText = lang.mnuLayout; btnPreview.tooltipText = lang.mnuFullScr; btnHelp.tooltipText = lang.mnuHelpContent; btnSetting.tooltipText = lang.mnuConfig + "..."; btnMoveUp.onRollOver = function() {StartTooltip(lang.mnuMoveUp)}; btnMoveDown.onRollOver = function() {StartTooltip(lang.mnuMoveDn)}; btnCutItem.onRollOver = function() {StartTooltip(lang.mnuCut)}; btnCopyItem.onRollOver = function() {StartTooltip(lang.mnuCopy)}; btnPasteItem.onRollOver = function() {StartTooltip(lang.mnuPaste)}; btnAdd.onRollOver = function() {StartTooltip(lang.mnuAdd)}; btnDetail.onRollOver = function() {StartTooltip(lang.mnuChange)}; btnDelete.onRollOver = function() {StartTooltip(lang.mnuDelete)}; btnMoveUp.onRollOut = btnMoveUp.onPress = StopTooltip; btnMoveDown.onRollOut = btnMoveDown.onPress = StopTooltip; btnCutItem.onRollOut = btnCutItem.onPress = StopTooltip; btnCopyItem.onRollOut = btnCopyItem.onPress = StopTooltip; btnPasteItem.onRollOut = btnPasteItem.onPress = StopTooltip; btnAdd.onRollOut = btnAdd.onPress = StopTooltip; btnDelete.onRollOut = btnDelete.onPress = StopTooltip; btnDetail.onRollOut = btnDetail.onPress = StopTooltip; } //////////////////////////////////////////////////////////////////////////////// // HANDLE FUNCTIONS FOR ALL SUBMENUS // function onSelectFile(itemObj) { if( itemObj.menuItem == mnuFile.getItemAt(0) ) btnNew.onRelease(); if( itemObj.menuItem == mnuFile.getItemAt(1) ) btnOpen.onRelease(); if( itemObj.menuItem == mnuFile.getItemAt(2) ) btnSave.onRelease(); if( itemObj.menuItem == mnuFile.getItemAt(3) ) SaveAndExec(undefined, true); if( itemObj.menuItem == mnuFile.getItemAt(5) ) btnLibrary.onRelease(); if( itemObj.menuItem == mnuFile.getItemAt(6) ) btnPack.onRelease(); if( itemObj.menuItem == mnuFile.getItemAt(8) ) ExitProgram(); } btnSaveAs.onRelease = function() { SaveAndExec(undefined, true); } function onSelectEdit(itemObj) { if( itemObj.menuItem == mnuEdit.getItemAt(0) ) ProcessUndo(); if( itemObj.menuItem == mnuEdit.getItemAt(1) ) ProcessRedo(); if( itemObj.menuItem == mnuEdit.getItemAt(3) ) btnCutOnRelease(); if( itemObj.menuItem == mnuEdit.getItemAt(4) ) btnCopyOnRelease(); if( itemObj.menuItem == mnuEdit.getItemAt(5) ) btnPasteOnRelease(); if( itemObj.menuItem == mnuEdit.getItemAt(7) ) btnMoveUp.onRelease(); if( itemObj.menuItem == mnuEdit.getItemAt(8) ) btnMoveDown.onRelease(); } btnUndo.onRelease = function() { ProcessUndo(); } btnRedo.onRelease = function() { ProcessRedo(); } function onSelectSlide(itemObj) { if(itemObj.menuItem == mnuSlide.getItemAt(0)) btnAdd.onRelease(); if(itemObj.menuItem == mnuSlide.getItemAt(1)) btnDetail.onRelease(); if(itemObj.menuItem == mnuSlide.getItemAt(2)) SyncVideoAudio(); if(itemObj.menuItem == mnuSlide.getItemAt(3)) btnDelete.onRelease(); if(itemObj.menuItem == mnuSlide.getItemAt(5)) SelectCoverPage(); if(itemObj.menuItem == mnuSlide.getItemAt(6)) btnLayout.onRelease(); if(itemObj.menuItem == mnuSlide.getItemAt(7)) SelectBackGround(); if(itemObj.menuItem == mnuSlide.getItemAt(9)) btnPreview.onRelease(); } btnSync.onRelease = function() { SyncVideoAudio(); } btnCover.onRelease = function() { SelectCoverPage(); } btnBackground.onRelease = function() { SelectBackGround(); } function onSelectWindow(itemObj) { if (webbase) { if(itemObj.menuItem == mnuOption.getItemAt(0)) ResetWindowSize(); if(itemObj.menuItem == mnuOption.getItemAt(1)) ShowConfigDlg(); return; } if(itemObj.menuItem == mnuOption.getItemAt(0)) UpdatePlugin(); if(itemObj.menuItem == mnuOption.getItemAt(1)) UpdateLayout(); if(itemObj.menuItem == mnuOption.getItemAt(2)) UpdateCommonLib(); if(itemObj.menuItem == mnuOption.getItemAt(4).childNodes[0]) RunApplication((isWow64? "UniKey64": "UniKey") + "\\UniKeyNT.exe"); if(itemObj.menuItem == mnuOption.getItemAt(4).childNodes[1]) RunApplication("TeamViewer\\TeamViewerQS_vi.exe"); if(itemObj.menuItem == mnuOption.getItemAt(6)) ResetWindowSize(); if(itemObj.menuItem == mnuOption.getItemAt(7)) ShowConfigDlg(); } btnSetting.onRelease = function() { ShowConfigDlg(); } function onSelectHelp(itemObj) { if(itemObj.menuItem == mnuHelp.getItemAt(0)) btnHelp.onRelease(); if (webbase) { if(itemObj.menuItem == mnuHelp.getItemAt(2)) AboutProgram(); return; } if(itemObj.menuItem == mnuHelp.getItemAt(1)) AutoUpgrade(); if(itemObj.menuItem == mnuHelp.getItemAt(3)) AboutProgram(); } function onSelectAccount(itemObj) { if(itemObj.menuItem == mnuAccount.getItemAt(0)) EditAccountInfo(); if(itemObj.menuItem == mnuAccount.getItemAt(1)) ManageCastAccount(); if(itemObj.menuItem == mnuAccount.getItemAt(2)) ShowVioletLicense(); if(itemObj.menuItem == mnuAccount.getItemAt(3)) LogoutViolet(); } //////////////////////////////////////////////////////////////////////////////// // COMMON FUNCTIONS // function StartTooltip(tooltipText) { if( !movTimer && tooltipText ) { createEmptyMovieClip("movTimer", 1); movTimer.counter = 0; movTimer.onEnterFrame = function() { this.counter++; if( this.counter == 10) { if(!txtTooltip) createTextField("txtTooltip", 2, _xmouse+16, _ymouse+16, 0, 0); txtTooltip.text = tooltipText; txtTooltip.autoSize = true; txtTooltip.border = true; txtTooltip.background = true; txtTooltip.backgroundColor = 0xFFFFCC; var newFormat = new TextFormat(); newFormat.font = "Arial"; newFormat.size = 12; txtTooltip.setTextFormat(newFormat); delete newFormat; if( txtTooltip._x + txtTooltip._width > 800 ) txtTooltip._x = 800 - txtTooltip._width; } if( this.counter == 130) StopTooltip(); } } } function StopTooltip() { if( txtTooltip ) txtTooltip.removeTextField(); if( movTimer ) movTimer.removeMovieClip(); } function ShowGrayScreen(show) { if( show==undefined ) show = true; btnSemitrans.count += (show? 1: -1); show = (btnSemitrans.count > 0); btnSemitrans._visible = show; fscommand("Enable Drop", !show); } function ShowDialog(frameLabel, winTitle) { if (!wndDialog.content.loaded) return; if (!wndDialog._visible) ShowGrayScreen(); wndDialog.content.gotoAndStop(frameLabel); wndDialog.title = winTitle; wndDialog.setSize(wndDialog.content._width+6, wndDialog.content._height+34); wndDialog._x = 400 - wndDialog._width/2; wndDialog._y = 290 - wndDialog._height/2; wndDialog._visible = true; } function ShowMessage(message, title, showMessageCallBack, showMessageObj) { messageShowing = true; ShowGrayScreen(); Alert.buttonWidth = 60; Alert.okLabel = lang.btnOK; Alert.show( message, title, Alert.OK, _root, function(evt) { messageShowing = false; ShowGrayScreen(false); if (showMessageCallBack!=undefined) showMessageCallBack.call(showMessageObj); }, null, Alert.OK ); } function ShowQuestion(message, caption, cancel, yesFunction, noFunction) { messageShowing = true; ShowGrayScreen(); Alert.buttonWidth = 60; Alert.yesLabel = lang.btnYes; Alert.noLabel = lang.btnNo; Alert.cancelLabel = cancel; var msgButtons = Alert.YES | Alert.NO; if( cancel!="" ) msgButtons |= Alert.CANCEL; Alert.show( message, caption, msgButtons, _root, function(evt) { messageShowing = false; ShowGrayScreen(false); if( evt.detail==Alert.YES) yesFunction(); if( evt.detail==Alert.NO ) noFunction(); }, "Question Movie", Alert.YES ); } function LoadPopupMovie(title, filename, onClickOK, onClickCancel, parentObj, languagePath) { if (languagePath != undefined) { plang = lang.createEmptyMovieClip("popup", lang.getNextHighestDepth()); loadVariables(appPath + languagePath + slash + language + ".txt", lang.popup); lang.popup.onData = function() { LoadPopupMovie(title, filename, onClickOK, onClickCancel, parentObj); }; return; } var frame = ""; if (filename.indexOf("|") != -1) { var a = filename.split("|"); filename = a[0]; frame = a[1]; } var initObj = {title: title, contentPath: _root.appPath + filename, closeButton: true}; var mcPopup = mx.managers.PopUpManager.createPopUp(_root, mx.containers.Window, true, initObj); var oldPressEnter = _root.onPressEnter; var oldPressEsc = _root.onPressEsc; var oldPressDelete = _root.oldPressDelete; _root.onPressEnter = undefined; _root.onPressEsc = undefined; _root.oldPressDelete= undefined; parentObj.SetBehindDialog(true); mcPopup._visible = false; mcPopup.onCloseDialog = function() { mcPopup.deletePopUp(); lang.popup.removeMovieClip(); _root.onPressEnter = oldPressEnter; _root.onPressEsc = oldPressEsc; _root.oldPressDelete = oldPressDelete; parentObj.SetBehindDialog(false); onClickCancel(); }; mcPopup.onFinishInput = function(retVal) { mcPopup.onCloseDialog(); onClickOK(retVal); }; mcPopup.setDlgSize = function() { var movie = mcPopup.content; var size = movie.getMovieSize? movie.getMovieSize(): {width: movie._width, height: movie._height}; mcPopup.setSize(size.width + 6, size.height + 34); mcPopup._x = 400 - mcPopup.width/2; mcPopup._y = 290 - mcPopup.height/2; mcPopup._visible = true; } mcPopup.addEventListener("complete", function() {if (frame!="") mcPopup.content.gotoAndStop(frame); mcPopup.setDlgSize()}); mcPopup.addEventListener("click", function() {if (onClickCancel!==false) mcPopup.onCloseDialog()}); return mcPopup; } function ClearAllData() { movScene.ClearBackGround(); while (movScene.bkgnd_node.childNodes.length > 0) movScene.bkgnd_node.lastChild.removeNode(); while (treItem.length > 0) treItem.removeItemAt(0); currentFile = ""; dataChanged = "false"; undoData.splice(0); undoPos = 0; GetRelatedFiles(); } function ExecWithConfirmSave(execFunction) { if( dataChanged == "true" ) { ShowQuestion( lang.msgConfirmSave, lang.msgTitle, lang.btnContinue, function() { SaveAndExec(execFunction) }, execFunction ); } else { execFunction(); } } function ChangeTempPath(tmpPathName) { var pos = tempPath.length; var tmp = GetFullFileName(tmpPathName); if( tmp.substr(0, pos) == tempPath ) return defaultFilePath + tmp.substr(pos); return tmpPathName; } function EncodeXml(s) { s = Replace(s, '&', "&"); s = Replace(s, '"', """); s = Replace(s, '<', "<"); s = Replace(s, '>', ">"); return escape(s); } function SaveAndExec(execFunction, isSaveAs) { if( currentFile == "" || isSaveAs ) { if (online) { ShowGrayScreen(); var pop = LoadPopupMovie(lang.mnuSaveAs, "Popup" + slash + "Space.swf", function(param) {SaveToFile(execFunction, param)}, function() {ShowGrayScreen(false)}); pop.defExt = "xvl"; pop.filter = ["xvl"]; return; } fscommand("Save As", ""); ShowGrayScreen(); command = ""; onEnterFrame = function() { if( command == "" ) return; ShowGrayScreen(false); if( command == "Save As OK" ) { GetDataChangePath(GetFullFileName, dataXML.firstChild); currentFile = savedFileName; GetDataChangePath(GetRelativeFileName, dataXML.firstChild); SaveToFile(execFunction, true); fscommand("Set Title", currentFile); } else { onEnterFrame = WaitForAppCommand; command = ""; } } return; } SaveToFile(execFunction); } function SaveToFile(execFunction, param) { var isFirstSave = (param != undefined); if( isFirstSave ) { var pos1 = currentFile.lastIndexOf(slash) + 1; var pos2 = currentFile.lastIndexOf("."); defaultFilePath = currentFile.substring(pos1, pos2) + " files" + slash; GetDataChangePath(ChangeTempPath, dataXML.firstChild); filesForRetrieve = fileList; GetRelatedFiles(); } ascData = new XML(dataXML.toString()); if (movScene.bkgnd_node.childNodes.length > 0) if( !ascData.firstChild.firstChild ) ascData.firstChild.appendChild(movScene.bkgnd_node.cloneNode(true)); else ascData.firstChild.insertBefore(movScene.bkgnd_node.cloneNode(true), ascData.firstChild.firstChild); if( online ) { var xml:XML = new XML(); xml.ignoreWhite = true; xml.onLoad = function(success) { if (!checkSuccess(success, "errServerConnect", "Không thể kết nối tới server.")) return; var attr = this.firstChild.attributes; if (!checkSuccess(attr.err=="", attr.errCode, attr.err)) return; currentFile = attr.id; fscommand("Set Title", attr.name); dataChanged = "false"; execFunction(); } var request = spaceUrl + "save"; if (isFirstSave) request += "?userid="+param.userid + "&dir="+param.dir + "&name="+param.name; else request += "?fileid="+currentFile; ascData.sendAndLoad(request, xml); return; } UnicodeAscii(EncodeXml, ascData.firstChild); ascData = defXmlDecl + GetAlignedXml(ascData, 0); fscommand("Save", ""); command = ""; onEnterFrame = function() { if( command == "" ) return; onEnterFrame = WaitForAppCommand; if( command == "Save OK" ) execFunction(); if( command == "Save Error" ) ShowMessage(lang.msgSaveError, lang.msgTitle1); if( isFirstSave ) fscommand("Retrieve", ""); else fscommand("Cleanup", ""); delete ascData; command = ""; } } //////////////////////////////////////////////////////////////////////////////// // MENU FILE FUNCTIONS // btnNew.onRelease = function() { ExecWithConfirmSave(CreateNewData); } function InitializeDataXML() { var lectureNode = commonXML.createElement("LECTURE_INFO"); if( appUserName ) { lectureNode.attributes.Info = unescape(appUserName) + " - " + unescape(appAddress); lectureNode.attributes.Check = lectureNode.attributes.Info.length + 13; } lectureNode.attributes.CommonDir = commonDir; lectureNode.attributes.Layout = "Layout1.swf"; lectureNode.attributes.Title = ""; lectureNode.attributes.Version = version; dataXML.appendChild(lectureNode); } function CreateNewData() { ClearAllData(); InitializeDataXML(); movScene.onLoadXMLData(); fscommand("Set Title", ""); } btnOpen.onRelease = function() { ExecWithConfirmSave( function() { if (online) { ShowGrayScreen(); var pop = LoadPopupMovie(lang.mnuOpen, "Popup" + slash + "Space.swf", function(param) { ClearAllData(); currentFile = param.id; fscommand("Set Title", param.name); LoadXMLData(spaceUrl + "file?id="+param.id+"&userid="+param.userid); }, function() {ShowGrayScreen(false)}); pop.defExt = "xvl"; pop.filter = ["xvl"]; return; } command = ""; openedFileName = ""; fscommand("Open", ""); ShowGrayScreen(); onEnterFrame = function() { if( command == "" ) return; ShowGrayScreen(false); if( command == "Open OK" ) OpenNewFile(); onEnterFrame = WaitForAppCommand; command = ""; } }); } // open from Violet Space (using HMTL/javascript to display folders & files) // when user clicked a file in Violet Space, a new window (which contains the lecture editor client) will be opened; ID of the selected lecture will be passed via flashvar function OpenFileById() { clearInterval(_root.openFileInterval); if (fileId == undefined) return; if (fileId == "") return; //ShowGrayScreen(); ClearAllData(); currentFile = fileId; LoadXMLData(spaceUrl + "file?id="+fileId+"&userid="+userId); } function OpenNewFile() { ClearAllData(); currentFile = openedFileName; fscommand("Set Title", currentFile); LoadXMLData(currentFile); } btnSave.onRelease = function() { SaveAndExec(); } btnLibrary.onRelease = function() { ShowGrayScreen(); var pop = LoadPopupMovie(lang.mnuLibrary, "Popup" + slash + "Library.swf", function(filename) { ClearAllData(); openedFileName = filename; LoadXMLData(filename); }, function() {ShowGrayScreen(false)}); pop.libPaths = _root.lecturePaths; pop.remember = true; pop.okTitle = lang.mnuOpen; } btnPack.onRelease = function() { GetRelatedFiles(true); var slashPos = currentFile.lastIndexOf(slash); if( !online && currentFile.substr(slashPos + 1) == "Scenario.xvl" ) { ShowQuestion(lang.msgHasPacked, lang.msgTitle4, lang.btnCancel, function() { oldpackType = packageType; packageType = 0; packagePath = currentFile.substring(0, slashPos) CreatePackage("Overwrite"); dataChanged = "false"; }, function() { ShowDialog("Pack", lang.mnuPack); }); return; } ShowDialog("Pack", lang.mnuPack); } function CreatePackage(status, paid) { if (online && (isNaN(userLevel) || userLevel < 1) && !paid) { ShowGrayScreen(); LoadPopupMovie("lang.dlgLicenseTitle", "Popup" + slash + "UserManager.swf|Package", function() {CreatePackage(status, true)}, function() {ShowGrayScreen(false)}, null, "Language" + slash + "User"); return; } if( webbase ) { treItem.enabled = false; xml = new XML(); xml.onLoad = function() { treItem.enabled = true; var param = "userid=" + userId; param += "&name=" + escape(packagePath); param += "&id=" + this.firstChild.attributes.id; getUrl(rootPath + "Service/packdownload.php?" + param); } var lv:LoadVars = new LoadVars(); lv.userid = userId; lv.name = packagePath; lv.type = packageType; lv.dataNum = dataFileNum; lv.commonNum = commonFileNum; lv.fileList = fileListStr.split("|").join(","); if (packageType == 1) lv.packagePlayer = packagePlayer; if (packageType == 3) { lv.scormVersion = scormVersion; lv.scormTitle = packXML.firstChild.attributes.Title; lv.scormOrgData = GetAlignedXml(CreateOrganization(packXML), 3); } lv.dataXml = defXmlDecl + GetAlignedXml(packXML, 0); lv.sendAndLoad(rootPath + "Service/package.php", xml); return; } if( status==undefined ) status = ""; SwitchCurrentVideo(movScene.currMovie, "close"); treItem.enabled = false; ascData = new XML(packXML.toString()); UnicodeAscii(EncodeXml, ascData.firstChild); if( packageType == 3 ) { scormTitle = ascData.firstChild.attributes.Title; scormOrgData = GetAlignedXml(CreateOrganization(ascData), 3); } ascData = defXmlDecl + GetAlignedXml(ascData, 0); fscommand("Pack", status); command = ""; onEnterFrame = function() { if( command == "" ) return; if( command == "Create Error" ) { ShowMessage(lang.msgDirError, lang.msgTitle1); } if( command == "Copy Error" || command == "Save Error" ) { ShowMessage(lang.msgPackError + copiedFile + "\r\r ", lang.msgTitle1); } if( command == "Dir Existed" ) { ShowQuestion( lang.msgPackOver, lang.msgTitle, lang.btnCancel, function() { CreatePackage("Overwrite", paid) }, function() { CreatePackage("Merge", paid) } ); } SwitchCurrentVideo(movScene.currMovie, "replay"); treItem.enabled = true; if( packageType == 0 ) packageType = oldpackType; onEnterFrame = WaitForAppCommand; delete ascData; command = ""; } } function ExitProgram() { if (online) { var lv:LoadVars = new LoadVars(); lv.send(userUrl + "logout"); } ExecWithConfirmSave( function() { SaveConfig(); fscommand("Quit", ""); }); } //////////////////////////////////////////////////////////////////////////////// // MENU EDIT FUNCTIONS // function UpdateUndoData() { undoData.splice(undoPos); if(undoData.length >= maxUndo) undoData.shift(); var node = dataXML.firstChild.cloneNode(true); node.attributes.selectedIndex = treItem.selectedIndex; undoData.push(node); undoPos = undoData.length; dataChanged = "true"; } function RestoreFromUndoData() { while (treItem.length > 0) treItem.removeItemAt(0); var layout = dataXML.firstChild.attributes.Layout; var title = dataXML.firstChild.attributes.Title; dataXML.firstChild.removeNode(); dataXML.appendChild(undoData[undoPos].cloneNode(true)); UpdateScreen(true); treItem.selectedIndex = dataXML.firstChild.attributes.selectedIndex; delete dataXML.firstChild.attributes.selectedIndex; if( layout != dataXML.firstChild.attributes.Layout || title != dataXML.firstChild.attributes.Title ) { movScene.currentItem = treItem.selectedNode.attributes.item; movScene.currentSection = treItem.selectedNode.attributes.section; movScene.UpdateTemplate(); } else { onChangeHandle(); } } function ProcessUndo() { if( undoPos == 0 ) return; if( undoPos == undoData.length ) {UpdateUndoData(); undoPos--;} undoPos--; RestoreFromUndoData(); } function ProcessRedo() { if( undoPos == undoData.length ) return; undoPos++; RestoreFromUndoData(); if( undoPos == undoData.length - 1 ) undoData.pop(); } btnCutItem.onRelease = btnCutOnRelease = function() { CopyToClipboard(DeleteItem); } btnCopyItem.onRelease = btnCopyOnRelease = function() { CopyToClipboard(); } function GetElementChangePath(change, node) { if( node.attributes.hyperlink.charAt(0) == "1" ) { node.attributes.hyperlink = "1|" + change(node.attributes.hyperlink.substr(2)); } if( node.nodeName == "IMAGE" || node.nodeName == "MEDIA" ) { node.attributes.url = change(node.attributes.url); } if( node.nodeName == "PLUGIN" ) { ChangeXMLFileInfo(node.firstChild, change, pluXML.childNodes[1].childNodes[1].attributes[node.firstChild.nodeName]); var subNodes = node.firstChild.childNodes; for( var i=0; i=0) ? dataXML.firstChild.childNodes[section].childNodes[item] : dataXML.firstChild.childNodes[section]; var copiedData = itemData.cloneNode(true); GetDataChangePath(GetFullFileName, copiedData); command = ""; ascData = new XML(copiedData.toString()); UnicodeAscii(escape, ascData); fscommand("Set Clipboard", dataID + ascData.toString()); onEnterFrame = function() { if( command == "" ) return; if( command == "Set OK" ) execFunction(); onEnterFrame = WaitForAppCommand; delete ascData; command = ""; } } btnPasteItem.onRelease = btnPasteOnRelease = function() { command = ""; clipboardData = ""; fscommand("Get Clipboard"); onEnterFrame = function() { if( command == "" ) return; if( command == "Get Text" ) { if( clipboardData.substr(0, dataID.length) == dataID ) { var xmlClipboard = new XML(clipboardData.substr(dataID.length)); var itemData = xmlClipboard.firstChild; UnicodeAscii(unescape, itemData); GetDataChangePath(GetRelativeFileName, itemData); var section = treItem.selectedItem.attributes.section; if( itemData.nodeName == "SECTION_INFO" ) AddSectionData(itemData); else if( section != undefined) AddItemData(section - 1, itemData); } } onEnterFrame = WaitForAppCommand; command = ""; } } //////////////////////////////////////////////////////////////////////////////// // MENU CONTENT FUNCTIONS // btnAdd.onRelease = function() { isChanging = false; inputingCover = false; ShowDialog("Item", lang.dlgItem); } btnDetail.onRelease = function() { if( treItem.length == 0 ) return; treCurrentNode = treItem.selectedNode; var section = treItem.selectedNode.attributes.section-1; var item = treItem.selectedNode.attributes.item-1; if(item>=0) changingNode = dataXML.firstChild.childNodes[section].childNodes[item]; else changingNode = dataXML.firstChild.childNodes[section]; wndDialog.content.node = changingNode.cloneNode(true); isChanging = true; inputingCover = dataXML.firstChild.childNodes[section].attributes.coverpage=="true"; if(item<0 && inputingCover ) return; if(item>=0) ShowDialog("Item", lang.dlgItem); else ShowDialog("Section", lang.dlgSection); } btnDelete.onRelease = function() { if( treItem.length == 0 ) return; ShowQuestion(lang.msgConfirmDel, lang.msgTitle3, "", DeleteItem); } function SyncVideoAudio() { var section = treItem.selectedNode.attributes.section - 1; var item = treItem.selectedNode.attributes.item - 1; if (item >= 0) { if (movScene.sectionSync) {ShowMessage(lang.msgSyncSection, lang.msgTitle1); return;} movScene.selectItem(movScene.currentItem, true); if (!movScene.firstMediaObj) {ShowMessage(lang.msgSyncNoVideo, lang.msgTitle1); return;} if (movScene.currentIndex == undefined) {ShowMessage(lang.msgSyncNoAction, lang.msgTitle1); return;} wndDialog.content.node = dataXML.firstChild.childNodes[section].childNodes[item]; } else { if (movScene.currentItemNum < 2) {ShowMessage(lang.msgSyncNoAction, lang.msgTitle1); return;} movScene.UpdateBackGround(); movScene.sectionSync = true; movScene.firstMediaObj = movScene.movPageBkGnd.firstMediaObj; if (!movScene.firstMediaObj) {ShowMessage(lang.msgSyncNoVideo, lang.msgTitle1); return;} movScene.selectItem(1); wndDialog.content.node = dataXML.firstChild.childNodes[section]; } movScene.firstMediaObj.autoPlay = true; delete movScene.onEnterFrame; ShowDialog("Sync", lang.mnuSync); wndDialog._x = 15; } function SelectCoverPage() { isChanging = false; inputingCover = true; ShowDialog("Item", lang.dlgItem); } function SelectBackGround() { retFrame = ""; ShowDialog("BkGnd", lang.mnuBackGround); } function AddCoverPage(node) { if( !isChanging ) { if( dataXML.firstChild.firstChild.attributes.coverpage=="true" ) { UpdateUndoData(); dataXML.firstChild.firstChild.firstChild.removeNode(); dataXML.firstChild.firstChild.appendChild(node); var i = 0; while( treItem.getItemAt(i).attributes.section != 1 ) i++; treItem.selectedIndex = i+1; onChangeHandle(); GetRelatedFiles(); } else { movScene.ClearBackGround(); var sectionInfo = dataXML.createElement("SECTION_INFO"); sectionInfo.attributes.label = lang.coverPage; sectionInfo.attributes.coverpage = "true"; sectionInfo.attributes.invisible = "true"; sectionInfo.appendChild(node); AddSectionData(sectionInfo, 0); } } else { UpdateUndoData(); changingNode.parentNode.insertBefore(node, changingNode); changingNode.removeNode(); onChangeHandle(); GetRelatedFiles(); } } btnLayout.onRelease = function() { ShowDialog("Layout", lang.mnuLayout); } btnPreview.onRelease = function() { if( btnSceneBkGnd._visible ) { ClosePreview(); return; } fscommand("Set Style", "Popup"); btnSceneBkGnd._visible = true; movPlayer.swapDepths(movScenePrev); movPlayer._yscale = 100; movPlayer._xscale = 100; movPlayer._x = 0; movPlayer._y = -10; } function ClosePreview() { if( !btnSceneBkGnd._visible ) return; fscommand("Set Style", "Normal"); btnSceneBkGnd._visible = false; movPlayer.swapDepths(movScenePrev); movPlayer._x = 275; movPlayer._y = 100; movPlayer._xscale = 500/8; movPlayer._yscale = 375/6; } //////////////////////////////////////////////////////////////////////////////// // MENU MODIFY FUNCTIONS // function EditFile(fileName) { command = ""; fscommand("Edit File", fileName); onEnterFrame = function() { if( command == "" ) return; if( command == "Launch Error" ) ShowMessage(lang.msgEditError, lang.msgTitle1); onEnterFrame = WaitForAppCommand; command = ""; } } //////////////////////////////////////////////////////////////////////////////// // MENU WINDOWS FUNCTIONS // function ResetWindowSize() { windowState = 1; windowTop = 0; windowLeft = 0; windowRight = 0; windowBottom = 0; fscommand("Set State", ""); } function SetFlashViewMode(mode) { fscommand("View Mode", mode); flashViewMode = mode; } function ShowConfigDlg() { ShowDialog("Config", lang.mnuConfig); } function UpdatePlugin() { ShowDialog("Plugin", lang.mnuUpdateModules); } function UpdateLayout() { ShowDialog("LayUpdate", lang.mnuUpdateLayouts); } function UpdateCommonLib() { ShowDialog("LibUpdate", lang.mnuUpdateLibs); } function SaveConfigXML(action, data) { ascData = new XML(data.toString()); UnicodeAscii(EncodeXml, ascData.firstChild); ascData = defXmlDecl + GetAlignedXml(ascData, 0); fscommand(action, "ascData"); } function RunApplication(filename) { SendRequest("Run App", filename, function(response, data) { if (response != "Run OK") ShowMessage(lang.msgCanNotRun + " " + filename, lang.msgTitle1); }); } //////////////////////////////////////////////////////////////////////////////// // MENU HELP FUNCTIONS // btnHelp.onRelease = function() { getURL("http://hoctructuyen.violet.vn/present/list/cat_id/7795643", "_blank"); } function AutoUpgrade() { ShowDialog("Upgrade", lang.mnuUpgrade); } function AboutProgram() { ShowDialog("About", lang.mnuAbout); } //////////////////////////////////////////////////////////////////////////////// // MENU ACCOUNT FUNCTIONS // function EditAccountInfo() { ShowGrayScreen(); LoadPopupMovie(lang.dlgLoginTitle, "Popup" + slash + "UserManager.swf|Update", null, function() {ShowGrayScreen(false)}, null, "Language" + slash + "User"); } function ManageCastAccount() { ShowGrayScreen(); LoadPopupMovie(lang.dlgLoginTitle, "Popup" + slash + "UserManager.swf|Payment", null, function() {ShowGrayScreen(false)}, null, "Language" + slash + "User"); } function ShowVioletLicense() { ShowGrayScreen(); LoadPopupMovie(lang.dlgLoginTitle, "Popup" + slash + "UserManager.swf|License", null, function() {ShowGrayScreen(false)}, null, "Language" + slash + "User"); } function LoginViolet() { ShowGrayScreen(); LoadPopupMovie(lang.dlgLoginTitle, "Popup" + slash + "UserManager.swf|Login", function(lv) { ShowGrayScreen(false); userId = lv.id; userLevel = lv.level; userPhone = lv.phone; userMoney = lv.money; appUserName = lv.fullname; appAddress = lv.school + ", " + lv.province; dataXML.firstChild.attributes.Info = unescape(appUserName) + " - " + unescape(appAddress); dataXML.firstChild.attributes.Check = dataXML.firstChild.attributes.Info.length + 13; movScene.movTemplate.userInfo = movDefLayout.userInfo = dataXML.firstChild.attributes.Info; licenseInfo = {type: lv.licType, customer: lv.licCustomer, create: lv.licCreate, expire: lv.licExpire} }, false, null, "Language" + slash + "User"); } // load user info function LoadUserInfo() { // gray screen ShowGrayScreen(); // load user info var xml_userinfo:XML = new XML(); xml_userinfo.ignoreWhite = true; xml_userinfo.onLoad = function(success) { // hide gray screen ShowGrayScreen(false); // user data var attr:Object = this.firstChild.firstChild.attributes; userId = attr.userId; userLevel = attr.userLevel; userPhone = attr.userPhone; userMoney = attr.userMoney; appUserName = attr.appUserName; appAddress = attr.appAddress; dataXML.firstChild.attributes.Info = unescape(appUserName) + " - " + unescape(appAddress); dataXML.firstChild.attributes.Check = dataXML.firstChild.attributes.Info.length + 13; movScene.movTemplate.userInfo = movDefLayout.userInfo = dataXML.firstChild.attributes.Info; licenseInfo = { type: attr.licType, customer: attr.licCustomer, create: attr.licCreate, expire: attr.licExpire } // if (fileId != undefined) { _root.openFileInterval = setInterval(OpenFileById, 1000); } } var str:String = (host == undefined) ? userInfoUrl : (host + userInfoUrl); xml_userinfo.load(str); } // Nếu user info được lấy theo cách truyền từ flashvars: function UpdateFromFlashVars() { dataXML.firstChild.attributes.Info = unescape(appUserName) + " - " + unescape(appAddress); dataXML.firstChild.attributes.Check = dataXML.firstChild.attributes.Info.length + 13; movScene.movTemplate.userInfo = movDefLayout.userInfo = dataXML.firstChild.attributes.Info; licenseInfo = {type: licType, customer: licCustomer, create: licCreate, expire: licExpire} } function LogoutViolet() { ExecWithConfirmSave(function() { CreateNewData(); var lv:LoadVars = new LoadVars(); lv.send(userUrl + "logout"); userId = 0; LoginViolet(); }); } //////////////////////////////////////////////////////////////////////////////// // RIGHT CLICK MENU ITEMS // function InitTreeContextMenu() { var cmTree = new ContextMenu(); var cmiAbout = new ContextMenuItem("About ViOLET...", function() {getURL("http://www.bachkim.vn", "_blank")}); var cmiCut = new ContextMenuItem("Cut (Ctrl+X)", btnCutOnRelease); var cmiCopy = new ContextMenuItem("Copy (Ctrl+C)", btnCopyOnRelease); var cmiPaste = new ContextMenuItem("Paste (Ctrl+V)", btnPasteOnRelease); var cmiAdd = new ContextMenuItem("Add (F5)", btnAdd.onRelease); var cmiChange = new ContextMenuItem("Change (F6)", btnDetail.onRelease); var cmiDelete = new ContextMenuItem("Delete (Del)", btnDelete.onRelease); cmiCut.separatorBefore = true; cmiAdd.separatorBefore = true; cmTree.hideBuiltInItems(); cmTree.customItems.push(cmiAbout, cmiCut, cmiCopy, cmiPaste, cmiAdd, cmiChange, cmiDelete); treItem.menu = cmTree; }