if (typeof(TrimPath) == 'undefined') TrimPath = {}; (function() { // Using a closure to keep global namespace clean. if (TrimPath.evalEx == null) TrimPath.evalEx = function(src) { return eval(src); }; var UNDEFINED; if (Array.prototype.pop == null) // IE 5.x fix from Igor Poteryaev. Array.prototype.pop = function() { if (this.length === 0) {return UNDEFINED;} return this[--this.length]; }; if (Array.prototype.push == null) // IE 5.x fix from Igor Poteryaev. Array.prototype.push = function() { for (var i = 0; i < arguments.length; ++i) {this[this.length] = arguments[i];} return this.length; }; TrimPath.parseTemplate = function(tmplContent, optTmplName, optEtc) { if (optEtc == null) optEtc = TrimPath.parseTemplate_etc; var funcSrc = parse(tmplContent, optTmplName, optEtc); var func = TrimPath.evalEx(funcSrc, optTmplName, 1); if (func != null) return new optEtc.Template(optTmplName, tmplContent, funcSrc, func, optEtc); return null; } var exceptionDetails = function(e) { return (e.toString()) + ";\n " + (e.message) + ";\n " + (e.name) + ";\n " + (e.stack || 'no stack trace') + ";\n " + (e.description || 'no further description') + ";\n " + (e.fileName || 'no file name') + ";\n " + (e.lineNumber || 'no line number'); } try { String.prototype.process = function(context, optFlags) { var template = TrimPath.parseTemplate(this, null); if (template != null) return template.process(context, optFlags); return this; } } catch (e) { // Swallow exception, such as when String.prototype is sealed. } TrimPath.parseTemplate_etc = {}; // Exposed for extensibility. TrimPath.parseTemplate_etc.statementTag = "forelse|for|if|elseif|else|var|macro"; TrimPath.parseTemplate_etc.statementDef = { // Lookup table for statement tags. "if" : { delta: 1, prefix: "if (", suffix: ") {", paramMin: 1 }, "else" : { delta: 0, prefix: "} else {" }, "elseif" : { delta: 0, prefix: "} else if (", suffix: ") {", paramDefault: "true" }, "/if" : { delta: -1, prefix: "}" }, "for" : { delta: 1, paramMin: 3, prefixFunc : function(stmtParts, state, tmplName, etc) { if (stmtParts[2] != "in") throw new etc.ParseError(tmplName, state.line, "bad for loop statement: " + stmtParts.join(' ')); var iterVar = stmtParts[1]; var listVar = "__LIST__" + iterVar; return [ "var ", listVar, " = ", stmtParts[3], ";", // Fix from Ross Shaull for hash looping, make sure that we have an array of loop lengths to treat like a stack. "var __LENGTH_STACK__;", "if (typeof(__LENGTH_STACK__) == 'undefined' || !__LENGTH_STACK__.length) __LENGTH_STACK__ = new Array();", "__LENGTH_STACK__[__LENGTH_STACK__.length] = 0;", // Push a new for-loop onto the stack of loop lengths. "if ((", listVar, ") != null) { ", "var ", iterVar, "_ct = 0;", // iterVar_ct variable, added by B. Bittman "for (var ", iterVar, "_index in ", listVar, ") { ", iterVar, "_ct++;", "if (typeof(", listVar, "[", iterVar, "_index]) == 'function') {continue;}", // IE 5.x fix from Igor Poteryaev. "__LENGTH_STACK__[__LENGTH_STACK__.length - 1]++;", "var ", iterVar, " = ", listVar, "[", iterVar, "_index];" ].join(""); } }, "forelse" : { delta: 0, prefix: "} } if (__LENGTH_STACK__[__LENGTH_STACK__.length - 1] == 0) { if (", suffix: ") {", paramDefault: "true" }, "/for" : { delta: -1, prefix: "} }; delete __LENGTH_STACK__[__LENGTH_STACK__.length - 1];" }, // Remove the just-finished for-loop from the stack of loop lengths. "var" : { delta: 0, prefix: "var ", suffix: ";" }, "macro" : { delta: 1, prefixFunc : function(stmtParts, state, tmplName, etc) { var macroName = stmtParts[1].split('(')[0]; return [ "var ", macroName, " = function", stmtParts.slice(1).join(' ').substring(macroName.length), "{ var _OUT_arr = []; var _OUT = { write: function(m) { if (m) _OUT_arr.push(m); } }; " ].join(''); } }, "/macro" : { delta: -1, prefix: " return _OUT_arr.join(''); };" } } TrimPath.parseTemplate_etc.modifierDef = { "eat" : function(v) { return ""; }, "escape" : function(s) { return String(s).replace(/&/g, "&").replace(//g, ">"); }, "capitalize" : function(s) { return String(s).toUpperCase(); }, "default" : function(s, d) { return s != null ? s : d; } } TrimPath.parseTemplate_etc.modifierDef.h = TrimPath.parseTemplate_etc.modifierDef.escape; TrimPath.parseTemplate_etc.Template = function(tmplName, tmplContent, funcSrc, func, etc) { this.process = function(context, flags) { if (context == null) context = {}; if (context._MODIFIERS == null) context._MODIFIERS = {}; if (context.defined == null) context.defined = function(str) { return (context[str] != undefined); }; for (var k in etc.modifierDef) { if (context._MODIFIERS[k] == null) context._MODIFIERS[k] = etc.modifierDef[k]; } if (flags == null) flags = {}; var resultArr = []; var resultOut = { write: function(m) { resultArr.push(m); } }; try { func(resultOut, context, flags); } catch (e) { if (flags.throwExceptions == true) throw e; var result = new String(resultArr.join("") + "[ERROR: template:
" + exceptionDetails(e) + "
]"); result["exception"] = e; return result; } return resultArr.join(""); } this.name = tmplName; this.source = tmplContent; this.sourceFunc = funcSrc; this.toString = function() { return "TrimPath.Template [" + tmplName + "]"; } } TrimPath.parseTemplate_etc.ParseError = function(name, line, message) { this.name = name; this.line = line; this.message = message; } TrimPath.parseTemplate_etc.ParseError.prototype.toString = function() { return ("TrimPath template ParseError in " + this.name + ": line " + this.line + ", " + this.message); } var parse = function(body, tmplName, etc) { body = cleanWhiteSpace(body); var funcText = [ "var TrimPath_Template_TEMP = function(_OUT, _CONTEXT, _FLAGS) { with (_CONTEXT) {" ]; var state = { stack: [], line: 1 }; // TODO: Fix line number counting. var endStmtPrev = -1; while (endStmtPrev + 1 < body.length) { var begStmt = endStmtPrev; // Scan until we find some statement markup. begStmt = body.indexOf("{", begStmt + 1); while (begStmt >= 0) { var endStmt = body.indexOf('}', begStmt + 1); var stmt = body.substring(begStmt, endStmt); var blockrx = stmt.match(/^\{(cdata|minify|eval)/); // From B. Bittman, minify/eval/cdata implementation. if (blockrx) { var blockType = blockrx[1]; var blockMarkerBeg = begStmt + blockType.length + 1; var blockMarkerEnd = body.indexOf('}', blockMarkerBeg); if (blockMarkerEnd >= 0) { var blockMarker; if( blockMarkerEnd - blockMarkerBeg <= 0 ) { blockMarker = "{/" + blockType + "}"; } else { blockMarker = body.substring(blockMarkerBeg + 1, blockMarkerEnd); } var blockEnd = body.indexOf(blockMarker, blockMarkerEnd + 1); if (blockEnd >= 0) { emitSectionText(body.substring(endStmtPrev + 1, begStmt), funcText); var blockText = body.substring(blockMarkerEnd + 1, blockEnd); if (blockType == 'cdata') { emitText(blockText, funcText); } else if (blockType == 'minify') { emitText(scrubWhiteSpace(blockText), funcText); } else if (blockType == 'eval') { if (blockText != null && blockText.length > 0) // From B. Bittman, eval should not execute until process(). funcText.push('_OUT.write( (function() { ' + blockText + ' })() );'); } begStmt = endStmtPrev = blockEnd + blockMarker.length - 1; } } } else if (body.charAt(begStmt - 1) != '$' && // Not an expression or backslashed, body.charAt(begStmt - 1) != '\\') { // so check if it is a statement tag. var offset = (body.charAt(begStmt + 1) == '/' ? 2 : 1); // Close tags offset of 2 skips '/'. // 10 is larger than maximum statement tag length. if (body.substring(begStmt + offset, begStmt + 10 + offset).search(TrimPath.parseTemplate_etc.statementTag) == 0) break; // Found a match. } begStmt = body.indexOf("{", begStmt + 1); } if (begStmt < 0) // In "a{for}c", begStmt will be 1. break; var endStmt = body.indexOf("}", begStmt + 1); // In "a{for}c", endStmt will be 5. if (endStmt < 0) break; emitSectionText(body.substring(endStmtPrev + 1, begStmt), funcText); emitStatement(body.substring(begStmt, endStmt + 1), state, funcText, tmplName, etc); endStmtPrev = endStmt; } emitSectionText(body.substring(endStmtPrev + 1), funcText); if (state.stack.length != 0) throw new etc.ParseError(tmplName, state.line, "unclosed, unmatched statement(s): " + state.stack.join(",")); funcText.push("}}; TrimPath_Template_TEMP"); return funcText.join(""); } var emitStatement = function(stmtStr, state, funcText, tmplName, etc) { var parts = stmtStr.slice(1, -1).split(' '); var stmt = etc.statementDef[parts[0]]; // Here, parts[0] == for/if/else/... if (stmt == null) { // Not a real statement. emitSectionText(stmtStr, funcText); return; } if (stmt.delta < 0) { if (state.stack.length <= 0) throw new etc.ParseError(tmplName, state.line, "close tag does not match any previous statement: " + stmtStr); state.stack.pop(); } if (stmt.delta > 0) state.stack.push(stmtStr); if (stmt.paramMin != null && stmt.paramMin >= parts.length) throw new etc.ParseError(tmplName, state.line, "statement needs more parameters: " + stmtStr); if (stmt.prefixFunc != null) funcText.push(stmt.prefixFunc(parts, state, tmplName, etc)); else funcText.push(stmt.prefix); if (stmt.suffix != null) { if (parts.length <= 1) { if (stmt.paramDefault != null) funcText.push(stmt.paramDefault); } else { for (var i = 1; i < parts.length; i++) { if (i > 1) funcText.push(' '); funcText.push(parts[i]); } } funcText.push(stmt.suffix); } } var emitSectionText = function(text, funcText) { if (text.length <= 0) return; var nlPrefix = 0; // Index to first non-newline in prefix. var nlSuffix = text.length - 1; // Index to first non-space/tab in suffix. while (nlPrefix < text.length && (text.charAt(nlPrefix) == '\n')) nlPrefix++; while (nlSuffix >= 0 && (text.charAt(nlSuffix) == ' ' || text.charAt(nlSuffix) == '\t')) nlSuffix--; if (nlSuffix < nlPrefix) nlSuffix = nlPrefix; if (nlPrefix > 0) { funcText.push('if (_FLAGS.keepWhitespace == true) _OUT.write("'); var s = text.substring(0, nlPrefix).replace('\n', '\\n'); // A macro IE fix from BJessen. if (s.charAt(s.length - 1) == '\n') s = s.substring(0, s.length - 1); funcText.push(s); funcText.push('");'); } var lines = text.substring(nlPrefix, nlSuffix + 1).split('\n'); for (var i = 0; i < lines.length; i++) { emitSectionTextLine(lines[i], funcText); if (i < lines.length - 1) funcText.push('_OUT.write("\\n");\n'); } if (nlSuffix + 1 < text.length) { funcText.push('if (_FLAGS.keepWhitespace == true) _OUT.write("'); var s = text.substring(nlSuffix + 1).replace('\n', '\\n'); if (s.charAt(s.length - 1) == '\n') s = s.substring(0, s.length - 1); funcText.push(s); funcText.push('");'); } } var emitSectionTextLine = function(line, funcText) { var endMarkPrev = '}'; var endExprPrev = -1; while (endExprPrev + endMarkPrev.length < line.length) { var begMark = "${", endMark = "}"; var begExpr = line.indexOf(begMark, endExprPrev + endMarkPrev.length); // In "a${b}c", begExpr == 1 if (begExpr < 0) break; if (line.charAt(begExpr + 2) == '%') { begMark = "${%"; endMark = "%}"; } var endExpr = line.indexOf(endMark, begExpr + begMark.length); // In "a${b}c", endExpr == 4; if (endExpr < 0) break; emitText(line.substring(endExprPrev + endMarkPrev.length, begExpr), funcText); // Example: exprs == 'firstName|default:"John Doe"|capitalize'.split('|') var exprArr = line.substring(begExpr + begMark.length, endExpr).replace(/\|\|/g, "#@@#").split('|'); for (var k in exprArr) { if (exprArr[k].replace) // IE 5.x fix from Igor Poteryaev. exprArr[k] = exprArr[k].replace(/#@@#/g, '||'); } funcText.push('_OUT.write('); emitExpression(exprArr, exprArr.length - 1, funcText); funcText.push(');'); endExprPrev = endExpr; endMarkPrev = endMark; } emitText(line.substring(endExprPrev + endMarkPrev.length), funcText); } var emitText = function(text, funcText) { if (text == null || text.length <= 0) return; text = text.replace(/\\/g, '\\\\'); text = text.replace(/\n/g, '\\n'); text = text.replace(/"/g, '\\"'); funcText.push('_OUT.write("'); funcText.push(text); funcText.push('");'); } var emitExpression = function(exprArr, index, funcText) { // Ex: foo|a:x|b:y1,y2|c:z1,z2 is emitted as c(b(a(foo,x),y1,y2),z1,z2) var expr = exprArr[index]; // Ex: exprArr == [firstName,capitalize,default:"John Doe"] if (index <= 0) { // Ex: expr == 'default:"John Doe"' funcText.push(expr); return; } var parts = expr.split(':'); funcText.push('_MODIFIERS["'); funcText.push(parts[0]); // The parts[0] is a modifier function name, like capitalize. funcText.push('"]('); emitExpression(exprArr, index - 1, funcText); if (parts.length > 1) { funcText.push(','); funcText.push(parts[1]); } funcText.push(')'); } var cleanWhiteSpace = function(result) { result = result.replace(/\t/g, " "); result = result.replace(/\r\n/g, "\n"); result = result.replace(/\r/g, "\n"); result = result.replace(/^(\s*\S*(\s+\S+)*)\s*$/, '$1'); // Right trim by Igor Poteryaev. return result; } var scrubWhiteSpace = function(result) { result = result.replace(/^\s+/g, ""); result = result.replace(/\s+$/g, ""); result = result.replace(/\s+/g, " "); result = result.replace(/^(\s*\S*(\s+\S+)*)\s*$/, '$1'); // Right trim by Igor Poteryaev. return result; } // The DOM helper functions depend on DOM/DHTML, so they only work in a browser. // However, these are not considered core to the engine. // TrimPath.parseDOMTemplate = function(content, optDocument, optEtc) { if (optDocument == null) optDocument = document; content = content.replace(/</g, "<").replace(/>/g, ">"); elementId = ''; return TrimPath.parseTemplate(content, elementId, optEtc); } TrimPath.loadTemplate = function (url) { var req; if (window.XMLHttpRequest) req = new XMLHttpRequest(); else if (window.ActiveXObject) req = new ActiveXObject("Microsoft.XMLHTTP"); req.open("GET", url, false); req.send(null); return req.responseText; } TrimPath.processDOMTemplate = function(elementId, context, optFlags, optDocument, optEtc) { return TrimPath.parseDOMTemplate(elementId, optDocument, optEtc).process(context, optFlags); } }) (); function getUniqueKey4Pluck() { var loc = window.location.href; var srchstring = "content/"; var pos = loc.indexOf(srchstring); var start = parseInt(pos+srchstring.length); var end = 0; if(loc.indexOf('#') != -1) var end = parseInt(loc.indexOf('#'))-start; if (end < 1){var key = loc.substr(start);} else{var key = loc.substr(start,end);} if(loc.indexOf('?') != -1) end = parseInt(loc.indexOf('?'))-start; if (end < 1){key = loc.substr(start);} else{key = loc.substr(start,end);} return key; } function recommend_widget() { //gSiteLife.Recommend("ExternalResource", getUniqueKey4Pluck()); } function showLoad(elementId){document.getElementById(elementId).style.background = 'url(http://alt.coxnewsweb.com/statesman/img/spinner.gif) no-repeat scroll center center';} function hideLoad(elementId){ document.getElementById(elementId).style.backgroundImage= 'none'; } function showElement(elementId) { document.getElementById(elementId).style.display='block'; } function hideElement(elementId) { document.getElementById(elementId).style.display='none'; } function setBackground(randomId, color) { document.getElementById(randomId).style.backgroundColor = color; } function User() { var self = this; this.cookie = ''; this.displayName = ''; this.avatar = ''; this.get = function() { var bakery = document.cookie; var srchstring = "at=u="; var pos = bakery.indexOf(srchstring); if(pos != -1){ var start = parseInt(pos+srchstring.length); var end = parseInt(bakery.indexOf('&a='))-start; if (end < 1){var cookie = loc.substr(start);} else{self.cookie = bakery.substr(start,end);} var userRequest = new RequestBatch(); var userKey = new UserKey(self.cookie); userRequest.AddToRequest(userKey); userRequest.BeginRequest(serverUrl, self.store); } } this.store = function(responseBatch) { var userdetails = responseBatch.Responses[0].User; self.displayName = userdetails.DisplayName; self.avatar = userdetails.AvatarPhotoUrl; } } function CommentInterface(perPage) { var self = this; this.perPage = perPage; this.currentPage = 0; this.numberComments = ''; this.pages = ''; this.template = ''; this.init = function() { if(user.cookie != ''){ document.getElementById("commentBody").disabled = false; document.getElementById("submitComment").disabled = false; document.getElementById('commentRegister').style.display = 'none'; } self.template = TrimPath.loadTemplate('/news/content/standing/emails/tp_comments.jst'); self.request(); } this.request = function() { showLoad('spinner'); this.currentPage++; var requestBatch = new RequestBatch(); var articleKey = new ArticleKey(getUniqueKey4Pluck()); var commentPage = new CommentPage(articleKey, this.perPage, this.currentPage, "TimeStampDescending"); requestBatch.AddToRequest(commentPage); requestBatch.BeginRequest(serverUrl, self.render); } this.render = function(responseBatch) { var commentPage = responseBatch.Responses[0].CommentPage; var commentHtml = TrimPath.processDOMTemplate(self.template, commentPage); var appendBlock = document.getElementById('comments'); var newCommentBlock = document.createElement('div'); newCommentBlock.setAttribute("id", "moreComments" + self.currentPage); appendBlock.appendChild(newCommentBlock); document.getElementById("moreComments" + self.currentPage).innerHTML = commentHtml; if(self.currentPage == 1){ self.numberComments = commentPage.NumberOfComments; self.pages = Math.ceil(self.numberComments/commentPage.NumberPerPage); } if((self.pages > 1) && (self.pages != self.currentPage)){ document.getElementById('showmore').style.display = "block"; } else { document.getElementById('showmore').style.display = "none"; } self.stats(); hideLoad('spinner'); } this.stats = function(){ var startRange = (self.currentPage * self.perPage) + 1; if ((self.currentPage+1) == self.pages) var endRange = self.numberComments else var endRange = startRange + (self.perPage - 1); var range = startRange + ' - ' + endRange; document.getElementById('showmore').innerHTML = 'Show ' + range + ' of ' + self.numberComments + ' comments'; } this.post = function() { // get form elements and page info var articleKey = new ArticleKey(getUniqueKey4Pluck()); var pageUrl = document.location.href; var pageTitle = document.title; var commentBody = document.getElementById('commentBody').value; // create and send request var requestBatch = new RequestBatch(); var commentAction = new CommentAction(articleKey, pageUrl, pageTitle, commentBody); requestBatch.AddToRequest(commentAction); requestBatch.BeginRequest(serverUrl, this.submitted); } this.submitted = function(responseBatch) { if (responseBatch.Messages[0].Message == 'ok') { document.getElementById("error").innerHTML = ""; var newComment = document.createElement('div'); newComment.setAttribute('class', 'newcomment'); var randomId = Math.floor(Math.random()*11); newComment.setAttribute('id', randomId); document.getElementById('appendnew').parentNode.insertBefore(newComment, document.getElementById('appendnew').nextSibling); var html = "
"; html += "avatar
"; html += "" + user.displayName + " wrote:"; html += "
" + document.getElementById('commentBody').value + "
"; html += "
Posted just now
"; document.getElementById(randomId).innerHTML = html; setBackground(randomId, '#F1B77E'); setTimeout("setBackground(" + randomId + ", '#FFFFFF')", 500); document.getElementById('commentBody').value = ''; } else if (responseBatch.Messages[0].Message.charAt(0) == "W") { document.getElementById("error").innerHTML = "We restrict rapid posting of multiple comments for quality reasons. You have already posted a comment within the last several seconds. Please try again later." } else if (responseBatch.Messages[0].Message.charAt(0) == "T") { document.getElementById("error").innerHTML = responseBatch.Messages[0].Message; } } this.showreport = function(currentelement, showelement) { //showelement.id = "active_form"; //showelement = document.getElementById("active_form"); if(showelement.style.display == 'none'){ currentelement.style.background = '#cccccc' showelement.style.display = 'block'; if(showelement.getElementsByTagName('input')[0]){ showelement.getElementsByTagName('input')[0].id = "active_name"; showelement.getElementsByTagName('input')[1].id = "active_email"; showelement.getElementsByTagName('input')[2].id = "active_abuse"; showelement.getElementsByTagName('div')[3].id = "active_error"; } showelement.id = "active_form"; } else{ currentelement.style.background = '#ffffff' showelement.style.display = 'none'; if(showelement.getElementsByTagName('input')[0]){ showelement.getElementsByTagName('input')[0].id = ""; showelement.getElementsByTagName('input')[1].id = ""; showelement.getElementsByTagName('input')[2].id = ""; showelement.getElementsByTagName('div')[3].id = ""; } showelement.id = ""; } } this.report = function(comment) { var abuse = new RequestBatch(); var reason = document.getElementById('active_abuse').value; var name = document.getElementById('active_name').value; var email = document.getElementById('active_email').value; if((email != '') && (name != '') && (reason != '')){ var extra_info = name + ' - ' + email; abuse.AddToRequest(new ReportAbuseAction(new CommentKey(comment), reason, extra_info)); abuse.BeginRequest(serverUrl, this.completereport); } else { document.getElementById("active_error").innerHTML = "All fields are required. Please fill out missing fields and resubmit." } } this.completereport = function(responseBatch) { if (responseBatch.Messages[0].Message == 'ok') document.getElementById('active_form').innerHTML = "
Abuse Report Submitted.
"; document.getElementById('active_form').id = ""; } } //MARKED FOR REMOVAL function delayAction(doSomething,trigger){ if(trigger != ''){ var triggerCheck = document.getElementById(trigger); if(triggerCheck == null){ callmelater(doSomething, trigger); return; } } var actions = doSomething if(actions != null){ try{ for(var i=0; i < actions.length; i++){ eval(actions[i]); } } catch(err){ callmelater(actions,trigger); } } } //MARKED FOR REMOVAL function callmelater(doAgain,trigger){ window.setTimeout(function(){delayAction(doAgain,trigger);},300); } //MARKED FOR REMOVAL// function truncateString(objClass,len){ var elements = document.getElementsByTagName('*'); for (i=0; i len) { trunc = trunc.substring(0, len); trunc = trunc.replace(/\w+$/, ''); trunc += '...'; p.innerHTML = trunc; } } } } } //MARKED FOR REMOVAL function postComment() { // get form elements and page info var articleKey = new ArticleKey(getUniqueKey4Pluck()); var pageUrl = document.location.href; var pageTitle = document.title; var commentBody = document.getElementById('commentBody').value; // create and send request var requestBatch = new RequestBatch(); var commentAction = new CommentAction(articleKey, pageUrl, pageTitle, commentBody); requestBatch.AddToRequest(commentAction); requestBatch.BeginRequest(serverUrl, commentSubmitted); } //MARKED FOR REMOVAL function commentSubmitted(responseBatch) { if (responseBatch.Messages[0].Message == 'ok') { document.getElementById("comment_error").innerHTML = ""; document.getElementById("comment_ok").innerHTML = "Your comment has been posted. Please refresh the page to view it."; } else if (responseBatch.Messages[0].Message.charAt(0) == "W") { document.getElementById("comment_ok").innerHTML = ""; document.getElementById("error").innerHTML = responseBatch.Messages[0].Message; } else if (responseBatch.Messages[0].Message.charAt(0) == "T") { document.getElementById("comment_ok").innerHTML = ""; document.getElementById("error").innerHTML = responseBatch.Messages[0].Message; } } //MARKED FOR REMOVAL function comments_widget() { if(!document.getElementById("no_comments")){ document.write("

Your Comments

Austinites love to be heard, and we're giving you a bullhorn. We just ask that you keep things civil. Leave out the personal attacks. Do not use profanity, ethnic or racial slurs, or take shots at anyone's sexual orientation or religion. If you can't be nice, we reserve the right to remove your material and ban users who violate our visitor's agreement.

"); var bakery = document.cookie; var srchstring = "at=u="; var pos = bakery.indexOf(srchstring); //if else is redundant, will be fixed in commenting V2 if(pos != -1){ document.write('
'); } else { document.write('
'); } gSiteLife.CommentsOutput("ExternalResource",getUniqueKey4Pluck(), true, 5, "TimeStampDescending"); document.write("
"); } var pluckMod = new (function(){ var me = this; me.injectStyle = function(){ var r = document.getElementById('commentsiframe'); if (r == null) { callmelater(); return; } r = r.contentWindow || r.contentDocument; if (r.document) { r = r.document; } try { var myframe = document.getElementById('commentsiframe'); } catch (err) { callmelater(); return; } myframe.allowTransparency = "true"; function callmelater(){ window.setTimeout(pluckMod.injectStyle, 300); } }; }); pluckMod.injectStyle(); }