
function getBaseDomain(){var domain="";if(document.domain){domainAry=document.domain.split(".");var topDomain=domainAry.pop();var domainName=domainAry.pop();if(topDomain){domain=domainName+'.'+topDomain;}
else{domain=domainName;}}
return domain;}
function el(id){if(document.getElementById){return document.getElementById(id);}
else if(window[id]){return window[id];}}
function getStaticDomain(){var staticDomain="";var baseDomain=getBaseDomain();if(baseDomain!=null){staticDomain=getProtocol()+"static."+baseDomain;}
return staticDomain;}
function getProtocol(){var protocol="http://";if(document.location.protocol=="https:"){protocol="https://";}
return protocol;}
function getByTagAndClass(source,tagName,className){if(source==null||tagName==null){return null;}
var ret=null;var elements=source.getElementsByTagName(tagName);for(i=0;i<elements.length;i++){var obj=elements[i];if(obj.className==className){ret=obj;}}
return ret;}
function L(str,replacements){var ret=LOCAL_STRINGS[str];if(typeof(ret)=='undefined'){ret=str;}
ret=ret.replace(/{NEWLINE}/g,'<br/>');if(replacements instanceof Object){for(var replacement in replacements){var name=replacement;var value=replacements[name];if(name=="URL"){ret=replaceLink(ret,value);}
else{ret=ret.replace(new RegExp('{'+name+'}','g'),value);}}}
else{if(replacements){ret=ret.replace(new RegExp("{.*}"),replacements);}}
return ret;}
function replaceLink(str,link){var linkStart="<a";if(typeof(link)=='object'){var linkHref=link.href;}
else{var linkHref=link;}
if(!linkHref){linkHref="#";}
linkStart+=" href=\""+linkHref+"\"";if(link.onClick){linkStart+=" onclick=\""+link.onClick+" return false; \"";}
linkStart+=">";str=str.replace("{START_URL}",linkStart);var linkEnd="</a>";str=str.replace("{END_URL}",linkEnd);return str;}
String.prototype.isEmpty=function(){var s=this.toString();return((s==null)||(s.length==0))}
String.prototype.trim=function(){var s=this.toString();if(s!=null){s=s.replace(/^ *| *$/g,"");}
return s;}
String.prototype.htmlEntities=function(){return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');}
String.prototype.nl2br=function(){return this.replace(/(\r\n)|(\n\r)|\r|\n/g,"<br/>");}
function toArray(pseudoArray){var result=[];for(var i=0;i<pseudoArray.length;i++)
result.push(pseudoArray[i]);return result;}
function getSelectValue(selectElement){var selectedId=selectElement.selectedIndex;if(selectedId!=null&&selectedId>=0){return selectElement.options[selectedId].value;}}
function setSelectValue(selectElement,value){var len=selectElement.options.length;var selectedId=null;for(i=0;i<len;i++){var option=selectElement.options[i];if(option.value==value){selectedId=i;}}
if(selectedId!=null){selectElement.selectedIndex=selectedId;}}
function isValidStatus(status){var isValid=true;if(status==null||status=='error'||status.error!=null){if(status.error=='session'){}
isValid=false;}
return isValid;}
function htmlentities(s){var div=document.createElement('div');var text=document.createTextNode(s);div.appendChild(text);return div.innerHTML;}
var StatusBox=new Class({Implements:[Options],options:{divId:'statusBox'},initialize:function(options){this.setOptions(options);this.visible=false;var div=$(this.options.divId);if(!div){return;}
this.fx=new Fx.Tween(div,{duration:700,wait:false}).set('opacity',0);},setText:function(text){$(this.options.divId).innerHTML=text;this.show();},show:function(seconds){this.fx.set('opacity',1);if(seconds){this.setAutoHide(seconds);}},hide:function(){this.fx.start('opacity',0);},setAutoHide:function(seconds){if(seconds){clearTimeout(this.timer);this.timer=setTimeout(this.hide.bind(this),seconds*1000);}}});var Pager=new Class({options:{divId:'pager',nextLinkClass:'nextLink',prevLinkClass:'prevLink',viewportCount:0,viewportLimit:30,count:0,activePage:1,groupSize:8,groupHeadSize:2,groupTailSize:2,groupMiddleSize:3,groupingThreshold:5,statsCountClass:'helperStatisticsCount',statsFromClass:'helperStatisticsFrom',statsToClass:'helperStatisticsTo',onViewportChanged:Class.empty},initialize:function(options){this.setOptions(options);this.pageCount=0;this.pageElements=[];this.container=$(this.options.divId);this.prevLink=this.container.getElement('.prevLink');this.prevLink.onclick=this.onPrevPressed.bindWithEvent(this);this.nextLink=this.container.getElement('.nextLink');this.nextLink.onclick=this.onNextPressed.bindWithEvent(this);this.pages=this.container.getElement('.pages');this.update();},show:function(){this.container.removeClass('hidden');},hide:function(){this.container.addClass('hidden');},setCount:function(count){this.options.count=count;this.update();},updatePageCount:function(){if(this.options.viewportLimit>0){this.pageCount=Math.ceil(this.options.count/this.options.viewportLimit);}
else{this.pageCount=1;}},cleanPageElements:function(){this.pages.empty();},update:function(){this.updatePageCount();if(this.pageCount<2){this.hide();return;}
var countSpan=this.container.getElement('span.'+this.options.statsCountClass);if(countSpan){countSpan.innerHTML=this.options.count;}
var fromSpan=this.container.getElement('span.'+this.options.statsFromClass);if(fromSpan){fromSpan.innerHTML=this.getFromPageId();}
var toSpan=this.container.getElement('span.'+this.options.statsToClass);if(toSpan){toSpan.innerHTML=this.getToPageId();}
if(this.options.activePage>1){this.prevLink.removeClass('disabled');}
else{this.prevLink.addClass('disabled');}
var tailLimit=this.pageCount-(this.groupSize-this.groupTailSize);var headLimit=this.options.groupSize-this.options.groupHeadSize+1;var tailLocation=this.pageCount-this.options.groupTailSize;var headLocation=this.options.groupHeadSize;var groupSizeMedian=Math.floor(this.options.groupSize/2);this.cleanPageElements();for(var i=0;i<this.pageCount;i++){var currentPageId=i+1;if(this.pageCount>this.options.groupingThreshold){if(this.options.activePage>tailLimit){if(currentPageId==(this.options.pageCount-this.options.groupSize)){this.addPageLink(currentPageId,true);continue;}
if(currentPageId>this.options.groupHeadSize){if(currentPageId<(this.pageCount-this.options.groupSize+1)){continue;}}}
else if(this.options.activePage<headLimit){if(currentPageId==(this.options.groupSize+1)){this.addPageLink(currentPageId,true);continue;}
if(currentPageId>(this.options.groupSize+1)){if(currentPageId<(this.pageCount-(this.options.groupTailSize-1))){continue;}}}
else{if(currentPageId==(this.pageCount-this.options.groupHeadSize)){this.addPageLink(currentPageId,true);continue;}
if(currentPageId==(this.options.groupTailSize+1)){this.addPageLink(currentPageId,true);continue;}
if(currentPageId>headLocation&&currentPageId<tailLocation){if(currentPageId>(this.options.activePage+this.options.groupMiddleSize)){continue;}
if(currentPageId<(this.options.activePage-this.options.groupMiddleSize)){continue;}}}}
this.addPageLink(currentPageId,false);}
if(this.pageCount>1&&this.options.activePage!=this.pageCount){this.nextLink.removeClass('disabled');}
else{this.nextLink.addClass('disabled');}
this.show();},addPageLink:function(pageId,isSeparator){var pageLink=null;if(!isSeparator){pageLink=document.createElement("a");pageLink.innerHTML=pageId;pageLink.href="#";pageLink.onclick=this.onPagePressed.bindWithEvent(this,pageId);pageLink.id='pageLink'+pageId;if(this.options.activePage==pageId){pageLink.className='active';}}
else{var pageLink=document.createElement("span");pageLink.innerHTML='...';pageLink.className='separator';}
this.pages.appendChild(pageLink);},getFromPageId:function(){return((this.options.activePage-1)*this.options.viewportLimit)+1;},getToPageId:function(){var currentRangeEnd=((this.options.activePage)*this.options.viewportLimit);if(currentRangeEnd>this.options.count){currentRangeEnd=this.options.count;}
return currentRangeEnd;},getActivePageId:function(){return this.options.activePage;},setActivePageId:function(pageId){this.options.activePage=pageId;this.update();},onPrevPressed:function(e){e=new Event(e).stop();if(this.options.activePage>1){this.options.activePage--;}
this.fireEvent('onViewportChanged',this.options.activePage);return true;},onPagePressed:function(e,pageId){e=new Event(e).stop();var pageLinks=this.pages.getElements('a').each(function(pageLink){pageLink.removeClass('active');},this);var pageLink=$('pageLink'+pageId);pageLink.addClass('active');this.options.activePage=pageId;this.fireEvent('onViewportChanged',this.options.activePage);},onNextPressed:function(e){e=new Event(e).stop();if(this.options.activePage<this.pageCount){this.options.activePage++;}
this.fireEvent('onViewportChanged',this.options.activePage);}});Pager.implement(new Events,new Options);var Table=new Class({Implements:[Options,Events],options:{applyBR:true,tableContainerId:'results',tableId:'resultsTable',actionsMenuId:'actionsMenu',checkAllId:'checkAll',deleteButtonId:'deleteButton',fieldIdName:'responseId',sortField:'responseId',sortDirection:'desc',visibleFields:5,offset:1,viewportLimit:7,rowCount:0,groupEvents:false,onAddToGroup:Class.empty,onRemoveFromGroup:Class.empty,onCellSelected:Class.empty,onRowSelected:Class.empty,onDelete:Class.empty,onLastRowDeleted:Class.empty,onUpdated:Class.empty,onViewportChanged:Class.empty},initialize:function(options){this.setOptions(options);this.actionsMenu=$(this.options.actionsMenuId);if(this.actionsMenu){this.actionsMenu.onchange=this.onActionsMenuChanged.bind(this);}
this.checkAll=$(this.options.checkAllId);if(this.checkAll){this.checkAll.onclick=this.onCheckAllClicked.bindWithEvent(this);}
var deleteButton=$(this.options.deleteButtonId);if(deleteButton){deleteButton.onclick=this.onDeleteButtonClicked.bindWithEvent(this);}
this.pager=new Pager({count:this.options.rowCount,viewportLimit:this.options.viewportLimit,onViewportChanged:this.onViewportChanged.bind(this)});this.tableContainer=$(this.options.tableContainerId);this.table=$(this.options.tableId);this.initHeaderCells();this.initTableRows();},setFields:function(fields){this.fields=fields;this.hiddenFields=0;for(var i=0;i<this.fields.length;i++){var field=this.fields[i];if(field.display!=null&&field.display==false){this.hiddenFields++;}}},initHeaderCells:function(){this.heads={};var heads=this.getHeaderCells(this.table);for(var i=0;i<heads.length;i++){var header=heads[i];if(i>=this.options.offset){header.onclick=this.onHeaderCellClicked.bindWithEvent(this,i);}}},initTableRows:function(){this.rows={};var rows=this.getBodyRows(this.table);for(var i=0;i<rows.length;i++){var row=rows[i];row.onclick=this.onTableRowClicked.bindWithEvent(this,row);if(this.$events&&this.$events['cellSelected']){for(var n=0;n<row.cells.length;n++){var cell=row.cells[n];cell.onclick=this.onTableCellClicked.bindWithEvent(this,cell);}}}},clearActiveRow:function(){if(this.lastActive){this.lastActive.removeClass('active');}},getDataFromCell:function(cell,checkbox){if(!cell){return'';}
if(checkbox==true){checkboxes=cell.getElementsByTagName("input");var id=null;if(checkboxes.length==1){var checkbox=checkboxes[0];id=checkbox.value;}
return id;}
else{var spans=cell.getElementsByTagName('span');if(spans.length>0){cell=spans[0];}
return cell.innerHTML;}},onViewportChanged:function(pageId){if(this.checkAll){this.checkAll.checked=false;}
this.currentPageId=pageId;this.fireEvent('onViewportChanged',{'pageId':this.currentPageId,'sortField':this.options.sortField,'sortDirection':this.options.sortDirection});},show:function(){this.tableContainer.removeClass('hidden');},hide:function(){this.tableContainer.addClass('hidden');},getActivePageId:function(){return this.pager.getActivePageId();},setActivePageId:function(pageId){return this.pager.setActivePageId(pageId);},getSortField:function(){return this.options.sortField;},getSortDirection:function(){return this.options.sortDirection;},getViewportLimit:function(){return this.options.viewportLimit;},refresh:function(){this.fireEvent('onViewportChanged',{'pageId':this.currentPageId,'sortField':this.options.sortField,'sortDirection':this.options.sortDirection});},onCheckAllClicked:function(e){var checked=true;if(!this.checkAll.checked){checked=false;}
this.getCheckboxes().each(function(checkbox){checkbox.checked=checked;},this);},getSelectedIds:function(){var responseIds=[];this.getCheckboxes().each(function(checkbox){if(checkbox.checked){responseIds.push(checkbox.value);}});return responseIds;},onDeleteButtonClicked:function(e){e=new Event(e).stop();var responseIds=this.getSelectedIds();var pageId=this.pager.getActivePageId();if(responseIds.length>0){if(confirm(L("Are you sure you want to delete selected entries?"))){if(this.checkAll){this.checkAll.checked=false;}
this.fireEvent('onDelete',[e,responseIds,pageId]);}}
else{this.fireEvent('onDelete',[e,responseIds,pageId]);}},getCheckboxes:function(){var result=[];var rows=this.getBodyRows(this.table);for(var i=0;i<rows.length;i++){var row=rows[i];var cell=row.cells[0];if(cell!=null){checkboxes=cell.getElementsByTagName("input");if(checkboxes.length==1){result.push(checkboxes[0]);}}}
return result;},onActionsMenuChanged:function(){var value=getSelectValue(this.actionsMenu);var groupId=null;if(value.indexOf('addToGroup')!=-1){groupId=value.substring('addToGroup'.length);value='addToGroup';}
if(value.indexOf('removeFromGroup')!=-1){groupId=value.substring('removeFromGroup'.length);value='removeFromGroup';}
switch(value){case'selectNone':case'selectAll':{var checked=true;if(value=='selectNone'){checked=false;}
var rows=this.getBodyRows(this.table);for(var i=0;i<rows.length;i++){var row=rows[i];var cell=row.cells[0];if(cell!=null){checkboxes=cell.getElementsByTagName("input");if(checkboxes.length==1){var checkbox=checkboxes[0];checkbox.checked=checked;}}}
this.checkAll.checked=checked;break;}
case'addToGroup':{this.fireEvent('onAddToGroup',[groupId,this.getSelectedIds()]);break;}
case'removeFromGroup':{this.fireEvent('onRemoveFromGroup',[groupId,this.getSelectedIds()]);break;}}
setSelectValue(this.actionsMenu,'none');},onHeaderCellClicked:function(e,cellId){e=new Event(e);e.stop();var heads=this.getHeaderCells(this.table);var cell=null;if(heads[cellId]){cell=heads[cellId];}
if(this.checkAll){cellId=cellId-this.options.offset;if(this.hiddenFields){cellId=cellId+this.hiddenFields;}}
if(this.fields[cellId]){var field=this.fields[cellId];if(this.options.sortField==field.fieldId){if(this.options.sortDirection=='desc'){this.options.sortDirection='asc';$(cell).removeClass('sortDown');$(cell).addClass('sortUp');}
else{this.options.sortDirection='desc';$(cell).removeClass('sortUp');$(cell).addClass('sortDown');}}
else{for(var i=this.options.offset;i<heads.length;i++){var header=heads[i];$(header).removeClass('sortUp');$(header).removeClass('sortDown');}
$(cell).addClass('sortDown');this.options.sortDirection='desc';this.options.sortField=field.fieldId;}
this.refresh();}},onTableCellClicked:function(e,cell){e=new Event(e);if(e.target.tagName=='INPUT'){return;}
this.fireEvent('onCellSelected',cell);},onTableRowClicked:function(e,row){e=new Event(e);if(e.target.tagName=='INPUT'){return;}
var cell=row.cells[0];if(cell!=null){checkboxes=cell.getElementsByTagName("input");if(checkboxes.length==1){var checkbox=checkboxes[0];this.fireEvent('onRowSelected',[checkbox.value,row]);this.lastActive=row;}}},setData:function(tableData){if(tableData==null||tableData.count==undefined||tableData.data==undefined){return;}
this.pager.setCount(tableData.count);if(tableData.count==0){this.fireEvent('onLastRowDeleted');this.hide();}
else{this.table.setStyle('visibility','hidden');var body=this.getBody();for(var i=body.rows.length;i>0;i--){body.deleteRow(i-1);}
for(var i=0;i<tableData.data.length;i++){var rowData=tableData.data[i];this.addTableRow(rowData);}
this.table.setStyle('visibility','visible');this.fireEvent('onUpdated');}},addTableRow:function(rowData){var recordId=rowData[this.options.fieldIdName];if(!recordId){return;}
var body=this.getBody();rowElem=body.insertRow(-1);rowElem.onclick=this.onTableRowClicked.bindWithEvent(this,rowElem);if(this.checkAll){var deleteCell=rowElem.insertCell(-1);var checkbox=document.createElement('input');checkbox.type='checkbox';checkbox.name=this.options.fieldIdName+'s[]';checkbox.value=recordId;deleteCell.className='delete';deleteCell.appendChild(checkbox);}
for(var i=0;i<this.fields.length;i++){var field=this.fields[i];if(field.display!=null&&field.display==false){continue;}
var cell=rowElem.insertCell(-1);if(this.$events&&this.$events['cellSelected']){cell.onclick=this.onTableCellClicked.bindWithEvent(this,cell);}
var classNames=[];if(this.fieldVisibility!=null&&this.fieldVisibility[i]==false){classNames.push('hidden');}
fieldValue=rowData[field.fieldId];if(fieldValue!=undefined){if(field.type&&field.type=='checkboxes'&&fieldValue==true){cell.innerHTML='';classNames.push('checkbox');}
else{if(fieldValue.indexOf('<a href="')===-1){fieldValue=htmlentities(fieldValue);if(this.options.applyBR!==false){fieldValue=fieldValue.nl2br();}}
var span=document.createElement('span');span.innerHTML=fieldValue;cell.appendChild(span);}}
else{cell.innerHTML='';}
if(classNames.length>0){cell.className=classNames.join(' ');}}},getHeaderCells:function(){var table=this.table;var id=table.id;if(!this.heads[id]){var heads=null;if(table.tHead&&table.tHead.rows.length>0){heads=table.tHead.rows[table.tHead.rows.length-1].cells;}
else{heads=table.rows[0].cells;}
this.heads[id]=heads;}
return this.heads[id];},getBody:function(){var table=this.table;tableBody=table;if(table.tHead&&table.tHead.rows.length>0){tableBody=table.tBodies[0];}
return $(tableBody);},getBodyRows:function(){var table=this.table;var id=this.table.id;if(!this.rows[id]){var rows=null;if(table.tHead&&table.tHead.rows.length>0){rows=table.tBodies[0].rows;}
else{rows=table.rows;}
this.rows[id]=rows;}
return this.rows[id];}});var ResultsTable=new Class({Implements:[Events,Options],Extends:Table,options:{configureFieldsButtonId:'configureFields',configureFieldsSelectorId:'visibleSelector',visibleFields:5},initialize:function(tableName,fields,options){this.parent(options);this.tableName=tableName;this.setFields(fields);this.setOptions(options);this.configureFieldsButton=$(this.options.configureFieldsButtonId);this.configureFieldsSelector=$(this.options.configureFieldsSelectorId);this.parseCookies();if(this.configureFieldsButton){this.initConfigureFields();}},initConfigureFields:function(){var children=this.configureFieldsSelector.getChildren();children.each(function(el,i){if(i+1==children.length){el.onclick=this.onCloseClicked.bindWithEvent(this);}
else{el.onclick=this.onToggleFieldClicked.bindWithEvent(this,i);}},this);this.configureFieldsButton.onclick=this.onConfigureFieldsClicked.bindWithEvent(this);},parseCookies:function(){this.fieldVisibility=JSON.decode(Cookie.read(this.tableName));if(!this.fieldVisibility||this.fieldVisibility.length!=this.fields.length){this.fieldVisibility=[];for(var i=0;i<this.fields.length;i++){var field=this.fields[i];this.fieldVisibility[i]=field.visible;}
this.saveCookies();}},saveCookies:function(){Cookie.write(this.tableName,JSON.encode(this.fieldVisibility),{path:'/'});},showField:function(fieldIndex){fieldIndex=this.options.offset+fieldIndex;var heads=this.getHeaderCells(this.table);var head=heads[fieldIndex];if(head!=null){$(head).removeClass('hidden');}
var rows=this.getBodyRows(this.table);for(var i=0;i<rows.length;i++){var row=rows[i];var cell=row.cells[fieldIndex];if(cell!=null){$(cell).removeClass('hidden');}}},hideField:function(fieldIndex){fieldIndex=this.options.offset+fieldIndex;var heads=this.getHeaderCells(this.table);var head=heads[fieldIndex];if(head!=null){$(head).addClass('hidden');}
var rows=this.getBodyRows(this.table);for(var i=0;i<rows.length;i++){var row=rows[i];var cell=row.cells[fieldIndex];if(cell!=null){$(cell).addClass('hidden');}}},onConfigureFieldsClicked:function(e){e=new Event(e);e.stop();this.configureFieldsSelector.toggleClass("hidden");},onToggleFieldClicked:function(event,fieldIndex){event=new Event(event);event.stop();var visible=this.fieldVisibility[fieldIndex];if(visible!=null){if(visible){this.hideField(fieldIndex);}
else{this.showField(fieldIndex);}
var li=$('visibleSelectorFld'+fieldIndex);if(li!=null){if(visible){li.removeClass('checked');}
else{li.addClass('checked');}}
this.fieldVisibility[fieldIndex]=!visible;this.saveCookies();this.fireEvent('onFieldsChanged');}},onCloseClicked:function(event){event=new Event(event);event.stop();this.configureFieldsSelector.addClass("hidden");}});var displayReportManager=null;var statusBox=null;function init(reportId,rowCount,viewportLimit,fields){if(reportId==null||fields==null||fields.length==0){return;}
statusBox=new StatusBox();statusBox.setText(L("Loading..."));displayReportManager=new DisplayReportManager(reportId,rowCount,viewportLimit,fields);statusBox.hide();};var DisplayReportManager=new Class({options:{'COOKIE_NAME':"rmgrRpt"},initialize:function(reportId,rowCount,viewportLimit,fields){this.reportId=reportId;this.reportName=this.options.COOKIE_NAME+this.reportId;this.fields=fields;this.updateContainerWidth();if(reportId==null||fields==null||fields.length==0){return;}
var configureFieldsSelector=$('visibleSelector');if(configureFieldsSelector){this.table=new ResultsTable(this.reportName,fields,{offset:0,rowCount:rowCount,viewportLimit:viewportLimit,onFieldsChanged:this.updateContainerWidth.bind(this),onViewportChanged:this.onTableViewportChanged.bind(this)});}},updateContainerWidth:function(){var container=$$('.reportContainer');var table=$('resultsTable');if(table){if(Browser.Engine.presto){container.setStyle('width','auto');}
container.setStyle('width',table.offsetWidth+22+'px');}},onTableViewportChanged:function(viewportSettings){var options={url:"/?action=reports.results.LoadResponsesAction",method:'post',onComplete:this.onTableDataLoadedCallback.bind(this)};var req=new Request.JSON(options);req.post({'json':JSON.encode({'reportId':this.reportId,'pageId':viewportSettings.pageId,'sortField':viewportSettings.sortField,'sortDirection':viewportSettings.sortDirection})});statusBox.setText(L("Loading..."));},onTableDataLoadedCallback:function(responseData){this.table.setData(responseData);statusBox.hide();}});DisplayReportManager.implement(new Options);