function doLogin(obj) { $(obj).attr('disabled', true); $(obj).val("Processing..."); var username = $("#username").val(); var password = $("#password").val(); var remember = $("#remember").attr("checked"); password = encPass(password); var params = {username: username, password: password, remember: remember}; var url = "/do/doLogin.php"; $.post(url, params, function(result) { if(result.length > 0) { $(obj).removeAttr('disabled').get(); $(obj).val("Submit"); error(result); } else { location.reload(); } } ); } function checkLoginKey(obj, e) { var keynum; var keychar; var numcheck; if(window.event) // IE { keynum = e.keyCode; } else if(e.which) // Netscape/Firefox/Opera { keynum = e.which; } if(keynum == 13) doLogin(obj); } function checkSearchKey(obj, e) { var keynum; var keychar; var numcheck; if(window.event) // IE { keynum = e.keyCode; } else if(e.which) // Netscape/Firefox/Opera { keynum = e.which; } if(keynum == 13) $('#formSearch').get().submit(); } function swapFields(show, hide) { //show.each(function(s){$(s).css('display', 'inline';})); //hide.each(function(s){$(s).css('display', 'none';})); } function clearField(obj, text, className) { if(obj.value == text) { obj.value = ""; obj.className = className; } } function resetField(obj, text, className) { if(obj.value == "") { obj.value = text; obj.className = className; } } function hideField(obj, text, displayID, focus) { if(obj.value == text) { obj.css('display', "none"); document.getElementById(displayID).css('display', "inline"); if(focus) document.getElementById(displayID).focus(); } } function showLoginWindow() { $('body').css('overflow', "hidden"); //var elt = $('#loginWindow').get(); // retrieve required dimensions //var eltDims = elt.getDimensions(); var height = 400; var width = 600; var windowHeight = $(window).height(); var windowWidth = $(window).width(); // calculate the center of the page using the browser and element dimensions //var viewport = document.viewport.getDimensions(); var y = windowHeight/2-height/2; //(browserDims.height - eltDims.height) / 2; var x = windowWidth/2-width/2; //(browserDims.width - eltDims.width) / 2; // set the style of the element so it is centered var styles = { display : 'block', position : 'absolute', top : y + 'px', left : x + 'px', color : '#FFFFFF', backgroundColor : '#292929', width : width+'px', height : height+'px', zIndex : 6 }; $('#loginWindow').css(styles); styles = { display : 'block', position : 'absolute', top : 0 + 'px', left : 0 + 'px', backgroundColor : '#000000', width : windowWidth+'px', height : '4096px', zIndex : 5 }; $('#loginVeil').css(styles); $('#loginVeil').css('opacity', 0.7); $('#username').focus(); return false; } function hideLoginWindow() { $('body').css('overflow', "auto"); $('#loginWindow').css('display', 'none'); $('#loginVeil').css('display', 'none'); } function success(text, errorID, successID) { if(typeof errorID == "undefined") errorID = "errors"; if(typeof successID == "undefined") successID = "success"; var d = new Date(); text += "
("+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds()+")"; var success = $('#'+successID); var errors = $('#'+errorID); success.html(text); success.css('display', 'none'); success.fadeIn('slow'); errors.html(""); errors.css('display', 'none'); } function error(text, errorID, successID) { if(typeof errorID == "undefined") errorID = "errors"; if(typeof successID == "undefined") successID = "success"; var d = new Date(); text += "("+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds()+")"; var success = $('#'+successID); var errors = $('#'+errorID); errors.html(text); errors.css('display', 'none'); errors.fadeIn('slow'); errors.css('position', 'relative'); success.html(""); success.css('display', 'none'); } /* * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined * in FIPS PUB 180-1 * Version 2.1a Copyright Paul Johnston 2000 - 2002. * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet * Distributed under the BSD License * See http://pajhome.org.uk/crypt/md5 for details. */ /* * Configurable variables. You may need to tweak these to be compatible with * the server-side, but the defaults work in most cases. */ var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */ var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */ var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */ /* * These are the functions you'll usually want to call * They take string arguments and return either hex or base-64 encoded strings */ function hex_sha1(s){return binb2hex(core_sha1(str2binb(s),s.length * chrsz));} function b64_sha1(s){return binb2b64(core_sha1(str2binb(s),s.length * chrsz));} function str_sha1(s){return binb2str(core_sha1(str2binb(s),s.length * chrsz));} function hex_hmac_sha1(key, data){ return binb2hex(core_hmac_sha1(key, data));} function b64_hmac_sha1(key, data){ return binb2b64(core_hmac_sha1(key, data));} function str_hmac_sha1(key, data){ return binb2str(core_hmac_sha1(key, data));} /* * Perform a simple self-test to see if the VM is working */ function sha1_vm_test() { return hex_sha1("abc") == "a9993e364706816aba3e25717850c26c9cd0d89d"; } /* * Calculate the SHA-1 of an array of big-endian words, and a bit length */ function core_sha1(x, len) { /* append padding */ x[len >> 5] |= 0x80 << (24 - len % 32); x[((len + 64 >> 9) << 4) + 15] = len; var w = Array(80); var a = 1732584193; var b = -271733879; var c = -1732584194; var d = 271733878; var e = -1009589776; for(var i = 0; i < x.length; i += 16) { var olda = a; var oldb = b; var oldc = c; var oldd = d; var olde = e; for(var j = 0; j < 80; j++) { if(j < 16) w[j] = x[i + j]; else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1); var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)), safe_add(safe_add(e, w[j]), sha1_kt(j))); e = d; d = c; c = rol(b, 30); b = a; a = t; } a = safe_add(a, olda); b = safe_add(b, oldb); c = safe_add(c, oldc); d = safe_add(d, oldd); e = safe_add(e, olde); } return Array(a, b, c, d, e); } /* * Perform the appropriate triplet combination function for the current * iteration */ function sha1_ft(t, b, c, d) { if(t < 20) return (b & c) | ((~b) & d); if(t < 40) return b ^ c ^ d; if(t < 60) return (b & c) | (b & d) | (c & d); return b ^ c ^ d; } /* * Determine the appropriate additive constant for the current iteration */ function sha1_kt(t) { return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 : (t < 60) ? -1894007588 : -899497514; } /* * Calculate the HMAC-SHA1 of a key and some data */ function core_hmac_sha1(key, data) { var bkey = str2binb(key); if(bkey.length > 16) bkey = core_sha1(bkey, key.length * chrsz); var ipad = Array(16), opad = Array(16); for(var i = 0; i < 16; i++) { ipad[i] = bkey[i] ^ 0x36363636; opad[i] = bkey[i] ^ 0x5C5C5C5C; } var hash = core_sha1(ipad.concat(str2binb(data)), 512 + data.length * chrsz); return core_sha1(opad.concat(hash), 512 + 160); } /* * Add integers, wrapping at 2^32. This uses 16-bit operations internally * to work around bugs in some JS interpreters. */ function safe_add(x, y) { var lsw = (x & 0xFFFF) + (y & 0xFFFF); var msw = (x >> 16) + (y >> 16) + (lsw >> 16); return (msw << 16) | (lsw & 0xFFFF); } /* * Bitwise rotate a 32-bit number to the left. */ function rol(num, cnt) { return (num << cnt) | (num >>> (32 - cnt)); } /* * Convert an 8-bit or 16-bit string to an array of big-endian words * In 8-bit function, characters >255 have their hi-byte silently ignored. */ function str2binb(str) { var bin = Array(); var mask = (1 << chrsz) - 1; for(var i = 0; i < str.length * chrsz; i += chrsz) bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (32 - chrsz - i%32); return bin; } /* * Convert an array of big-endian words to a string */ function binb2str(bin) { var str = ""; var mask = (1 << chrsz) - 1; for(var i = 0; i < bin.length * 32; i += chrsz) str += String.fromCharCode((bin[i>>5] >>> (32 - chrsz - i%32)) & mask); return str; } /* * Convert an array of big-endian words to a hex string. */ function binb2hex(binarray) { var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; var str = ""; for(var i = 0; i < binarray.length * 4; i++) { str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) + hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8 )) & 0xF); } return str; } /* * Convert an array of big-endian words to a base-64 string */ function binb2b64(binarray) { var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var str = ""; for(var i = 0; i < binarray.length * 4; i += 3) { var triplet = (((binarray[i >> 2] >> 8 * (3 - i %4)) & 0xFF) << 16) | (((binarray[i+1 >> 2] >> 8 * (3 - (i+1)%4)) & 0xFF) << 8 ) | ((binarray[i+2 >> 2] >> 8 * (3 - (i+2)%4)) & 0xFF); for(var j = 0; j < 4; j++) { if(i * 8 + j * 6 > binarray.length * 32) str += b64pad; else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F); } } return str; } function encPass(val) { return hex_sha1(val); } function insertBreaks(line) { line = str_replace('\n', '
', line); return line; } function removeBreaks(line) { line = str_replace('
', '\n', line); line = str_replace('
', '\n', line); line = str_replace('
', '\n', line); line = str_replace('
', '\n', line); line = str_replace('
', '\n', line); line = str_replace('
', '\n', line); return line; } function str_replace_code(search, replace, subject) { var len = subject.length; var result = ""; for(var i=0;i 0) { $('#errors').html(result); $('#errors').css('display', "block"); } else ajaxReload(); } ); } } function doAddClick(id) { var params = {id: id}; $.post("/do/doAddClick.php", params); } function expandDay(obj) { var expanded = false; if($('#expanded').val() == 1) expanded = true; if(expanded) { var div = $('#monday'); if(div != null) div.css('display', "block"); div = $('#tuesday'); if(div != null) div.css('display', "block"); div = $('#wednesday'); if(div != null) div.css('display', "block"); div = $('#thursday'); if(div != null) div.css('display', "block"); div = $('#friday'); if(div != null) div.css('display', "block"); div = $('#saturday'); if(div != null) div.css('display', "block"); div = $('#sunday'); if(div != null) div.css('display', "block"); div = $('#weekend'); if(div != null) div.css('display', "block"); div = $('#blogs'); if(div != null) div.css('display', "block"); if($(obj).parent().hasClass('today')) { if($(obj).parent().hasClass('Roll')) $(obj).parent().parent().addClass("todayTitleRoll"); else $(obj).parent().parent().addClass("todayTitle"); } else { if($(obj).parent().hasClass('Roll')) $(obj).parent().parent().addClass("dayTitleRoll"); else $(obj).parent().parent().addClass("dayTitle"); } $(obj).parent().parent().removeClass("expanded"); $('#expanded').val(0); } else { var div = $('#monday'); if(div != null) div.css('display', "none"); div = $('#tuesday'); if(div != null) div.css('display', "none"); div = $('#wednesday'); if(div != null) div.css('display', "none"); div = $('#thursday'); if(div != null) div.css('display', "none"); div = $('#friday'); if(div != null) div.css('display', "none"); div = $('#saturday'); if(div != null) div.css('display', "none"); div = $('#sunday'); if(div != null) div.css('display', "none"); div = $('#weekend'); if(div != null) div.css('display', "none"); div = $('#blogs'); if(div != null) div.css('display', "none"); $(obj).parent().parent().css('display', "block"); $(obj).parent().parent().addClass("expanded"); $(obj).parent().parent().removeClass("todayTitleRoll"); $(obj).parent().parent().removeClass("dayTitleRoll"); $('#expanded').val(1); } } function displayClass(className) { $('.newsBlurb').css('display', 'none'); $('.dayNews').children('.'+className).css('display', 'block'); } function hideClass(tag, className) { $(tag+'.'+className).css('display', 'none'); } function showClass(tag, className, display) { $(tag+'.'+className).css('display', 'block'); } function toggleTools(obj, className, display) { if(obj.innerHTML == 'show tools') { obj.innerHTML = 'hide tools'; showClass('span', className, display); } else { obj.innerHTML = 'show tools'; hideClass('span', className); } } function ggFormSubmit(obj) { for(instance in CKEDITOR.instances) CKEDITOR.instances[instance].updateElement(); $('#newsEditID', $(obj)).val(editID); var form = $(obj); var submit = form.find('input[type="submit"]'); submit.attr('disabled', 'disabled'); submit.after('Please wait...'); $.post(obj.action, form.serialize(), function(data) { // Return data is JSON object string, so eval to get object var message = $.parseJSON(data); if(typeof message['markup'] != "undefined") { var markup = message['markup'].toString(); if(editID > 0) { $('#news_'+editID).replaceWith(markup); editID = -1; } else { $('.todayTitleRoll').children('div.dayNews').prepend(markup); } resetNewsForm(); } ggShowAll(message); $('#newsEditID').val(""); form.find('.waitingNotice').remove(); submit.removeAttr('disabled'); }); return false; } function ggShowAll(message) { ggShowErrors(message['errors']); ggShowSuccesses(message['successes']); } function ggShowErrors(messages) { if(typeof messages != "undefined") { $('#ggSuccess').css('display', 'none'); var error = $('#ggError'); error.css('display', 'none'); error.html(getMessageList(messages)); error.fadeIn(MESSAGE_SPEED); } } function ggShowSuccesses(messages) { if(typeof messages != "undefined") { $('#ggError').css('display', 'none'); var success = $('#ggSuccess'); success.css('display', 'none'); success.html(getMessageList(messages)); success.fadeIn(MESSAGE_SPEED); } } function quote(obj, id, single) { /* var quoted = obj.parentNode.parentNode.childNodes[1].innerHTML; var quoted2 = obj.parentNode.parentNode.childNodes[0].innerHTML; if((''+quoted2) == 'undefined') quoted2 = ''; */ var quotedName = $('#commentName_'+id).html(); var quotedText = $('#commentText_'+id).html(); var message = ""; if(single) quotedText = toSingleQuote(quotedText); if(typeof CKEDITOR != "undefined") { if(CKEDITOR.instances['comment']) message = CKEDITOR.instances['comment'].getData(); else { message = $('#comment').val(); quotedText = str_replace_code(13,-1,quotedText); quotedText = str_replace_code(10,-1,quotedText); quotedText = removeBreaks(quotedText); } } else { message = $('#comment').val(); quotedText = str_replace_code(13,-1,quotedText); quotedText = str_replace_code(10,-1,quotedText); quotedText = removeBreaks(quotedText); } message += '
'+quotedName+' said:
'+quotedText+'
'; message += "

 

"; if(typeof CKEDITOR != "undefined") { if(CKEDITOR.instances['comment']) { CKEDITOR.instances['comment'].setData(message); CKEDITOR.instances['comment'].focus(); } else { $('#comment').val(message); $('#commentSubmit').focus(); } } else { $('#comment').val(message); $('#commentSubmit').focus(); } } function doVote(obj, commentID, vote, first) { var url = "/do/doVote.php"; var token = $('#token').val(); var params = {commentID: commentID, vote: vote, first: first, token: token}; $.post(url, params, function(result) { var message = $.parseJSON(result); var pieces = obj.id.split('_'); if(!vote && $('#commentVotes_'+pieces[1]).html().indexOf('voteUpGrey') == -1) hide = true; else hide = false; $('#commentVotes_'+pieces[1]).html(message['markup'].toString()); if(hide) showHide($('#username'), pieces[1]); } ); } function toSingleQuote(str) { return str.replace(/(
[\s\S]*<\/blockquote>)/gi, ""); //return str.replace(/(
)([\s\S]+:<\/div>)(
)([\s\S]*)([\s\S]*<\/BLOCKQUOTE>)([\s\S]*<\/blockquote>)/g, ""); //return str.replace(/([\s\S]*)([\s\S]*<\/BLOCKQUOTE>)([\s\S]*<\/blockquote>)/g, "$1 $3"); } function doStar(obj, commentID) { var url = "/do/doStar.php"; var token = $('#token').val(); var pieces = obj.id.split('_'); var jObj = $('#star_'+pieces[1]).parent(); var vote = (jObj.css('background-image')).toString().match(/star\.png/) == "star.png"; if(vote) jObj.css('background-image', 'url("/images/star_filled.png")'); else jObj.css('background-image', 'url("/images/star.png")'); var params = {commentID: commentID, vote: vote, token: token}; $.post(url, params); } function showHide(obj, commentID) { var jObj = $('#comment_'+commentID); if(!jObj.hasClass("buried")) { jObj.addClass('buried'); obj.html('Show'); } else { jObj.removeClass('buried'); obj.html('Hide'); } $.post("/do/doShowHide.php", {commentID: commentID, hidden: jObj.hasClass("buried") ? 1 : 0, token: $('#token').val()}); } function doComment(obj) { var name = $('#name').val(); var type = ""; var comment; var addBreaks; rows = getContent('comment'); comment = rows['text']; addBreaks = rows['addBreaks']; var id = ""; var dummy = ""; var errors = ""; if(!(name.length > 0) && !(dummy.length > 0)) errors += "Guests must enter a name
"; if(!(comment.length > 0)) errors += "Comments cannot be blank
"; if(errors.length > 0) { error(errors); } else { $('#'+obj.id).attr('disabled', true); $('#'+obj.id).val("Processing..."); var commentID = $('#commentEditID').html(); var token = $('#antixsrf').val(); if(commentID == "") { var url = "/do/doComment.php"; var params = {name: name, comment: comment, id: id, type: type, addBreaks: addBreaks, token: token}; } else { var url = "/do/doEditComment.php"; var params = {comment: comment, commentID: commentID, type: type, addBreaks: addBreaks, token: token}; } var box = $('#errors'); box.html(""); box.css('display', "none"); $.post(url, params, function(result) { if(result.length > 0) { $('#'+obj.id).removeAttr('disabled').get(); $('#'+obj.id).val("Submit"); error(result); } else { $('#'+obj.id).removeAttr('disabled').get(); location.reload(); } } ); } } function strip_tags(html) { var elem = false; var output = ""; var len = html.length; for(var i=0;i') elem = false; } else { if(html.charAt(i) == '<') elem = true; else output += html.charAt(i); } } return output; } function startEditMode(obj, commentID) { $('#commentEditMode').html('Quit Edit Mode'); $('#commentEditID').val(commentID); var message = $('#commentText_'+commentID).html(); if(typeof CKEDITOR != "undefined") { if(CKEDITOR.instances['comment']) CKEDITOR.instances['comment'].setData(message); else { message = str_replace_code(13,-1,message); message = str_replace_code(10,-1,message); $('#comment').val(removeBreaks(message)); } } else { message = str_replace_code(13,-1,message); message = str_replace_code(10,-1,message); $('#comment').val(removeBreaks(message)); } $('#commentSubmit').focus(); } function endEditMode() { $('#commentEditMode').html(''); $('#commentEditID').val(""); } function doDeleteComment(obj, id) { if(confirm('Are you sure you want to delete this comment?')) { var url = "/do/doDeleteComment.php"; var token = $('#token').val(); var params = {commentID: id, token: token}; $.post(url, params, function(result) { location.reload(); } ); } } function previewComment(obj, id) { var comment; var addBreaks; rows = getContent('comment'); comment = rows['text']; addBreaks = rows['addBreaks']; var type = $('#type').val(); var errors = ""; if(!(comment.length > 0)) setError("Comments cannot be blank"); if(messages['errors'].length > 0) { showErrors(messages['errors']); } else { $('#'+obj.id).attr('disabled', true); $('#'+obj.id).val("Processing..."); var url = "/do/doPreview.php"; var params = {comment: comment, type: type, addBreaks: addBreaks}; $.post(url, params, function(result) { $('#'+obj.id).removeAttr('disabled').get(); $('#'+obj.id).val("Preview"); $('#previewContainer').html(result); } ); } } function checkAddBreaks(obj) { return false; if(CKEDITORS.instances['comment']) $('#addBreaks').val("false"); else $('#addBreaks').val('true'); } function processComment(data) { if(data != "") { try { var message = $.parseJSON(data); if(typeof message['errors'] == "undefined") { ajaxReload(); return false; } else return true; } catch(err) { ajaxReload(); return false; } } else ajaxReload(); } function checkNewComments() { var type = $('#type').val(); $.get("/do/doCheckNewComments.php", {type: type}, function(data) { //alert(data); }); } $(document).ready(function() { //setInterval(checkNewComments, 10000); });