1var HSDPA_ENABLE = 0;
2var uptimeStr = "<% uptime(); %>";
3var timezone = uptimeStr.substring(26,31);
4var boottime = parseInt(uptimeStr.substring(32,38));
5var newformat_systime = uptimeStr.substring(8,11) + " " + uptimeStr.substring(5,7) + " " + uptimeStr.substring(17,25) + " " + uptimeStr.substring(12,16);  //Ex format: Jun 23 10:33:31 2008
6var systime_millsec = Date.parse(newformat_systime); // millsec from system
7var JS_timeObj = new Date(); // 1970.1.1
8
9var test_page = 0;
10var testEventID = "";
11var dr_surf_time_interval = 5;	// second
12var show_hint_time_interval = 1;	// second
13
14var wan_route_x = "";
15var wan_nat_x = "";
16var wan_proto = "";
17
18// Dr. Surf {
19// for detect if the status of the machine is changed. {
20var manually_stop_wan = "";
21
22// original status {
23var old_ifWANConnect = 0;
24var old_qos_ready = 1;
25var old_wan_link_str = "";
26var old_detect_dhcp_pppoe = "";
27var old_wan_status_log = "";
28
29var old_printer_sn = "";
30var old_wireless_clients = "";
31// original status }
32
33// new status {
34var new_ifWANConnect = 0;
35var new_wan_link_str = "";
36var new_detect_dhcp_pppoe = "";
37var new_wan_status_log = "";
38
39var new_printer_sn = "";
40var new_wireless_clients = "";
41// new status }
42
43var id_of_check_changed_status = 0;
44
45function unload_body(){
46	disableCheckChangedStatus();
47	no_flash_button();
48
49	return true;
50}
51
52function enableCheckChangedStatus(flag){
53	var seconds = this.dr_surf_time_interval*1000;
54
55	disableCheckChangedStatus();
56
57	if(old_wan_link_str == ""){
58		seconds = 1;
59		id_of_check_changed_status = setTimeout("get_changed_status('initial');", seconds);
60	}
61	else
62		id_of_check_changed_status = setTimeout("get_changed_status();", seconds);
63}
64
65function disableCheckChangedStatus(){
66	clearTimeout(id_of_check_changed_status);
67	id_of_check_changed_status = 0;
68}
69
70function check_if_support_dr_surf(){
71	if($("helpname"))
72		return 1;
73	else
74		return 0;
75}
76
77function compareWirelessClient(target1, target2){
78	if(target1.length != target2.length)
79		return (target2.length-target1.length);
80
81	for(var i = 0; i < target1.length; ++i)
82		for(var j = 0; j < 3; ++j)
83			if(target1[i][j] != target2[i][j])
84					return 1;
85
86	return 0;
87}
88
89var current_connect_status = -1;
90
91function set_connect_status(connect_status){
92	current_connect_status = connect_status;
93}
94
95function get_connect_status(){
96	return current_connect_status;
97}
98
99function check_changed_status(flag){
100	if(this.test_page == 1
101			|| wan_route_x == "IP_Bridged")
102		return;
103
104	if(flag == "initial"){
105		// for the middle of index.asp.
106		if(location.pathname == "/" || location.pathname == "/index.asp"){
107			if(old_ifWANConnect == 1 && old_wan_link_str == "Connected"){
108				showMapWANStatus(1);
109				set_connect_status(1);
110			}
111			else{
112				showMapWANStatus(0);
113				set_connect_status(0);
114			}
115		}
116
117		// Dr. Surf
118		if(old_ifWANConnect == 0) // WAN port is not plugged.
119			parent.showDrSurf("1");
120		else if(old_qos_ready == 0)
121			parent.showDrSurf("40");
122		else if(old_wan_link_str == "Disconnected"){
123			// PPPoE, PPTP, L2TP
124			if(wan_proto != "dhcp" && wan_proto != "static"){
125				if(old_wan_status_log.indexOf("Failed to authenticate ourselves to peer") >= 0)
126					parent.showDrSurf("2_1");
127				else if(old_detect_dhcp_pppoe == "no-respond")
128					parent.showDrSurf("2_2");
129				else
130					parent.showDrSurf("5");
131			}
132			// dhcp, static
133			else
134				parent.showDrSurf("5");
135		}
136		else
137			parent.showDrSurf("0_0"); // connect is ok.
138
139		enableCheckChangedStatus();
140
141		return;
142	}
143
144	// for the middle of index.asp.
145	if(location.pathname == "/" || location.pathname == "/index.asp"){
146		if(new_ifWANConnect == 1 && new_wan_link_str == "Connected"){
147			showMapWANStatus(1);
148			set_connect_status(1);
149		}
150		else{
151			showMapWANStatus(0);
152			set_connect_status(0);
153		}
154	}
155
156	// Dr.Surf.
157	var diff_number = compareWirelessClient(old_wireless_clients, new_wireless_clients);
158
159	if(diff_number != 0){
160		old_wireless_clients = new_wireless_clients;
161
162		//parent.showDrSurf("10");
163		if(diff_number > 0)
164			parent.showDrSurf("11");
165		else
166			parent.showDrSurf("12");
167	}
168	else if(old_printer_sn != new_printer_sn){
169		old_printer_sn = new_printer_sn;
170
171		parent.showDrSurf("30");
172	}
173	else if(old_ifWANConnect != new_ifWANConnect){ // if WAN port is plugged.
174		old_ifWANConnect = new_ifWANConnect;
175
176		if(new_ifWANConnect == 1)
177			parent.showDrSurf("0_2");	// not plugged -> plugged
178		else
179			parent.showDrSurf("1");	// plugged -> not plugged
180	}
181	else if(old_wan_link_str != new_wan_link_str){
182		old_wan_link_str = new_wan_link_str;
183
184		if(new_wan_link_str == "Disconnected"){
185			old_detect_dhcp_pppoe = new_detect_dhcp_pppoe;
186
187			// PPPoE, PPTP, L2TP
188			if(wan_proto != "dhcp" && wan_proto != "static"){
189				if(old_wan_status_log != new_wan_status_log){ // PPP serial change!
190					old_wan_status_log = new_wan_status_log;
191
192					if(new_wan_status_log.length > 0){
193						if(new_wan_status_log.indexOf("Failed to authenticate ourselves to peer") >= 0)
194							parent.showDrSurf("2_1");
195						else
196							parent.showDrSurf("2_2");
197					}
198					else if(new_detect_dhcp_pppoe == "no-respond")
199						parent.showDrSurf("2_2");
200					else
201						parent.showDrSurf("5");
202				}
203				else if(new_detect_dhcp_pppoe == "no-respond")
204					parent.showDrSurf("2_2");
205				else
206					parent.showDrSurf("3");
207			}
208			// dhcp, static
209			else{
210				if(new_detect_dhcp_pppoe == "no-respond")
211					parent.showDrSurf("2_2");
212				else if(new_detect_dhcp_pppoe == "error")
213					parent.showDrSurf("3");
214				else
215					parent.showDrSurf("5");
216			}
217		}
218		else
219			parent.showDrSurf("0_1");
220	}
221
222	enableCheckChangedStatus();
223}
224
225function get_changed_status(flag){
226	document.titleForm.action = "/result_of_get_changed_status.asp";
227
228	if(flag == "initial")
229		document.titleForm.flag.value = flag;
230	else
231		document.titleForm.flag.value = "";
232
233	document.titleForm.submit();
234}
235
236function initial_change_status(manually_stop_wan,
237															 ifWANConnect,
238														   wan_link_str,
239														   detect_dhcp_pppoe,
240														   wan_status_log,
241														   disk_status,
242														   mount_status,
243														   printer_sn,
244														   wireless_clients,
245														   qos_ready
246														   ){
247	this.manually_stop_wan = manually_stop_wan;
248	this.old_ifWANConnect = ifWANConnect;
249	this.old_wan_link_str = wan_link_str;
250	this.old_detect_dhcp_pppoe = detect_dhcp_pppoe;
251	this.old_wan_status_log = wan_status_log;
252	this.old_printer_sn = printer_sn;
253	this.old_wireless_clients = wireless_clients;
254	this.old_qos_ready = qos_ready;
255}
256
257function set_changed_status(manually_stop_wan,
258														ifWANConnect,
259														wan_link_str,
260														detect_dhcp_pppoe,
261														wan_status_log,
262														disk_status,
263														mount_status,
264														printer_sn,
265														wireless_clients
266														){
267	this.manually_stop_wan = manually_stop_wan;
268	this.new_ifWANConnect = ifWANConnect;
269	this.new_wan_link_str = wan_link_str;
270	this.new_detect_dhcp_pppoe = detect_dhcp_pppoe;
271	this.new_new_wan_status_log = wan_status_log;
272	this.new_printer_sn = printer_sn;
273	this.new_wireless_clients = wireless_clients;
274}
275// for detect if the status of the machine is changed. }
276
277function set_Dr_work(flag){
278	if(flag != "help"){
279		$("Dr_body").onclick = function(){
280				showDrSurf();
281			};
282
283		$("Dr_body").onmouseover = function(){
284				showDrSurf();
285			};
286
287		$("Dr_body").onmouseout = function(){
288				showDrSurf();
289			};
290	}
291	else{
292		$("Dr_body").onclick = function(){
293				showDrSurf(null, "help");
294			};
295
296		$("Dr_body").onmouseover = function(){
297				showDrSurf(null, "help");
298			};
299
300		$("Dr_body").onmouseout = function(){
301				showDrSurf(null, "help");
302			};
303	}
304}
305
306var slowHide_ID_start = 0;
307var slowHide_ID_mid = 0;
308
309function clearHintTimeout(){
310	if(slowHide_ID_start != 0){
311		clearTimeout(slowHide_ID_start);
312		slowHide_ID_start = 0;
313	}
314
315	if(slowHide_ID_mid != 0){
316		clearTimeout(slowHide_ID_mid);
317		slowHide_ID_mid = 0;
318	}
319}
320
321function showHelpofDrSurf(hint_array_id, hint_show_id){
322	var seconds = this.show_hint_time_interval*1000;
323
324	if(!$("eventDescription")){
325		setTimeout('showHelpofDrSurf('+hint_array_id+', '+hint_show_id+');', 100);
326		return;
327	}
328
329	disableCheckChangedStatus();
330	clearHintTimeout();
331
332	if(typeof(hint_show_id) == "number" && hint_show_id > 0)
333		clicked_help_string = "<span>"+helptitle[hint_array_id][hint_show_id][0]+"</span><br>"+helpcontent[hint_array_id][hint_show_id];
334	$("eventDescription").innerHTML = clicked_help_string;
335
336	set_Dr_work("help");
337	$("eventLink").onclick = function(){};
338	showtext($("linkDescription"), "");
339
340	$("drsword").style.filter = "alpha(opacity=100)";
341	$("drsword").style.opacity = 1;
342	$("drsword").style.visibility = "visible";
343
344	$("wordarrow").style.filter	= "alpha(opacity=100)";
345	$("wordarrow").style.opacity = 1;
346	$("wordarrow").style.visibility = "visible";
347
348	slowHide_ID_start = setTimeout("slowHide(100);", seconds);
349}
350
351var current_eventID = null;
352var now_alert = new Array(3);
353
354var alert_event0_0 = new Array("<#DrSurf_word_connection_ok#>", "", "");
355var alert_event0_1 = new Array("<#DrSurf_word_connection_recover#>", "<#DrSurf_refresh_page#>", refreshpage);
356var alert_event0_2 = new Array("<#DrSurf_word_connection_WANport_recover#>", "<#DrSurf_refresh_page#>", refreshpage);
357var alert_event1 = new Array("<#web_redirect_reason1#>", "<#DrSurf_referto_diagnosis#>", drdiagnose);
358var alert_event2_1 = new Array("<#web_redirect_reason2_1#>", "<#DrSurf_referto_diagnosis#>", drdiagnose);
359var alert_event2_2 = new Array("<#web_redirect_reason2_2#>", "<#DrSurf_referto_diagnosis#>", drdiagnose);
360var alert_event3 = new Array("<#web_redirect_reason3_1#>", "<#DrSurf_referto_diagnosis#>", drdiagnose);
361var alert_event4 = new Array("<#web_redirect_reason4#>", "<#DrSurf_referto_diagnosis#>", drdiagnose);  //wan_gateway & lan_ipaddr;
362var alert_event5 = new Array("1. <#web_redirect_reason5_1#><br>2. <#web_redirect_reason5_2#>", "<#DrSurf_referto_diagnosis#>", drdiagnose);
363var alert_event6 = new Array("<#web_redirect_reason6#>", "<#DrSurf_referto_diagnosis#>", drdiagnose);  //wan_gateway & lan_ipaddr;
364
365var alert_event10 = new Array("<#DrSurf_Alert10#>", "<#DrSurf_referto_diagnosis#>", drdiagnose);
366var alert_event11 = new Array("<#DrSurf_Alert11#>", "<#DrSurf_referto_diagnosis#>", drdiagnose);
367var alert_event12 = new Array("<#DrSurf_Alert12#>", "<#DrSurf_referto_diagnosis#>", drdiagnose);
368var alert_event20 = new Array("<#DrSurf_Alert20#>", "<#DrSurf_referto_diagnosis#>", drdiagnose);
369var alert_event21 = new Array("<#DrSurf_Alert21#>", "<#DrSurf_referto_diagnosis#>", drdiagnose);
370var alert_event30 = new Array("<#DrSurf_Alert30#>", "<#DrSurf_referto_diagnosis#>", drdiagnose);
371var alert_event40 = new Array("<#DrSurf_Alert40#>", "<#DrSurf_referto_diagnosis#>", drdiagnose);
372
373function showDrSurf(eventID, flag){
374	var seconds = this.show_hint_time_interval*1000;
375	var temp_eventID;
376
377	// for test
378	if(this.testEventID != "")
379		eventID = this.testEventID;
380
381	if(eventID){
382		this.current_eventID = eventID;
383		temp_eventID = eventID;
384	}
385	else
386		temp_eventID = this.current_eventID;
387
388	if(!temp_eventID || temp_eventID.length <= 0){
389		id_of_check_changed_status = setTimeout("enableCheckChangedStatus();", 1000);
390		return;
391	}
392
393	disableCheckChangedStatus();
394	clearHintTimeout();
395
396	if(flag != "help"){
397		now_alert[0] = eval("alert_event"+temp_eventID+"[0]");
398		if(temp_eventID != "5")
399			showtext($("eventDescription"), now_alert[0]);
400		else if(this.manually_stop_wan == "1")
401			showtext($("eventDescription"), "<#web_redirect_reason5_1#>");
402		else
403			showtext($("eventDescription"), "<#web_redirect_reason5_2#>");
404
405		now_alert[1] = eval("alert_event"+temp_eventID+"[1]");
406		if(now_alert[1] != ""){
407			now_alert[2] = eval("alert_event"+temp_eventID+"[2]");
408
409			$("eventLink").onclick = function(){
410					now_alert[2](temp_eventID);
411				};
412
413			showtext($("linkDescription"), now_alert[1]);
414		}
415	}
416
417	$("drsword").style.filter = "alpha(opacity=100)";
418	$("drsword").style.opacity = 1;
419	$("drsword").style.visibility = "visible";
420
421	$("wordarrow").style.filter	= "alpha(opacity=100)";
422	$("wordarrow").style.opacity = 1;
423	$("wordarrow").style.visibility = "visible";
424
425	slowHide_ID_start = setTimeout("slowHide(100);", seconds);
426}
427
428function slowHide(filter){
429	clearHintTimeout();
430
431	$("drsword").style.filter = "alpha(opacity="+filter+")";
432	$("drsword").style.opacity = filter*0.01;
433	$("wordarrow").style.filter	= "alpha(opacity="+filter+")";
434	$("wordarrow").style.opacity = filter*0.01;
435
436	filter -= 5;
437	if(filter <= 0){
438		hideHint();
439
440		enableCheckChangedStatus();
441	}
442	else
443		slowHide_ID_mid = setTimeout("slowHide("+filter+");", 100);
444}
445
446function hideHint(){
447	if(this.current_eventID){
448		now_alert[0] = eval("alert_event"+this.current_eventID+"[0]");
449		showtext($("eventDescription"), now_alert[0]);
450
451		now_alert[1] = eval("alert_event"+this.current_eventID+"[1]");
452		if(now_alert[1] != ""){
453			now_alert[2] = eval("alert_event"+this.current_eventID+"[2]");
454
455			$("eventLink").onclick = function(){
456					now_alert[2](current_eventID);
457				};
458
459			showtext($("linkDescription"), now_alert[1]);
460		}
461	}
462
463	if($("drsword"))
464		$("drsword").style.visibility = "hidden";
465	if($("wordarrow"))
466		$("wordarrow").style.visibility = "hidden";
467}
468
469function drdiagnose(eventID){
470	if(!check_if_support_dr_surf()){
471		alert("Don't yet support Dr. Surf!");
472		return;
473	}
474
475	if($('statusIcon'))
476		$('statusIcon').src = "/images/iframe-iconDr.gif";
477
478	if(typeof(openHint) == "function")
479		openHint(0, 0);
480
481	showtext($('helpname'), "<#DrSurf_Diagnose_title#>");
482
483	if($("hint_body"))
484		$("hint_body").style.display = "none";
485
486	$("statusframe").style.display = "block";
487	$('statusframe').src = "/device-map/diagnose"+eventID+".asp";
488}
489// Dr. Surf }
490
491var banner_code, menu_code="", menu1_code="", menu2_code="", tab_code="", footer_code;
492
493function show_banner(L3){// L3 = The third Level of Menu
494	var banner_code = "";
495
496	// for chang language
497	banner_code +='<form method="post" name="titleForm" id="titleForm" action="" target="hidden_frame">\n';
498	banner_code +='<input type="hidden" name="current_page" value="">\n';
499	banner_code +='<input type="hidden" name="sid_list" value="LANGUAGE;">\n';
500	banner_code +='<input type="hidden" name="action_mode" value=" Apply ">\n';
501	banner_code +='<input type="hidden" name="preferred_lang" value="">\n';
502	banner_code +='<input type="hidden" name="flag" value="">\n';
503	banner_code +='</form>\n';
504
505	banner_code +='<div class="banner1" align="center"></div>\n';
506	banner_code +='<table width="983" border="0" align="center" cellpadding="0" cellspacing="0">\n';
507	banner_code +='<tr>\n';
508	banner_code +='<td class="top-logo"><a href="/"><div id="modelName"><#Web_Title#></div></a></td>\n';
509
510	banner_code +='<td class="top-message">\n';
511	banner_code +='<span class="top-messagebold"><#Time#>: </span><span class="time" id="systemtime"></span><br>\n';
512	banner_code +='<span class="top-messagebold">SSID: </span><input class="top_ssid" type="text" value="" id="elliptic_ssid" readonly=readonly><br>\n';
513	banner_code +='<span class="top-messagebold"><#General_x_FirmwareVersion_itemname#> </span><a href="/Advanced_FirmwareUpgrade_Content.asp"><span id="firmver" class="time"></span></a>\n';
514	banner_code +='</td>\n';
515
516	banner_code +='<td class="top-message"width="150">\n';
517	banner_code +='<span class="top-messagebold"><#PASS_LANG#></span><br>\n';
518
519	banner_code +='<select name="select_lang" id="select_lang" class="top-input" onchange="change_language();">\n';
520	banner_code +='<% shown_language_option(); %>';
521	banner_code +='</select>\n';
522	banner_code +='<input type="button" id="change_lang_btn" class="button" value="<#CTL_ok#>" onclick="submit_language();" style="float:right; margin:5px 10px 0 0;" disabled=disabled>\n';
523
524	banner_code +='</td>\n';
525	banner_code +='<td class="top-message" width="120">\n';
526	banner_code +='<div id="logout_btn" class="buttonquit"><a href="javascript:;" onclick="logout();"><#t1Logout#></a></div>\n';
527	banner_code +='<div id="reboto_btn" class="buttonquit"><a href="javascript:;" onclick="reboot();"><#BTN_REBOOT#></a></div>\n';
528	banner_code +='</td>\n';
529
530// Dr. Surf {
531	banner_code += '<td id="Dr_body" class="top-message" width="40">\n';
532
533	banner_code += '<div id="dr" class="dr"></div>\n';
534	banner_code += '<div id="drsword" class="drsword">\n';
535	banner_code += '<span id="eventDescription"></span>\n';
536	banner_code += '<br>\n';
537	banner_code += '<a id="eventLink" href="javascript:void(0);"><span id="linkDescription"></span></a>\n';
538	banner_code += '</div>\n';
539	banner_code += '<div id="wordarrow" class="wordarrow"><img src="/images/wordarrow.png"></div>\n';
540
541	banner_code += '&nbsp;</td>\n';
542// Dr. Surf }
543
544	banner_code +='<td width="11"><img src="images/top-03.gif" width="11" height="78" /></td>\n';
545	banner_code +='</td></tr></table>\n';
546
547	if(L3 == 0) 		// IF Without Level 3 menu, banner style will use top.gif.
548		banner_code +='<div id="banner3" align="center"><img src="images/top.gif" width="983" height="19" /></div>\n';
549	else
550		banner_code +='<div id="banner3" align="center"><img src="images/top-advance.gif" width="983" height="19" /></div>\n';
551
552	$("TopBanner").innerHTML = banner_code;
553
554	show_loading_obj();
555
556	if(location.pathname == "/" || location.pathname == "/index.asp"){
557		if(wan_route_x != "IP_Bridged")
558			id_of_check_changed_status = setTimeout('hideLoading();', 3000);
559	}
560	else{
561		id_of_check_changed_status = setTimeout('hideLoading();', 1);
562	}
563
564	show_time();
565	show_top_status();
566	set_Dr_work();
567}
568
569//Level 3 Menu in Gateway mode
570var tabtitle = new Array(6);   // Use a 2-dimension Array to arrange tab title
571tabtitle[0] = new Array("", "<#menu5_1_1#>", "<#menu5_1_2#>", "<#menu5_1_3#>", "<#menu5_1_4#>", "<#menu5_1_5#>", "<#menu5_1_6#>");  //[x][0]為保留欄位
572tabtitle[1] = new Array("", "<#menu5_2_1#>", "<#menu5_2_2#>", "<#menu5_2_3#>");
573if(HSDPA_ENABLE == 1)
574	tabtitle[2] = new Array("", "<#menu5_3_1#>", "<#menu5_3_2#>", "<#menu5_3_3#>", "<#menu5_3_4#>", "<#menu5_3_5#>", "<#menu5_3_6#>", "<#menu5_4_4#>");
575else
576	tabtitle[2] = new Array("", "<#menu5_3_1#>", "<#menu5_3_2#>", "<#menu5_3_3#>", "<#menu5_3_4#>", "<#menu5_3_5#>", "<#menu5_3_6#>");
577tabtitle[3] = new Array("", "<#menu5_5_1#>", "<#menu5_5_2#>", "<#menu5_5_3#>", "<#menu5_5_4#>");
578tabtitle[4] = new Array("", "<#menu5_6_1#>", "<#menu5_6_2#>", "<#menu5_6_3#>", "<#menu5_6_4#>");
579tabtitle[5] = new Array("", "<#menu5_7_2#>", "<#menu5_7_3#>", "<#menu5_7_4#>", "<#menu5_7_5#>", "<#menu5_7_6#>");
580var tablink = new Array(6);   // Use a 2-dimension Array to arrange tab link
581tablink[0] = new Array("", "Advanced_Wireless_Content.asp", "Advanced_WWPS_Content.asp", "Advanced_WMode_Content.asp", "Advanced_ACL_Content.asp", "Advanced_WSecurity_Content.asp", "Advanced_WAdvanced_Content.asp");
582tablink[1] = new Array("", "Advanced_LAN_Content.asp", "Advanced_DHCP_Content.asp", "Advanced_GWStaticRoute_Content.asp");
583if(HSDPA_ENABLE == 1)
584	tablink[2] = new Array("", "Advanced_WAN_Content.asp", "Advanced_QOSUserSpec_Content.asp", "Advanced_PortTrigger_Content.asp", "Advanced_VirtualServer_Content.asp", "Advanced_Exposed_Content.asp", "Advanced_ASUSDDNS_Content.asp", "Advanced_HSDPAConfig_Content.asp");
585else
586	tablink[2] = new Array("", "Advanced_WAN_Content.asp", "Advanced_QOSUserSpec_Content.asp", "Advanced_PortTrigger_Content.asp", "Advanced_VirtualServer_Content.asp", "Advanced_Exposed_Content.asp", "Advanced_ASUSDDNS_Content.asp");
587tablink[3] = new Array("", "Advanced_BasicFirewall_Content.asp", "Advanced_URLFilter_Content.asp", "Advanced_MACFilter_Content.asp", "Advanced_Firewall_Content.asp");
588tablink[4] = new Array("", "Advanced_OperationMode_Content.asp", "Advanced_System_Content.asp", "Advanced_FirmwareUpgrade_Content.asp", "Advanced_SettingBackup_Content.asp");
589tablink[5] = new Array("", "Main_LogStatus_Content.asp", "Main_DHCPStatus_Content.asp", "Main_WStatus_Content.asp", "Main_IPTStatus_Content.asp", "Main_RouteStatus_Content.asp");
590
591//Level 3 Tab Menu in Router mode
592var tabtitle_Router = new Array(6);   // Use a 2-dimension Array to arrange tab title
593tabtitle_Router[0] = new Array("", "<#menu5_1_1#>", "<#menu5_1_2#>", "<#menu5_1_3#>", "<#menu5_1_4#>", "<#menu5_1_5#>", "<#menu5_1_6#>");  //[x][0]為保留欄位
594tabtitle_Router[1] = new Array("", "<#menu5_2_1#>", "<#menu5_2_2#>", "<#menu5_2_3#>");
595if(HSDPA_ENABLE == 1)
596	tabtitle_Router[2] = new Array("", "<#menu5_3_1#>", "<#menu5_3_2#>", "", "", "", "<#menu5_3_6#>", "<#menu5_4_4#>");
597else
598	tabtitle_Router[2] = new Array("", "<#menu5_3_1#>", "<#menu5_3_2#>", "", "", "", "<#menu5_3_6#>");
599tabtitle_Router[3] = new Array("", "<#menu5_5_1#>", "<#menu5_5_2#>", "<#menu5_5_3#>", "<#menu5_5_4#>");
600tabtitle_Router[4] = new Array("", "<#menu5_6_1#>", "<#menu5_6_2#>", "<#menu5_6_3#>", "<#menu5_6_4#>");
601tabtitle_Router[5] = new Array("", "<#menu5_7_2#>", "<#menu5_7_3#>", "<#menu5_7_4#>", "", "<#menu5_7_6#>");
602var tablink_Router = new Array(6);   // Use a 2-dimension Array to arrange tab link
603tablink_Router[0] = new Array("", "Advanced_Wireless_Content.asp", "Advanced_WWPS_Content.asp", "Advanced_WMode_Content.asp", "Advanced_ACL_Content.asp", "Advanced_WSecurity_Content.asp", "Advanced_WAdvanced_Content.asp");
604tablink_Router[1] = new Array("", "Advanced_LAN_Content.asp", "Advanced_DHCP_Content.asp", "Advanced_GWStaticRoute_Content.asp");
605if(HSDPA_ENABLE == 1)
606	tablink_Router[2] = new Array("", "Advanced_WAN_Content.asp", "Advanced_QOSUserSpec_Content.asp", "", "", "", "Advanced_ASUSDDNS_Content.asp", "Advanced_HSDPAConfig_Content.asp");
607else
608	tablink_Router[2] = new Array("", "Advanced_WAN_Content.asp", "Advanced_QOSUserSpec_Content.asp", "", "", "", "Advanced_ASUSDDNS_Content.asp");
609tablink_Router[3] = new Array("", "Advanced_BasicFirewall_Content.asp", "Advanced_URLFilter_Content.asp", "Advanced_MACFilter_Content.asp", "Advanced_Firewall_Content.asp");
610tablink_Router[4] = new Array("", "Advanced_OperationMode_Content.asp", "Advanced_System_Content.asp", "Advanced_FirmwareUpgrade_Content.asp", "Advanced_SettingBackup_Content.asp");
611tablink_Router[5] = new Array("", "Main_LogStatus_Content.asp", "Main_DHCPStatus_Content.asp", "Main_WStatus_Content.asp", "", "Main_RouteStatus_Content.asp");
612
613//Level 3 Tab Menu in AP mode
614var tabtitle_AP = new Array(4);
615tabtitle_AP[0] = new Array("", "<#menu5_1_1#>", "<#menu5_1_2#>", "<#menu5_1_3#>", "<#menu5_1_4#>", "<#menu5_1_5#>", "<#menu5_1_6#>");  //[x][0]為保留欄位
616tabtitle_AP[1] = new Array("", "<#menu5_2_1#>");
617tabtitle_AP[2] = new Array("", "<#menu5_6_1#>", "<#menu5_6_2#>", "<#menu5_6_3#>", "<#menu5_6_4#>");
618tabtitle_AP[3] = new Array("", "<#menu5_7_2#>", "", "<#menu5_7_4#>", "", "");
619var tablink_AP = new Array(4);   // Use a 2-dimension Array to arrange tab link
620tablink_AP[0] = new Array("", "Advanced_Wireless_Content.asp", "Advanced_WWPS_Content.asp", "Advanced_WMode_Content.asp", "Advanced_ACL_Content.asp", "Advanced_WSecurity_Content.asp", "Advanced_WAdvanced_Content.asp");
621tablink_AP[1] = new Array("", "Advanced_APLAN_Content.asp");
622tablink_AP[2] = new Array("", "Advanced_OperationMode_Content.asp", "Advanced_System_Content.asp", "Advanced_FirmwareUpgrade_Content.asp", "Advanced_SettingBackup_Content.asp");
623tablink_AP[3] = new Array("", "Main_LogStatus_Content.asp", "", "Main_WStatus_Content.asp", "", "");
624
625//Level 1 Menu in Gateway, Router mode
626menuL1_title = new Array("", "<#menu1#>", "", "", "<#menu4#>", "<#menu5#>");
627menuL1_link = new Array("", "index.asp","", "", "EZQoS.asp", "as.asp");
628
629//Level 1 Menu in AP mode
630menuL1_title_AP = new Array("", "<#menu1#>", "", "", "", "<#menu5#>");
631menuL1_link_AP = new Array("", "index.asp", "", "", "", "as.asp");
632
633//Level 2 Menu in Gateway, Router mode, default link is 1st option in tab
634menuL2_title = new Array("", "<#menu5_1#>", "<#menu5_2#>", "<#menu5_3#>", "<#menu5_5#>", "<#menu5_6#>", "<#menu5_7#>");
635menuL2_link = new Array("", tablink[0][1], tablink[1][1], tablink[2][1], tablink[3][1], tablink[4][1], tablink[5][1]);	//指定第二層選單的預設連結為各類別的第一個選項
636
637//Level 2 Menu in AP mode, default link is 1st option in tab
638menuL2_title_AP = new Array("", "<#menu5_1#>", "<#menu5_2#>", "<#menu5_6#>", "<#menu5_7#>");
639menuL2_link_AP = new Array("", tablink_AP[0][1], tablink_AP[1][1], tablink_AP[2][1], tablink_AP[3][1]);
640
641function show_menu(L1, L2, L3){
642	if(wan_route_x == "IP_Routed" && wan_nat_x == "0"){
643		tabtitle = tabtitle_Router;
644		tablink = tablink_Router;
645	}
646	else if(wan_route_x == "IP_Bridged"){
647		tabtitle = tabtitle_AP;
648		tablink = tablink_AP;
649		menuL1_title = menuL1_title_AP;
650		menuL1_link = menuL1_link_AP;
651		menuL2_title = menuL2_title_AP;
652		menuL2_link = menuL2_link_AP;
653	}
654
655	for(i = 1; i <= menuL1_title.length-1; i++){
656		if(menuL1_title[i] == "")
657			continue;
658		else if(L1 == i && L2 <= 0)
659		  menu1_code += '<div class="m'+i+'_r" id="option'+i+'">'+menuL1_title[i]+'</div>\n';
660		else
661		  menu1_code += '<div class="menu" id="option'+i+'"><a href="'+menuL1_link[i]+'" title="'+menuL1_link[i]+'">'+menuL1_title[i]+'</a></div>\n';
662	}
663
664	$("mainMenu").innerHTML = menu1_code;
665
666	if(L2 != -1){	// 先以L2判斷該頁是否為有子選單, -1表示沒有子選單,0表示有子選單但沒有任何被選擇的選項。 1~7依序為第二層選項
667		for(var i = 1; i <= menuL2_title.length-1; ++i){
668			if(menuL2_title[i] == "")
669				continue;
670			else if(L2 == i)	// 指定被選擇選項的Class style
671				menu2_code += '<div class="thissubmenu">'+menuL2_title[i]+'</div>\n';
672			else	// 指定非被選擇選項的Class style,以及連結的網址
673				menu2_code += '<div class="submenu"><a href="'+menuL2_link[i]+'">'+menuL2_title[i]+'</a></div>\n';
674		}
675	}
676	menu2_code += '<div><img src="images/m-button-07end.gif" width="187" height="47" /></div>\n';	//裝飾線
677
678	$("subMenu").innerHTML = menu2_code;
679
680	if(L3){
681		tab_code = '<table border="0" cellspacing="0" cellpadding="0"><tr>\n';
682		for(var i = 1; i < tabtitle[L2-1].length; ++i){
683			if(tabtitle[L2-1][i] == "")
684				continue;
685			else if(L3 == i)
686				tab_code += '<td class=\"b1\">'+ tabtitle[L2-1][i] +'</td>\n';
687			else
688				tab_code += '<td class=\"b2\"><a href="' +tablink[L2-1][i]+ '">'+ tabtitle[L2-1][i] +'</a></td>\n';
689		}
690		tab_code += '</tr></table>\n';
691
692		$("tabMenu").innerHTML = tab_code;
693	}
694	else
695		$("tabMenu").innerHTML = "";//*/
696}
697
698function show_footer(){
699	footer_code = '<div align="center" class="bottom-image"></div>\n';
700	footer_code +='<div align="center" class="copyright"><#footer_copyright_desc#></div>\n';
701
702	$("footer").innerHTML = footer_code;
703
704	if($("helpname"))
705		showtext($("helpname"), "<#CTL_help#>");
706	if($("hint_body"))
707		showtext($("hint_body"), "<#Help_init_word1#> <a class=\"hintstyle\" style=\"background-color:#7aa3bd\"><#Help_init_word2#></a> <#Help_init_word3#>");
708	flash_button();
709}
710
711var ssid2 = "";
712function show_top_status(){
713	// show SSID in the top-middle block
714	ssid2 = decodeURIComponent(document.form.wl_ssid2.value);
715
716	if(ssid2.length > 21){
717		ssid2 = ssid2.substring(0,20) + "...";
718		$("elliptic_ssid").title = decodeURIComponent(document.form.wl_ssid2.value);
719	}
720
721	$("elliptic_ssid").value = ssid2;
722	showtext($("firmver"), document.form.firmver.value);
723}
724
725function show_time(){
726	JS_timeObj.setTime(systime_millsec); // Add millsec to it.
727	JS_timeObj3 = JS_timeObj.toString();
728	JS_timeObj3 = checkTime(JS_timeObj.getHours()) + ":" +
729				  			checkTime(JS_timeObj.getMinutes()) + ":" +
730				  			checkTime(JS_timeObj.getSeconds());
731	$('systemtime').innerHTML ="<a href='/Advanced_System_Content.asp'>" + JS_timeObj3 + "</a>";
732	systime_millsec += 1000;
733
734	stime_ID = setTimeout("show_time();", 1000);
735}
736
737function checkTime(i)
738{
739if (i<10)
740  {i="0" + i}
741  return i
742}
743
744function show_loading_obj(){
745	var obj = $("Loading");
746	var code = "";
747
748	code +='<table cellpadding="5" cellspacing="0" id="loadingBlock" class="loadingBlock" align="center">\n';
749	code +='<tr>\n';
750	code +='<td width="20%" height="80" align="center"><img src="/images/loading.gif"></td>\n';
751	code +='<td><span id="proceeding_main_txt"><#Main_alert_proceeding_desc4#></span><span id="proceeding_txt" style="color:#FFFFCC;"></span></td>\n';
752	code +='</tr>\n';
753	code +='</table>\n';
754	code +='<!--[if lte IE 6.5]><iframe class="hackiframe"></iframe><![endif]-->\n';
755
756	obj.innerHTML = code;
757}
758
759var nav;
760
761if(navigator.appName == 'Netscape')
762	nav = true;
763else{
764	nav = false;
765	document.onkeydown = MicrosoftEventHandler_KeyDown;
766}
767
768function MicrosoftEventHandler_KeyDown(){
769	return true;
770}
771
772function submit_language(){
773	if($("select_lang").value != $("preferred_lang").value){
774		showLoading();
775
776		with(document.titleForm){
777			action = "/start_apply.htm";
778
779			current_page.value = location.pathname;
780
781			preferred_lang.value = $("select_lang").value;
782			flag.value = "set_language";
783
784			submit();
785		}
786	}
787	else
788		alert("No change LANGUAGE!");
789}
790
791function change_language(){
792	if($("select_lang").value != $("preferred_lang").value)
793		$("change_lang_btn").disabled = false;
794	else
795		$("change_lang_btn").disabled = true;
796}
797
798function logout(){
799	if(confirm('<#JS_logout#>')){
800		setTimeout('location = "Logout.asp";', 1);
801	}
802}
803
804function reboot(){
805	if(confirm("<#Main_content_Login_Item7#>")){
806		showLoading(35);
807		setTimeout("location.href = '/';", 35000);
808		$("hidden_frame").src = "Reboot.asp";
809	}
810}
811
812function kb_to_gb(kilobytes){
813	if(typeof(kilobytes) == "string" && kilobytes.length == 0)
814		return 0;
815
816	return (kilobytes*1024)/(1024*1024*1024);
817}
818
819function simpleNum(num){
820	if(typeof(num) == "string" && num.length == 0)
821		return 0;
822
823	return parseInt(kb_to_gb(num)*1000)/1000;
824}
825
826function simpleNum2(num){
827	if(typeof(num) == "string" && num.length == 0)
828		return 0;
829
830	return parseInt(num*1000)/1000;
831}
832
833function simpleNum3(num){
834	if(typeof(num) == "string" && num.length == 0)
835		return 0;
836
837	return parseInt(num)/1024;
838}
839
840function $(){
841	var elements = new Array();
842
843	for(var i = 0; i < arguments.length; ++i){
844		var element = arguments[i];
845	if(typeof element == 'string')
846		element = document.getElementById(element);
847
848		if(arguments.length == 1)
849			return element;
850
851		elements.push(element);
852	}
853
854	return elements;
855}
856
857function getElementsByName_iefix(tag, name){
858	var tagObjs = document.getElementsByTagName(tag);
859	var objsName;
860	var targetObjs = new Array();
861	var targetObjs_length;
862
863	if(!(typeof(name) == "string" && name.length > 0))
864		return [];
865
866	for(var i = 0, targetObjs_length = 0; i < tagObjs.length; ++i){
867		objsName = tagObjs[i].getAttribute("name");
868
869		if(objsName && objsName.indexOf(name) == 0){
870			targetObjs[targetObjs_length] = tagObjs[i];
871			++targetObjs_length;
872		}
873	}
874
875	return targetObjs;
876}
877
878function getElementsByClassName_iefix(tag, name){
879	var tagObjs = document.getElementsByTagName(tag);
880	var objsName;
881	var targetObjs = new Array();
882	var targetObjs_length;
883
884	if(!(typeof(name) == "string" && name.length > 0))
885		return [];
886
887	for(var i = 0, targetObjs_length = 0; i < tagObjs.length; ++i){
888		if(navigator.appName == 'Netscape')
889			objsName = tagObjs[i].getAttribute("class");
890		else
891			objsName = tagObjs[i].getAttribute("className");
892
893		if(objsName == name){
894			targetObjs[targetObjs_length] = tagObjs[i];
895			++targetObjs_length;
896		}
897	}
898
899	return targetObjs;
900}
901
902function showtext(obj, str){
903	/*if(!obj)
904		return ;
905
906	if(obj.hasChildNodes() && obj.lastChild.nodeName == "#text")
907		obj.lastChild.nodeValue = str;
908	else
909		obj.appendChild(document.createTextNode(str));//*/
910	if(obj)
911		obj.innerHTML = str;//*/
912}
913
914function showhtmlspace(ori_str){
915	var str = "", head, tail_num;
916
917	head = ori_str;
918	while((tail_num = head.indexOf(" ")) >= 0){
919		str += head.substring(0, tail_num);
920		str += "&nbsp;";
921
922		head = head.substr(tail_num+1, head.length-(tail_num+1));
923	}
924	str += head;
925
926	return str;
927}
928
929// A dummy function which just returns its argument. This was needed for localization purpose
930function translate(str){
931	return str;
932}
933
934function trim(val){
935	val = val+'';
936	for (var startIndex=0;startIndex<val.length && val.substring(startIndex,startIndex+1) == ' ';startIndex++);
937	for (var endIndex=val.length-1; endIndex>startIndex && val.substring(endIndex,endIndex+1) == ' ';endIndex--);
938	return val.substring(startIndex,endIndex+1);
939}
940
941function IEKey(){
942	return event.keyCode;
943}
944
945function NSKey(){
946	return 0;
947}
948
949function is_string(o){
950	if(!nav)
951		keyPressed = IEKey();
952	else
953		keyPressed = NSKey();
954
955	if(keyPressed == 0)
956		return true;
957	else if(keyPressed >= 0 && keyPressed <= 126)
958		return true;
959
960	alert('<#JS_validchar#>');
961	return false;
962}
963
964function validate_string(string_obj, flag){
965	if(string_obj.value.charAt(0) == '"'){
966		if(flag != "noalert")
967			alert('<#JS_validstr1#> ["]');
968
969		string_obj.value = "";
970		string_obj.focus();
971
972		return false;
973	}
974	else{
975		invalid_char = "";
976
977		for(var i = 0; i < string_obj.value.length; ++i){
978			if(string_obj.value.charAt(i) < ' ' || string_obj.value.charAt(i) > '~'){
979				invalid_char = invalid_char+string_obj.value.charAt(i);
980			}
981		}
982
983		if(invalid_char != ""){
984			if(flag != "noalert")
985				alert("<#JS_validstr2#> '"+invalid_char+"' !");
986			string_obj.value = "";
987			string_obj.focus();
988
989			return false;
990		}
991	}
992
993	return true;
994}
995
996function validate_hex(obj){
997	var obj_value = obj.value
998	var re = new RegExp("[^a-fA-F0-9]+","gi");
999
1000	if(re.test(obj_value))
1001		return false;
1002	else
1003		return true;
1004}
1005
1006function validate_psk(psk_obj){
1007	var psk_length = psk_obj.value.length;
1008
1009	if(psk_length < 8){
1010		alert("<#JS_passzero#>");
1011		psk_obj.value = "00000000";
1012		psk_obj.focus();
1013		psk_obj.select();
1014
1015		return false;
1016	}
1017
1018	if(psk_length > 64){
1019		alert("<#JS_PSK64Hex#>");
1020		psk_obj.value = psk_obj.value.substring(0, 64);
1021		psk_obj.focus();
1022		psk_obj.select();
1023
1024		return false;
1025	}
1026
1027	if(psk_length >= 8 && psk_length <= 63 && !validate_string(psk_obj)){
1028		alert("<#JS_PSK64Hex#>");
1029		psk_obj.value = "00000000";
1030		psk_obj.focus();
1031		psk_obj.select();
1032
1033		return false;
1034	}
1035
1036	if(psk_length == 64 && !validate_hex(psk_obj)){
1037		alert("<#JS_PSK64Hex#>");
1038		psk_obj.value = "00000000";
1039		psk_obj.focus();
1040		psk_obj.select();
1041
1042		return false;
1043	}
1044
1045	return true;
1046}
1047
1048function validate_wlkey(key_obj){
1049	var wep_type = document.form.wl_wep_x.value;
1050	var iscurrect = true;
1051	var str = "<#JS_wepkey#>";
1052
1053	if(wep_type == "0")
1054		iscurrect = true;	// do nothing
1055	else if(wep_type == "1"){
1056		if(key_obj.value.length == 5 && validate_string(key_obj))
1057			iscurrect = true;
1058		else if(key_obj.value.length == 10 && validate_hex(key_obj))
1059			iscurrect = true;
1060		else{
1061			str += "(<#WLANConfig11b_WEPKey_itemtype1#>)";
1062
1063			iscurrect = false;
1064		}
1065	}
1066	else if(wep_type == "2"){
1067		if(key_obj.value.length == 13 && validate_string(key_obj))
1068			iscurrect = true;
1069		else if(key_obj.value.length == 26 && validate_hex(key_obj))
1070			iscurrect = true;
1071		else{
1072			str += "(<#WLANConfig11b_WEPKey_itemtype2#>)";
1073
1074			iscurrect = false;
1075		}
1076	}
1077	else{
1078		alert("System error!");
1079		iscurrect = false;
1080	}
1081
1082	if(iscurrect == false){
1083		alert(str);
1084
1085		key_obj.focus();
1086		key_obj.select();
1087	}
1088
1089	return iscurrect;
1090}
1091
1092function checkDuplicateName(newname, targetArray){
1093	var existing_string = targetArray.join(',');
1094	existing_string = ","+existing_string+",";
1095	var newstr = ","+trim(newname)+",";
1096
1097	var re = new RegExp(newstr, "gi");
1098	var matchArray = existing_string.match(re);
1099
1100	if(matchArray != null)
1101		return true;
1102	else
1103		return false;
1104}
1105
1106function alert_error_msg(error_msg){
1107	alert(error_msg);
1108	refreshpage();
1109}
1110
1111function refreshpage(seconds){
1112	if(typeof(seconds) == "number")
1113		setTimeout("refreshpage()", seconds*1000);
1114	else
1115		location.href = location.href;
1116}
1117
1118function hideLinkTag(){
1119	if(document.all){
1120		var tagObjs = document.all.tags("a");
1121
1122		for(var i = 0; i < tagObjs.length; ++i)
1123			tagObjs(i).outerHTML = tagObjs(i).outerHTML.replace(">"," hidefocus=true>");
1124	}
1125}
1126
1127function buttonOver(o){	//Lockchou 1206 modified
1128	o.style.color = "#FFFFFF";
1129	o.style.background = "url(/images/bgaibutton.gif) #ACCCE1";
1130	o.style.cursor = "hand";
1131}
1132
1133function buttonOut(o){	//Lockchou 1206 modified
1134	o.style.color = "#000000";
1135	o.style.background = "url(/images/bgaibutton0.gif) #ACCCE1";
1136}
1137
1138function flash_button(){
1139	if(navigator.appName.indexOf("Microsoft") < 0)
1140		return;
1141
1142	var btnObj = getElementsByClassName_iefix("input", "button");
1143
1144	for(var i = 0; i < btnObj.length; ++i){
1145		btnObj[i].onmouseover = function(){
1146				buttonOver(this);
1147			};
1148
1149		btnObj[i].onmouseout = function(){
1150				buttonOut(this);
1151			};
1152	}
1153}
1154
1155function no_flash_button(){
1156	if(navigator.appName.indexOf("Microsoft") < 0)
1157		return;
1158
1159	var btnObj = getElementsByClassName_iefix("input", "button");
1160
1161	for(var i = 0; i < btnObj.length; ++i){
1162		btnObj[i].onmouseover = "";
1163
1164		btnObj[i].onmouseout = "";
1165	}
1166}
1167
1168function gotoprev(formObj){
1169	var prev_page = formObj.prev_page.value;
1170
1171	if(prev_page == "/")
1172		prev_page = "/";
1173
1174	if(prev_page.indexOf('QIS') < 0){
1175		formObj.action = prev_page;
1176		formObj.target = "_parent";
1177		formObj.submit();
1178	}
1179	else{
1180		formObj.action = prev_page;
1181		formObj.target = "";
1182		formObj.submit();
1183	}
1184}
1185
1186function add_option(selectObj, str, value, selected){
1187	var tail = selectObj.options.length;
1188
1189	if(typeof(str) != "undefined")
1190		selectObj.options[tail] = new Option(str);
1191	else
1192		selectObj.options[tail] = new Option();
1193
1194	if(typeof(value) != "undefined")
1195		selectObj.options[tail].value = value;
1196	else
1197		selectObj.options[tail].value = "";
1198
1199	if(selected == 1)
1200		selectObj.options[tail].selected = selected;
1201}
1202
1203function free_options(selectObj){
1204	if(selectObj == null)
1205		return;
1206
1207	for(var i = selectObj.options.length-1; i >= 0; --i){
1208		selectObj.options[i].value = null;
1209		selectObj.options[i] = null;
1210	}
1211}
1212
1213function blocking(obj_id, show){
1214	var state = show?'block':'none';
1215
1216	if(document.getElementById)
1217		$(obj_id).style.display = state;
1218	else if(document.layers)
1219		document.layers[obj_id].display = state;
1220	else if(document.all)
1221		document.all[obj_id].style.display = state;
1222}
1223
1224function inputCtrl(obj, flag){
1225	if(flag == 0){
1226		obj.disabled = true;
1227		obj.style.backgroundColor = "#CCCCCC";
1228		if(obj.type == "radio" || obj.type == "checkbox")
1229			obj.style.backgroundColor = "#C0DAE4";
1230	}
1231	else{
1232		obj.disabled = false;
1233		obj.style.backgroundColor = "#FFF";
1234		if(obj.type == "radio" || obj.type == "checkbox")
1235			obj.style.backgroundColor = "#C0DAE4";
1236	}
1237}
1238