// -*- mode:c -*- var enable_chat; var chat_window; var chat_input_box; var chat_input_sect; var chat_name_box; var chat_name_sect; var chat_show_name_sect; var chat_name = ""; var chat_last_text = ""; var chat_initial_name; var chat_run = true; var enable_dbg_popup = 0; var last_dbg_msecs = 0; function dbg (str) { try { if (console && console.log) { console.log (str + "\n"); } } catch (e) { } var d = document.getElementById ("dbg_output"); if (enable_dbg_popup && d) { d.style.visibility = 'hidden'; d.style.position = 'absolute'; d.style.zIndex = 10000; d.style.left = '400px'; d.style.top = '0px'; d.style.height = '150px'; d.style.width = '200px'; if (false) { d.style.height = '350px'; d.style.width = '350px'; } d.style.background = '#ddd'; d.style.padding = '1em'; d.style.border = '2px solid red'; d.innerHTML = d.innerHTML + str + "
\n"; d.style.visibility = 'visible'; d.style.display = 'block'; d.style.overflow = 'auto'; } } var msecs_start = 0; function get_msecs () { var now = new Date().getTime(); if (! msecs_start) { msecs_start = now - 1; } return (now - msecs_start); } function dump_obj (obj) { var name; dbg ("dump_obj(" + obj + ")"); for (name in obj) { if (obj.hasOwnProperty (name)) { dbg (name + " = " + obj[name]); } } } function get_event_elt (ev) { var elt; if (! ev) { ev = window.event; } if (! (elt = ev.target)) { elt = ev.srcElement; } return (elt); } function my_addevent (event_name, elt, fun) { if (elt.addEventListener) { elt.addEventListener (event_name, fun, false); } else { elt.attachEvent ("on" + event_name, fun); } } function getx (elt) { var val = 0; var e; if (elt.offsetParent) { for (e = elt; e; e = e.offsetParent) { val += e.offsetLeft; } } else if (elt.x) { val += elt.x; } return (val); } function gety (elt) { var e; var val = 0; if (elt.offsetParent) { for (e = elt; e; e = e.offsetParent) { val += e.offsetTop; } } else if (elt.y) { val += elt.y; } return (val); } var urchin; if (!urchin) { urchin = {}; } var trackers = []; function do_new_urchin () { if (typeof urchin.script == "undefined") { urchin.script = document.createElement ("script"); document.body.appendChild (urchin.script); if (document.location.protocol == "https:") { urchin.script.src = "https://ssl.google-analytics.com/ga.js"; } else { urchin.script.src = "http://www.google-analytics.com/ga.js"; } } if (! window._gat) { window.setTimeout ('do_new_urchin()', 100); return; } var have_ref = 0; if (location.search.substring (0, 6) == "?_ref=") { have_ref = 1; } t = _gat._getTracker ("UA-231924-7"); trackers.push (t); if (window.analytics_code) { t = _gat._getTracker (window.analytics_code); trackers.push (t); } len = trackers.length; for (i = 0; i < len; i++) { t = trackers[i]; if (have_ref) { t._setCampNameKey ("_ref"); } t._trackPageview (); } } var pageTracker = { _trackPageview: function (val) { var len, i; len = trackers.length; for (i = 0; i < len; i++) { trackers[i]._trackPageview (val); } } } function in_class (elt, classname) { if (elt) { var classes = elt.className; if (! classes) { return (false); } if (classes == classname) { return (true); } var c = classes.split (/\s+/); for (var i = 0; i < c.length; i++) { if (c[i] == classname) { return (true); } } } return (false); } function trap_exit () { return ("You have unsaved changes on this page." + " If you want to keep your changes," + " dismiss this dialog box, then click Save."); } function trap_save_click () { window.onbeforeunload = null; } function highlight_save_buttons () { window.onbeforeunload = trap_exit; var buttons = document.getElementsByTagName ("input"); for (var i = 0; i < buttons.length; i++) { var b = buttons[i]; if (in_class (b, "btn-save")) { b.setAttribute ("src", "btn-save-highlighted.gif"); } } } /* ================================================================ */ var active_edit_marker = null; var force_edit_markers_on = false; function edit_marker_mouseover (ev) { var wrapper = get_event_elt (ev); while (wrapper && ! in_class (wrapper, "editable")) { wrapper = wrapper.parentNode; } if (! wrapper) { return; } var elts = wrapper.childNodes; for (var i = 0; i < elts.length; i++) { var elt = elts[i]; if (in_class (elt, "edit_marker")) { if (active_edit_marker && ! force_edit_markers_on) { active_edit_marker.style.display = "none"; } elt.style.position = "absolute"; elt.style.display = "block"; elt.style.zIndex = 10000; active_edit_marker = elt; break; } } } function edit_marker_mouseout (ev) { if (active_edit_marker && ! force_edit_markers_on) { active_edit_marker.style.display = "none"; active_edit_marker = null; } } function show_edit_markers () { force_edit_markers_on = (force_edit_markers_on ? false : true); var elts = document.getElementsByTagName ('a'); for (var i = 0; i < elts.length; i++) { var elt = elts[i]; if (in_class (elt, "edit_marker")) { if (force_edit_markers_on) { elt.style.position = "absolute"; elt.style.display = "block"; } else { if (! in_class(elt,"edit_marker_controller")){ elt.style.display = "none"; } } } } } function edit_marker_init () { var elt; var elts = document.getElementsByTagName ('div'); for (var i = 0; i < elts.length; i++) { elt = elts[i]; if (in_class (elt, "editable")) { my_addevent ("mouseover", elt, edit_marker_mouseover); my_addevent ("mouseout", elt, edit_marker_mouseout); } } } /* ================================================================ */ var nav_hang = null; var nav_hang_msecs; var nav_hang_save_left; var nav_hang_save_zIndex; var nav_active_li; var nav_active_ul; var nav_active_restore_flag = 0; var nav_active_restore_val; function nav_hang_restore () { if (nav_hang) { nav_hang.style.left = nav_hang_save_left; nav_hang.style.zIndex = nav_hang_save_zIndex; nav_hang = null; if (nav_active_restore_flag) { nav_active_restore_flag = 0; nav_active_ul.style.left = nav_active_restore_val; } } } function nav_hang_mouseover (ev) { var main_item = get_event_elt (ev); while (main_item && ! in_class (main_item, "nav-main-item")) { main_item = main_item.parentNode; } if (main_item) { var ul = (main_item.getElementsByTagName ('ul'))[0]; if (ul) { nav_hang_restore (); nav_hang = ul; nav_hang_msecs = get_msecs (); nav_hang_save_left = ul.style.left; nav_hang_save_zIndex = ul.style.zIndex; ul.style.left = 0; ul.style.zIndex = 20; if (nav_active_ul && nav_active_ul != ul) { nav_active_restore_flag = 1; nav_active_restore_val = nav_active_ul.style.top; nav_active_ul.style.left = '-1000px'; } } } } function nav_hang_init () { var elts = document.getElementsByTagName ('li'); for (var i = 0; i < elts.length; i++) { var elt = elts[i]; if (in_class (elt, "nav-main-item")) { my_addevent ("mouseover", elt, nav_hang_mouseover); } } nav_active_li = document.getElementById ("active"); if (nav_active_li) { nav_active_ul = nav_active_li.getElementsByTagName ("ul")[0]; } } /* ================================================================ */ function save_button_init () { var elt, elts, i; elts = document.getElementsByTagName ('input'); for (i = 0; i < elts.length; i++) { elt = elts[i]; if (in_class (elt, "save_watch")) { my_addevent ("change", elt, highlight_save_buttons); } } elts = document.getElementsByTagName ('select'); for (i = 0; i < elts.length; i++) { elt = elts[i]; if (in_class (elt, "save_watch")) { my_addevent ("change", elt, highlight_save_buttons); } } elts = document.getElementsByTagName ('textarea'); for (i = 0; i < elts.length; i++) { elt = elts[i]; if (in_class (elt, "save_watch")) { my_addevent ("change", elt, highlight_save_buttons); } } elts = document.getElementsByTagName ("form"); for (i = 0; i < elts.length; i++) { elt = elts[i]; my_addevent ("submit", elt, trap_save_click); } var buttons = document.getElementsByTagName ("input"); for (i = 0; i < buttons.length; i++) { var b = buttons[i]; if (in_class (b, "btn-save")) { my_addevent ("click", b, trap_save_click); } } } /* ================================================================ */ function mkaction_change_sublist () { var sel, subset_id, v, vid, o; if (! (sel = document.getElementById ("select_for_subset_id"))) { return; } subset_id = sel.value; if (! (v = document.getElementById ("view_for_js"))) { return; } vid = "views_for_" + subset_id; if (! (o = document.getElementById (vid))) { return; } v.innerHTML = o.innerHTML; } /* ================================================================ */ function search_bar_select (x) { var sel; if (! (sel = document.getElementById ("search_bar_sel"))) { return; } if (sel.value == 8) { document.location = "search.php"; } if (sel.value == 9) { document.location = "search.php?config=1"; } } /* ================================================================ */ var center_x, center_y; function get_view_center () { if (window.innerWidth) { /* all but IE */ center_x = window.pageXOffset + window.innerWidth / 2; center_y = window.pageYOffset + window.innerHeight / 2; } else { center_x = document.documentElement.scrollLeft + document.documentElement.clientWidth / 2; center_y = document.documentElement.scrollTop + document.documentElement.clientHeight / 2; } } var cur_tip_id = ''; function active_tip_click (ev) { var elt, i; var elts = document.getElementsByTagName ('div'); for (i = 0; i < elts.length; i++) { elt = elts[i]; if (in_class (elt, "active_tip_text")) { elt.style.display = "none"; } } var tip_link = get_event_elt (ev); while (tip_link && ! in_class (tip_link, "active_tip_link")) { tip_link = tip_link.parentNode; } if (! tip_link) { return; } var tip_id = tip_link.id.replace (/active_tip_link_[0-9]*_/, ""); if (tip_id == cur_tip_id) { cur_tip_id = ''; return; } cur_tip_id = tip_id; var id = "active_tip_text_" + tip_id; var tip_text; if (! (tip_text = document.getElementById (id))) { return; } get_view_center (); tip_text.style.position = 'absolute'; tip_text.style.display = 'none'; tip_text.style.visibility = 'hidden'; tip_text.style.left = 0 + 'px'; tip_text.style.top = 0 + 'px'; tip_text.style.display = 'block'; var w = tip_text.clientWidth; var h = tip_text.clientHeight; var x = center_x - w / 2; var y = center_y - h / 2; tip_text.style.left = x + 'px'; tip_text.style.top = y + 'px'; tip_text.style.display = "block"; tip_text.style.visibility = "visible"; } function active_tip_close (ev) { cur_tip_id = ''; var tip_text = get_event_elt (ev); while (tip_text && ! in_class (tip_text, "active_tip_text")) { tip_text = tip_text.parentNode; } if (! tip_text) { return; } tip_text.style.display = "none"; } function active_tip_init () { var elts, i; elts = document.getElementsByTagName ('span'); for (i = 0; i < elts.length; i++) { var elt = elts[i]; if (in_class (elt, "active_tip_link")) { my_addevent ("click", elt, active_tip_click); } if (in_class (elt, "active_tip_close")) { my_addevent ("click", elt, active_tip_close); } } } /* ================================================================ */ function do_merge_field (ev) { var elts, elt, newelt, i; newelt = get_event_elt (ev); elts = document.getElementsByTagName ('input'); for (i = 0; i < elts.length; i++) { elt = elts[i]; if (elt.name == newelt.name) { while (elt && elt.nodeName != "TD") { elt = elt.parentNode; } if (elt) { elt.style.color = "black"; } } } elt = newelt; while (elt && elt.nodeName != "TD") { elt = elt.parentNode; } if (elt) { elt.style.color = "red"; } } function merge_init () { var elts, elt, i; elts = document.getElementsByTagName ('input'); for (i = 0; i < elts.length; i++) { elt = elts[i]; if (in_class (elt, "merge_field")) { my_addevent ("change", elt, do_merge_field); } } } /* ================================================================ */ function action_edit_click (ev) { if (! ev) { ev = window.event; } if (typeof ev.preventDefault != "undefined") { ev.preventDefault (); } else { window.event.cancelBubble = true; window.event.returnValue = false; } var curelt = get_event_elt (ev); var li = curelt.parentNode; var part_num = li.id.replace (/.*_/, ""); var elts = document.getElementsByTagName ('li'); var elt, i, n; for (i = 0; i < elts.length; i++) { elt = elts[i]; if (in_class (elt, "act_part_selector")) { n = elt.id.replace (/.*_/, ""); if (n == part_num) { elt.className = "act_part_selector" + " act_part_selector_active"; } else { elt.className = "act_part_selector"; } } } var cur_id = "action_edit_" + part_num; elts = document.getElementsByTagName ('div'); for (i = 0; i < elts.length; i++) { elt = elts[i]; if (in_class (elt, "action_edit_part")) { if (elt.id == cur_id) { elt.style.display = "block"; } else { elt.style.display = "none"; } } } elt = document.getElementById ('input_action_part'); if (elt) { elt.value = parseInt (part_num, 10); } return (false); } function action_edit_init () { var id, elts, elt, i; if (! window.action_part) { return; } id = "action_edit_" + window.action_part; elt = document.getElementById (id); if (elt) { elt.style.display = "block"; } elts = document.getElementsByTagName ('input'); for (i = 0; i < elts.length; i++) { elt = elts[i]; if (in_class (elt, "act_part_selector_button")) { // elt.style.display = "none"; my_addevent ("click", elt, action_edit_click); } } elts = document.getElementsByTagName ('span'); for (i = 0; i < elts.length; i++) { elt = elts[i]; if (in_class (elt, "act_part_selector_anchor")) { elt.style.display = "inline"; my_addevent ("click", elt, action_edit_click); } } } /* ================================================================ */ function toc_init () { var elt; if (! window.toc_active) { return; } if (! (elt = document.getElementById (window.toc_active))) { return; } elt.className = "toc_active"; } /* ================================================================ */ /* http://alexking.org/projects/js-quicktags */ function insertAtCursor(myField, myValue) { //IE support if (document.selection) { myField.focus(); var sel = document.selection.createRange(); sel.text = myValue; } //MOZILLA/NETSCAPE support else if (myField.selectionStart || myField.selectionStart == '0') { var startPos = myField.selectionStart; var endPos = myField.selectionEnd; myField.value = myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos, myField.value.length); } else { myField.value += myValue; } } function auto_insert_click (ev) { if (! ev) { ev = window.event; } var elt = get_event_elt (ev); if (elt.nodeName == "OPTION") { var ta = document.getElementById ('auto_insert_target'); insertAtCursor(ta, elt.value); } } function auto_insert_init () { var elt; var elts = document.getElementsByTagName ('select'); for (var i = 0; i < elts.length; i++) { elt = elts[i]; if (in_class (elt, "auto_insert")) { my_addevent ("click", elt, auto_insert_click); } } } /* ================================================================ */ function fix_ads () { var ad_data = document.getElementById ('sys_ad1_data'); var ad_location = document.getElementById ('sys_ad1'); var ad_placeholder = document.getElementById ('sys_ad1_placeholder'); if (ad_data && ad_location && ad_placeholder) { ad_location.replaceChild (ad_data, ad_placeholder); ad_data.style.display = "block"; } ad_data = document.getElementById ('sys_ad2_data'); ad_location = document.getElementById ('sys_ad2'); ad_placeholder = document.getElementById ('sys_ad2_placeholder'); if (ad_data && ad_location && ad_placeholder) { ad_location.replaceChild (ad_data, ad_placeholder); ad_data.style.display = "block"; } ad_data = document.getElementById ('sys_ad_apebble_data'); ad_location = document.getElementById ('sys_ad_apebble'); ad_placeholder = document.getElementById('sys_ad_apebble_placeholder'); if (ad_data && ad_location && ad_placeholder) { ad_location.replaceChild (ad_data, ad_placeholder); ad_data.style.display = "block"; } } /* ================================================================ */ function chat_send () { var chat_req; if (window.XMLHttpRequest) { chat_req = new window.XMLHttpRequest (); } else { chat_req = new window.ActiveXObject ("MSXML2.XMLHTTP.3.0"); } var url = "chatxfer.php?ts=" + new Date().getTime(); url = url + "&pid=" + window.global_pid; url = url + "&db_mode=" + window.db_mode; url = url + "&name=" + encodeURIComponent(chat_name); url = url + "&msg=" + chat_input_box.value; chat_req.open ("GET", url, true); chat_req.send (null); } /* this is onclick for the comment Send button */ function chat_submit () { if (chat_input_box.value) { chat_send (); chat_input_box.value = ""; } } /* this is onkeypress for the comment input box */ function chat_key (ev) { if (! ev) { ev = window.event; } if (ev.keyCode == 13) { chat_submit (); } } /* this is the onkeypress for the Name input box */ function chat_key_name (ev) { if (! ev) { ev = window.event; } if (ev.keyCode == 13) { chat_show_name (); } } function h(str) { return (str.replace(/&/g,'&') . replace(//g,'>')); } function chat_show_name () { chat_name = chat_name_box.value; chat_name_sect.style.display = "none"; chat_show_name_sect.innerHTML = "Screen name for chat:\n" + "" + h(chat_name) + "\n" + " "; chat_show_name_sect.style.display = "block"; chat_input_sect.style.display = "block"; } function chat_query_name () { chat_show_name_sect.style.display = "none"; chat_input_sect.style.display = "none"; chat_name_sect.style.display = "block"; } function chat_init () { chat_window = document.getElementById ('chat_window'); chat_input_box = document.getElementById ('chat_input'); chat_input_sect = document.getElementById ('chat_input_sect'); chat_name_box = document.getElementById ('chat_name'); chat_name_sect = document.getElementById ('chat_name_sect'); chat_show_name_sect = document.getElementById ('chat_show_name_sect'); chat_arg = ""; if (window.chat_initial_name) { chat_name_box.value = chat_initial_name; chat_show_name (); } else { chat_query_name (); } } /* ================================================================ */ var pebajax_req = null; var pebajax_file_seq = 0; var pebajax_offset = 0; var pebajax_buf = ""; var pebajax_rand_base = Math.floor (Math.random () * 1000 * 1000 * 1000); function pebajax_query () { if (pebajax_req) { pebajax_req.abort (); pebajax_req = null; } if (window.XMLHttpRequest) { pebajax_req = new window.XMLHttpRequest (); } else { pebajax_req = new window.ActiveXObject ("MSXML2.XMLHTTP.3.0"); } pebajax_rand_base++; var url = "/pebajax/?rand=" + pebajax_rand_base + "&pid=" + window.global_pid + "&db_mode=" + window.db_mode + "&file_seq=" + pebajax_file_seq + "&offset=" + pebajax_offset; pebajax_req.open ("GET", url, true); pebajax_req.onreadystatechange = pebajax_callback; pebajax_req.send (null); } function pebajax_chat (obj) { if (chat_window) { chat_window.innerHTML += obj.val; chat_window.scrollTop = chat_window.scrollHeight; } } var medium_img = null; function pebajax_filmstrip_hide (ev) { } function pebajax_filmstrip_select (ev) { if (! ev) { ev = window.event; } var elt = get_event_elt (ev); $("#filmstrip_medium img")[0].setAttribute ("src", elt.src); $("#filmstrip_medium").show().css("visibity","visible"); } var last_filmstrip_x = 0; var last_filmstrip_y = 0; function fix_filmstrip_pos () { var offset = $(".webcast_main").offset (); var x = offset.left + 520; var y = offset.top + 0; if (x != last_filmstrip_x || y != last_filmstrip_y) { last_filmstrip_x = x; last_filmstrip_y = y; $("#filmstrip_wrapper").css("left",x+"px").css("top",y+"px"); } } function pebajax_filmstrip (obj) { win = document.getElementById ('filmstrip'); if (! win) { return; } win.style.visibility = "hidden"; win.innerHTML = obj.val; win.scrollLeft = win.scrollWidth; var elts = win.getElementsByTagName ('img'); var elt; for (var i = 0; i < elts.length; i++) { elt = elts[i]; my_addevent ("click", elt, pebajax_filmstrip_select); } win.style.visibility = "visible"; var last_img = elt; var div; div = document.getElementById ('filmstrip_medium'); if (div && last_img) { if (medium_img == null) { medium_img = document.createElement ("img"); div.appendChild (medium_img); } medium_img.setAttribute ("src", last_img.src); medium_img.setAttribute ("width", 380); fix_filmstrip_pos (); $("#filmstrip_wrapper").show(); my_addevent ("click", div, pebajax_filmstrip_select); } } var last_obj; function pebajax_process () { var parts, val, rest; while (true) { parts = pebajax_buf.match (/^([^\004]*)\004([\001-\177]*)$/); if (!parts || !parts[1]) break; val = parts[1]; rest = parts[2]; pebajax_buf = rest; if (new RegExp ("^[ \t\r\n]*{").test (val)) { obj = JSON.parse (val); last_obj = obj; if (obj && obj.op) { if (obj.op == "chat") { pebajax_chat (obj); } else if (obj.op == "filmstrip") { pebajax_filmstrip (obj); } else { dbg ("unknown pebajax op " + obj.op); } } } } } function pebajax_callback () { if (pebajax_req.readyState != 4 || pebajax_req.status != 200) return; var resp = pebajax_req.responseText; var parts = resp.match (/^\001*([^\001]*)\001([0-9]*) ([0-9]*)/); if (parts && parts[1] && parts[2]) { var data = parts[1]; pebajax_file_seq = parseInt (parts[2], 10); pebajax_offset = parseInt (parts[3], 10); pebajax_buf += data; pebajax_process (); pebajax_req = null; pebajax_query (); } else { pebajax_req = null; } } function pebajax_init () { pebajax_query (); } /* ================================================================ */ var cells; var cellnum = 0; function tick () { var now = get_msecs (); if (nav_hang_msecs && now - nav_hang_msecs > 1500) { nav_hang_msecs = 0; nav_hang_restore (); } if (cells) { cellnum++; if (cellnum > 12) cellnum = 0; offset = -1 * cellnum * 100; cells.style.backgroundPosition = offset + "px 0px"; } } function dump_props (elt) { var val, prop; console.log ("elt = " + elt + "\n"); for (prop in elt) { val = elt[prop]; if (! val) { continue; } if (typeof (val) == "function") { val = "(function)"; } if (val.length > 50) { val = "[long string]"; } console.log (prop + " = " + val); } if (0) { elt = elt.style; console.log ("\n ****style**** " + elt); for (prop in elt) { val = elt[prop]; if (! val) { continue; } console.log ("style: " + prop + " = " + val); } } } function pebble_onload () { if (1 || window.db_mode == "production") { do_new_urchin (); } save_button_init (); merge_init (); /* 326 is for new LTA edit markers */ if (window.enable_edit_marker && window.global_pid != 326) { edit_marker_init (); } nav_hang_init (); active_tip_init (); action_edit_init (); if (window.swf_init) { window.swf_init (); } toc_init (); auto_insert_init (); fix_ads (); if (window.enable_chat) { chat_init (); pebajax_init (); } cells = document.getElementById ('cells'); if (window.theme_script_init) { window.theme_script_init (); } window.setInterval ('tick()', 30); elts = document.getElementsByTagName ('input'); for (i = 0; i < elts.length; i++) { elt = elts[i]; if (in_class (elt, "jsclear")) { elt.value = ''; } } } /* ================================================================ */ function youtube (url, elt_id, width, height) { var so = new window.SWFObject(url, elt_id, width, height, "8", "#dddddd"); so.setAttribute ('style', 'background:#dddddd'); so.addParam("wmode", "opaque"); so.write(elt_id); } function activate_toolbar () { elt = document.getElementById ('activate_toolbar_wrapper'); dbg ("elt " + elt); if (elt) elt.style.display = "block"; }