You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oodt.apache.org by ga...@apache.org on 2012/03/02 03:09:05 UTC

svn commit: r1296032 [4/4] - in /oodt/trunk/balance/modules: ./ cas-browser/ cas-browser/classes/ cas-browser/scripts/ cas-browser/scripts/widgets/ cas-browser/static/ cas-browser/static/css/ cas-browser/static/img/ cas-browser/static/js/ cas-browser/v...

Added: oodt/trunk/balance/modules/cas-browser/static/js/jquery.dataTables.min.js
URL: http://svn.apache.org/viewvc/oodt/trunk/balance/modules/cas-browser/static/js/jquery.dataTables.min.js?rev=1296032&view=auto
==============================================================================
--- oodt/trunk/balance/modules/cas-browser/static/js/jquery.dataTables.min.js (added)
+++ oodt/trunk/balance/modules/cas-browser/static/js/jquery.dataTables.min.js Fri Mar  2 02:09:04 2012
@@ -0,0 +1,388 @@
+/*
+ * File:        jquery.dataTables.min.js
+ * Version:     1.4.3
+ * Author:      Allan Jardine (www.sprymedia.co.uk)
+ * 
+ * Copyright 2008-2009 Allan Jardine, all rights reserved.
+ *
+ * This source file is free software, under either the GPL v2 license or a
+ * BSD style license, as supplied with this software.
+ * 
+ * This source file is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+ */
+(function($){$.fn.dataTableSettings=[];$.fn.dataTableExt={};$.fn.dataTableExt.oApi={};
+$.fn.dataTableExt.oPagination={two_button:{fnInit:function(oSettings,fnCallbackDraw){oSettings.nPrevious=document.createElement("div");
+oSettings.nNext=document.createElement("div");if(oSettings.sTableId!==""){oSettings.nPaginate.setAttribute("id",oSettings.sTableId+"_paginate");
+oSettings.nPrevious.setAttribute("id",oSettings.sTableId+"_previous");oSettings.nNext.setAttribute("id",oSettings.sTableId+"_next")
+}oSettings.nPrevious.className="paginate_disabled_previous";oSettings.nNext.className="paginate_disabled_next";
+oSettings.nPaginate.appendChild(oSettings.nPrevious);oSettings.nPaginate.appendChild(oSettings.nNext);
+$(oSettings.nPaginate).insertAfter(oSettings.nTable);$(oSettings.nPrevious).click(function(){oSettings.iDisplayStart-=oSettings.iDisplayLength;
+if(oSettings.iDisplayStart<0){oSettings.iDisplayStart=0}fnCallbackDraw(oSettings)
+});$(oSettings.nNext).click(function(){if(oSettings.iDisplayStart+oSettings.iDisplayLength<oSettings.aiDisplay.length){oSettings.iDisplayStart+=oSettings.iDisplayLength
+}fnCallbackDraw(oSettings)})},fnUpdate:function(oSettings,fnCallbackDraw){oSettings.nPrevious.className=(oSettings.iDisplayStart===0)?"paginate_disabled_previous":"paginate_enabled_previous";
+oSettings.nNext.className=(oSettings.iDisplayEnd==oSettings.aiDisplay.length)?"paginate_disabled_next":"paginate_enabled_next"
+}},iFullNumbersShowPages:5,full_numbers:{fnInit:function(oSettings,fnCallbackDraw){var nFirst=document.createElement("span");
+var nPrevious=document.createElement("span");var nList=document.createElement("span");
+var nNext=document.createElement("span");var nLast=document.createElement("span");
+nFirst.innerHTML=oSettings.oLanguage.oPaginate.sFirst;nPrevious.innerHTML=oSettings.oLanguage.oPaginate.sPrevious;
+nNext.innerHTML=oSettings.oLanguage.oPaginate.sNext;nLast.innerHTML=oSettings.oLanguage.oPaginate.sLast;
+nFirst.className="paginate_button first";nPrevious.className="paginate_button previous";
+nNext.className="paginate_button next";nLast.className="paginate_button last";oSettings.nPaginate.appendChild(nFirst);
+oSettings.nPaginate.appendChild(nPrevious);oSettings.nPaginate.appendChild(nList);
+oSettings.nPaginate.appendChild(nNext);oSettings.nPaginate.appendChild(nLast);$(nFirst).click(function(){oSettings.iDisplayStart=0;
+fnCallbackDraw(oSettings)});$(nPrevious).click(function(){oSettings.iDisplayStart-=oSettings.iDisplayLength;
+if(oSettings.iDisplayStart<0){oSettings.iDisplayStart=0}fnCallbackDraw(oSettings)
+});$(nNext).click(function(){if(oSettings.iDisplayStart+oSettings.iDisplayLength<oSettings.aiDisplay.length){oSettings.iDisplayStart+=oSettings.iDisplayLength
+}fnCallbackDraw(oSettings)});$(nLast).click(function(){var iPages=parseInt((oSettings.aiDisplay.length-1)/oSettings.iDisplayLength,10)+1;
+oSettings.iDisplayStart=(iPages-1)*oSettings.iDisplayLength;fnCallbackDraw(oSettings)
+});$("span",oSettings.nPaginate).bind("mousedown",function(){return false});$("span",oSettings.nPaginate).bind("selectstart",function(){return false
+});oSettings.nPaginateList=nList},fnUpdate:function(oSettings,fnCallbackDraw){var iPageCount=jQuery.fn.dataTableExt.oPagination.iFullNumbersShowPages;
+var iPageCountHalf=Math.floor(iPageCount/2);var iPages=parseInt((oSettings.aiDisplay.length-1)/oSettings.iDisplayLength,10)+1;
+var iCurrentPage=parseInt(oSettings.iDisplayStart/oSettings.iDisplayLength,10)+1;
+var sList="";var iStartButton;var iEndButton;if(iPages<iPageCount){iStartButton=1;
+iEndButton=iPages}else{if(iCurrentPage<=iPageCountHalf){iStartButton=1;iEndButton=iPageCount
+}else{if(iCurrentPage>=(iPages-iPageCountHalf)){iStartButton=iPages-iPageCount+1;
+iEndButton=iPages}else{iStartButton=iCurrentPage-Math.ceil(iPageCount/2)+1;iEndButton=iStartButton+iPageCount-1
+}}}for(var i=iStartButton;i<=iEndButton;i++){if(iCurrentPage!=i){sList+='<span class="paginate_button">'+i+"</span>"
+}else{sList+='<span class="paginate_active">'+i+"</span>"}}oSettings.nPaginateList.innerHTML=sList;
+$("span",oSettings.nPaginateList).bind("mousedown",function(){return false});$("span",oSettings.nPaginateList).bind("selectstart",function(){return false
+});$("span",oSettings.nPaginateList).click(function(){var iTarget=(this.innerHTML*1)-1;
+oSettings.iDisplayStart=iTarget*oSettings.iDisplayLength;fnCallbackDraw(oSettings);
+return false})}}};$.fn.dataTableExt.oSort={"string-asc":function(a,b){var x=a.toLowerCase();
+var y=b.toLowerCase();return((x<y)?-1:((x>y)?1:0))},"string-desc":function(a,b){var x=a.toLowerCase();
+var y=b.toLowerCase();return((x<y)?1:((x>y)?-1:0))},"html-asc":function(a,b){var x=a.replace(/<.*?>/g,"").toLowerCase();
+var y=b.replace(/<.*?>/g,"").toLowerCase();return((x<y)?-1:((x>y)?1:0))},"html-desc":function(a,b){var x=a.replace(/<.*?>/g,"").toLowerCase();
+var y=b.replace(/<.*?>/g,"").toLowerCase();return((x<y)?1:((x>y)?-1:0))},"date-asc":function(a,b){var x=Date.parse(a);
+var y=Date.parse(b);if(isNaN(x)){x=Date.parse("01/01/1970 00:00:00")}if(isNaN(y)){y=Date.parse("01/01/1970 00:00:00")
+}return x-y},"date-desc":function(a,b){var x=Date.parse(a);var y=Date.parse(b);if(isNaN(x)){x=Date.parse("01/01/1970 00:00:00")
+}if(isNaN(y)){y=Date.parse("01/01/1970 00:00:00")}return y-x},"numeric-asc":function(a,b){var x=a=="-"?0:a;
+var y=b=="-"?0:b;return x-y},"numeric-desc":function(a,b){var x=a=="-"?0:a;var y=b=="-"?0:b;
+return y-x}};$.fn.dataTableExt.aTypes=[function(sData){var sValidChars="0123456789.-";
+var Char;for(i=0;i<sData.length;i++){Char=sData.charAt(i);if(sValidChars.indexOf(Char)==-1){return null
+}}return"numeric"},function(sData){if(!isNaN(Date.parse(sData))){return"date"}return null
+}];$.fn.dataTableExt._oExternConfig={iNextUnique:0};$.fn.dataTable=function(oInit){var _aoSettings=$.fn.dataTableSettings;
+function classSettings(){this.sInstance=null;this.oFeatures={bPaginate:true,bLengthChange:true,bFilter:true,bSort:true,bInfo:true,bAutoWidth:true,bProcessing:false,bSortClasses:true,bStateSave:false};
+this.oLanguage={sProcessing:"Processing...",sLengthMenu:"Show _MENU_ entries per page",sZeroRecords:"No matching records found",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries",sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sSearch:"Search:",sUrl:"",oPaginate:{sFirst:"First",sPrevious:"Previous",sNext:"Next",sLast:"Last"}};
+this.aoData=[];this.aiDisplay=[];this.aiDisplayMaster=[];this.aoColumns=[];this.iNextId=0;
+this.asDataSearch=[];this.oPreviousSearch={sSearch:"",bEscapeRegex:true};this.aoPreSearchCols=[];
+this.nInfo=null;this.nProcessing=null;this.iDisplayLength=100;this.iDisplayStart=0;
+this.iDisplayEnd=10;this.aaSorting=[[0,"asc"]];this.asStripClasses=["odd","even"];
+this.fnRowCallback=null;this.fnHeaderCallback=null;this.fnFooterCallback=null;this.fnDrawCallback=null;
+this.fnInitComplete=null;this.nFooter=null;this.sTableId="";this.nTable=null;this.iDefaultSortIndex=0;
+this.bInitialised=false;this.nOpenRow=null;this.nPaginate=null;this.nPrevious=null;
+this.nNext=null;this.sDomPositioning="lfrtip";this.sPaginationType="two_button";this.sAjaxSource=null;
+this.iCookieDuration=60*60*2}this.oApi={};this.fnDraw=function(){_fnReDraw(_fnSettingsFromNode(this[0]))
+};this.fnFilter=function(sInput,iColumn,bEscapeRegex){var oSettings=_fnSettingsFromNode(this[0]);
+if(typeof bEscapeRegex=="undefined"){bEscapeRegex=true}if(typeof iColumn=="undefined"||iColumn===null){_fnFilterComplete(oSettings,{sSearch:sInput,bEscapeRegex:bEscapeRegex},1)
+}else{oSettings.aoPreSearchCols[iColumn].sSearch=sInput;oSettings.aoPreSearchCols[iColumn].bEscapeRegex=bEscapeRegex;
+_fnFilterComplete(oSettings,oSettings.oPreviousSearch,1)}};this.fnSettings=function(nNode){return _fnSettingsFromNode(this[0])
+};this.fnSort=function(aaSort){var oSettings=_fnSettingsFromNode(this[0]);oSettings.aaSorting=aaSort;
+_fnSort(oSettings)};this.fnAddData=function(mData,bRedraw){var aiReturn=[];var iTest;
+if(typeof bRedraw=="undefined"){bRedraw=true}var oSettings=_fnSettingsFromNode(this[0]);
+if(typeof mData[0]=="object"){for(var i=0;i<mData.length;i++){iTest=_fnAddData(oSettings,mData[i]);
+if(iTest==-1){return aiReturn}aiReturn.push(iTest)}}else{iTest=_fnAddData(oSettings,mData);
+if(iTest==-1){return aiReturn}aiReturn.push(iTest)}oSettings.aiDisplay=oSettings.aiDisplayMaster.slice();
+_fnBuildSearchArray(oSettings,1);if(bRedraw){_fnReDraw(oSettings)}return aiReturn
+};this.fnDeleteRow=function(iAODataIndex,fnCallBack){var oSettings=_fnSettingsFromNode(this[0]);
+var i;for(i=0;i<oSettings.aiDisplayMaster.length;i++){if(oSettings.aiDisplayMaster[i]==iAODataIndex){oSettings.aiDisplayMaster.splice(i,1);
+break}}for(i=0;i<oSettings.aiDisplay.length;i++){if(oSettings.aiDisplay[i]==iAODataIndex){oSettings.aiDisplay.splice(i,1)
+}}_fnBuildSearchArray(oSettings,1);if(typeof fnCallBack=="function"){fnCallBack.call(this)
+}if(oSettings.iDisplayStart>oSettings.aiDisplay.length){oSettings.iDisplayStart-=oSettings.iDisplayLength
+}_fnCalculateEnd(oSettings);_fnDraw(oSettings);return oSettings.aoData[iAODataIndex]._aData.slice()
+};this.fnClearTable=function(){var oSettings=_fnSettingsFromNode(this[0]);oSettings.aoData.length=0;
+oSettings.aiDisplayMaster.length=0;oSettings.aiDisplay.length=0;_fnCalculateEnd(oSettings);
+_fnDraw(oSettings)};this.fnOpen=function(nTr,sHtml,sClass){var oSettings=_fnSettingsFromNode(this[0]);
+if(oSettings.nOpenRow!==null){this.fnClose()}var nNewRow=document.createElement("tr");
+var nNewCell=document.createElement("td");nNewRow.appendChild(nNewCell);nNewRow.className=sClass;
+nNewCell.colSpan=oSettings.aoColumns.length;nNewCell.innerHTML=sHtml;$(nNewRow).insertAfter(nTr);
+oSettings.nOpenRow=nNewRow};this.fnClose=function(){var oSettings=_fnSettingsFromNode(this[0]);
+$(oSettings.nOpenRow).remove();oSettings.nOpenRow=null};this.fnGetData=function(iRow){var oSettings=_fnSettingsFromNode(this[0]);
+if(typeof iRow!="undefined"){return oSettings.aoData[iRow]._aData}return _fnGetDataMaster(oSettings)
+};this.fnGetNodes=function(iRow){var oSettings=_fnSettingsFromNode(this[0]);if(typeof iRow!="undefined"){return oSettings.aoData[iRow].nTr
+}return _fnGetTrNodes(oSettings)};this.fnGetPosition=function(nNode){var oSettings=_fnSettingsFromNode(this[0]);
+var i;if(nNode.nodeName=="TR"){for(i=0;i<oSettings.aoData.length;i++){if(oSettings.aoData[i].nTr==nNode){return i
+}}}else{if(nNode.nodeName=="TD"){for(i=0;i<oSettings.aoData.length;i++){var iCorrector=0;
+for(var j=0;j<oSettings.aoColumns.length;j++){if(oSettings.aoColumns[j].bVisible){if(oSettings.aoData[i].nTr.getElementsByTagName("td")[j-iCorrector]==nNode){return[i,j-iCorrector,j]
+}}else{iCorrector++}}}}}return null};this.fnUpdate=function(mData,iRow,iColumn,bRedraw){var oSettings=_fnSettingsFromNode(this[0]);
+var iVisibleColumn;var sRendered;if(typeof bRedraw=="undefined"){bRedraw=true}if(typeof mData!="object"){oSettings.aoData[iRow]._aData[iColumn]=mData;
+if(oSettings.aoColumns[iColumn].fnRender!==null&&oSettings.aoColumns[iColumn].bUseRendered){sRendered=oSettings.aoColumns[iColumn].fnRender({iDataRow:iRow,iDataColumn:iColumn,aData:oSettings.aoData[iRow]._aData});
+oSettings.aoData[iRow]._aData[iColumn]=sRendered}iVisibleColumn=_fnColumnIndexToVisible(oSettings,iColumn);
+if(iVisibleColumn!==null){oSettings.aoData[iRow].nTr.getElementsByTagName("td")[iVisibleColumn].innerHTML=oSettings.aoData[iRow]._aData[iColumn]
+}}else{if(mData.length!=oSettings.aoColumns.length){alert("Warning: An array passed to fnUpdate must have the same number of columns as the table in question - in this case "+oSettings.aoColumns.length);
+return 1}for(var i=0;i<mData.length;i++){oSettings.aoData[iRow]._aData[i]=mData[i];
+if(oSettings.aoColumns[i].fnRender!==null&&oSettings.aoColumns[i].bUseRendered){sRendered=oSettings.aoColumns[i].fnRender({iDataRow:iRow,iDataColumn:i,aData:oSettings.aoData[iRow]._aData});
+oSettings.aoData[iRow]._aData[i]=sRendered}iVisibleColumn=_fnColumnIndexToVisible(oSettings,i);
+if(iVisibleColumn!==null){oSettings.aoData[iRow].nTr.getElementsByTagName("td")[iVisibleColumn].innerHTML=oSettings.aoData[iRow]._aData[i]
+}}}_fnBuildSearchArray(oSettings,1);if(bRedraw){_fnReDraw(oSettings)}return 0};function _fnExternApiFunc(sFunc){return function(){var aArgs=[_fnSettingsFromNode(this[0])].concat(Array.prototype.slice.call(arguments));
+return $.fn.dataTableExt.oApi[sFunc].apply(this,aArgs)}}var bApi=false;for(var sFunc in $.fn.dataTableExt.oApi){if(sFunc){this[sFunc]=_fnExternApiFunc(sFunc);
+bApi=true}}function _fnInitalise(oSettings){if(oSettings.bInitialised===false){setTimeout(function(){_fnInitalise(oSettings)
+},200);return}_fnAddOptionsHtml(oSettings);_fnDrawHead(oSettings);if(oSettings.oFeatures.bSort){_fnSort(oSettings,false);
+_fnSortingClasses(oSettings)}else{oSettings.aiDisplay=oSettings.aiDisplayMaster.slice();
+_fnCalculateEnd(oSettings);_fnDraw(oSettings)}if(oSettings.sAjaxSource!==null){_fnProcessingDisplay(oSettings,true);
+$.getJSON(oSettings.sAjaxSource,null,function(json){for(var i=0;i<json.aaData.length;
+i++){_fnAddData(oSettings,json.aaData[i])}if(oSettings.oFeatures.bSort){_fnSort(oSettings)
+}else{oSettings.aiDisplay=oSettings.aiDisplayMaster.slice();_fnCalculateEnd(oSettings);
+_fnDraw(oSettings)}_fnProcessingDisplay(oSettings,false);if(typeof oSettings.fnInitComplete=="function"){oSettings.fnInitComplete(oSettings)
+}});return}if(oSettings.oFeatures.bSort){_fnSortingClasses(oSettings)}if(typeof oSettings.fnInitComplete=="function"){oSettings.fnInitComplete(oSettings)
+}}function _fnLanguageProcess(oSettings,oLanguage,bInit){if(typeof oLanguage.sProcessing!="undefined"){oSettings.oLanguage.sProcessing=oLanguage.sProcessing
+}if(typeof oLanguage.sLengthMenu!="undefined"){oSettings.oLanguage.sLengthMenu=oLanguage.sLengthMenu
+}if(typeof oLanguage.sZeroRecords!="undefined"){oSettings.oLanguage.sZeroRecords=oLanguage.sZeroRecords
+}if(typeof oLanguage.sInfo!="undefined"){oSettings.oLanguage.sInfo=oLanguage.sInfo
+}if(typeof oLanguage.sInfoEmpty!="undefined"){oSettings.oLanguage.sInfoEmpty=oLanguage.sInfoEmpty
+}if(typeof oLanguage.sInfoFiltered!="undefined"){oSettings.oLanguage.sInfoFiltered=oLanguage.sInfoFiltered
+}if(typeof oLanguage.sInfoPostFix!="undefined"){oSettings.oLanguage.sInfoPostFix=oLanguage.sInfoPostFix
+}if(typeof oLanguage.sSearch!="undefined"){oSettings.oLanguage.sSearch=oLanguage.sSearch
+}if(typeof oLanguage.oPaginate!="undefined"){if(typeof oLanguage.oPaginate!="undefined"){oSettings.oLanguage.oPaginate.sFirst=oLanguage.oPaginate.sFirst
+}if(typeof oLanguage.oPaginate!="undefined"){oSettings.oLanguage.oPaginate.sPrevious=oLanguage.oPaginate.sPrevious
+}if(typeof oLanguage.oPaginate!="undefined"){oSettings.oLanguage.oPaginate.sNext=oLanguage.oPaginate.sNext
+}if(typeof oLanguage.oPaginate!="undefined"){oSettings.oLanguage.oPaginate.sLast=oLanguage.oPaginate.sLast
+}}if(bInit){_fnInitalise(oSettings)}}function _fnAddColumn(oSettings,oOptions){oSettings.aoColumns[oSettings.aoColumns.length++]={sType:null,_bAutoType:true,bVisible:true,bSearchable:true,bSortable:true,sTitle:null,sWidth:null,sClass:null,fnRender:null,bUseRendered:true,iDataSort:oSettings.aoColumns.length-1};
+if(typeof oOptions!="undefined"&&oOptions!==null){var iLength=oSettings.aoColumns.length-1;
+if(typeof oOptions.sType!="undefined"){oSettings.aoColumns[iLength].sType=oOptions.sType;
+oSettings.aoColumns[iLength]._bAutoType=false}if(typeof oOptions.bVisible!="undefined"){oSettings.aoColumns[iLength].bVisible=oOptions.bVisible
+}if(typeof oOptions.bSearchable!="undefined"){oSettings.aoColumns[iLength].bSearchable=oOptions.bSearchable
+}if(typeof oOptions.bSortable!="undefined"){oSettings.aoColumns[iLength].bSortable=oOptions.bSortable
+}if(typeof oOptions.sTitle!="undefined"){oSettings.aoColumns[iLength].sTitle=oOptions.sTitle
+}if(typeof oOptions.sWidth!="undefined"){oSettings.aoColumns[iLength].sWidth=oOptions.sWidth
+}if(typeof oOptions.sClass!="undefined"){oSettings.aoColumns[iLength].sClass=oOptions.sClass
+}if(typeof oOptions.fnRender!="undefined"){oSettings.aoColumns[iLength].fnRender=oOptions.fnRender
+}if(typeof oOptions.bUseRendered!="undefined"){oSettings.aoColumns[iLength].bUseRendered=oOptions.bUseRendered
+}if(typeof oOptions.iDataSort!="undefined"){oSettings.aoColumns[iLength].iDataSort=oOptions.iDataSort
+}}oSettings.aoPreSearchCols[oSettings.aoPreSearchCols.length++]={sSearch:"",bEscapeRegex:true}
+}function _fnAddData(oSettings,aData){if(aData.length!=oSettings.aoColumns.length){return -1
+}var iThisIndex=oSettings.aoData.length;oSettings.aoData.push({_iId:oSettings.iNextId++,_aData:aData.slice(),nTr:document.createElement("tr")});
+var nTd;for(var i=0;i<aData.length;i++){if(oSettings.aoColumns[i].bVisible){nTd=document.createElement("td");
+if(typeof oSettings.aoColumns[i].fnRender=="function"){var sRendered=oSettings.aoColumns[i].fnRender({iDataRow:iThisIndex,iDataColumn:i,aData:aData});
+nTd.innerHTML=sRendered;if(oSettings.aoColumns[i].bUseRendered){oSettings.aoData[iThisIndex]._aData[i]=sRendered
+}}else{nTd.innerHTML=aData[i]}if(oSettings.aoColumns[i].sClass!==null){nTd.className=oSettings.aoColumns[i].sClass
+}if(oSettings.aoColumns[i]._bAutoType&&oSettings.aoColumns[i].sType!="string"){if(oSettings.aoColumns[i].sType===null){oSettings.aoColumns[i].sType=_fnDetectType(aData[i])
+}else{if(oSettings.aoColumns[i].sType=="date"||oSettings.aoColumns[i].sType=="numeric"){oSettings.aoColumns[i].sType=_fnDetectType(aData[i])
+}}}oSettings.aoData[iThisIndex].nTr.appendChild(nTd)}}oSettings.aiDisplayMaster.push(iThisIndex);
+return iThisIndex}function _fnGatherData(oSettings){var nDataNodes;var iDataLength=$("tbody tr").length;
+var iLoop;var i,j;if($("thead th",oSettings.nTable).length!=oSettings.aoColumns.length){alert("Warning - columns do not match")
+}oSettings.nHeader=$("thead",oSettings.nTable)[0];if(typeof $("tfoot",oSettings.nTable)[0]!="undefined"){oSettings.nFooter=$("tfoot",oSettings.nTable)[0]
+}$("tbody tr",oSettings.nTable).each(function(){var iThisIndex=oSettings.aoData.length;
+oSettings.aoData.push({_iId:oSettings.iNextId++,_aData:[],nTr:this});oSettings.aiDisplayMaster.push(iThisIndex);
+var aLocalData=oSettings.aoData[iThisIndex]._aData;$("td",this).each(function(i){aLocalData[i]=this.innerHTML
+})});var iCorrector=0;for(i=0;i<oSettings.aoColumns.length;i++){if(oSettings.aoColumns[i].sTitle===null){oSettings.aoColumns[i].sTitle=$("thead th:nth-child("+(i+1)+")",oSettings.nTable).html()
+}if(oSettings.aoColumns[i]._bAutoType){iLoop=oSettings.aoData.length;for(j=0;j<iLoop;
+j++){if(oSettings.aoColumns[i].sType===null){oSettings.aoColumns[i].sType=_fnDetectType(oSettings.aoData[j]._aData[i])
+}else{if(oSettings.aoColumns[i].sType=="date"||oSettings.aoColumns[i].sType=="numeric"){oSettings.aoColumns[i].sType=_fnDetectType(oSettings.aoData[j]._aData[i])
+}}}}if(oSettings.aoColumns[i].sClass!==null){iLoop=oSettings.aoData.length;for(j=0;
+j<iLoop;j++){oSettings.aoData[j].nTr.getElementsByTagName("td")[i-iCorrector].className+=" "+oSettings.aoColumns[i].sClass
+}}if(typeof oSettings.aoColumns[i].fnRender=="function"){iLoop=oSettings.aoData.length;
+for(j=0;j<iLoop;j++){var sRendered=oSettings.aoColumns[i].fnRender({iDataRow:j,iDataColumn:i,aData:oSettings.aoData[j]._aData});
+oSettings.aoData[j].nTr.getElementsByTagName("td")[i-iCorrector].innerHTML=sRendered;
+if(oSettings.aoColumns[i].bUseRendered){oSettings.aoData[j]._aData[i]=sRendered}}}if(!oSettings.aoColumns[i].bVisible){iLoop=oSettings.aoData.length;
+for(j=0;j<iLoop;j++){var nRemove=oSettings.aoData[j].nTr.getElementsByTagName("td")[i-iCorrector];
+nRemove.parentNode.removeChild(nRemove)}iCorrector++}}}function _fnDrawHead(oSettings){var i;
+var nThOriginals=$("thead th",oSettings.nTable);if(nThOriginals.length==oSettings.aoColumns.length){for(i=0;
+i<oSettings.aoColumns.length;i++){if(oSettings.aoColumns[i].bVisible){if(oSettings.aoColumns[i].sWidth!==null){nThOriginals[i].style.width=oSettings.aoColumns[i].sWidth
+}if(oSettings.aoColumns[i].sTitle!=nThOriginals[i].innerHTML){nThOriginals[i].innerHTML=oSettings.aoColumns[i].sTitle
+}}else{nThOriginals[i].parentNode.removeChild(nThOriginals[i])}}}else{var nTh;var nTr=document.createElement("tr");
+for(i=0;i<oSettings.aoColumns.length;i++){if(oSettings.aoColumns[i].bVisible){nTh=document.createElement("th");
+if(typeof nThOriginals[i]!="undefined"&&nThOriginals[i].className!==""){nTh.className=nThOriginals[i].className
+}if(oSettings.aoColumns[i].sWidth!==null){nTh.style.width=oSettings.aoColumns[i].sWidth
+}nTh.innerHTML=oSettings.aoColumns[i].sTitle;nTr.appendChild(nTh)}}$("thead",oSettings.nTable).html("")[0].appendChild(nTr)
+}if(oSettings.oFeatures.bSort){$("thead th",oSettings.nTable).click(function(e){var iDataIndex=$("thead th",oSettings.nTable).index(this);
+iDataIndex=_fnVisibleToColumnIndex(oSettings,iDataIndex);if(oSettings.aoColumns[iDataIndex].bSortable===false){return
+}_fnProcessingDisplay(oSettings,true);setTimeout(function(){if(e.shiftKey){var bFound=false;
+for(var i=0;i<oSettings.aaSorting.length;i++){if(oSettings.aaSorting[i][0]==iDataIndex){if(oSettings.aaSorting[i][1]=="asc"){oSettings.aaSorting[i][1]="desc"
+}else{oSettings.aaSorting.splice(i,1)}bFound=true;break}}if(bFound===false){oSettings.aaSorting.push([iDataIndex,"asc"])
+}}else{if(oSettings.aaSorting.length==1&&oSettings.aaSorting[0][0]==iDataIndex){oSettings.aaSorting[0][1]=oSettings.aaSorting[0][1]=="asc"?"desc":"asc"
+}else{oSettings.aaSorting.splice(0,oSettings.aaSorting.length);oSettings.aaSorting.push([iDataIndex,"asc"])
+}}_fnSortingClasses(oSettings);_fnSort(oSettings);_fnProcessingDisplay(oSettings,false)
+},0)});$("thead th",oSettings.nTable).mousedown(function(){this.onselectstart=function(){return false
+};return false})}if(oSettings.oFeatures.bAutoWidth){oSettings.nTable.style.width=oSettings.nTable.offsetWidth+"px"
+}}function _fnDraw(oSettings){var i;var anRows=[];var iRowCount=0;var iStrips=oSettings.asStripClasses.length;
+if(oSettings.aiDisplay.length!==0){for(var j=oSettings.iDisplayStart;j<oSettings.iDisplayEnd;
+j++){var nRow=oSettings.aoData[oSettings.aiDisplay[j]].nTr;$(nRow).removeClass(oSettings.asStripClasses.join(" "));
+$(nRow).addClass(oSettings.asStripClasses[iRowCount%iStrips]);if(typeof oSettings.fnRowCallback=="function"){anRows[iRowCount]=oSettings.fnRowCallback(nRow,oSettings.aoData[oSettings.aiDisplay[j]]._aData,iRowCount,j)
+}anRows.push(nRow);iRowCount++}}else{anRows[0]=document.createElement("tr");if(typeof oSettings.asStripClasses[0]!="undefined"){anRows[0].className=oSettings.asStripClasses[0]
+}var nTd=document.createElement("td");nTd.setAttribute("valign","top");nTd.colSpan=oSettings.aoColumns.length;
+nTd.style.textAlign="center";nTd.className="dataTables_empty";nTd.innerHTML=oSettings.oLanguage.sZeroRecords;
+anRows[iRowCount].appendChild(nTd)}if(typeof oSettings.fnHeaderCallback=="function"){oSettings.fnHeaderCallback($("thead tr",oSettings.nTable)[0],_fnGetDataMaster(oSettings),oSettings.iDisplayStart,oSettings.iDisplayEnd,oSettings.aiDisplay)
+}if(typeof oSettings.fnFooterCallback=="function"){oSettings.fnFooterCallback(oSettings.nFooter,_fnGetDataMaster(oSettings),oSettings.iDisplayStart,oSettings.iDisplayEnd,oSettings.aiDisplay)
+}var nTrs=$("tbody:eq(0)>tr",oSettings.nTable);for(i=0;i<nTrs.length;i++){nTrs[i].parentNode.removeChild(nTrs[i])
+}var nBody=$("tbody:eq(0)",oSettings.nTable);for(i=0;i<anRows.length;i++){nBody[0].appendChild(anRows[i])
+}if(oSettings.oFeatures.bPaginate){$.fn.dataTableExt.oPagination[oSettings.sPaginationType].fnUpdate(oSettings,function(oSettings){_fnCalculateEnd(oSettings);
+_fnDraw(oSettings)})}if(oSettings.oFeatures.bInfo){if(oSettings.aiDisplay.length===0&&oSettings.aiDisplay.length==oSettings.aiDisplayMaster.length){oSettings.nInfo.innerHTML=oSettings.oLanguage.sInfoEmpty+" "+oSettings.oLanguage.sInfoPostFix
+}else{if(oSettings.aiDisplay.length===0){oSettings.nInfo.innerHTML=oSettings.oLanguage.sInfoEmpty+" "+oSettings.oLanguage.sInfoFiltered.replace("_MAX_",oSettings.aiDisplayMaster.length)+" "+oSettings.oLanguage.sInfoPostFix
+}else{if(oSettings.aiDisplay.length==oSettings.aiDisplayMaster.length){oSettings.nInfo.innerHTML=oSettings.oLanguage.sInfo.replace("_START_",oSettings.iDisplayStart+1).replace("_END_",oSettings.iDisplayEnd).replace("_TOTAL_",oSettings.aiDisplay.length)+" "+oSettings.oLanguage.sInfoPostFix
+}else{oSettings.nInfo.innerHTML=oSettings.oLanguage.sInfo.replace("_START_",oSettings.iDisplayStart+1).replace("_END_",oSettings.iDisplayEnd).replace("_TOTAL_",oSettings.aiDisplay.length)+" "+oSettings.oLanguage.sInfoFiltered.replace("_MAX_",oSettings.aiDisplayMaster.length)+" "+oSettings.oLanguage.sInfoPostFix
+}}}}_fnSaveState(oSettings);if(typeof oSettings.fnDrawCallback=="function"){oSettings.fnDrawCallback()
+}}function _fnReDraw(oSettings){if(oSettings.oFeatures.bSort){_fnSort(oSettings,oSettings.oPreviousSearch)
+}else{if(oSettings.oFeatures.bFilter){_fnFilterComplete(oSettings,oSettings.oPreviousSearch)
+}else{_fnCalculateEnd(oSettings);_fnDraw(oSettings)}}}function _fnAddOptionsHtml(oSettings){var nHolding=document.createElement("div");
+oSettings.nTable.parentNode.insertBefore(nHolding,oSettings.nTable);var nWrapper=document.createElement("div");
+nWrapper.className="dataTables_wrapper";if(oSettings.sTableId!==""){nWrapper.setAttribute("id",oSettings.sTableId+"_wrapper")
+}var nInsertNode=nWrapper;var sDom=oSettings.sDomPositioning.split("");for(var i=0;
+i<sDom.length;i++){var cOption=sDom[i];if(cOption=="<"){var nNewNode=document.createElement("div");
+var cNext=sDom[i+1];if(cNext=="'"||cNext=='"'){var sClass="";var j=2;while(sDom[i+j]!=cNext){sClass+=sDom[i+j];
+j++}nNewNode.className=sClass;i+=j}nInsertNode.appendChild(nNewNode);nInsertNode=nNewNode
+}else{if(cOption==">"){nInsertNode=nInsertNode.parentNode}else{if(cOption=="l"&&oSettings.oFeatures.bPaginate&&oSettings.oFeatures.bLengthChange){nInsertNode.appendChild(_fnFeatureHtmlLength(oSettings))
+}else{if(cOption=="f"&&oSettings.oFeatures.bFilter){nInsertNode.appendChild(_fnFeatureHtmlFilter(oSettings))
+}else{if(cOption=="r"&&oSettings.oFeatures.bProcessing){nInsertNode.appendChild(_fnFeatureHtmlProcessing(oSettings))
+}else{if(cOption=="t"){nInsertNode.appendChild(oSettings.nTable)}else{if(cOption=="i"&&oSettings.oFeatures.bInfo){nInsertNode.appendChild(_fnFeatureHtmlInfo(oSettings))
+}else{if(cOption=="p"&&oSettings.oFeatures.bPaginate){nInsertNode.appendChild(_fnFeatureHtmlPaginate(oSettings))
+}}}}}}}}}nHolding.parentNode.replaceChild(nWrapper,nHolding)}function _fnFeatureHtmlFilter(oSettings){var nFilter=document.createElement("div");
+if(oSettings.sTableId!==""){nFilter.setAttribute("id",oSettings.sTableId+"_filter")
+}nFilter.className="dataTables_filter";nFilter.innerHTML=oSettings.oLanguage.sSearch+' <input type="text" value="'+oSettings.oPreviousSearch.sSearch.replace('"',"&quot;")+'" />';
+$("input",nFilter).keyup(function(e){_fnFilterComplete(oSettings,{sSearch:this.value,bEscapeRegex:oSettings.oPreviousSearch.bEscapeRegex})
+});return nFilter}function _fnFeatureHtmlInfo(oSettings){var nInfo=document.createElement("div");
+oSettings.nInfo=nInfo;if(oSettings.sTableId!==""){oSettings.nInfo.setAttribute("id",oSettings.sTableId+"_info")
+}oSettings.nInfo.className="dataTables_info";return nInfo}function _fnFeatureHtmlPaginate(oSettings){var nPaginate=document.createElement("div");
+nPaginate.className="dataTables_paginate";oSettings.nPaginate=nPaginate;$.fn.dataTableExt.oPagination[oSettings.sPaginationType].fnInit(oSettings,function(oSettings){_fnCalculateEnd(oSettings);
+_fnDraw(oSettings)});return nPaginate}function _fnFeatureHtmlLength(oSettings){var sName=(oSettings.sTableId==="")?"":'name="'+oSettings.sTableId+'_length"';
+var sStdMenu='<select size="1" '+sName+'><option value="10">10</option><option value="25">25</option><option value="50">50</option><option value="100">100</option></select>';
+var nLength=document.createElement("div");if(oSettings.sTableId!==""){nLength.setAttribute("id",oSettings.sTableId+"_length")
+}nLength.className="dataTables_length";nLength.innerHTML=oSettings.oLanguage.sLengthMenu.replace("_MENU_",sStdMenu);
+$('select option[value="'+oSettings.iDisplayLength+'"]',nLength).attr("selected",true);
+$("select",nLength).change(function(){oSettings.iDisplayLength=parseInt($(this).val(),10);
+_fnCalculateEnd(oSettings);if(oSettings.iDisplayEnd==oSettings.aiDisplay.length){oSettings.iDisplayStart=oSettings.iDisplayEnd-oSettings.iDisplayLength;
+if(oSettings.iDisplayStart<0){oSettings.iDisplayStart=0}}_fnDraw(oSettings)});return nLength
+}function _fnFeatureHtmlProcessing(oSettings){var nProcessing=document.createElement("div");
+oSettings.nProcessing=nProcessing;if(oSettings.sTableId!==""){oSettings.nProcessing.setAttribute("id",oSettings.sTableId+"_processing")
+}oSettings.nProcessing.appendChild(document.createTextNode(oSettings.oLanguage.sProcessing));
+oSettings.nProcessing.className="dataTables_processing";oSettings.nProcessing.style.visibility="hidden";
+oSettings.nTable.parentNode.insertBefore(oSettings.nProcessing,oSettings.nTable);
+return nProcessing}function _fnProcessingDisplay(oSettings,bShow){if(oSettings.oFeatures.bProcessing){if(bShow){oSettings.nProcessing.style.visibility="visible"
+}else{oSettings.nProcessing.style.visibility="hidden"}}}function _fnFilterComplete(oSettings,oInput,iForce){_fnFilter(oSettings,oInput.sSearch,iForce,oInput.bEscapeRegex);
+for(var i=0;i<oSettings.aoPreSearchCols.length;i++){_fnFilterColumn(oSettings,oSettings.aoPreSearchCols[i].sSearch,i,oSettings.aoPreSearchCols[i].bEscapeRegex)
+}if(typeof oSettings.iInitDisplayStart!="undefined"&&oSettings.iInitDisplayStart!=-1){oSettings.iDisplayStart=oSettings.iInitDisplayStart;
+oSettings.iInitDisplayStart=-1}else{oSettings.iDisplayStart=0}_fnCalculateEnd(oSettings);
+_fnDraw(oSettings);_fnBuildSearchArray(oSettings,0)}function _fnFilterColumn(oSettings,sInput,iColumn,bEscapeRegex){if(sInput===""){return
+}var iIndexCorrector=0;var sRegexMatch=bEscapeRegex?_fnEscapeRegex(sInput):sInput;
+var rpSearch=new RegExp(sRegexMatch,"i");for(i=oSettings.aiDisplay.length-1;i>=0;
+i--){if(!rpSearch.test(oSettings.aoData[oSettings.aiDisplay[i]]._aData[iColumn])){oSettings.aiDisplay.splice(i,1);
+iIndexCorrector++}}}function _fnFilter(oSettings,sInput,iForce,bEscapeRegex){var flag,i,j;
+if(typeof iForce=="undefined"||iForce===null){iForce=0}if(typeof bRedraw=="undefined"||bRedraw===null){bRedraw=true
+}var asSearch=bEscapeRegex?_fnEscapeRegex(sInput).split(" "):sInput.split(" ");var sRegExpString="^(?=.*?"+asSearch.join(")(?=.*?")+").*$";
+var rpSearch=new RegExp(sRegExpString,"i");if(sInput.length<=0){oSettings.aiDisplay.splice(0,oSettings.aiDisplay.length);
+oSettings.aiDisplay=oSettings.aiDisplayMaster.slice()}else{if(oSettings.aiDisplay.length==oSettings.aiDisplayMaster.length||oSettings.oPreviousSearch.sSearch.length>sInput.length||iForce==1||sInput.indexOf(oSettings.oPreviousSearch.sSearch)!==0){oSettings.aiDisplay.splice(0,oSettings.aiDisplay.length);
+_fnBuildSearchArray(oSettings,1);for(i=0;i<oSettings.aiDisplayMaster.length;i++){if(rpSearch.test(oSettings.asDataSearch[i])){oSettings.aiDisplay.push(oSettings.aiDisplayMaster[i])
+}}}else{var iIndexCorrector=0;for(i=0;i<oSettings.asDataSearch.length;i++){if(!rpSearch.test(oSettings.asDataSearch[i])){oSettings.aiDisplay.splice(i-iIndexCorrector,1);
+iIndexCorrector++}}}}oSettings.oPreviousSearch.sSearch=sInput;oSettings.oPreviousSearch.bEscapeRegex=bEscapeRegex
+}function _fnSort(oSettings,bApplyClasses){var sDynamicSort="var fnLocalSorting = function(a,b){var iTest;var oSort = $.fn.dataTableExt.oSort;var aoData = oSettings.aoData;";
+var aaSort=oSettings.aaSorting;var iDataSort;var iDataType;if(aaSort.length!==0){for(var i=0;
+i<aaSort.length-1;i++){iDataSort=oSettings.aoColumns[aaSort[i][0]].iDataSort;iDataType=oSettings.aoColumns[iDataSort].sType;
+sDynamicSort+="iTest = oSort['"+iDataType+"-"+aaSort[i][1]+"']( aoData[a]._aData["+iDataSort+"], aoData[b]._aData["+iDataSort+"] ); if ( iTest === 0 )"
+}iDataSort=oSettings.aoColumns[aaSort[aaSort.length-1][0]].iDataSort;iDataType=oSettings.aoColumns[iDataSort].sType;
+sDynamicSort+="iTest = oSort['"+iDataType+"-"+aaSort[aaSort.length-1][1]+"']( aoData[a]._aData["+iDataSort+"], aoData[b]._aData["+iDataSort+"] ); return iTest;}";
+eval(sDynamicSort);oSettings.aiDisplayMaster.sort(fnLocalSorting)}if(typeof bApplyClasses=="undefined"||bApplyClasses){_fnSortingClasses(oSettings)
+}if(oSettings.oFeatures.bFilter){_fnFilterComplete(oSettings,oSettings.oPreviousSearch,1)
+}else{oSettings.aiDisplay=oSettings.aiDisplayMaster.slice();_fnCalculateEnd(oSettings);
+_fnDraw(oSettings)}}function _fnSortingClasses(oSettings){$("thead th",oSettings.nTable).removeClass("sorting_asc sorting_desc sorting");
+var iCorrector=0;var i;for(i=0;i<oSettings.aoColumns.length;i++){if(oSettings.aoColumns[i].bSortable&&oSettings.aoColumns[i].bVisible){var sClass="sorting";
+for(var j=0;j<oSettings.aaSorting.length;j++){if(oSettings.aaSorting[j][0]==i){sClass=(oSettings.aaSorting[j][1]=="asc")?"sorting_asc":"sorting_desc";
+break}}$("thead th:eq("+_fnColumnIndexToVisible(oSettings,i)+")",oSettings.nTable).addClass(sClass)
+}}if(oSettings.oFeatures.bSortClasses){var nTrs=_fnGetTrNodes(oSettings);$("td",nTrs).removeClass("sorting_1 sorting_2 sorting_3");
+for(i=0;i<oSettings.aaSorting.length;i++){if(i<=1){$("td:eq("+_fnColumnIndexToVisible(oSettings,oSettings.aaSorting[i][0])+")",nTrs).addClass("sorting_"+(i+1))
+}else{$("td:eq("+_fnColumnIndexToVisible(oSettings,oSettings.aaSorting[i][0])+")",nTrs).addClass("sorting_3")
+}}}}function _fnVisibleToColumnIndex(oSettings,iMatch){var iColumn=-1;for(var i=0;
+i<oSettings.aoColumns.length;i++){if(oSettings.aoColumns[i].bVisible===true){iColumn++
+}if(iColumn==iMatch){return i}}return null}function _fnColumnIndexToVisible(oSettings,iMatch){var iVisible=-1;
+for(var i=0;i<oSettings.aoColumns.length;i++){if(oSettings.aoColumns[i].bVisible===true){iVisible++
+}if(i==iMatch){return oSettings.aoColumns[i].bVisible===true?iVisible:null}}return null
+}function _fnBuildSearchArray(oSettings,iMaster){oSettings.asDataSearch.splice(0,oSettings.asDataSearch.length);
+var aArray=(typeof iMaster!="undefined"&&iMaster==1)?oSettings.aiDisplayMaster:oSettings.aiDisplay;
+for(i=0;i<aArray.length;i++){oSettings.asDataSearch[i]="";for(j=0;j<oSettings.aoColumns.length;
+j++){if(oSettings.aoColumns[j].bSearchable){var sData=oSettings.aoData[aArray[i]]._aData[j];
+if(oSettings.aoColumns[j].sType=="html"){oSettings.asDataSearch[i]+=sData.replace(/\n/g," ").replace(/<.*?>/g,"")+" "
+}else{if(typeof sData=="string"){oSettings.asDataSearch[i]+=sData.replace(/\n/g," ")+" "
+}else{oSettings.asDataSearch[i]+=sData+" "}}}}}}function _fnCalculateEnd(oSettings){if(oSettings.oFeatures.bPaginate===false){oSettings.iDisplayEnd=oSettings.aiDisplay.length
+}else{if(oSettings.iDisplayStart+oSettings.iDisplayLength>oSettings.aiDisplay.length){oSettings.iDisplayEnd=oSettings.aiDisplay.length
+}else{oSettings.iDisplayEnd=oSettings.iDisplayStart+oSettings.iDisplayLength}}}function _fnConvertToWidth(sWidth,nParent){if(!sWidth||sWidth===null||sWidth===""){return 0
+}if(typeof nParent=="undefined"){nParent=document.getElementsByTagName("body")[0]
+}var iWidth;var nTmp=document.createElement("div");nTmp.style.width=sWidth;nParent.appendChild(nTmp);
+iWidth=nTmp.offsetWidth;nParent.removeChild(nTmp);return(iWidth)}function _fnCalculateColumnWidths(oSettings){var iTableWidth=oSettings.nTable.offsetWidth;
+var iTotalUserIpSize=0;var iTmpWidth;var iVisibleColumns=0;var i;var oHeaders=$("thead th",oSettings.nTable);
+for(i=0;i<oSettings.aoColumns.length;i++){if(oSettings.aoColumns[i].bVisible){iVisibleColumns++;
+if(oSettings.aoColumns[i].sWidth!==null){iTmpWidth=_fnConvertToWidth(oSettings.aoColumns[i].sWidth,oSettings.nTable.parentNode);
+iTotalUserIpSize+=iTmpWidth;oSettings.aoColumns[i].sWidth=iTmpWidth+"px"}}}if(oSettings.aoColumns.length==oHeaders.length&&iTotalUserIpSize===0){for(i=0;
+i<oSettings.aoColumns.length;i++){oSettings.aoColumns[i].sWidth=oHeaders[i].offsetWidth+"px"
+}}else{var nCalcTmp=oSettings.nTable.cloneNode(false);nCalcTmp.setAttribute("id","");
+var sTableTmp='<table class="'+nCalcTmp.className+'">';var sCalcHead="<tr>";var sCalcHtml="<tr>";
+for(i=0;i<oSettings.aoColumns.length;i++){if(oSettings.aoColumns[i].bVisible){sCalcHead+="<th>"+oSettings.aoColumns[i].sTitle+"</th>";
+if(oSettings.aoColumns[i].sWidth!==null){var sWidth="";if(oSettings.aoColumns[i].sWidth!==null){sWidth=' style="width:'+oSettings.aoColumns[i].sWidth+';"'
+}sCalcHtml+="<td"+sWidth+' tag_index="'+i+'">'+fnGetMaxLenString(oSettings,i)+"</td>"
+}else{sCalcHtml+='<td tag_index="'+i+'">'+fnGetMaxLenString(oSettings,i)+"</td>"}}}sCalcHead+="</tr>";
+sCalcHtml+="</tr>";nCalcTmp=$(sTableTmp+sCalcHead+sCalcHtml+"</table>")[0];nCalcTmp.style.width=iTableWidth+"px";
+nCalcTmp.style.visibility="hidden";nCalcTmp.style.position="absolute";oSettings.nTable.parentNode.appendChild(nCalcTmp);
+var oNodes=$("td",nCalcTmp);var iIndex;for(i=0;i<oNodes.length;i++){iIndex=oNodes[i].getAttribute("tag_index");
+oSettings.aoColumns[iIndex].sWidth=$("td",nCalcTmp)[i].offsetWidth+"px"}oSettings.nTable.parentNode.removeChild(nCalcTmp)
+}}function fnGetMaxLenString(oSettings,iCol){var iMax=0;var iMaxIndex=-1;for(var i=0;
+i<oSettings.aoData.length;i++){if(oSettings.aoData[i]._aData[iCol].length>iMax){iMax=oSettings.aoData[i]._aData[iCol].length;
+iMaxIndex=i}}if(iMaxIndex>=0){return oSettings.aoData[iMaxIndex]._aData[iCol]}return""
+}function _fnArrayCmp(aArray1,aArray2){if(aArray1.length!=aArray2.length){return 1
+}for(var i=0;i<aArray1.length;i++){if(aArray1[i]!=aArray2[i]){return 2}}return 0}function _fnDetectType(sData){var aTypes=$.fn.dataTableExt.aTypes;
+var iLen=aTypes.length;for(var i=0;i<iLen;i++){var sType=aTypes[i](sData);if(sType!==null){return sType
+}}return"string"}function _fnSettingsFromNode(nTable){for(var i=0;i<_aoSettings.length;
+i++){if(_aoSettings[i].nTable==nTable){return _aoSettings[i]}}return null}function _fnGetDataMaster(oSettings){var aData=[];
+var iLen=oSettings.aoData.length;for(var i=0;i<iLen;i++){aData.push(oSettings.aoData[i]._aData)
+}return aData}function _fnGetTrNodes(oSettings){var aNodes=[];var iLen=oSettings.aoData.length;
+for(var i=0;i<iLen;i++){aNodes.push(oSettings.aoData[i].nTr)}return aNodes}function _fnEscapeRegex(sVal){var acEscape=["/",".","*","+","?","|","(",")","[","]","{","}","\\","$","^"];
+var reReplace=new RegExp("(\\"+acEscape.join("|\\")+")","g");return sVal.replace(reReplace,"\\$1")
+}function _fnSaveState(oSettings){if(!oSettings.oFeatures.bStateSave){return}var sValue="{";
+sValue+='"iStart": '+oSettings.iDisplayStart+",";sValue+='"iEnd": '+oSettings.iDisplayEnd+",";
+sValue+='"iLength": '+oSettings.iDisplayLength+",";sValue+='"sFilter": "'+oSettings.oPreviousSearch.sSearch.replace('"','\\"')+'",';
+sValue+='"sFilterEsc": '+oSettings.oPreviousSearch.bEscapeRegex+",";sValue+='"aaSorting": [ ';
+for(var i=0;i<oSettings.aaSorting.length;i++){sValue+="["+oSettings.aaSorting[i][0]+",'"+oSettings.aaSorting[i][1]+"'],"
+}sValue=sValue.substring(0,sValue.length-1);sValue+="]}";_fnCreateCookie("SpryMedia_DataTables_"+oSettings.sInstance,sValue,oSettings.iCookieDuration)
+}function _fnLoadState(oSettings){if(!oSettings.oFeatures.bStateSave){return}var sData=_fnReadCookie("SpryMedia_DataTables_"+oSettings.sInstance);
+if(sData!==null&&sData!==""){if(typeof JSON=="object"&&typeof JSON.parse=="function"){oData=JSON.parse(sData.replace(/'/g,'"'))
+}else{oData=eval("("+sData+")")}oSettings.iDisplayStart=oData.iStart;oSettings.iInitDisplayStart=oData.iStart;
+oSettings.iDisplayEnd=oData.iEnd;oSettings.iDisplayLength=oData.iLength;oSettings.oPreviousSearch.sSearch=oData.sFilter;
+oSettings.aaSorting=oData.aaSorting.slice();if(typeof oData.sFilterEsc!="undefined"){oSettings.oPreviousSearch.bEscapeRegex=oData.sFilterEsc
+}}}function _fnCreateCookie(sName,sValue,iSecs){var date=new Date();date.setTime(date.getTime()+(iSecs*1000));
+sName+="_"+window.location.pathname.replace(/[\/:]/g,"");document.cookie=sName+"="+sValue+"; expires="+date.toGMTString()+"; path=/"
+}function _fnReadCookie(sName){var sNameEQ=sName+"_"+window.location.pathname.replace(/[\/:]/g,"")+"=";
+var sCookieContents=document.cookie.split(";");for(var i=0;i<sCookieContents.length;
+i++){var c=sCookieContents[i];while(c.charAt(0)==" "){c=c.substring(1,c.length)}if(c.indexOf(sNameEQ)===0){return c.substring(sNameEQ.length,c.length)
+}}return null}if(bApi){this.oApi._fnInitalise=_fnInitalise;this.oApi._fnLanguageProcess=_fnLanguageProcess;
+this.oApi._fnAddColumn=_fnAddColumn;this.oApi._fnAddData=_fnAddData;this.oApi._fnGatherData=_fnGatherData;
+this.oApi._fnDrawHead=_fnDrawHead;this.oApi._fnDraw=_fnDraw;this.oApi._fnAddOptionsHtml=_fnAddOptionsHtml;
+this.oApi._fnFeatureHtmlFilter=_fnFeatureHtmlFilter;this.oApi._fnFeatureHtmlInfo=_fnFeatureHtmlInfo;
+this.oApi._fnFeatureHtmlPaginate=_fnFeatureHtmlPaginate;this.oApi._fnFeatureHtmlLength=_fnFeatureHtmlLength;
+this.oApi._fnFeatureHtmlProcessing=_fnFeatureHtmlProcessing;this.oApi._fnProcessingDisplay=_fnProcessingDisplay;
+this.oApi._fnFilterComplete=_fnFilterComplete;this.oApi._fnFilterColumn=_fnFilterColumn;
+this.oApi._fnFilter=_fnFilter;this.oApi._fnSortingClasses=_fnSortingClasses;this.oApi._fnVisibleToColumnIndex=_fnVisibleToColumnIndex;
+this.oApi._fnColumnIndexToVisible=_fnColumnIndexToVisible;this.oApi._fnBuildSearchArray=_fnBuildSearchArray;
+this.oApi._fnCalculateEnd=_fnCalculateEnd;this.oApi._fnConvertToWidth=_fnConvertToWidth;
+this.oApi._fnCalculateColumnWidths=_fnCalculateColumnWidths;this.oApi._fnArrayCmp=_fnArrayCmp;
+this.oApi._fnDetectType=_fnDetectType;this.oApi._fnGetDataMaster=_fnGetDataMaster;
+this.oApi._fnGetTrNodes=_fnGetTrNodes;this.oApi._fnEscapeRegex=_fnEscapeRegex;this.oApi._fnSaveState=_fnSaveState;
+this.oApi._fnLoadState=_fnLoadState;this.oApi._fnCreateCookie=_fnCreateCookie;this.oApi._fnReadCookie=_fnReadCookie
+}return this.each(function(){var oSettings=new classSettings();_aoSettings.push(oSettings);
+var bInitHandedOff=false;var bUsePassedData=false;var sId=this.getAttribute("id");
+if(sId!==null){oSettings.sTableId=sId;oSettings.sInstance=sId}else{oSettings.sInstance=$.fn.dataTableExt._oExternConfig.iNextUnique++
+}oSettings.nTable=this;if(typeof oInit!="undefined"&&oInit!==null){if(typeof oInit.bPaginate!="undefined"){oSettings.oFeatures.bPaginate=oInit.bPaginate
+}if(typeof oInit.bLengthChange!="undefined"){oSettings.oFeatures.bLengthChange=oInit.bLengthChange
+}if(typeof oInit.bFilter!="undefined"){oSettings.oFeatures.bFilter=oInit.bFilter}if(typeof oInit.bSort!="undefined"){oSettings.oFeatures.bSort=oInit.bSort
+}if(typeof oInit.bInfo!="undefined"){oSettings.oFeatures.bInfo=oInit.bInfo}if(typeof oInit.bProcessing!="undefined"){oSettings.oFeatures.bProcessing=oInit.bProcessing
+}if(typeof oInit.bAutoWidth!="undefined"){oSettings.oFeatures.bAutoWidth=oInit.bAutoWidth
+}if(typeof oInit.bSortClasses!="undefined"){oSettings.oFeatures.bSortClasses=oInit.bSortClasses
+}if(typeof oInit.aaData!="undefined"){bUsePassedData=true}if(typeof oInit.iDisplayLength!="undefined"){oSettings.iDisplayLength=oInit.iDisplayLength
+}if(typeof oInit.asStripClasses!="undefined"){oSettings.asStripClasses=oInit.asStripClasses
+}if(typeof oInit.fnRowCallback!="undefined"){oSettings.fnRowCallback=oInit.fnRowCallback
+}if(typeof oInit.fnHeaderCallback!="undefined"){oSettings.fnHeaderCallback=oInit.fnHeaderCallback
+}if(typeof oInit.fnFooterCallback!="undefined"){oSettings.fnFooterCallback=oInit.fnFooterCallback
+}if(typeof oInit.fnDrawCallback!="undefined"){oSettings.fnDrawCallback=oInit.fnDrawCallback
+}if(typeof oInit.fnInitComplete!="undefined"){oSettings.fnInitComplete=oInit.fnInitComplete
+}if(typeof oInit.aaSorting!="undefined"){oSettings.aaSorting=oInit.aaSorting}if(typeof oInit.sPaginationType!="undefined"){oSettings.sPaginationType=oInit.sPaginationType
+}if(typeof oInit.sDom!="undefined"){oSettings.sDomPositioning=oInit.sDom}if(typeof oInit.sAjaxSource!="undefined"){oSettings.sAjaxSource=oInit.sAjaxSource
+}if(typeof oInit.iCookieDuration!="undefined"){oSettings.iCookieDuration=oInit.iCookieDuration
+}if(typeof oInit.bStateSave!="undefined"){oSettings.oFeatures.bStateSave=oInit.bStateSave;
+_fnLoadState(oSettings)}if(typeof oInit!="undefined"&&typeof oInit.aoData!="undefined"){oInit.aoColumns=oInit.aoData
+}if(typeof oInit.oLanguage!="undefined"){if(typeof oInit.oLanguage.sUrl!="undefined"){oSettings.oLanguage.sUrl=oInit.oLanguage.sUrl;
+$.getJSON(oSettings.oLanguage.sUrl,null,function(json){_fnLanguageProcess(oSettings,json,true)
+});bInitHandedOff=true}else{_fnLanguageProcess(oSettings,oInit.oLanguage,false)}}}if(typeof oInit!="undefined"&&typeof oInit.aoColumns!="undefined"){for(var i=0;
+i<oInit.aoColumns.length;i++){_fnAddColumn(oSettings,oInit.aoColumns[i])}}else{$("thead th",this).each(function(){_fnAddColumn(oSettings,null)
+})}if(bUsePassedData){for(var j=0;j<oInit.aaData.length;j++){_fnAddData(oSettings,oInit.aaData[j])
+}if($("thead",this).length===0){this.appendChild(document.createElement("thead"))
+}if($("tbody",this).length===0){this.appendChild(document.createElement("tbody"))
+}}else{_fnGatherData(oSettings)}oSettings.aiDisplay=oSettings.aiDisplayMaster.slice();
+if(oSettings.oFeatures.bAutoWidth){_fnCalculateColumnWidths(oSettings)}oSettings.bInitialised=true;
+if(bInitHandedOff===false){_fnInitalise(oSettings)}})}})(jQuery);
\ No newline at end of file

Added: oodt/trunk/balance/modules/cas-browser/static/js/querywidget.js
URL: http://svn.apache.org/viewvc/oodt/trunk/balance/modules/cas-browser/static/js/querywidget.js?rev=1296032&view=auto
==============================================================================
--- oodt/trunk/balance/modules/cas-browser/static/js/querywidget.js (added)
+++ oodt/trunk/balance/modules/cas-browser/static/js/querywidget.js Fri Mar  2 02:09:04 2012
@@ -0,0 +1,314 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var criteriaNum = 0;
+var allCriteria = new Array();
+var criteriaRoot = 0;
+var pCurrPage = 1;
+var pTotalPages = 0;
+var pPageSize = 0;
+var pNumPageProducts = 0;
+var pTotalProducts = 0;
+
+function encodeRequestData(key, value){
+	return escape(key) + "=" + value;
+}
+
+function displayPageInfo(){
+	pageInfo = '<div class="pp_pageLinks">';
+	if(pNumPageProducts > 0){
+		prodRangeStart = (pCurrPage - 1) * pPageSize + 1;
+		prodRangeEnd = (pCurrPage - 1) * pPageSize + pNumPageProducts;
+		pageInfo += 'Page ' + pCurrPage + ' of ' + pTotalPages + '&nbsp;';
+		pageInfo += '(Products ' + prodRangeStart + ' to ' + prodRangeEnd;
+		if(pTotalProducts > 0){
+			pageInfo += ', out of ' + pTotalProducts;
+		}
+		pageInfo += ')&nbsp;&nbsp;';
+		if(pCurrPage > 1){
+			pageInfo += '<a href="#" onclick="getPrevPage()">&lt;&lt;&nbsp;Previous Page</a>&nbsp;&nbsp;';
+		}
+		if(pCurrPage < pTotalPages){
+			pageInfo += '<a href="#" onclick="getNextPage()">Next Page&nbsp;&gt;&gt;</a>';
+		}
+	}else{
+		pageInfo += 'No products meet given criteria.';
+	}
+	pageInfo += '</div>';
+	$("#" + htmlID).prepend(pageInfo);
+}
+
+function formatCriteria(index){
+	if(allCriteria[index].type == 'term'){
+		requestData = encodeRequestData("Criteria[" + index + "][CriteriaType]", "Term");
+		requestData += '&' + encodeRequestData("Criteria[" + index + "][ElementName]", allCriteria[index].element);
+		requestData += '&' + encodeRequestData("Criteria[" + index + "][Value]", allCriteria[index].value);
+	}else if(allCriteria[index].type == 'range'){
+		requestData = encodeRequestData("Criteria[" + index + "][CriteriaType]", "Range");
+		requestData += '&' + encodeRequestData("Criteria[" + index + "][ElementName]", allCriteria[index].element);
+		requestData += '&' + encodeRequestData("Criteria[" + index + "][Min]", allCriteria[index].min);
+		requestData += '&' + encodeRequestData("Criteria[" + index + "][Max]", allCriteria[index].max);
+	}else if(allCriteria[index].type == 'boolean'){
+		requestData = encodeRequestData("Criteria[" + index + "][CriteriaType]", "Boolean");
+		requestData += '&' + encodeRequestData("Criteria[" + index + "][Operator]", allCriteria[index].operator);
+		for(i = 0; i < allCriteria[index].criteria.length; i++){
+			requestData += '&' + encodeRequestData("Criteria[" + index + "][CriteriaTerms][" + i + "]", allCriteria[index].criteria[i]);
+		}
+		for(i = 0; i < allCriteria[index].criteria.length; i++){
+			requestData +=  '&' + formatCriteria(allCriteria[index].criteria[i]);
+		}
+	}
+	return requestData;
+}
+
+function formatQueryRequest(expectedType){
+	showLoadingIcon();
+	requestData = encodeRequestData("Types[0]", ptName);
+	requestData += '&' + encodeRequestData("PagedResults", "1");
+	requestData += '&' + encodeRequestData("PageNum", pCurrPage);
+	requestData += '&' + encodeRequestData("RootIndex", criteriaRoot);
+	requestData += '&' + encodeRequestData("OutputFormat", expectedType);
+	requestData += '&' + formatCriteria(criteriaRoot);
+	displayPermalink();
+	$.post(siteUrl + "/queryScript.do",
+		requestData,
+		function(data){
+			hideLoadingIcon();
+			if(expectedType == "html"){
+				$("#" + htmlID).html(data);
+				currPage = parseInt($("#page_num").val());
+				totalPages = parseInt($("#total_pages").val());
+				pageSize = parseInt($("#page_size").val());
+				numPageProducts = $("#product_list > li").length;
+				totalTypeProducts = $("#total_type_products").val();
+			}else if(expectedType == "json"){
+				if(parseInt(data['Error']) == 1){
+					$("#" + htmlID).html('<div class="error">' + data['ErrorMsg'] + '</div>');
+					pCurrPage = 0;
+					pTotalPages = 0;
+					pPageSize = 0;
+					pNumPageProducts = 0;
+					pTotalProducts = 0;
+				}else{
+					renderJsonOutput(data);
+					pTotalPages = data['totalPages'];
+					pPageSize = data['pageSize'];
+					pNumPageProducts = data['results'].length;
+					pTotalProducts = data['totalProducts'];
+				}
+			}
+			displayPageInfo();
+		},
+		expectedType);
+}
+
+function formatCrossTypeQueryRequest(){
+	showLoadingIcon();
+	requestData = encodeRequestData("Types[0]", "*");
+	requestData += '&' + encodeRequestData("RootIndex", criteriaRoot);
+	requestData += '&' + formatCriteria(criteriaRoot);
+	requestData += '&' + encodeRequestData("PageNum", pCurrPage);
+	requestData += '&' + encodeRequestData("PageSize", pPageSize);
+	displayPermalink();
+	$.post(siteUrl + "/crossTypeQueryScript.do",
+		requestData,
+		function(data){
+		hideLoadingIcon();
+			if(parseInt(data['Error']) == 1){
+				$("#" + htmlID).html('<div class="error">' + data['ErrorMsg'] + '</div>');
+			}else{
+				renderJsonOutput(data);
+				pTotalPages = data['totalPages'];
+				pTotalProducts = data['totalProducts'];
+				pNumPageProducts = data['results'].length;
+				displayPageInfo();
+			}
+		},
+		"json");
+}
+
+function formatAllTypeRequest(){
+	showLoadingIcon();
+	requestData = encodeRequestData("PageNum", pCurrPage);
+	requestData += '&' + encodeRequestData("PageSize", pPageSize);
+	$.post(siteUrl + "/allTypeScript.do",
+		requestData,
+		function(data){
+			hideLoadingIcon();
+			if(parseInt(data['Error']) == 1){
+				$("#" + htmlID).html('<div class="error">' + data['ErrorMsg'] + '</div>');
+			}else{
+				renderJsonOutput(data);
+				pTotalPages = data['totalPages'];
+				pTotalProducts = data['totalProducts'];
+				pNumPageProducts = data['results'].length;
+				displayPageInfo();
+			}
+		},
+		"json");
+}
+
+function formatProductPageRequest(expectedType){
+	showLoadingIcon();
+	requestData = encodeRequestData("Type", ptName);
+	requestData += '&' + encodeRequestData("PageNum", pCurrPage);
+	requestData += '&' + encodeRequestData("OutputFormat", expectedType);
+	$.post(siteUrl + "/pageScript.do", 
+		requestData, 
+		function(data){
+			hideLoadingIcon();
+			if(expectedType == "html"){
+				$("#" + htmlID).html(data);
+				currPage = parseInt($("#page_num").val());
+				totalPages = parseInt($("#total_pages").val());
+				pageSize = parseInt($("#page_size").val());
+				numPageProducts = $("#product_list > li").length;
+				totalTypeProducts = 0;
+			}else if(expectedType == "json"){
+				if(parseInt(data['Error']) == 1){
+					$("#" + htmlID).html('<div class="error">' + data['ErrorMsg'] + '</div>');
+					pCurrPage = 0;
+					pTotalPages = 0;
+					pPageSize = 0;
+					pNumPageProducts = 0;
+					pTotalProducts = 0;
+				}else{
+					renderJsonOutput(data);
+					pTotalPages = data['totalPages'];
+					pPageSize = data['pageSize'];
+					pNumPageProducts = data['results'].length;
+					pTotalProducts = data['totalProducts'];
+				}
+			}
+			displayPageInfo();
+		},
+		expectedType);
+}
+
+// Determine whether to request a page or query, depending upon the presence
+// of any non-boolean criteria.  Returns 0 for a page and 1 for a query.
+function determineRequest(index){
+	if(allCriteria[index] == null){
+		return 0;
+	}
+	if(allCriteria[index].type != 'boolean'){
+		return 1;
+	}
+	for(i = 0; i < allCriteria[index].criteria.length; i++){
+		if(determineRequest(allCriteria[index].criteria[i])){
+			return 1;
+		}
+	}
+	return 0;
+}
+
+function sendRequest(expectedType){
+	if(determineRequest(criteriaRoot)){
+		formatQueryRequest(expectedType);
+	}else{
+		formatProductPageRequest(expectedType);
+	}
+}
+
+function sendCrossTypeRequest(){
+	if(determineRequest(criteriaRoot)){
+		formatCrossTypeQueryRequest();
+	}else{
+		if(parseInt(defaultShowEverything) == 1){
+			formatAllTypeRequest();
+		}else{
+			clearResults();
+		}
+	}
+}
+
+function addCriteria(){
+	index = criteriaNum;
+	criteriaNum++;
+	allCriteria[index] = new Object();
+	return index;
+}
+
+function addTermCriteria(elementName, value, parentIndex){
+	index = addCriteria();
+	allCriteria[index].type = 'term';
+	allCriteria[index].parentIndex = parentIndex;
+	allCriteria[index].element = elementName;
+	allCriteria[index].value = value;
+	if(parentIndex != null){
+		allCriteria[parentIndex].criteria.push(index);
+	}
+	return index;
+}
+
+function addRangeCriteria(elementName, min, max, parentIndex){
+	index = addCriteria();
+	allCriteria[index].type = 'range';
+	allCriteria[index].parentIndex = parentIndex;
+	allCriteria[index].element = elementName;
+	allCriteria[index].min = min;
+	allCriteria[index].max = max;
+	if(parentIndex != null){
+		allCriteria[parentIndex].criteria.push(index);
+	}
+	return index;
+}
+
+function addBooleanCriteria(operator, parentIndex){
+	index = addCriteria();
+	allCriteria[index].type = 'boolean';
+	allCriteria[index].parentIndex = parentIndex;
+	allCriteria[index].operator = operator;
+	allCriteria[index].criteria = new Array();
+	if(parentIndex != null){
+		allCriteria[parentIndex].criteria.push(allCriteria[index]);
+	}
+	return index;
+}
+
+function removeCriteria(index){
+	if(allCriteria[index].parentIndex != null){
+		parentCriteria = allCriteria[allCriteria[index].parentIndex];
+		for(i = 0; i < parentCriteria.criteria.length; i++){
+			if(parentCriteria.criteria[i] == index){
+				parentCriteria.criteria.splice(i, 1);
+				i = parentCriteria.criteria.length;
+			}
+		}
+	}
+	allCriteria[index] = null;
+}
+
+function showLoadingIcon(){
+	$("#" + htmlID).css("display", "none");
+	$("#" + loadingID).css("display", "block");
+}
+
+function hideLoadingIcon(){
+	$("#" + htmlID).css("display", "block");
+	$("#" + loadingID).css("display", "none");
+}
+
+function setExclusiveQuery(exclusive){
+	if(allCriteria[criteriaRoot]){
+		if(exclusive == true){
+			allCriteria[criteriaRoot].operator = 'and';
+		}else{
+			allCriteria[criteriaRoot].operator = 'or';
+		}
+	}
+}

Added: oodt/trunk/balance/modules/cas-browser/views/dataset.php
URL: http://svn.apache.org/viewvc/oodt/trunk/balance/modules/cas-browser/views/dataset.php?rev=1296032&view=auto
==============================================================================
--- oodt/trunk/balance/modules/cas-browser/views/dataset.php (added)
+++ oodt/trunk/balance/modules/cas-browser/views/dataset.php Fri Mar  2 02:09:04 2012
@@ -0,0 +1,100 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Load the module context for this module
+$module  = App::Get()->loadModule();
+
+require_once($module->modulePath . "/classes/CasBrowser.class.php");
+require_once($module->modulePath . "/scripts/widgets/MetadataDisplayWidget.php");
+
+// Get a CAS-Browser XML/RPC client
+$browser  = new CasBrowser();
+$client   = $browser->getClient();
+
+// Get a  Product Type object
+$productType = $client->getProductTypeById(App::Get()->request->segments[0]);
+$ptID = $productType->getId();
+$ptName = $productType->getName();
+
+// Determine the visibility level based on the current user
+$ptVisibilityLevel = $browser->getProductTypeVisibilityLevel($ptID);
+
+// Redirect the user if they are not authorized
+if ($ptVisibilityLevel == CasBrowser::VIS_NONE) {
+	App::Get()->redirect(SITE_ROOT . '/errors/403');
+}
+
+// Load a MetadataDisplayWidget with the visible metadata for this product type
+$typeMetadataWidget = new MetadataDisplayWidget(array());
+$typeMetadataWidget->loadMetadata($browser->getVisibleMetadataForProductType($ptID));
+
+// Create a MetadataDisplayWidget to display system metadata (all except typeMetadata)
+$typeMetadata = $productType->toAssocArray();
+unset($typeMetadata['typeMetadata']);
+$systemMetadataWidget = new MetadataDisplayWidget(array());
+$systemMetadataWidget->loadMetadata($typeMetadata);
+
+
+// Prepare BreadcrumbWigdet
+$bcw = new BreadcrumbsWidget();
+$bcw->add('Home',SITE_ROOT . '/');
+$bcw->add("Browse By Type", $module->moduleRoot . '/');
+$bcw->add($ptName);
+?>
+
+
+<div class="container">
+	<hr class="space" />
+
+	<div id="cas_browser_container">
+		<h2><?php echo $sortedMetadata['DataSetName'][0]?> <?php echo $ptName?></h2>
+		<hr />
+
+		<div id="section_type_metadata">
+			<h3>Description:</h3>
+			<p><?php echo $productType->getDescription()?></p>
+			<hr class="space" />
+
+			<ul class="tabmenu">
+				<li class="selected"><a href="<?php echo $module->moduleRoot?>/dataset/<?php echo $ptID?>">Additional Information</a></li>
+				<li class=""><a href="<?php echo $module->moduleRoot?>/products/<?php echo $ptID?>">Downloadable Files</a></li>
+			</ul>
+
+			<div id="additional-information">
+				<p>The following additional metadata information has been defined for this
+				dataset.</p>
+
+				<?php if ($ptVisibilityLevel == CasBrowser::VIS_LIMIT):?>
+				<div class="notice">Additional information may exist that is not visible
+				due to your current access permissions.</div>
+				<?php endif;?>
+
+				<?php echo $typeMetadataWidget->render()?>
+			</div>
+				
+			<div id="data"></div>
+		</div>
+
+		<?php if (!App::Get()->settings['browser_suppress_system_metadata']):?>
+		<div id="section_system_metadata">
+			<h3>System Metadata:</h3>
+			<?php echo $systemMetadataWidget->render()?>
+		</div>
+		<?php endif;?>
+	</div>
+</div>
\ No newline at end of file

Added: oodt/trunk/balance/modules/cas-browser/views/index.php
URL: http://svn.apache.org/viewvc/oodt/trunk/balance/modules/cas-browser/views/index.php?rev=1296032&view=auto
==============================================================================
--- oodt/trunk/balance/modules/cas-browser/views/index.php (added)
+++ oodt/trunk/balance/modules/cas-browser/views/index.php Fri Mar  2 02:09:04 2012
@@ -0,0 +1,87 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+$module = App::Get()->loadModule();
+require_once( $module->modulePath . "/classes/CasBrowser.class.php");
+require_once( $module->modulePath . "/scripts/widgets/ProductTypeListWidget.php");
+
+// Get a CAS-Browser XML/RPC client
+$browser = new CasBrowser();
+$client  = $browser->getClient();
+$isAlive = $client->isAlive();
+if ( !$isAlive ) {
+	App::Get()->SetMessage("Filemgr at ". $client->serverURL. " is down. Please start it.<br>",CAS_MSG_ERROR);
+} else{
+	
+// Get a list of the product types managed by this server
+$response     = $client->getProductTypes();
+$productTypes = array();
+
+foreach ($response as $pt) {
+	$ptArray = $pt->toAssocArray();
+	
+	$ptVisibility = $browser->getProductTypeVisibilityLevel($pt->getId());
+	
+	if ($ptVisibility == CasBrowser::VIS_NONE) { continue; }
+
+	$merged = array(
+		"name" => array(
+			$ptArray[App::Get()->settings['browser_pt_name_key']],
+			$client->getNumProducts($pt)),
+		"description" => array($ptArray[App::Get()->settings['browser_pt_desc_key']]),
+		"id" => array($ptArray[App::Get()->settings['browser_pt_id_key']]));
+	$merged += $ptArray['typeMetadata'];
+	
+	$productTypes[$ptArray[App::Get()->settings['browser_pt_id_key']]] = $merged;
+}
+$productTypeListWidget = new ProductTypeListWidget(array("productTypes" => $productTypes));
+$productTypeListWidget->setUrlBase($module->moduleRoot);
+}
+
+// Prepare BreadcrumbWigdet
+$bcw = new BreadcrumbsWidget();
+$bcw->add('Home',SITE_ROOT . '/');
+$bcw->add("Browse By Type");
+?>
+
+<script type="text/javascript" src="<?php echo $module->moduleStatic?>/js/jquery.dataTables.min.js"></script>
+<script type="text/javascript">
+$(document).ready(function() {
+	// Turn the table into a sortable, searchable table
+	$("#productTypeSearch").dataTable();
+	// Give the search box the initial focus
+	$("#productTypeSearch_filter > input").focus();
+}); 
+</script>
+
+<div class="container">
+
+<?php if ( $isAlive ) :?>
+<hr class="space"/>
+<div id="cas_browser_container" class="span-22 last prepend-1 append-1">
+	<h2 id="cas_browser_title"><?php echo App::Get()->settings['browser_index_title_text']?></h2>
+	<ul class="tabmenu">
+		<li class="selected"><a href="<?php echo $module->moduleRoot?>/">Browse By Type</a></li>
+		<li class=""><a href="<?php echo $module->moduleRoot?>/typesearch/">Browse Across Types</a></li>
+	</ul>
+	<br class="fiftyPx"/>
+<?php $productTypeListWidget->render();?>
+</div>
+<hr class="space"/>
+</div>
+<?php endif; ?>
\ No newline at end of file

Added: oodt/trunk/balance/modules/cas-browser/views/product.php
URL: http://svn.apache.org/viewvc/oodt/trunk/balance/modules/cas-browser/views/product.php?rev=1296032&view=auto
==============================================================================
--- oodt/trunk/balance/modules/cas-browser/views/product.php (added)
+++ oodt/trunk/balance/modules/cas-browser/views/product.php Fri Mar  2 02:09:04 2012
@@ -0,0 +1,84 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+$module = App::Get()->loadModule();
+require_once($module->modulePath . "/classes/CasBrowser.class.php");
+require_once($module->modulePath . "/scripts/widgets/MetadataDisplayWidget.php");
+require_once($module->modulePath . "/scripts/widgets/ProductDownloadWidget.php");
+
+// Get a CAS-Browser XML/RPC client
+$browser  = new CasBrowser();
+$client   = $browser->getClient();
+    
+// Get the specified product
+$productId = App::Get()->request->segments[0];
+$product = $client->getProductById($productId);
+$productName     = $product->getName();
+$productTypeName = $product->getType()->getName();
+$productTypeId   = $product->getType()->getId();
+$productMetadata = $client->getMetadata($product);
+
+// Get metadata for product and productType as associative arrays
+$productTypeInfo = $product->getType()->toAssocArray();
+$productInfo     = $productMetadata->toAssocArray();
+
+$productVisibilityLevel = $browser->getProductVisibilityLevel($productId);
+
+// Redirect the user if they are not authorized 
+if ($productVisibilityLevel == CasBrowser::VIS_NONE) {
+	App::Get()->redirect(SITE_ROOT . '/errors/403');
+}
+
+
+// Create and load a MetadataDisplay widget wit the visible metadata
+$metadataWidget = new MetadataDisplayWidget(array());
+$metadataWidget->loadMetadata($browser->getVisibleMetadataForProduct($productId));
+
+// Record the product page to send the user back to, if provided
+$returnPage = isset(App::Get()->request->segments[1]) ? App::Get()->request->segments[1] : 1;
+
+// Create a ProductDownloadWidget
+$productDownloadWidget = new ProductDownloadWidget(array(
+	"dataDeliveryUrl" => App::Get()->settings['browser_datadeliv_url']));
+$productDownloadWidget->setClient($client);
+$productDownloadWidget->load($product);
+
+// Add the cas-browser styles
+App::Get()->response->addStylesheet($module->moduleStatic . '/css/cas-browser.css');
+
+// Prepare BreadcrumbWigdet
+$bcw = new BreadcrumbsWidget();
+$bcw->add('Home',SITE_ROOT . '/');
+$bcw->add('Browse By Type', $module->moduleRoot . '/');
+$bcw->add($productTypeName, $module->moduleRoot."/dataset/{$productTypeId}");	
+$bcw->add('Products', $module->moduleRoot."/products/{$productTypeId}/page/{$returnPage}");
+$bcw->add(App::Get()->request->segments[0]);
+?>
+
+
+<hr class="space"/>
+<div class="span-22 last prepend-1 append-1">
+	<div id="cas_browser_product_metadata">
+		<h2 class="larger loud">Product Metadata: <?php echo wordwrap($productName, 62, "<br />",true);?></h2>
+		<?php $metadataWidget->render()?>
+	</div>
+	<div id="cas_browser_product_download">
+		<h2 class="larger loud">Download this Product:</h2>
+		<?php $productDownloadWidget->render()?>
+	</div>
+</div>

Added: oodt/trunk/balance/modules/cas-browser/views/products.php
URL: http://svn.apache.org/viewvc/oodt/trunk/balance/modules/cas-browser/views/products.php?rev=1296032&view=auto
==============================================================================
--- oodt/trunk/balance/modules/cas-browser/views/products.php (added)
+++ oodt/trunk/balance/modules/cas-browser/views/products.php Fri Mar  2 02:09:04 2012
@@ -0,0 +1,156 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+$module = App::Get()->loadModule();
+require_once($module->modulePath . "/classes/CasBrowser.class.php");
+require_once($module->modulePath . "/scripts/widgets/FilterWidget.php");
+require_once($module->modulePath . "/scripts/widgets/ProductPageWidget.php");
+
+// Get a CAS-Browser XML/RPC client
+$browser  = new CasBrowser();
+$client   = $browser->getClient();
+ 
+// Get a  Product Type object
+$productType = $client->getProductTypeById(App::Get()->request->segments[0]);
+$ptID     = $productType->getId();
+$ptName   = $productType->getName();
+$typeInfo = $productType->toAssocArray();
+
+// Determine the visibility level based on the current user
+$ptVisibilityLevel = $browser->getProductTypeVisibilityLevel($ptID);
+
+// Redirect the user if they are not authorized
+if ($ptVisibilityLevel == CasBrowser::VIS_NONE) {
+	App::Get()->redirect(SITE_ROOT . '/errors/403');
+}
+
+// Store any filter parameters passed in via URL
+$filterParams = array();
+$segments = App::Get()->request->segments;
+for($index = 1; isset($segments[$index]) && $segments[$index] != ""; $index = $index + 2){
+	array_push($filterParams, array($segments[$index], $segments[$index + 1]));
+}
+if(count($filterParams) > 0){
+	$filterButtonValue = "Hide Filters";
+}else{
+	$filterButtonValue = "Show Filters";
+}
+
+// Initialize the FilterWidget
+$querySiteRoot = (isset(App::Get()->settings['query_service_url']))
+	? App::Get()->settings['query_service_url']
+	: 'http://' . $_SERVER['HTTP_HOST'] . $module->moduleRoot;
+$resultFormat = "json";
+$filterWidget = new FilterWidget(array(
+	'productType'  => $productType,
+	'htmlID'       => 'cas_browser_product_list',
+	'loadingID'    => 'loading_icon_container',	
+	'siteUrl'      => $querySiteRoot,
+	'pagedResults' => true,
+	'resultFormat' => $resultFormat));
+$filterWidget->renderScript();
+
+// Determine whether to show the download widget
+$showDownloadWidget = (isset(App::Get()->settings['browser_show_download_widget']) 
+	&& App::Get()->settings['browser_show_download_widget'] == 0)
+	? false
+	: true;
+	
+// Prepare BreadcrumbWigdet
+$bcw = new BreadcrumbsWidget();
+$bcw->add('Home',SITE_ROOT . '/');
+$bcw->add("Browse By Type", $module->moduleRoot . '/');
+$bcw->add($ptName, $module->moduleRoot."/dataset/{$ptID}");	
+$bcw->add("Products");
+?>
+
+<script type="text/javascript">
+$(document).ready(function() {
+
+	$('#showFilters').click(function() {
+		if ($(this).val() == "Show Filters") {
+			$('#filter_widget').fadeIn('slow');
+			$(this).val('Hide Filters');
+		} else {
+			$('#filter_widget').fadeOut('slow');
+			$(this).val('Show Filters');
+		}
+	});
+
+	<?php
+	if(count($filterParams) > 0){
+		foreach($filterParams as $filter){
+			echo "createFilter('" . $filter[0] . "','" . $filter[1] . "');\n";
+		}
+		echo 'displayPermalink();';
+		echo '$("#filter_widget").css("display", "block");';
+	}
+	?>
+
+	sendRequest(<?php echo '"' . $resultFormat . '"'; ?>);
+	
+});
+</script>
+<div class="container">
+<hr class="space"/>
+<div id="cas_browser_container" class="span-24 last">
+
+	<div id="section_products">
+		<h2 ><?php echo $ptName?></h2>
+		<hr/>
+		
+		<div id="section_type_metadata">
+			<h3>Description:</h3>
+			<p><?php echo $typeInfo['description']?></p>
+			<hr class="space"/>
+			
+			<ul class="tabmenu">
+				<li class="">        <a href="<?php echo $module->moduleRoot?>/dataset/<?php echo $ptID?>">Additional Information</a></li>
+				<li class="selected"><a href="<?php echo $module->moduleRoot?>/products/<?php echo $ptID?>">Downloadable Files</a></li>
+			</ul>
+		</div>
+		<?php if ( $ptVisibilityLevel == CasBrowser::VIS_LIMIT ):?>
+		<div class="notice">
+			Additional information may exist that is not visible due to your current access permissions.
+		</div>
+		<?php endif;?>
+		
+		<div id="section_filter_tools_container">
+			<div id="section_filter_tools_buttons">
+				<input type="button" id="showFilters" value=<?php echo '"' . $filterButtonValue . '"';?>/>
+			</div>
+			<div id="section_filter_tools">
+				<div id="filter_widget">
+					Filter: <?php $filterWidget->render(); ?>
+					<input type="hidden" id="page_num" value="1">
+				</div>
+			</div>
+		</div>
+		<?php if ( !App::Get()->settings['browser_private_products_visibility'] && $ptVisibilityLevel == CasBrowser::VIS_LIMIT ):?>
+		<h3>Public Downloadable Files for this Dataset</h3>
+		<?php else :?>
+		<h3>Downloadable Files for this Dataset</h3>
+		<?php endif;?>
+		<div id="loading_icon_container">
+		<img src="<?php echo App::Get()->request->moduleStatic . '/img/loading.gif'; ?>"/>
+		</div>
+		<div id="cas_browser_product_list"></div>
+		
+	</div>
+</div>
+</div>

Added: oodt/trunk/balance/modules/cas-browser/views/search.php
URL: http://svn.apache.org/viewvc/oodt/trunk/balance/modules/cas-browser/views/search.php?rev=1296032&view=auto
==============================================================================
--- oodt/trunk/balance/modules/cas-browser/views/search.php (added)
+++ oodt/trunk/balance/modules/cas-browser/views/search.php Fri Mar  2 02:09:04 2012
@@ -0,0 +1,89 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+$module = App::Get()->loadModule();
+
+require_once($module->modulePath . "/classes/CasBrowser.class.php");
+
+// Get a CAS-Browser XML/RPC client
+$browser  = new CasBrowser();
+$client   = $browser->getClient();
+ 
+// Get a  Product Type object
+$productType  = $client->getProductTypeById(App::Get()->request->segments[0]);
+$productCount = $client->getNumProducts($productType);
+$ptID = $productType->getId();
+$ptName = $productType->getName();
+
+// Determine which search widget to show
+$widgetClassName = isset(App::Get()->settings['browser_product_search_widget'])
+	? App::Get()->settings['browser_product_search_widget']
+	: 'FilterWidget';
+
+$querySiteRoot = (isset(App::Get()->settings['query_service_url']))
+	? App::Get()->settings['query_service_url']
+	: 'http://' . $_SERVER['HTTP_HOST'] . MODULE_ROOT;
+
+// Create the search widget
+require_once($module->modulePath . "/scripts/widgets/{$widgetClassName}.php");
+$searchWidget = new $widgetClassName(array(
+	'productType'=>$productType,
+	'htmlID'=>'cas_browser_product_list',
+	'siteUrl'=>$querySiteRoot,
+	'pagedResults'=>true,
+	'resultFormat'=>'json'));
+
+// Render search widget javascript
+$searchWidget->renderScript();
+
+// Prepare BreadcrumbWigdet
+$bcw = new BreadcrumbsWidget();
+$bcw->add('Home',SITE_ROOT . '/');
+$bcw->add("Browser", $module->moduleRoot . '/');
+$bcw->add($ptName, $module->moduleRoot."/dataset/{$ptID}");	
+$bcw->add("Product Search");
+?>
+
+<div class="container">
+<hr class="space"/>
+<div id="cas_browser_container" class="span-24 last">
+	<ul class="tabs">
+	  <li><a id="tab_metadata" href="<?php echo MODULE_ROOT?>/dataset/<?php echo $ptID?>">Metadata</a></li>
+	  <li><a id="tab_browse"   href="<?php echo MODULE_ROOT?>/products/<?php echo $ptID?>">Browse</a></li>
+	  <li><a id="tab_search"   href="<?php echo MODULE_ROOT?>/search/<?php echo $ptID?>" class="selected">Search</a></li>
+	</ul>
+	<div id="section_products">
+		<h2 class="larger loud">Product Search: <?php echo $ptName?></h2>
+		<br/>
+		<div id="cas_browser_search_widget" class="span-24 last">
+	  		<?php $searchWidget->render(); ?>
+			<input type="hidden" id="page_num" value="1">
+		</div>
+		<div id="cas_browser_product_list" class="span-16 colborder">
+	  		<h3>Product Search Results</h3>
+		</div>
+		<div id="cas_browser_dataset_download" class="span-6 last">
+			<a href="<?php echo App::Get()->settings['browser_datadeliv_url']?>/dataset?typeID=<?php echo App::Get()->request->segments[0]?>&format=application/x-zip">
+				<img src="<?php echo MODULE_STATIC?>/img/zip-icon-smaller.gif" id="zip_icon" alt="zip-icon"/>
+			</a>
+			Click on the icon to download all <?php echo $productCount ?> data products associated with
+			this search as a single Zip archive.<br/>
+		</div>
+	</div>
+</div>
+</div>

Added: oodt/trunk/balance/modules/cas-browser/views/typesearch.php
URL: http://svn.apache.org/viewvc/oodt/trunk/balance/modules/cas-browser/views/typesearch.php?rev=1296032&view=auto
==============================================================================
--- oodt/trunk/balance/modules/cas-browser/views/typesearch.php (added)
+++ oodt/trunk/balance/modules/cas-browser/views/typesearch.php Fri Mar  2 02:09:04 2012
@@ -0,0 +1,121 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+$module = App::Get()->loadModule();
+require_once($module->modulePath . "/classes/CasBrowser.class.php");
+require_once($module->modulePath . "/scripts/widgets/CrossTypeSearchWidget.php");
+
+// Get a CAS-Browser XML/RPC client
+$browser  = new CasBrowser();
+$client   = $browser->getClient();
+
+// Initialize the CrossTypeSearchWidget
+$querySiteRoot = (isset(App::Get()->settings['query_service_url']))
+	? App::Get()->settings['query_service_url']
+	: 'http://' . $_SERVER['HTTP_HOST'] . $module->moduleRoot;
+$crossTypeWidget = new CrossTypeSearchWidget(array(
+	'htmlID'       => 'cas_browser_product_list',
+	'loadingID'    => 'loading_icon_container',
+	'siteUrl'      => $querySiteRoot));
+$crossTypeWidget->renderScript();
+	
+// Store any filter and exclusive/inclusive parameters passed in via URL
+$urlParams = CrossTypeSearchWidget::parseSegments();
+$queryBoolValue = 'and';
+$exclusiveChecked = true;
+if(isset($urlParams['filterParams'])){
+	$filterButtonValue = "Hide Filters";
+}else{
+	$filterButtonValue = "Show Filters";
+}
+if(isset($urlParams['exclusive'])){
+	$queryBoolValue = $urlParams['exclusive']['bool'];
+	$exclusiveChecked = $urlParams['exclusive']['checked'];
+}
+
+// Prepare BreadcrumbWigdet
+$bcw = new BreadcrumbsWidget();
+$bcw->add('Home',SITE_ROOT . '/');
+$bcw->add("Browse Across Types");	
+?>
+
+<script type="text/javascript" src="<?php echo $module->moduleStatic?>/js/jquery.dataTables.min.js"></script>
+<script type="text/javascript">
+$(document).ready(function() {
+
+	$('#showFilters').click(function() {
+		if ($(this).val() == "Show Filters") {
+			$('#filter_widget').fadeIn('slow');
+			$(this).val('Hide Filters');
+		} else {
+			$('#filter_widget').fadeOut('slow');
+			$(this).val('Show Filters');
+		}
+	});
+
+	pPageSize = 20;
+
+	addBooleanCriteria(<?php echo "'" . $queryBoolValue . "'"; ?>, null);
+
+	<?php
+	if(isset($urlParams['filterParams'])){
+		foreach($urlParams['filterParams'] as $filter){
+			echo "createFilter('" . $filter[0] . "','" . $filter[1] . "');\n";
+		}
+		if($exclusiveChecked == false){
+			echo '$("#exclusive").attr("checked", false);';
+		}
+		echo 'displayPermalink();';
+		echo '$("#filter_widget").css("display", "block");';
+	}
+	?>
+
+	sendCrossTypeRequest();
+	
+});
+</script>
+<div class="container">
+<hr class="space"/>
+<div id="cas_browser_container" class="span-24 last">
+	<div id="section_products">
+		<h2 ><?php echo "Cross Product Type Search"?></h2>
+		<ul class="tabmenu">
+			<li class=""><a href="<?php echo $module->moduleRoot?>/">Browse By Type</a></li>
+			<li class="selected"><a href="<?php echo $module->moduleRoot?>/typesearch/">Browse Across Types</a></li>
+		</ul>
+		<hr class="space"/>
+		
+		<div id="section_filter_tools_container">
+			<div id="section_filter_tools_buttons">
+				<input type="button" id="showFilters" value=<?php echo '"' . $filterButtonValue . '"';?> />
+			</div>
+			<div id="section_filter_tools">
+				<div id="filter_widget">
+					Filter: <?php $crossTypeWidget->render(); ?>
+				</div>
+			</div>
+		</div>
+		
+		<br/>
+		<div id="loading_icon_container">
+		<img src="<?php echo App::Get()->request->moduleStatic . '/img/loading.gif'; ?>"/>
+		</div>
+		<div id="cas_browser_product_list"></div>
+	</div>
+</div>
+</div>
\ No newline at end of file