1<!-- 2/* 3+ ----------------------------------------------------------------------------+ 4| e107 website system - Javascript File. 5| 6| $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_files/e107.js $ 7| $Revision: 12549 $ 8| $Id: e107.js 12549 2012-01-13 06:55:24Z e107coders $ 9+----------------------------------------------------------------------------+ 10*/ 11 12/* 13 * NOTE: KEEP THIS AT THE TOP OF E107.JS !! 14 * localTime is recorded ASAP after page load; SyncWithServerTime is called at the END 15 * of page processing. We want localTime and serverTime set in close chronological order. 16 * Page Processing order is as follows: 17 * A) All PHP code encountered sequentially in page 18 * B) All Javascript code encountered sequentially in page NOT including function internals 19 * So best proximity is achieved by setting 20 * serverTime at END of php code, and localTime at START of js code. 21 * NOTE: this method means reported times include transfer delay. It's slightly MORE accurate this way! 22 * Final product: tdOffset cookie contains server-browser time difference in seconds, 23 * independent of time zone. tzOffset contains browser time zone in minutes. 24 */ 25 26var nowLocal = new Date(); /* time at very beginning of js execution */ 27var localTime = Math.floor(nowLocal.getTime()/1000); /* time, in ms -- recorded at top of jscript */ 28/* NOTE: if serverDelta is needed for js functions, you must pull it from 29 * the cookie (as calculated during a previous page load!) 30 * The value calculated in SyncWithServerTime is not known until after the 31 * entire page has been processed. 32 */ 33function SyncWithServerTime(serverTime,domain) 34{ 35 if (serverTime) 36 { 37 /* update time difference cookie */ 38 var serverDelta=Math.floor(localTime-serverTime); 39 40 document.cookie = 'e107_tdOffset='+serverDelta+'; path=/; domain= .'+domain; 41 document.cookie = 'e107_tdSetTime='+(localTime-serverDelta)+'; path=/; domain=.'+domain; /* server time when set */ 42 } 43 44 var tzCookie = 'e107_tzOffset='; 45// if (document.cookie.indexOf(tzCookie) < 0) { 46 /* set if not already set */ 47 var timezoneOffset = nowLocal.getTimezoneOffset(); /* client-to-GMT in minutes */ 48 document.cookie = tzCookie + timezoneOffset+'; path=/; domain=.'+domain; 49// } 50} 51var ns6=0; 52if(document.getElementById&&!document.all){ns6=1;} 53var agtbrw=navigator.userAgent.toLowerCase(); 54var operaaa=(agtbrw.indexOf('opera')!=-1); 55var head="display:''"; 56var folder=''; 57 58function expandit(curobj, hide) { 59 if(document.getElementById(curobj)) { 60 folder=document.getElementById(curobj).style; 61 } else { 62 if(ns6==1||operaaa==true || typeof curobj['nextSibling'] != 'undefined' ) { 63 folder= typeof curobj.nextSibling.tagName != 'undefined' ? curobj.nextSibling.style : curobj.nextSibling.nextSibling.style; 64 } else { 65 folder=document.all[curobj.sourceIndex+1].style; 66 } 67 } 68 if(folder.display=="none") 69 { 70 folder.display=""; 71 } else { 72 folder.display="none"; 73 } 74 if(hide) { 75 var hide_objects = hide.split(","); 76 for(i=0; i<hide_objects.length; i++) { 77 hide_objects[i]=hide_objects[i].replace(/^\s*(.*)/, "$1"); 78 hide_objects[i]=hide_objects[i].replace(/(.*?)\s*$/, "$1"); 79 if(document.getElementById(hide_objects[i])) { 80 hidden=document.getElementById(hide_objects[i]).style; 81 if(hidden.display=="") { 82 hidden.display="none"; 83 } 84 } 85 } 86 } 87} 88 89function urljump(url){ 90 top.window.location = url; 91} 92 93function setInner(id, txt) { 94 document.getElementById(id).innerHTML = txt; 95} 96 97function jsconfirm(thetext){ 98 return confirm(thetext); 99} 100 101function insertext(str,tagid,display){ 102 document.getElementById(tagid).value = str; 103 if(display){ 104 document.getElementById(display).style.display='none'; 105 } 106} 107 108function appendtext(str,tagid,display){ 109 document.getElementById(tagid).value += str; 110 document.getElementById(tagid).focus(); 111 if(display){ 112 document.getElementById(display).style.display='none'; 113 } 114} 115 116function open_window(url,wth,hgt) { 117 if('full' == wth){ 118 pwindow = window.open(url); 119 } else { 120 if (wth) { 121 mywidth=wth; 122 } else { 123 mywidth=600; 124 } 125 126 if (hgt) { 127 myheight=hgt; 128 } else { 129 myheight=400; 130 } 131 132 pwindow = window.open(url,'Name', 'top=100,left=100,resizable=yes,width='+mywidth+',height='+myheight+',scrollbars=yes,menubar=yes'); 133 } 134 pwindow.focus(); 135} 136 137function ejs_preload(ejs_path, ejs_imageString){ 138 var ejs_imageArray = ejs_imageString.split(','); 139 for(ejs_loadall=0; ejs_loadall<ejs_imageArray.length; ejs_loadall++){ 140 var ejs_LoadedImage=new Image(); 141 ejs_LoadedImage.src=ejs_path + ejs_imageArray[ejs_loadall]; 142 } 143} 144 145function textCounter(field,cntfield) { 146 cntfield.value = field.value.length; 147} 148 149function openwindow() { 150 opener = window.open("htmlarea/index.php", "popup","top=50,left=100,resizable=no,width=670,height=520,scrollbars=no,menubar=no");
151 opener.focus(); 152} 153 154function setCheckboxes(the_form, do_check, the_cb){ 155 var elts = (typeof(document.forms[the_form].elements[the_cb]) != 'undefined') ? document.forms[the_form].elements[the_cb] : document.forms[the_form].elements[the_cb]; 156 if(document.getElementById(the_form)) 157 { 158 if(the_cb) 159 { 160 var elts =(typeof(document.getElementById(the_form).elements[the_cb]) != 'undefined') ? document.getElementById(the_form).elements[the_cb] : document.getElementById(the_form).elements[the_cb]; 161 } 162 else 163 { 164 var elts = document.getElementById(the_form); 165 } 166 } 167 168 var elts_cnt = (typeof(elts.length) != 'undefined') ? elts.length : 0; 169 if(elts_cnt){ 170 for(var i = 0; i < elts_cnt; i++){ 171 elts[i].checked = do_check; 172 } 173 }else{ 174 elts.checked = do_check; 175 } 176 return true; 177} 178 179var ref=""+escape(top.document.referrer); 180var colord = window.screen.colorDepth; 181var res = window.screen.width + "x" + window.screen.height; 182var eself = document.location; 183 184/* TODO: @SecretR - Object of removal 185// From http://phpbb.com 186var clientPC = navigator.userAgent.toLowerCase(); 187var clientVer = parseInt(navigator.appVersion); 188var is_ie = ((clientPC.indexOf("msie") != -1) && (clientPC.indexOf("opera") == -1)); 189var is_nav = ((clientPC.indexOf('mozilla')!=-1) && (clientPC.indexOf('spoofer')==-1) && (clientPC.indexOf('compatible') == -1) && (clientPC.indexOf('opera')==-1) && (clientPC.indexOf('webtv')==-1) && (clientPC.indexOf('hotjava')==-1)); 190var is_moz = 0; 191var is_win = ((clientPC.indexOf("win")!=-1) || (clientPC.indexOf("16bit") != -1)); 192var is_mac = (clientPC.indexOf("mac")!=-1); 193var e107_selectedInputArea; 194var e107_selectedRange; 195 196 197// From http://www.massless.org/mozedit/ 198function mozWrap(txtarea, open, close){ 199 var selLength = txtarea.textLength; 200 var selStart = txtarea.selectionStart; 201 var selEnd = txtarea.selectionEnd; 202 if (selEnd == 1 || selEnd == 2) selEnd = selLength; 203 var s1 = (txtarea.value).substring(0,selStart); 204 var s2 = (txtarea.value).substring(selStart, selEnd) 205 var s3 = (txtarea.value).substring(selEnd, selLength); 206 txtarea.value = s1 + open + s2 + close + s3; 207 return; 208} 209 210function mozSwap(txtarea, newtext){ 211 var selLength = txtarea.textLength; 212 var selStart = txtarea.selectionStart; 213 var selEnd = txtarea.selectionEnd; 214 if (selEnd == 1 || selEnd == 2) selEnd = selLength; 215 var s1 = (txtarea.value).substring(0,selStart); 216 var s3 = (txtarea.value).substring(selEnd, selLength); 217 txtarea.value = s1 + newtext + s3; 218 return; 219} 220*/ 221 222function storeCaret (textAr){ 223 e107_selectedInputArea = textAr; 224 /* TODO: @SecretR - Object of removal - not needed anymore 225 if (textAr.createTextRange){ 226 e107_selectedRange = document.selection.createRange().duplicate(); 227 }*/ 228} 229 230/** 231 * New improved version - fixed scroll to top behaviour when inserting BBcodes 232 * @TODO - improve it more (0.8) - Prototype 233 */ 234function addtext(text, emote) { 235 236 if (!window.e107_selectedInputArea) { 237 return; //[SecretR] TODO - alert the user 238 } 239 240 var eField = e107_selectedInputArea; 241 var eSelection = false; 242 var tagOpen = ''; 243 var tagClose = ''; 244 245 if (emote != true) { // Split if its a paired bbcode 246 var tmp = text.split('][', 2); 247 if (tmp[0] == text) { 248 tagOpen = text; 249 } else { 250 tagOpen = tmp[0] + ']'; 251 tagClose = '[' + tmp[1]; 252 } 253 } else { //Insert Emote 254 tagOpen = text; 255 } 256 257 258 // Windows user 259 if (document.selection) { 260 261 eSelection = document.selection.createRange().text; 262 eField.focus(); 263 if (eSelection) { 264 document.selection.createRange().text = tagOpen + eSelection + tagClose; 265 } else { 266 document.selection.createRange().text = tagOpen + tagClose; 267 } 268 269 eSelection = ''; 270 271 eField.blur(); 272 eField.focus(); 273 274 return; 275 } 276 277 var scrollPos = eField.scrollTop; 278 var selLength = eField.textLength; 279 var selStart = eField.selectionStart; 280 var selEnd = eField.selectionEnd; 281 282 if (selEnd <= 2 && typeof(selLength) != 'undefined' && (selStart != selEnd)) { 283 selEnd = selLength; 284 } 285 286 var sel1 = (eField.value).substring(0,selStart); 287 var sel2 = (eField.value).substring(selStart, selEnd); 288 var sel3 = (eField.value).substring(selEnd, selLength); 289 290 var newStart = selStart + tagOpen.length + sel2.length + tagClose.length; 291 eField.value = sel1 + tagOpen + sel2 + tagClose + sel3; 292 293 eField.focus(); 294 eField.selectionStart = newStart; 295 eField.selectionEnd = newStart; 296 eField.scrollTop = scrollPos; 297 return; 298 299} 300 301function help(helpstr,tagid){ 302 if(tagid){ 303 document.getElementById(tagid).value = helpstr; 304 } else if(document.getElementById('dataform')) { 305 document.getElementById('dataform').helpb.value = helpstr; 306 } 307} 308function externalLinks() { 309 if (!document.getElementsByTagName) return; 310 var anchors = document.getElementsByTagName("a"); 311 for (var i=0; i<anchors.length; i++) { 312 var anchor = anchors[i]; 313 if (anchor.getAttribute("href") && 314 anchor.getAttribute("rel") == "external") 315 anchor.target = "_blank"; 316 } 317} 318 319function eover(object, over) { 320 object.className = over; 321} 322 323var e107_dupCounter = 1; 324function duplicateHTML(copy,paste,baseid){
325 if(document.getElementById(copy)){ 326 327 e107_dupCounter++; 328 var type = document.getElementById(copy).nodeName; // get the tag name of the source copy. 329 330 var but = document.createElement('input'); 331 var br = document.createElement('br'); 332 333 but.type = 'button'; 334 but.value = 'x'; 335 but.className = 'button'; 336 but.onclick = function(){ this.parentNode.parentNode.removeChild(this.parentNode); }; 337 338 var destination = document.getElementById(paste); 339 var source = document.getElementById(copy).cloneNode(true); 340 341 var newentry = document.createElement(type); 342 343 newentry.appendChild(source); 344 newentry.value=''; 345 newentry.appendChild(but); 346 newentry.appendChild(br); 347 if(baseid) 348 { 349 newid = baseid+e107_dupCounter; 350 newentry.innerHTML = newentry.innerHTML.replace(new RegExp(baseid, 'g'), newid); 351 newentry.id=newid; 352 } 353 354 destination.appendChild(newentry); 355 } 356} 357 358function preview_image(src_val,img_path, not_found) 359{ 360 var ta; 361 var desti = src_val + '_prev'; 362 363 ta = document.getElementById(src_val).value; 364 if(ta){ 365 document.getElementById(desti).src = img_path + ta; 366 }else{ 367 document.getElementById(desti).src = not_found; 368 } 369 return; 370} 371 372 373//-->
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.