1 | ////////////////////////////////////////////////////////////////////////////////
|
---|
2 | // File: MENU.AS
|
---|
3 | // 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
|
---|
4 | // năng của Menu, Toolbar, các nút bấm trên giao diện chính, các hộp
|
---|
5 | // nhập liệu (dialog) và hộp thoại (alert),...
|
---|
6 | //
|
---|
7 | // Author: Đinh Hải Minh, VicoSoft
|
---|
8 | // Date: 01/12/2003
|
---|
9 | ////////////////////////////////////////////////////////////////////////////////
|
---|
10 |
|
---|
11 | import mx.controls.Alert;
|
---|
12 |
|
---|
13 | function CreateMenuBar() {
|
---|
14 | /*
|
---|
15 | //
|
---|
16 | // CREATE THE MENUBAR OF APPLICATION
|
---|
17 | //
|
---|
18 |
|
---|
19 | // Delete all menu items
|
---|
20 | while( mnuBar.getMenuAt(0) ) mnuBar.removeMenuAt(0);
|
---|
21 |
|
---|
22 | var menuObj = new XML(
|
---|
23 | "<node label=\"" + lang.mnuFile + "\">"+
|
---|
24 | "<node label=\"" + lang.mnuNew + " (F2)\"/>"+
|
---|
25 | "<node label=\"" + lang.mnuOpen + "... (F3)\"/>"+
|
---|
26 | "<node label=\"" + lang.mnuSave + "\"/>"+
|
---|
27 | "<node label=\"" + lang.mnuSaveAs + "...\"/>"+
|
---|
28 | "<node type=\"separator\"/>"+
|
---|
29 | "<node label=\"" + lang.mnuLibrary + "... (Ctrl+L)\"/>"+
|
---|
30 | "<node label=\"" + lang.mnuPack + "... (F4)\"/>"+
|
---|
31 | "<node type=\"separator\"/>"+
|
---|
32 | "<node label=\"" + lang.mnuExit + "\"/>"+
|
---|
33 | "</node>");
|
---|
34 | mnuBar.addMenu(menuObj);
|
---|
35 |
|
---|
36 | var menuObj = new XML(
|
---|
37 | "<node label=\"" + lang.mnuEdit + "\">"+
|
---|
38 | "<node label=\"" + lang.mnuUndo + " (Ctrl+Z)\"/>"+
|
---|
39 | "<node label=\"" + lang.mnuRedo + " (Ctrl+Y)\"/>"+
|
---|
40 | "<node type=\"separator\"/>"+
|
---|
41 | "<node label=\"" + lang.mnuCut + " (Ctrl+X)\"/>"+
|
---|
42 | "<node label=\"" + lang.mnuCopy + " (Ctrl+C)\"/>"+
|
---|
43 | "<node label=\"" + lang.mnuPaste + " (Ctrl+V)\"/>"+
|
---|
44 | "<node type=\"separator\"/>"+
|
---|
45 | "<node label=\"" + lang.mnuMoveUp + " (Alt+↑)\"/>"+
|
---|
46 | "<node label=\"" + lang.mnuMoveDn + " (Alt+↓)\"/>"+
|
---|
47 | "</node>");
|
---|
48 | mnuBar.addMenu(menuObj);
|
---|
49 |
|
---|
50 | menuObj = new XML(
|
---|
51 | "<node label=\"" + lang.mnuContent + "\">"+
|
---|
52 | "<node label=\"" + lang.mnuAdd + " (F5)\"/>"+
|
---|
53 | "<node label=\"" + lang.mnuChange + " (F6)\"/>"+
|
---|
54 | "<node label=\"" + lang.mnuSync + " (F7)\"/>"+
|
---|
55 | "<node label=\"" + lang.mnuDelete + "\"/>"+
|
---|
56 | "<node type=\"separator\"/>"+
|
---|
57 | "<node label=\"" + lang.mnuCover + "\"/>"+
|
---|
58 | "<node label=\"" + lang.mnuLayout + " (F8)\"/>"+
|
---|
59 | "<node label=\"" + lang.mnuBackGround + "\"/>"+
|
---|
60 | "<node type=\"separator\"/>"+
|
---|
61 | "<node label=\"" + lang.mnuFullScr + " (F9)\"/>"+
|
---|
62 | "</node>");
|
---|
63 | mnuBar.addMenu(menuObj);
|
---|
64 |
|
---|
65 | menuObj = new XML(
|
---|
66 | "<node label=\"" + lang.mnuOption + "\">"+
|
---|
67 | (webbase? "":
|
---|
68 | "<node label=\"" + lang.mnuUpdateModules + "\"/>"+
|
---|
69 | "<node label=\"" + lang.mnuUpdateLayouts + "\"/>"+
|
---|
70 | "<node label=\"" + lang.mnuUpdateLibs + "\"/>"+
|
---|
71 | "<node type=\"separator\"/>"+
|
---|
72 | "<node label=\"" + lang.mnuSupport + "\">"+
|
---|
73 | "<node label=\"" + lang.mnuUniKey + "\"/>"+
|
---|
74 | "<node label=\"" + lang.mnuTeamViewer + "\"/>"+
|
---|
75 | "</node>"+
|
---|
76 | "<node type=\"separator\"/>")+
|
---|
77 | "<node label=\"" + lang.mnuOrigin + "\"/>"+
|
---|
78 | "<node label=\"" + lang.mnuConfig + "\"/>"+
|
---|
79 | "</node>");
|
---|
80 | mnuBar.addMenu(menuObj);
|
---|
81 |
|
---|
82 | menuObj = new XML(
|
---|
83 | "<node label=\"" + lang.mnuHelp + "\">"+
|
---|
84 | "<node label=\"" + lang.mnuHelpContent + " (F1)\"/>"+
|
---|
85 | (webbase? "":
|
---|
86 | "<node label=\"" + lang.mnuUpgrade + "\"/>")+
|
---|
87 | "<node type=\"separator\"/>"+
|
---|
88 | "<node label=\"" + lang.mnuAbout + "...\"/>"+
|
---|
89 | "</node>");
|
---|
90 | mnuBar.addMenu(menuObj);
|
---|
91 |
|
---|
92 | if (online) {
|
---|
93 | menuObj = new XML(
|
---|
94 | "<node label=\"" + lang.mnuAccount + "\">"+
|
---|
95 | "<node label=\"" + lang.mnuInfo + "\"/>"+
|
---|
96 | "<node label=\"" + lang.mnuPayment + "\"/>"+
|
---|
97 | "<node label=\"" + lang.mnuLicense + "\"/>"+
|
---|
98 | "<node label=\"" + lang.mnuLogout + "\"/>"+
|
---|
99 | "</node>");
|
---|
100 | mnuBar.addMenu(menuObj);
|
---|
101 | }
|
---|
102 |
|
---|
103 | //
|
---|
104 | // GET SUBMENUS OF MENUBAR AND HANDLE THEM
|
---|
105 | //
|
---|
106 | mnuFile = mnuBar.getMenuAt(0);
|
---|
107 | mnuEdit = mnuBar.getMenuAt(1);
|
---|
108 | mnuSlide = mnuBar.getMenuAt(2);
|
---|
109 | mnuOption = mnuBar.getMenuAt(3);
|
---|
110 | mnuHelp = mnuBar.getMenuAt(4);
|
---|
111 | //if (online) mnuAccount = mnuBar.getMenuAt(5);
|
---|
112 | mnuFile.addEventListener("change", onSelectFile);
|
---|
113 | mnuEdit.addEventListener("change", onSelectEdit);
|
---|
114 | mnuSlide.addEventListener("change", onSelectSlide);
|
---|
115 | mnuOption.addEventListener("change", onSelectWindow);
|
---|
116 | mnuHelp.addEventListener("change", onSelectHelp);
|
---|
117 | //if (online) mnuAccount.addEventListener("change", onSelectAccount);
|
---|
118 |
|
---|
119 | // hide the Menu Bar
|
---|
120 | //mnuBar.visible = false;
|
---|
121 | */
|
---|
122 |
|
---|
123 | //
|
---|
124 | // TOOLTIP TEXT OF INTERFACE BUTTONS
|
---|
125 | //
|
---|
126 | btnNew.tooltipText = lang.mnuNew;
|
---|
127 | btnOpen.tooltipText = lang.mnuOpen + "...";
|
---|
128 | btnSave.tooltipText = lang.mnuSave;
|
---|
129 | btnSaveAs.tooltipText = lang.mnuSaveAs + "...";
|
---|
130 | btnUndo.tooltipText = lang.mnuUndo;
|
---|
131 | btnRedo.tooltipText = lang.mnuRedo;
|
---|
132 | btnSync.tooltipText = lang.mnuSync + "...";
|
---|
133 | btnLibrary.tooltipText = lang.mnuLibrary + "...";
|
---|
134 | btnPack.tooltipText = lang.mnuPack + "...";
|
---|
135 | btnCover.tooltipText = lang.mnuCover + "...";
|
---|
136 | btnBackground.tooltipText = lang.mnuBackGround + "...";
|
---|
137 | btnLayout.tooltipText = lang.mnuLayout;
|
---|
138 | btnPreview.tooltipText = lang.mnuFullScr;
|
---|
139 | btnHelp.tooltipText = lang.mnuHelpContent;
|
---|
140 | btnSetting.tooltipText = lang.mnuConfig + "...";
|
---|
141 |
|
---|
142 | btnMoveUp.onRollOver = function() {StartTooltip(lang.mnuMoveUp)};
|
---|
143 | btnMoveDown.onRollOver = function() {StartTooltip(lang.mnuMoveDn)};
|
---|
144 | btnCutItem.onRollOver = function() {StartTooltip(lang.mnuCut)};
|
---|
145 | btnCopyItem.onRollOver = function() {StartTooltip(lang.mnuCopy)};
|
---|
146 | btnPasteItem.onRollOver = function() {StartTooltip(lang.mnuPaste)};
|
---|
147 | btnAdd.onRollOver = function() {StartTooltip(lang.mnuAdd)};
|
---|
148 | btnDetail.onRollOver = function() {StartTooltip(lang.mnuChange)};
|
---|
149 | btnDelete.onRollOver = function() {StartTooltip(lang.mnuDelete)};
|
---|
150 |
|
---|
151 | btnMoveUp.onRollOut = btnMoveUp.onPress = StopTooltip;
|
---|
152 | btnMoveDown.onRollOut = btnMoveDown.onPress = StopTooltip;
|
---|
153 | btnCutItem.onRollOut = btnCutItem.onPress = StopTooltip;
|
---|
154 | btnCopyItem.onRollOut = btnCopyItem.onPress = StopTooltip;
|
---|
155 | btnPasteItem.onRollOut = btnPasteItem.onPress = StopTooltip;
|
---|
156 | btnAdd.onRollOut = btnAdd.onPress = StopTooltip;
|
---|
157 | btnDelete.onRollOut = btnDelete.onPress = StopTooltip;
|
---|
158 | btnDetail.onRollOut = btnDetail.onPress = StopTooltip;
|
---|
159 | }
|
---|
160 |
|
---|
161 | ////////////////////////////////////////////////////////////////////////////////
|
---|
162 | // HANDLE FUNCTIONS FOR ALL SUBMENUS
|
---|
163 | //
|
---|
164 | function onSelectFile(itemObj) {
|
---|
165 | if( itemObj.menuItem == mnuFile.getItemAt(0) ) btnNew.onRelease();
|
---|
166 | if( itemObj.menuItem == mnuFile.getItemAt(1) ) btnOpen.onRelease();
|
---|
167 | if( itemObj.menuItem == mnuFile.getItemAt(2) ) btnSave.onRelease();
|
---|
168 | if( itemObj.menuItem == mnuFile.getItemAt(3) ) SaveAndExec(undefined, true);
|
---|
169 | if( itemObj.menuItem == mnuFile.getItemAt(5) ) btnLibrary.onRelease();
|
---|
170 | if( itemObj.menuItem == mnuFile.getItemAt(6) ) btnPack.onRelease();
|
---|
171 | if( itemObj.menuItem == mnuFile.getItemAt(8) ) ExitProgram();
|
---|
172 | }
|
---|
173 |
|
---|
174 | btnSaveAs.onRelease = function() {
|
---|
175 | SaveAndExec(undefined, true);
|
---|
176 | }
|
---|
177 |
|
---|
178 | function onSelectEdit(itemObj) {
|
---|
179 | if( itemObj.menuItem == mnuEdit.getItemAt(0) ) ProcessUndo();
|
---|
180 | if( itemObj.menuItem == mnuEdit.getItemAt(1) ) ProcessRedo();
|
---|
181 | if( itemObj.menuItem == mnuEdit.getItemAt(3) ) btnCutOnRelease();
|
---|
182 | if( itemObj.menuItem == mnuEdit.getItemAt(4) ) btnCopyOnRelease();
|
---|
183 | if( itemObj.menuItem == mnuEdit.getItemAt(5) ) btnPasteOnRelease();
|
---|
184 | if( itemObj.menuItem == mnuEdit.getItemAt(7) ) btnMoveUp.onRelease();
|
---|
185 | if( itemObj.menuItem == mnuEdit.getItemAt(8) ) btnMoveDown.onRelease();
|
---|
186 | }
|
---|
187 |
|
---|
188 | btnUndo.onRelease = function() {
|
---|
189 | ProcessUndo();
|
---|
190 | }
|
---|
191 |
|
---|
192 | btnRedo.onRelease = function() {
|
---|
193 | ProcessRedo();
|
---|
194 | }
|
---|
195 |
|
---|
196 | function onSelectSlide(itemObj) {
|
---|
197 | if(itemObj.menuItem == mnuSlide.getItemAt(0)) btnAdd.onRelease();
|
---|
198 | if(itemObj.menuItem == mnuSlide.getItemAt(1)) btnDetail.onRelease();
|
---|
199 | if(itemObj.menuItem == mnuSlide.getItemAt(2)) SyncVideoAudio();
|
---|
200 | if(itemObj.menuItem == mnuSlide.getItemAt(3)) btnDelete.onRelease();
|
---|
201 | if(itemObj.menuItem == mnuSlide.getItemAt(5)) SelectCoverPage();
|
---|
202 | if(itemObj.menuItem == mnuSlide.getItemAt(6)) btnLayout.onRelease();
|
---|
203 | if(itemObj.menuItem == mnuSlide.getItemAt(7)) SelectBackGround();
|
---|
204 | if(itemObj.menuItem == mnuSlide.getItemAt(9)) btnPreview.onRelease();
|
---|
205 | }
|
---|
206 |
|
---|
207 | btnSync.onRelease = function() {
|
---|
208 | SyncVideoAudio();
|
---|
209 | }
|
---|
210 |
|
---|
211 | btnCover.onRelease = function() {
|
---|
212 | SelectCoverPage();
|
---|
213 | }
|
---|
214 |
|
---|
215 | btnBackground.onRelease = function() {
|
---|
216 | SelectBackGround();
|
---|
217 | }
|
---|
218 |
|
---|
219 | function onSelectWindow(itemObj) {
|
---|
220 | if (webbase) {
|
---|
221 | if(itemObj.menuItem == mnuOption.getItemAt(0)) ResetWindowSize();
|
---|
222 | if(itemObj.menuItem == mnuOption.getItemAt(1)) ShowConfigDlg();
|
---|
223 | return;
|
---|
224 | }
|
---|
225 | if(itemObj.menuItem == mnuOption.getItemAt(0)) UpdatePlugin();
|
---|
226 | if(itemObj.menuItem == mnuOption.getItemAt(1)) UpdateLayout();
|
---|
227 | if(itemObj.menuItem == mnuOption.getItemAt(2)) UpdateCommonLib();
|
---|
228 | if(itemObj.menuItem == mnuOption.getItemAt(4).childNodes[0]) RunApplication((isWow64? "UniKey64": "UniKey") + "\\UniKeyNT.exe");
|
---|
229 | if(itemObj.menuItem == mnuOption.getItemAt(4).childNodes[1]) RunApplication("TeamViewer\\TeamViewerQS_vi.exe");
|
---|
230 | if(itemObj.menuItem == mnuOption.getItemAt(6)) ResetWindowSize();
|
---|
231 | if(itemObj.menuItem == mnuOption.getItemAt(7)) ShowConfigDlg();
|
---|
232 | }
|
---|
233 |
|
---|
234 | btnSetting.onRelease = function() {
|
---|
235 | ShowConfigDlg();
|
---|
236 | }
|
---|
237 |
|
---|
238 | function onSelectHelp(itemObj) {
|
---|
239 | if(itemObj.menuItem == mnuHelp.getItemAt(0)) btnHelp.onRelease();
|
---|
240 | if (webbase) {
|
---|
241 | if(itemObj.menuItem == mnuHelp.getItemAt(2)) AboutProgram();
|
---|
242 | return;
|
---|
243 | }
|
---|
244 | if(itemObj.menuItem == mnuHelp.getItemAt(1)) AutoUpgrade();
|
---|
245 | if(itemObj.menuItem == mnuHelp.getItemAt(3)) AboutProgram();
|
---|
246 | }
|
---|
247 |
|
---|
248 | function onSelectAccount(itemObj) {
|
---|
249 | if(itemObj.menuItem == mnuAccount.getItemAt(0)) EditAccountInfo();
|
---|
250 | if(itemObj.menuItem == mnuAccount.getItemAt(1)) ManageCastAccount();
|
---|
251 | if(itemObj.menuItem == mnuAccount.getItemAt(2)) ShowVioletLicense();
|
---|
252 | if(itemObj.menuItem == mnuAccount.getItemAt(3)) LogoutViolet();
|
---|
253 | }
|
---|
254 |
|
---|
255 | ////////////////////////////////////////////////////////////////////////////////
|
---|
256 | // COMMON FUNCTIONS
|
---|
257 | //
|
---|
258 | function StartTooltip(tooltipText) {
|
---|
259 | if( !movTimer && tooltipText ) {
|
---|
260 | createEmptyMovieClip("movTimer", 1);
|
---|
261 | movTimer.counter = 0;
|
---|
262 |
|
---|
263 | movTimer.onEnterFrame = function() {
|
---|
264 | this.counter++;
|
---|
265 | if( this.counter == 10) {
|
---|
266 | if(!txtTooltip) createTextField("txtTooltip", 2, _xmouse+16, _ymouse+16, 0, 0);
|
---|
267 | txtTooltip.text = tooltipText;
|
---|
268 | txtTooltip.autoSize = true;
|
---|
269 | txtTooltip.border = true;
|
---|
270 | txtTooltip.background = true;
|
---|
271 | txtTooltip.backgroundColor = 0xFFFFCC;
|
---|
272 |
|
---|
273 | var newFormat = new TextFormat();
|
---|
274 | newFormat.font = "Arial";
|
---|
275 | newFormat.size = 12;
|
---|
276 | txtTooltip.setTextFormat(newFormat);
|
---|
277 | delete newFormat;
|
---|
278 |
|
---|
279 | if( txtTooltip._x + txtTooltip._width > 800 ) txtTooltip._x = 800 - txtTooltip._width;
|
---|
280 | }
|
---|
281 | if( this.counter == 130) StopTooltip();
|
---|
282 | }
|
---|
283 | }
|
---|
284 | }
|
---|
285 |
|
---|
286 | function StopTooltip() {
|
---|
287 | if( txtTooltip ) txtTooltip.removeTextField();
|
---|
288 | if( movTimer ) movTimer.removeMovieClip();
|
---|
289 | }
|
---|
290 |
|
---|
291 | function ShowGrayScreen(show) {
|
---|
292 | if( show==undefined ) show = true;
|
---|
293 | btnSemitrans.count += (show? 1: -1);
|
---|
294 | show = (btnSemitrans.count > 0);
|
---|
295 | btnSemitrans._visible = show;
|
---|
296 | fscommand("Enable Drop", !show);
|
---|
297 | }
|
---|
298 |
|
---|
299 | function ShowDialog(frameLabel, winTitle) {
|
---|
300 | if (!wndDialog.content.loaded) return;
|
---|
301 | if (!wndDialog._visible) ShowGrayScreen();
|
---|
302 | wndDialog.content.gotoAndStop(frameLabel);
|
---|
303 | wndDialog.title = winTitle;
|
---|
304 | wndDialog.setSize(wndDialog.content._width+6, wndDialog.content._height+34);
|
---|
305 | wndDialog._x = 400 - wndDialog._width/2;
|
---|
306 | wndDialog._y = 290 - wndDialog._height/2;
|
---|
307 | wndDialog._visible = true;
|
---|
308 | }
|
---|
309 |
|
---|
310 | function ShowMessage(message, title, showMessageCallBack, showMessageObj)
|
---|
311 | {
|
---|
312 | messageShowing = true;
|
---|
313 | ShowGrayScreen();
|
---|
314 | Alert.buttonWidth = 60;
|
---|
315 | Alert.okLabel = lang.btnOK;
|
---|
316 | Alert.show(
|
---|
317 | message, title, Alert.OK, _root,
|
---|
318 | function(evt) {
|
---|
319 | messageShowing = false;
|
---|
320 | ShowGrayScreen(false);
|
---|
321 | if (showMessageCallBack!=undefined)
|
---|
322 | showMessageCallBack.call(showMessageObj);
|
---|
323 | },
|
---|
324 | null, Alert.OK );
|
---|
325 | }
|
---|
326 |
|
---|
327 | function ShowQuestion(message, caption, cancel, yesFunction, noFunction) {
|
---|
328 | messageShowing = true;
|
---|
329 | ShowGrayScreen();
|
---|
330 | Alert.buttonWidth = 60;
|
---|
331 | Alert.yesLabel = lang.btnYes;
|
---|
332 | Alert.noLabel = lang.btnNo;
|
---|
333 | Alert.cancelLabel = cancel;
|
---|
334 |
|
---|
335 | var msgButtons = Alert.YES | Alert.NO;
|
---|
336 | if( cancel!="" ) msgButtons |= Alert.CANCEL;
|
---|
337 |
|
---|
338 | Alert.show(
|
---|
339 | message, caption, msgButtons, _root,
|
---|
340 | function(evt) {
|
---|
341 | messageShowing = false;
|
---|
342 | ShowGrayScreen(false);
|
---|
343 | if( evt.detail==Alert.YES) yesFunction();
|
---|
344 | if( evt.detail==Alert.NO ) noFunction();
|
---|
345 | },
|
---|
346 | "Question Movie", Alert.YES
|
---|
347 | );
|
---|
348 | }
|
---|
349 |
|
---|
350 | function LoadPopupMovie(title, filename, onClickOK, onClickCancel, parentObj, languagePath) {
|
---|
351 | if (languagePath != undefined) {
|
---|
352 | plang = lang.createEmptyMovieClip("popup", lang.getNextHighestDepth());
|
---|
353 | loadVariables(appPath + languagePath + slash + language + ".txt", lang.popup);
|
---|
354 | lang.popup.onData = function() {
|
---|
355 | LoadPopupMovie(title, filename, onClickOK, onClickCancel, parentObj);
|
---|
356 | };
|
---|
357 | return;
|
---|
358 | }
|
---|
359 | var frame = "";
|
---|
360 | if (filename.indexOf("|") != -1) {
|
---|
361 | var a = filename.split("|");
|
---|
362 | filename = a[0];
|
---|
363 | frame = a[1];
|
---|
364 | }
|
---|
365 | var initObj = {title: title, contentPath: _root.appPath + filename, closeButton: true};
|
---|
366 | var mcPopup = mx.managers.PopUpManager.createPopUp(_root, mx.containers.Window, true, initObj);
|
---|
367 | var oldPressEnter = _root.onPressEnter;
|
---|
368 | var oldPressEsc = _root.onPressEsc;
|
---|
369 | var oldPressDelete = _root.oldPressDelete;
|
---|
370 | _root.onPressEnter = undefined;
|
---|
371 | _root.onPressEsc = undefined;
|
---|
372 | _root.oldPressDelete= undefined;
|
---|
373 | parentObj.SetBehindDialog(true);
|
---|
374 | mcPopup._visible = false;
|
---|
375 |
|
---|
376 | mcPopup.onCloseDialog = function() {
|
---|
377 | mcPopup.deletePopUp();
|
---|
378 | lang.popup.removeMovieClip();
|
---|
379 | _root.onPressEnter = oldPressEnter;
|
---|
380 | _root.onPressEsc = oldPressEsc;
|
---|
381 | _root.oldPressDelete = oldPressDelete;
|
---|
382 | parentObj.SetBehindDialog(false);
|
---|
383 | onClickCancel();
|
---|
384 | };
|
---|
385 | mcPopup.onFinishInput = function(retVal) {
|
---|
386 | mcPopup.onCloseDialog();
|
---|
387 | onClickOK(retVal);
|
---|
388 | };
|
---|
389 | mcPopup.setDlgSize = function() {
|
---|
390 | var movie = mcPopup.content;
|
---|
391 | var size = movie.getMovieSize? movie.getMovieSize(): {width: movie._width, height: movie._height};
|
---|
392 | mcPopup.setSize(size.width + 6, size.height + 34);
|
---|
393 | mcPopup._x = 400 - mcPopup.width/2;
|
---|
394 | mcPopup._y = 290 - mcPopup.height/2;
|
---|
395 | mcPopup._visible = true;
|
---|
396 | }
|
---|
397 | mcPopup.addEventListener("complete", function() {if (frame!="") mcPopup.content.gotoAndStop(frame); mcPopup.setDlgSize()});
|
---|
398 | mcPopup.addEventListener("click", function() {if (onClickCancel!==false) mcPopup.onCloseDialog()});
|
---|
399 |
|
---|
400 | return mcPopup;
|
---|
401 | }
|
---|
402 |
|
---|
403 | function ClearAllData() {
|
---|
404 | movScene.ClearBackGround();
|
---|
405 | while (movScene.bkgnd_node.childNodes.length > 0) movScene.bkgnd_node.lastChild.removeNode();
|
---|
406 | while (treItem.length > 0) treItem.removeItemAt(0);
|
---|
407 | currentFile = "";
|
---|
408 | dataChanged = "false";
|
---|
409 | undoData.splice(0);
|
---|
410 | undoPos = 0;
|
---|
411 | GetRelatedFiles();
|
---|
412 | }
|
---|
413 |
|
---|
414 | function ExecWithConfirmSave(execFunction)
|
---|
415 | {
|
---|
416 | if( dataChanged == "true" ) {
|
---|
417 | ShowQuestion(
|
---|
418 | lang.msgConfirmSave, lang.msgTitle, lang.btnContinue,
|
---|
419 | function() { SaveAndExec(execFunction) },
|
---|
420 | execFunction
|
---|
421 | );
|
---|
422 | } else {
|
---|
423 | execFunction();
|
---|
424 | }
|
---|
425 | }
|
---|
426 |
|
---|
427 | function ChangeTempPath(tmpPathName) {
|
---|
428 | var pos = tempPath.length;
|
---|
429 | var tmp = GetFullFileName(tmpPathName);
|
---|
430 | if( tmp.substr(0, pos) == tempPath )
|
---|
431 | return defaultFilePath + tmp.substr(pos);
|
---|
432 | return tmpPathName;
|
---|
433 | }
|
---|
434 |
|
---|
435 | function EncodeXml(s)
|
---|
436 | {
|
---|
437 | s = Replace(s, '&', "&");
|
---|
438 | s = Replace(s, '"', """);
|
---|
439 | s = Replace(s, '<', "<");
|
---|
440 | s = Replace(s, '>', ">");
|
---|
441 | return escape(s);
|
---|
442 | }
|
---|
443 |
|
---|
444 | function SaveAndExec(execFunction, isSaveAs)
|
---|
445 | {
|
---|
446 | if( currentFile == "" || isSaveAs ) {
|
---|
447 | if (online) {
|
---|
448 | ShowGrayScreen();
|
---|
449 | var pop = LoadPopupMovie(lang.mnuSaveAs, "Popup" + slash + "Space.swf",
|
---|
450 | function(param) {SaveToFile(execFunction, param)},
|
---|
451 | function() {ShowGrayScreen(false)});
|
---|
452 | pop.defExt = "xvl";
|
---|
453 | pop.filter = ["xvl"];
|
---|
454 | return;
|
---|
455 | }
|
---|
456 | fscommand("Save As", "");
|
---|
457 | ShowGrayScreen();
|
---|
458 | command = "";
|
---|
459 | onEnterFrame = function() {
|
---|
460 | if( command == "" ) return;
|
---|
461 | ShowGrayScreen(false);
|
---|
462 | if( command == "Save As OK" ) {
|
---|
463 | GetDataChangePath(GetFullFileName, dataXML.firstChild);
|
---|
464 | currentFile = savedFileName;
|
---|
465 | GetDataChangePath(GetRelativeFileName, dataXML.firstChild);
|
---|
466 | SaveToFile(execFunction, true);
|
---|
467 | fscommand("Set Title", currentFile);
|
---|
468 | }
|
---|
469 | else {
|
---|
470 | onEnterFrame = WaitForAppCommand;
|
---|
471 | command = "";
|
---|
472 | }
|
---|
473 | }
|
---|
474 | return;
|
---|
475 | }
|
---|
476 | SaveToFile(execFunction);
|
---|
477 | }
|
---|
478 |
|
---|
479 | function SaveToFile(execFunction, param) {
|
---|
480 | var isFirstSave = (param != undefined);
|
---|
481 | if( isFirstSave ) {
|
---|
482 | var pos1 = currentFile.lastIndexOf(slash) + 1;
|
---|
483 | var pos2 = currentFile.lastIndexOf(".");
|
---|
484 | defaultFilePath = currentFile.substring(pos1, pos2) + " files" + slash;
|
---|
485 | GetDataChangePath(ChangeTempPath, dataXML.firstChild);
|
---|
486 | filesForRetrieve = fileList;
|
---|
487 | GetRelatedFiles();
|
---|
488 | }
|
---|
489 |
|
---|
490 | ascData = new XML(dataXML.toString());
|
---|
491 | if (movScene.bkgnd_node.childNodes.length > 0)
|
---|
492 | if( !ascData.firstChild.firstChild ) ascData.firstChild.appendChild(movScene.bkgnd_node.cloneNode(true));
|
---|
493 | else ascData.firstChild.insertBefore(movScene.bkgnd_node.cloneNode(true), ascData.firstChild.firstChild);
|
---|
494 |
|
---|
495 | if( online ) {
|
---|
496 | var xml:XML = new XML();
|
---|
497 | xml.ignoreWhite = true;
|
---|
498 | xml.onLoad = function(success) {
|
---|
499 | if (!checkSuccess(success, "errServerConnect", "Không thể kết nối tới server.")) return;
|
---|
500 | var attr = this.firstChild.attributes;
|
---|
501 | if (!checkSuccess(attr.err=="", attr.errCode, attr.err)) return;
|
---|
502 | currentFile = attr.id;
|
---|
503 | fscommand("Set Title", attr.name);
|
---|
504 | dataChanged = "false";
|
---|
505 | execFunction();
|
---|
506 | }
|
---|
507 | var request = spaceUrl + "save";
|
---|
508 | if (isFirstSave) request += "?userid="+param.userid + "&dir="+param.dir + "&name="+param.name;
|
---|
509 | else request += "?fileid="+currentFile;
|
---|
510 | ascData.sendAndLoad(request, xml);
|
---|
511 | return;
|
---|
512 | }
|
---|
513 |
|
---|
514 | UnicodeAscii(EncodeXml, ascData.firstChild);
|
---|
515 | ascData = defXmlDecl + GetAlignedXml(ascData, 0);
|
---|
516 |
|
---|
517 | fscommand("Save", "");
|
---|
518 | command = "";
|
---|
519 | onEnterFrame = function() {
|
---|
520 | if( command == "" ) return;
|
---|
521 | onEnterFrame = WaitForAppCommand;
|
---|
522 | if( command == "Save OK" ) execFunction();
|
---|
523 | if( command == "Save Error" ) ShowMessage(lang.msgSaveError, lang.msgTitle1);
|
---|
524 | if( isFirstSave ) fscommand("Retrieve", "");
|
---|
525 | else fscommand("Cleanup", "");
|
---|
526 | delete ascData;
|
---|
527 | command = "";
|
---|
528 | }
|
---|
529 | }
|
---|
530 |
|
---|
531 | ////////////////////////////////////////////////////////////////////////////////
|
---|
532 | // MENU FILE FUNCTIONS
|
---|
533 | //
|
---|
534 | btnNew.onRelease = function() {
|
---|
535 | ExecWithConfirmSave(CreateNewData);
|
---|
536 | }
|
---|
537 |
|
---|
538 | function InitializeDataXML() {
|
---|
539 | var lectureNode = commonXML.createElement("LECTURE_INFO");
|
---|
540 | if( appUserName ) {
|
---|
541 | lectureNode.attributes.Info = unescape(appUserName) + " - " + unescape(appAddress);
|
---|
542 | lectureNode.attributes.Check = lectureNode.attributes.Info.length + 13;
|
---|
543 | }
|
---|
544 | lectureNode.attributes.CommonDir = commonDir;
|
---|
545 | lectureNode.attributes.Layout = "Layout1.swf";
|
---|
546 | lectureNode.attributes.Title = "";
|
---|
547 | lectureNode.attributes.Version = version;
|
---|
548 | dataXML.appendChild(lectureNode);
|
---|
549 | }
|
---|
550 |
|
---|
551 | function CreateNewData() {
|
---|
552 | ClearAllData();
|
---|
553 | InitializeDataXML();
|
---|
554 | movScene.onLoadXMLData();
|
---|
555 | fscommand("Set Title", "");
|
---|
556 | }
|
---|
557 |
|
---|
558 | btnOpen.onRelease = function() {
|
---|
559 | ExecWithConfirmSave(
|
---|
560 | function() {
|
---|
561 | if (online) {
|
---|
562 | ShowGrayScreen();
|
---|
563 | var pop = LoadPopupMovie(lang.mnuOpen, "Popup" + slash + "Space.swf",
|
---|
564 | function(param) {
|
---|
565 | ClearAllData();
|
---|
566 |
|
---|
567 | currentFile = param.id;
|
---|
568 | fscommand("Set Title", param.name);
|
---|
569 | LoadXMLData(spaceUrl + "file?id="+param.id+"&userid="+param.userid);
|
---|
570 | },
|
---|
571 | function() {ShowGrayScreen(false)});
|
---|
572 | pop.defExt = "xvl";
|
---|
573 | pop.filter = ["xvl"];
|
---|
574 | return;
|
---|
575 | }
|
---|
576 | command = "";
|
---|
577 | openedFileName = "";
|
---|
578 | fscommand("Open", "");
|
---|
579 | ShowGrayScreen();
|
---|
580 |
|
---|
581 | onEnterFrame = function() {
|
---|
582 | if( command == "" ) return;
|
---|
583 | ShowGrayScreen(false);
|
---|
584 | if( command == "Open OK" ) OpenNewFile();
|
---|
585 | onEnterFrame = WaitForAppCommand;
|
---|
586 | command = "";
|
---|
587 | }
|
---|
588 | });
|
---|
589 | }
|
---|
590 |
|
---|
591 | // open from Violet Space (using HMTL/javascript to display folders & files)
|
---|
592 | // 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
|
---|
593 | function OpenFileById() {
|
---|
594 | clearInterval(_root.openFileInterval);
|
---|
595 |
|
---|
596 | if (fileId == undefined) return;
|
---|
597 | if (fileId == "") return;
|
---|
598 |
|
---|
599 | //ShowGrayScreen();
|
---|
600 | ClearAllData();
|
---|
601 | currentFile = fileId;
|
---|
602 | LoadXMLData(spaceUrl + "file?id="+fileId+"&userid="+userId);
|
---|
603 | }
|
---|
604 |
|
---|
605 | function OpenNewFile() {
|
---|
606 | ClearAllData();
|
---|
607 | currentFile = openedFileName;
|
---|
608 | fscommand("Set Title", currentFile);
|
---|
609 | LoadXMLData(currentFile);
|
---|
610 | }
|
---|
611 |
|
---|
612 | btnSave.onRelease = function() {
|
---|
613 | SaveAndExec();
|
---|
614 | }
|
---|
615 |
|
---|
616 | btnLibrary.onRelease = function() {
|
---|
617 | ShowGrayScreen();
|
---|
618 | var pop = LoadPopupMovie(lang.mnuLibrary, "Popup" + slash + "Library.swf",
|
---|
619 | function(filename) {
|
---|
620 | ClearAllData();
|
---|
621 | openedFileName = filename;
|
---|
622 | LoadXMLData(filename);
|
---|
623 | },
|
---|
624 | function() {ShowGrayScreen(false)});
|
---|
625 | pop.libPaths = _root.lecturePaths;
|
---|
626 | pop.remember = true;
|
---|
627 | pop.okTitle = lang.mnuOpen;
|
---|
628 | }
|
---|
629 |
|
---|
630 | btnPack.onRelease = function() {
|
---|
631 | GetRelatedFiles(true);
|
---|
632 |
|
---|
633 | var slashPos = currentFile.lastIndexOf(slash);
|
---|
634 | if( !online && currentFile.substr(slashPos + 1) == "Scenario.xvl" ) {
|
---|
635 | ShowQuestion(lang.msgHasPacked, lang.msgTitle4, lang.btnCancel,
|
---|
636 | function() {
|
---|
637 | oldpackType = packageType;
|
---|
638 | packageType = 0;
|
---|
639 | packagePath = currentFile.substring(0, slashPos)
|
---|
640 | CreatePackage("Overwrite");
|
---|
641 | dataChanged = "false";
|
---|
642 | },
|
---|
643 | function() {
|
---|
644 | ShowDialog("Pack", lang.mnuPack);
|
---|
645 | });
|
---|
646 | return;
|
---|
647 | }
|
---|
648 |
|
---|
649 | ShowDialog("Pack", lang.mnuPack);
|
---|
650 | }
|
---|
651 |
|
---|
652 | function CreatePackage(status, paid) {
|
---|
653 | if (online && (isNaN(userLevel) || userLevel < 1) && !paid) {
|
---|
654 | ShowGrayScreen();
|
---|
655 | LoadPopupMovie("lang.dlgLicenseTitle", "Popup" + slash + "UserManager.swf|Package",
|
---|
656 | function() {CreatePackage(status, true)},
|
---|
657 | function() {ShowGrayScreen(false)},
|
---|
658 | null, "Language" + slash + "User");
|
---|
659 | return;
|
---|
660 | }
|
---|
661 | if( webbase ) {
|
---|
662 | treItem.enabled = false;
|
---|
663 | xml = new XML();
|
---|
664 | xml.onLoad = function() {
|
---|
665 | treItem.enabled = true;
|
---|
666 | var param = "userid=" + userId;
|
---|
667 | param += "&name=" + escape(packagePath);
|
---|
668 | param += "&id=" + this.firstChild.attributes.id;
|
---|
669 | getUrl(rootPath + "Service/packdownload.php?" + param);
|
---|
670 | }
|
---|
671 | var lv:LoadVars = new LoadVars();
|
---|
672 | lv.userid = userId;
|
---|
673 | lv.name = packagePath;
|
---|
674 | lv.type = packageType;
|
---|
675 | lv.dataNum = dataFileNum;
|
---|
676 | lv.commonNum = commonFileNum;
|
---|
677 | lv.fileList = fileListStr.split("|").join(",");
|
---|
678 | if (packageType == 1) lv.packagePlayer = packagePlayer;
|
---|
679 | if (packageType == 3) {
|
---|
680 | lv.scormVersion = scormVersion;
|
---|
681 | lv.scormTitle = packXML.firstChild.attributes.Title;
|
---|
682 | lv.scormOrgData = GetAlignedXml(CreateOrganization(packXML), 3);
|
---|
683 | }
|
---|
684 | lv.dataXml = defXmlDecl + GetAlignedXml(packXML, 0);
|
---|
685 | lv.sendAndLoad(rootPath + "Service/package.php", xml);
|
---|
686 | return;
|
---|
687 | }
|
---|
688 |
|
---|
689 | if( status==undefined ) status = "";
|
---|
690 | SwitchCurrentVideo(movScene.currMovie, "close");
|
---|
691 | treItem.enabled = false;
|
---|
692 |
|
---|
693 | ascData = new XML(packXML.toString());
|
---|
694 | UnicodeAscii(EncodeXml, ascData.firstChild);
|
---|
695 | if( packageType == 3 ) {
|
---|
696 | scormTitle = ascData.firstChild.attributes.Title;
|
---|
697 | scormOrgData = GetAlignedXml(CreateOrganization(ascData), 3);
|
---|
698 | }
|
---|
699 | ascData = defXmlDecl + GetAlignedXml(ascData, 0);
|
---|
700 |
|
---|
701 | fscommand("Pack", status);
|
---|
702 | command = "";
|
---|
703 |
|
---|
704 | onEnterFrame = function() {
|
---|
705 | if( command == "" ) return;
|
---|
706 | if( command == "Create Error" ) {
|
---|
707 | ShowMessage(lang.msgDirError, lang.msgTitle1);
|
---|
708 | }
|
---|
709 | if( command == "Copy Error" || command == "Save Error" ) {
|
---|
710 | ShowMessage(lang.msgPackError + copiedFile + "\r\r ", lang.msgTitle1);
|
---|
711 | }
|
---|
712 | if( command == "Dir Existed" ) {
|
---|
713 | ShowQuestion(
|
---|
714 | lang.msgPackOver, lang.msgTitle, lang.btnCancel,
|
---|
715 | function() { CreatePackage("Overwrite", paid) },
|
---|
716 | function() { CreatePackage("Merge", paid) }
|
---|
717 | );
|
---|
718 | }
|
---|
719 | SwitchCurrentVideo(movScene.currMovie, "replay");
|
---|
720 | treItem.enabled = true;
|
---|
721 |
|
---|
722 | if( packageType == 0 ) packageType = oldpackType;
|
---|
723 | onEnterFrame = WaitForAppCommand;
|
---|
724 | delete ascData;
|
---|
725 | command = "";
|
---|
726 | }
|
---|
727 | }
|
---|
728 |
|
---|
729 | function ExitProgram()
|
---|
730 | {
|
---|
731 | if (online) {
|
---|
732 | var lv:LoadVars = new LoadVars();
|
---|
733 | lv.send(userUrl + "logout");
|
---|
734 | }
|
---|
735 | ExecWithConfirmSave(
|
---|
736 | function() {
|
---|
737 | SaveConfig();
|
---|
738 | fscommand("Quit", "");
|
---|
739 | });
|
---|
740 | }
|
---|
741 |
|
---|
742 | ////////////////////////////////////////////////////////////////////////////////
|
---|
743 | // MENU EDIT FUNCTIONS
|
---|
744 | //
|
---|
745 | function UpdateUndoData() {
|
---|
746 | undoData.splice(undoPos);
|
---|
747 | if(undoData.length >= maxUndo) undoData.shift();
|
---|
748 | var node = dataXML.firstChild.cloneNode(true);
|
---|
749 | node.attributes.selectedIndex = treItem.selectedIndex;
|
---|
750 | undoData.push(node);
|
---|
751 | undoPos = undoData.length;
|
---|
752 | dataChanged = "true";
|
---|
753 | }
|
---|
754 |
|
---|
755 | function RestoreFromUndoData() {
|
---|
756 | while (treItem.length > 0) treItem.removeItemAt(0);
|
---|
757 | var layout = dataXML.firstChild.attributes.Layout;
|
---|
758 | var title = dataXML.firstChild.attributes.Title;
|
---|
759 | dataXML.firstChild.removeNode();
|
---|
760 | dataXML.appendChild(undoData[undoPos].cloneNode(true));
|
---|
761 | UpdateScreen(true);
|
---|
762 | treItem.selectedIndex = dataXML.firstChild.attributes.selectedIndex;
|
---|
763 | delete dataXML.firstChild.attributes.selectedIndex;
|
---|
764 |
|
---|
765 | if( layout != dataXML.firstChild.attributes.Layout ||
|
---|
766 | title != dataXML.firstChild.attributes.Title )
|
---|
767 | {
|
---|
768 | movScene.currentItem = treItem.selectedNode.attributes.item;
|
---|
769 | movScene.currentSection = treItem.selectedNode.attributes.section;
|
---|
770 | movScene.UpdateTemplate();
|
---|
771 | } else {
|
---|
772 | onChangeHandle();
|
---|
773 | }
|
---|
774 | }
|
---|
775 |
|
---|
776 | function ProcessUndo() {
|
---|
777 | if( undoPos == 0 ) return;
|
---|
778 | if( undoPos == undoData.length ) {UpdateUndoData(); undoPos--;}
|
---|
779 | undoPos--;
|
---|
780 | RestoreFromUndoData();
|
---|
781 | }
|
---|
782 |
|
---|
783 | function ProcessRedo() {
|
---|
784 | if( undoPos == undoData.length ) return;
|
---|
785 | undoPos++;
|
---|
786 | RestoreFromUndoData();
|
---|
787 | if( undoPos == undoData.length - 1 ) undoData.pop();
|
---|
788 | }
|
---|
789 |
|
---|
790 | btnCutItem.onRelease = btnCutOnRelease = function() {
|
---|
791 | CopyToClipboard(DeleteItem);
|
---|
792 | }
|
---|
793 |
|
---|
794 | btnCopyItem.onRelease = btnCopyOnRelease = function() {
|
---|
795 | CopyToClipboard();
|
---|
796 | }
|
---|
797 |
|
---|
798 | function GetElementChangePath(change, node) {
|
---|
799 | if( node.attributes.hyperlink.charAt(0) == "1" ) {
|
---|
800 | node.attributes.hyperlink = "1|" + change(node.attributes.hyperlink.substr(2));
|
---|
801 | }
|
---|
802 | if( node.nodeName == "IMAGE" || node.nodeName == "MEDIA" ) {
|
---|
803 | node.attributes.url = change(node.attributes.url);
|
---|
804 | }
|
---|
805 | if( node.nodeName == "PLUGIN" ) {
|
---|
806 | ChangeXMLFileInfo(node.firstChild, change, pluXML.childNodes[1].childNodes[1].attributes[node.firstChild.nodeName]);
|
---|
807 | var subNodes = node.firstChild.childNodes;
|
---|
808 | for( var i=0; i<subNodes.length; i++ )
|
---|
809 | if( subNodes[i].attributes.hyperlink.charAt(0) == "1" )
|
---|
810 | subNodes[i].attributes.hyperlink = "1|" + change(subNodes[i].attributes.hyperlink.substr(2));
|
---|
811 | var langAttr = node.childNodes[1].firstChild.attributes;
|
---|
812 | for (var a in langAttr) if (a.substr(0, 5)=="file_") langAttr[a] = change(langAttr[a]);
|
---|
813 | }
|
---|
814 | }
|
---|
815 |
|
---|
816 | function GetNodeChangePath(change, itemData) {
|
---|
817 | for( var k=0; k<itemData.childNodes.length; k++ ) {
|
---|
818 | var node = itemData.childNodes[k];
|
---|
819 | GetElementChangePath(change, node);
|
---|
820 | }
|
---|
821 | }
|
---|
822 |
|
---|
823 | function GetDataChangePath(change, itemData) {
|
---|
824 | if( itemData.nodeName == "LECTURE_INFO" ) ChangeLayoutFileParam(itemData, change);
|
---|
825 | if( itemData.nodeName == "LECTURE_INFO" || itemData.nodeName == "SECTION_INFO" || itemData.nodeName == "BACKGROUND_INFO" )
|
---|
826 | for( var i = 0; i < itemData.childNodes.length; i++ )
|
---|
827 | GetDataChangePath(change, itemData.childNodes[i]);
|
---|
828 | else
|
---|
829 | GetNodeChangePath(change, itemData);
|
---|
830 | }
|
---|
831 |
|
---|
832 | function CopyToClipboard(execFunction) {
|
---|
833 | if( treItem.length == 0 ) return;
|
---|
834 |
|
---|
835 | var section = treItem.selectedNode.attributes.section-1;
|
---|
836 | var item = treItem.selectedNode.attributes.item-1;
|
---|
837 | var itemData = (item>=0) ?
|
---|
838 | dataXML.firstChild.childNodes[section].childNodes[item] :
|
---|
839 | dataXML.firstChild.childNodes[section];
|
---|
840 |
|
---|
841 | var copiedData = itemData.cloneNode(true);
|
---|
842 | GetDataChangePath(GetFullFileName, copiedData);
|
---|
843 |
|
---|
844 | command = "";
|
---|
845 | ascData = new XML(copiedData.toString());
|
---|
846 | UnicodeAscii(escape, ascData);
|
---|
847 | fscommand("Set Clipboard", dataID + ascData.toString());
|
---|
848 | onEnterFrame = function() {
|
---|
849 | if( command == "" ) return;
|
---|
850 | if( command == "Set OK" ) execFunction();
|
---|
851 | onEnterFrame = WaitForAppCommand;
|
---|
852 | delete ascData;
|
---|
853 | command = "";
|
---|
854 | }
|
---|
855 | }
|
---|
856 |
|
---|
857 | btnPasteItem.onRelease = btnPasteOnRelease = function() {
|
---|
858 | command = "";
|
---|
859 | clipboardData = "";
|
---|
860 | fscommand("Get Clipboard");
|
---|
861 |
|
---|
862 | onEnterFrame = function() {
|
---|
863 | if( command == "" ) return;
|
---|
864 | if( command == "Get Text" ) {
|
---|
865 | if( clipboardData.substr(0, dataID.length) == dataID ) {
|
---|
866 | var xmlClipboard = new XML(clipboardData.substr(dataID.length));
|
---|
867 | var itemData = xmlClipboard.firstChild;
|
---|
868 | UnicodeAscii(unescape, itemData);
|
---|
869 | GetDataChangePath(GetRelativeFileName, itemData);
|
---|
870 |
|
---|
871 | var section = treItem.selectedItem.attributes.section;
|
---|
872 | if( itemData.nodeName == "SECTION_INFO" ) AddSectionData(itemData);
|
---|
873 | else if( section != undefined) AddItemData(section - 1, itemData);
|
---|
874 | }
|
---|
875 | }
|
---|
876 | onEnterFrame = WaitForAppCommand;
|
---|
877 | command = "";
|
---|
878 | }
|
---|
879 | }
|
---|
880 |
|
---|
881 | ////////////////////////////////////////////////////////////////////////////////
|
---|
882 | // MENU CONTENT FUNCTIONS
|
---|
883 | //
|
---|
884 | btnAdd.onRelease = function() {
|
---|
885 | isChanging = false;
|
---|
886 | inputingCover = false;
|
---|
887 | ShowDialog("Item", lang.dlgItem);
|
---|
888 | }
|
---|
889 |
|
---|
890 | btnDetail.onRelease = function() {
|
---|
891 | if( treItem.length == 0 ) return;
|
---|
892 | treCurrentNode = treItem.selectedNode;
|
---|
893 | var section = treItem.selectedNode.attributes.section-1;
|
---|
894 |
|
---|
895 | var item = treItem.selectedNode.attributes.item-1;
|
---|
896 | if(item>=0) changingNode = dataXML.firstChild.childNodes[section].childNodes[item];
|
---|
897 | else changingNode = dataXML.firstChild.childNodes[section];
|
---|
898 | wndDialog.content.node = changingNode.cloneNode(true);
|
---|
899 | isChanging = true;
|
---|
900 | inputingCover = dataXML.firstChild.childNodes[section].attributes.coverpage=="true";
|
---|
901 |
|
---|
902 | if(item<0 && inputingCover ) return;
|
---|
903 |
|
---|
904 | if(item>=0) ShowDialog("Item", lang.dlgItem);
|
---|
905 | else ShowDialog("Section", lang.dlgSection);
|
---|
906 | }
|
---|
907 |
|
---|
908 | btnDelete.onRelease = function() {
|
---|
909 | if( treItem.length == 0 ) return;
|
---|
910 | ShowQuestion(lang.msgConfirmDel, lang.msgTitle3, "", DeleteItem);
|
---|
911 | }
|
---|
912 |
|
---|
913 | function SyncVideoAudio() {
|
---|
914 | var section = treItem.selectedNode.attributes.section - 1;
|
---|
915 | var item = treItem.selectedNode.attributes.item - 1;
|
---|
916 | if (item >= 0) {
|
---|
917 | if (movScene.sectionSync) {ShowMessage(lang.msgSyncSection, lang.msgTitle1); return;}
|
---|
918 | movScene.selectItem(movScene.currentItem, true);
|
---|
919 | if (!movScene.firstMediaObj) {ShowMessage(lang.msgSyncNoVideo, lang.msgTitle1); return;}
|
---|
920 | if (movScene.currentIndex == undefined) {ShowMessage(lang.msgSyncNoAction, lang.msgTitle1); return;}
|
---|
921 | wndDialog.content.node = dataXML.firstChild.childNodes[section].childNodes[item];
|
---|
922 | } else {
|
---|
923 | if (movScene.currentItemNum < 2) {ShowMessage(lang.msgSyncNoAction, lang.msgTitle1); return;}
|
---|
924 | movScene.UpdateBackGround();
|
---|
925 | movScene.sectionSync = true;
|
---|
926 | movScene.firstMediaObj = movScene.movPageBkGnd.firstMediaObj;
|
---|
927 | if (!movScene.firstMediaObj) {ShowMessage(lang.msgSyncNoVideo, lang.msgTitle1); return;}
|
---|
928 | movScene.selectItem(1);
|
---|
929 | wndDialog.content.node = dataXML.firstChild.childNodes[section];
|
---|
930 | }
|
---|
931 | movScene.firstMediaObj.autoPlay = true;
|
---|
932 | delete movScene.onEnterFrame;
|
---|
933 | ShowDialog("Sync", lang.mnuSync);
|
---|
934 | wndDialog._x = 15;
|
---|
935 | }
|
---|
936 |
|
---|
937 | function SelectCoverPage() {
|
---|
938 | isChanging = false;
|
---|
939 | inputingCover = true;
|
---|
940 | ShowDialog("Item", lang.dlgItem);
|
---|
941 | }
|
---|
942 |
|
---|
943 | function SelectBackGround() {
|
---|
944 | retFrame = "";
|
---|
945 | ShowDialog("BkGnd", lang.mnuBackGround);
|
---|
946 | }
|
---|
947 |
|
---|
948 | function AddCoverPage(node) {
|
---|
949 | if( !isChanging ) {
|
---|
950 | if( dataXML.firstChild.firstChild.attributes.coverpage=="true" ) {
|
---|
951 | UpdateUndoData();
|
---|
952 | dataXML.firstChild.firstChild.firstChild.removeNode();
|
---|
953 | dataXML.firstChild.firstChild.appendChild(node);
|
---|
954 | var i = 0;
|
---|
955 | while( treItem.getItemAt(i).attributes.section != 1 ) i++;
|
---|
956 | treItem.selectedIndex = i+1;
|
---|
957 | onChangeHandle();
|
---|
958 | GetRelatedFiles();
|
---|
959 | } else {
|
---|
960 | movScene.ClearBackGround();
|
---|
961 | var sectionInfo = dataXML.createElement("SECTION_INFO");
|
---|
962 | sectionInfo.attributes.label = lang.coverPage;
|
---|
963 | sectionInfo.attributes.coverpage = "true";
|
---|
964 | sectionInfo.attributes.invisible = "true";
|
---|
965 | sectionInfo.appendChild(node);
|
---|
966 | AddSectionData(sectionInfo, 0);
|
---|
967 | }
|
---|
968 | } else {
|
---|
969 | UpdateUndoData();
|
---|
970 | changingNode.parentNode.insertBefore(node, changingNode);
|
---|
971 | changingNode.removeNode();
|
---|
972 | onChangeHandle();
|
---|
973 | GetRelatedFiles();
|
---|
974 | }
|
---|
975 | }
|
---|
976 |
|
---|
977 | btnLayout.onRelease = function() {
|
---|
978 | ShowDialog("Layout", lang.mnuLayout);
|
---|
979 | }
|
---|
980 |
|
---|
981 | btnPreview.onRelease = function() {
|
---|
982 | if( btnSceneBkGnd._visible ) { ClosePreview(); return; }
|
---|
983 | fscommand("Set Style", "Popup");
|
---|
984 | btnSceneBkGnd._visible = true;
|
---|
985 | movPlayer.swapDepths(movScenePrev);
|
---|
986 | movPlayer._yscale = 100;
|
---|
987 | movPlayer._xscale = 100;
|
---|
988 | movPlayer._x = 0;
|
---|
989 | movPlayer._y = -10;
|
---|
990 | }
|
---|
991 |
|
---|
992 | function ClosePreview() {
|
---|
993 | if( !btnSceneBkGnd._visible ) return;
|
---|
994 | fscommand("Set Style", "Normal");
|
---|
995 | btnSceneBkGnd._visible = false;
|
---|
996 | movPlayer.swapDepths(movScenePrev);
|
---|
997 | movPlayer._x = 275;
|
---|
998 | movPlayer._y = 100;
|
---|
999 | movPlayer._xscale = 500/8;
|
---|
1000 | movPlayer._yscale = 375/6;
|
---|
1001 | }
|
---|
1002 |
|
---|
1003 | ////////////////////////////////////////////////////////////////////////////////
|
---|
1004 | // MENU MODIFY FUNCTIONS
|
---|
1005 | //
|
---|
1006 | function EditFile(fileName) {
|
---|
1007 | command = "";
|
---|
1008 | fscommand("Edit File", fileName);
|
---|
1009 | onEnterFrame = function() {
|
---|
1010 | if( command == "" ) return;
|
---|
1011 | if( command == "Launch Error" ) ShowMessage(lang.msgEditError, lang.msgTitle1);
|
---|
1012 | onEnterFrame = WaitForAppCommand;
|
---|
1013 | command = "";
|
---|
1014 | }
|
---|
1015 | }
|
---|
1016 |
|
---|
1017 | ////////////////////////////////////////////////////////////////////////////////
|
---|
1018 | // MENU WINDOWS FUNCTIONS
|
---|
1019 | //
|
---|
1020 | function ResetWindowSize() {
|
---|
1021 | windowState = 1;
|
---|
1022 | windowTop = 0;
|
---|
1023 | windowLeft = 0;
|
---|
1024 | windowRight = 0;
|
---|
1025 | windowBottom = 0;
|
---|
1026 | fscommand("Set State", "");
|
---|
1027 | }
|
---|
1028 |
|
---|
1029 | function SetFlashViewMode(mode) {
|
---|
1030 | fscommand("View Mode", mode);
|
---|
1031 | flashViewMode = mode;
|
---|
1032 | }
|
---|
1033 |
|
---|
1034 | function ShowConfigDlg() {
|
---|
1035 | ShowDialog("Config", lang.mnuConfig);
|
---|
1036 | }
|
---|
1037 |
|
---|
1038 | function UpdatePlugin() {
|
---|
1039 | ShowDialog("Plugin", lang.mnuUpdateModules);
|
---|
1040 | }
|
---|
1041 |
|
---|
1042 | function UpdateLayout() {
|
---|
1043 | ShowDialog("LayUpdate", lang.mnuUpdateLayouts);
|
---|
1044 | }
|
---|
1045 |
|
---|
1046 | function UpdateCommonLib() {
|
---|
1047 | ShowDialog("LibUpdate", lang.mnuUpdateLibs);
|
---|
1048 | }
|
---|
1049 |
|
---|
1050 | function SaveConfigXML(action, data) {
|
---|
1051 | ascData = new XML(data.toString());
|
---|
1052 | UnicodeAscii(EncodeXml, ascData.firstChild);
|
---|
1053 | ascData = defXmlDecl + GetAlignedXml(ascData, 0);
|
---|
1054 | fscommand(action, "ascData");
|
---|
1055 | }
|
---|
1056 |
|
---|
1057 | function RunApplication(filename) {
|
---|
1058 | SendRequest("Run App", filename, function(response, data) {
|
---|
1059 | if (response != "Run OK") ShowMessage(lang.msgCanNotRun + " " + filename, lang.msgTitle1);
|
---|
1060 | });
|
---|
1061 | }
|
---|
1062 | ////////////////////////////////////////////////////////////////////////////////
|
---|
1063 | // MENU HELP FUNCTIONS
|
---|
1064 | //
|
---|
1065 | btnHelp.onRelease = function() {
|
---|
1066 | getURL("http://hoctructuyen.violet.vn/present/list/cat_id/7795643", "_blank");
|
---|
1067 | }
|
---|
1068 |
|
---|
1069 | function AutoUpgrade() {
|
---|
1070 | ShowDialog("Upgrade", lang.mnuUpgrade);
|
---|
1071 | }
|
---|
1072 |
|
---|
1073 | function AboutProgram() {
|
---|
1074 | ShowDialog("About", lang.mnuAbout);
|
---|
1075 | }
|
---|
1076 |
|
---|
1077 | ////////////////////////////////////////////////////////////////////////////////
|
---|
1078 | // MENU ACCOUNT FUNCTIONS
|
---|
1079 | //
|
---|
1080 | function EditAccountInfo() {
|
---|
1081 | ShowGrayScreen();
|
---|
1082 | LoadPopupMovie(lang.dlgLoginTitle, "Popup" + slash + "UserManager.swf|Update",
|
---|
1083 | null, function() {ShowGrayScreen(false)}, null, "Language" + slash + "User");
|
---|
1084 | }
|
---|
1085 |
|
---|
1086 | function ManageCastAccount() {
|
---|
1087 | ShowGrayScreen();
|
---|
1088 | LoadPopupMovie(lang.dlgLoginTitle, "Popup" + slash + "UserManager.swf|Payment",
|
---|
1089 | null, function() {ShowGrayScreen(false)}, null, "Language" + slash + "User");
|
---|
1090 | }
|
---|
1091 |
|
---|
1092 | function ShowVioletLicense() {
|
---|
1093 | ShowGrayScreen();
|
---|
1094 | LoadPopupMovie(lang.dlgLoginTitle, "Popup" + slash + "UserManager.swf|License",
|
---|
1095 | null, function() {ShowGrayScreen(false)}, null, "Language" + slash + "User");
|
---|
1096 | }
|
---|
1097 |
|
---|
1098 | function LoginViolet() {
|
---|
1099 | ShowGrayScreen();
|
---|
1100 | LoadPopupMovie(lang.dlgLoginTitle, "Popup" + slash + "UserManager.swf|Login",
|
---|
1101 | function(lv) {
|
---|
1102 | ShowGrayScreen(false);
|
---|
1103 | userId = lv.id;
|
---|
1104 | userLevel = lv.level;
|
---|
1105 | userPhone = lv.phone;
|
---|
1106 | userMoney = lv.money;
|
---|
1107 | appUserName = lv.fullname;
|
---|
1108 | appAddress = lv.school + ", " + lv.province;
|
---|
1109 | dataXML.firstChild.attributes.Info = unescape(appUserName) + " - " + unescape(appAddress);
|
---|
1110 | dataXML.firstChild.attributes.Check = dataXML.firstChild.attributes.Info.length + 13;
|
---|
1111 | movScene.movTemplate.userInfo = movDefLayout.userInfo = dataXML.firstChild.attributes.Info;
|
---|
1112 | licenseInfo = {type: lv.licType, customer: lv.licCustomer, create: lv.licCreate, expire: lv.licExpire}
|
---|
1113 | }, false, null, "Language" + slash + "User");
|
---|
1114 | }
|
---|
1115 |
|
---|
1116 | // load user info
|
---|
1117 | function LoadUserInfo() {
|
---|
1118 | // gray screen
|
---|
1119 | ShowGrayScreen();
|
---|
1120 |
|
---|
1121 | // load user info
|
---|
1122 | var xml_userinfo:XML = new XML();
|
---|
1123 | xml_userinfo.ignoreWhite = true;
|
---|
1124 |
|
---|
1125 | xml_userinfo.onLoad = function(success) {
|
---|
1126 | // hide gray screen
|
---|
1127 | ShowGrayScreen(false);
|
---|
1128 |
|
---|
1129 | // user data
|
---|
1130 | var attr:Object = this.firstChild.firstChild.attributes;
|
---|
1131 | userId = attr.userId;
|
---|
1132 | userLevel = attr.userLevel;
|
---|
1133 | userPhone = attr.userPhone;
|
---|
1134 | userMoney = attr.userMoney;
|
---|
1135 | appUserName = attr.appUserName;
|
---|
1136 | appAddress = attr.appAddress;
|
---|
1137 | dataXML.firstChild.attributes.Info = unescape(appUserName) + " - " + unescape(appAddress);
|
---|
1138 | dataXML.firstChild.attributes.Check = dataXML.firstChild.attributes.Info.length + 13;
|
---|
1139 | movScene.movTemplate.userInfo = movDefLayout.userInfo = dataXML.firstChild.attributes.Info;
|
---|
1140 | licenseInfo = { type: attr.licType, customer: attr.licCustomer, create: attr.licCreate, expire: attr.licExpire }
|
---|
1141 |
|
---|
1142 | //
|
---|
1143 | if (fileId != undefined) {
|
---|
1144 | _root.openFileInterval = setInterval(OpenFileById, 1000);
|
---|
1145 | }
|
---|
1146 | }
|
---|
1147 |
|
---|
1148 | var str:String = (host == undefined) ? userInfoUrl : (host + userInfoUrl);
|
---|
1149 | xml_userinfo.load(str);
|
---|
1150 | }
|
---|
1151 |
|
---|
1152 | // Nếu user info được lấy theo cách truyền từ flashvars:
|
---|
1153 | function UpdateFromFlashVars() {
|
---|
1154 | dataXML.firstChild.attributes.Info = unescape(appUserName) + " - " + unescape(appAddress);
|
---|
1155 | dataXML.firstChild.attributes.Check = dataXML.firstChild.attributes.Info.length + 13;
|
---|
1156 | movScene.movTemplate.userInfo = movDefLayout.userInfo = dataXML.firstChild.attributes.Info;
|
---|
1157 | licenseInfo = {type: licType, customer: licCustomer, create: licCreate, expire: licExpire}
|
---|
1158 | }
|
---|
1159 |
|
---|
1160 |
|
---|
1161 | function LogoutViolet() {
|
---|
1162 | ExecWithConfirmSave(function() {
|
---|
1163 | CreateNewData();
|
---|
1164 | var lv:LoadVars = new LoadVars();
|
---|
1165 | lv.send(userUrl + "logout");
|
---|
1166 | userId = 0;
|
---|
1167 | LoginViolet();
|
---|
1168 | });
|
---|
1169 | }
|
---|
1170 |
|
---|
1171 | ////////////////////////////////////////////////////////////////////////////////
|
---|
1172 | // RIGHT CLICK MENU ITEMS
|
---|
1173 | //
|
---|
1174 | function InitTreeContextMenu() {
|
---|
1175 | var cmTree = new ContextMenu();
|
---|
1176 | var cmiAbout = new ContextMenuItem("About ViOLET...", function() {getURL("http://www.bachkim.vn", "_blank")});
|
---|
1177 | var cmiCut = new ContextMenuItem("Cut (Ctrl+X)", btnCutOnRelease);
|
---|
1178 | var cmiCopy = new ContextMenuItem("Copy (Ctrl+C)", btnCopyOnRelease);
|
---|
1179 | var cmiPaste = new ContextMenuItem("Paste (Ctrl+V)", btnPasteOnRelease);
|
---|
1180 | var cmiAdd = new ContextMenuItem("Add (F5)", btnAdd.onRelease);
|
---|
1181 | var cmiChange = new ContextMenuItem("Change (F6)", btnDetail.onRelease);
|
---|
1182 | var cmiDelete = new ContextMenuItem("Delete (Del)", btnDelete.onRelease);
|
---|
1183 | cmiCut.separatorBefore = true;
|
---|
1184 | cmiAdd.separatorBefore = true;
|
---|
1185 | cmTree.hideBuiltInItems();
|
---|
1186 | cmTree.customItems.push(cmiAbout, cmiCut, cmiCopy, cmiPaste, cmiAdd, cmiChange, cmiDelete);
|
---|
1187 | treItem.menu = cmTree;
|
---|
1188 | } |
---|