diff --git a/www/extras/wobject/Matrix/matrix.js b/www/extras/wobject/Matrix/matrix.js
new file mode 100644
index 000000000..f31787aea
--- /dev/null
+++ b/www/extras/wobject/Matrix/matrix.js
@@ -0,0 +1,85 @@
+YAHOO.util.Event.addListener(window, "load", function() {
+ YAHOO.example.XHR_JSON = new function() {
+ this.formatUrl = function(elCell, oRecord, oColumn, sData) {
+ elCell.innerHTML = "" + sData + "";
+ };
+
+ var myColumnDefs = [
+ {key:"checkBox",label:"",sortable:false},
+ {key:"title", label:"Name", sortable:true, formatter:this.formatUrl},
+ {key:"views", sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_DESC}},
+ {key:"clicks", sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_DESC}},
+ {key:"compares", sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_DESC}},
+ {key:"lastUpdated", sortable:true, sortOptions:{defaultDir:YAHOO.widget.DataTable.CLASS_DESC}}
+ ];
+
+ var uri = "func=getCompareFormData";
+ if(typeof(listingIds) != 'undefined'){
+ for (var i = 0; i < listingIds.length; i++) {
+ uri = uri+';listingId='+listingIds[i];
+ }
+ }
+
+ this.myDataSource = new YAHOO.util.DataSource("?");
+ this.myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
+ this.myDataSource.connXhrMode = "queueRequests";
+ this.myDataSource.responseSchema = {
+ resultsList: "ResultSet.Result",
+ fields: ["title","views","clicks","compares","checkBox","checked","lastUpdated","url"]
+ };
+
+ this.myDataTable = new YAHOO.widget.DataTable("compareForm", myColumnDefs,
+ this.myDataSource, {initialRequest:uri});
+
+ this.myDataTable.hideColumn(this.myDataTable.getColumn(2));
+ this.myDataTable.hideColumn(this.myDataTable.getColumn(3));
+ this.myDataTable.hideColumn(this.myDataTable.getColumn(4));
+ this.myDataTable.hideColumn(this.myDataTable.getColumn(5));
+
+ var btnSortByViews = new YAHOO.widget.Button("sortByViews");
+ btnSortByViews.on("click", function(e) {
+ this.myDataTable.sortColumn(this.myDataTable.getColumn(2));
+ },this,true);
+
+ var btnSortByClicks = new YAHOO.widget.Button("sortByClicks");
+ btnSortByClicks.on("click", function(e) {
+ this.myDataTable.sortColumn(this.myDataTable.getColumn(3));
+ },this,true);
+
+ var btnSortByCompares = new YAHOO.widget.Button("sortByCompares");
+ btnSortByCompares.on("click", function(e) {
+ this.myDataTable.sortColumn(this.myDataTable.getColumn(4));
+ },this,true);
+
+ var btnSortByUpdated = new YAHOO.widget.Button("sortByUpdated");
+ btnSortByUpdated.on("click", function(e) {
+ this.myDataTable.sortColumn(this.myDataTable.getColumn(5));
+ },this,true);
+
+ var myCallback = function() {
+ this.set("sortedBy", null);
+ this.onDataReturnAppendRows.apply(this,arguments);
+ };
+
+ var btnCompare = new YAHOO.widget.Button("compare",{disabled:true,id:"compareButton"});
+ btnCompare.on("click", function(e) {
+ window.document.forms['doCompare'].submit();
+ },this,true);
+
+ window.compareFormButton = function() {
+ var compareCheckBoxes = YAHOO.util.Dom.getElementsByClassName('compareCheckBox','input');
+ var checked = 0;
+ for (var i = compareCheckBoxes.length; i--; ) {
+ if(compareCheckBoxes[i].checked){
+ checked++;
+ }
+ }
+ if (checked > 1 && checked < maxComparisons){
+ btnCompare.set("disabled",false);
+ }else{
+ btnCompare.set("disabled",true);
+ }
+ }
+ };
+});
+
diff --git a/www/extras/wobject/Matrix/matrixCompareList.js b/www/extras/wobject/Matrix/matrixCompareList.js
new file mode 100644
index 000000000..e51305daf
--- /dev/null
+++ b/www/extras/wobject/Matrix/matrixCompareList.js
@@ -0,0 +1,142 @@
+YAHOO.util.Event.addListener(window, "load", function() {
+ YAHOO.example.XHR_JSON = new function() {
+ var Dom = YAHOO.util.Dom;
+ var hideStickies = 0;
+
+ this.formatStickied = function(elCell, oRecord, oColumn, sData) {
+ elCell.innerHTML = "";
+ };
+
+ this.formatColors = function(elCell, oRecord, oColumn, sData) {
+ var colorField = oColumn.key + "_compareColor";
+ var color = oRecord.getData(colorField);
+ if(color){
+ Dom.setStyle(elCell.parentNode, "background-color", color);
+ }
+ elCell.innerHTML = sData;
+ };
+
+ YAHOO.widget.DataTable.Formatter.formatColors = this.formatColors;
+
+ var myColumnDefs = [
+ {key:"stickied",formatter:this.formatStickied},
+ {key:"name"}
+ ];
+
+ this.myDataSource = new YAHOO.util.DataSource("?");
+ this.myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
+ this.myDataSource.connXhrMode = "queueRequests";
+ this.myDataSource.responseSchema = {
+ resultsList: "ResultSet.Result",
+ fields: columnKeys
+ };
+
+ var uri = "func=getCompareListData";
+ for (var i = 0; i < listingIds.length; i++) {
+ uri = uri+';listingId='+listingIds[i];
+ }
+
+ var myDataTable = new YAHOO.widget.DataTable("compareList", myColumnDefs,
+ this.myDataSource, {initialRequest:uri});
+
+
+ this.myDataSource.doBeforeParseData = function (oRequest, oFullResponse) {
+ myDataTable.getRecordSet().reset();
+ var existingColumns = myDataTable.getColumnSet().keys;
+ for (var i = 0; i < existingColumns.length; i++) {
+ if(i > 1){
+ // after deleting a column the next column will
+ // allways be no. 2 (the third in the array)
+ myDataTable.removeColumn(existingColumns[2]);
+ }
+ }
+ if (oFullResponse.ColumnDefs) {
+ var len = oFullResponse.ColumnDefs.length;
+
+ for (var i = 0; i < len; i++) {
+ var c = oFullResponse.ColumnDefs[i];
+ myDataTable.insertColumn(c);
+ }
+ }
+ return oFullResponse;
+ }
+
+ var myCallback = function() {
+ this.set("sortedBy", null);
+ this.onDataReturnAppendRows.apply(this,arguments);
+ };
+
+ var myCallback2 = function() {
+ this.set("sortedBy", null);
+ this.onDataReturnAppendRows.apply(this,arguments);
+ };
+
+
+ var callback2 = {
+ success : myCallback,
+ failure : myCallback,
+ scope : myDataTable
+ };
+
+ var btnCompare = new YAHOO.widget.Button("compare",{disabled:true,id:"compareButton"});
+ btnCompare.on("click", function(e) {
+ var uri = "func=getCompareListData";
+ for (var i = 0; i < columnKeys.length; i++) {
+ if(columnKeys[i] != 'name'){
+ var checkBox = new Dom.get(columnKeys[i] + '_checkBox');
+ if(checkBox.checked == true){
+ uri = uri+';listingId='+columnKeys[i];
+ }
+ }
+ }
+ this.myDataSource.sendRequest(uri,callback2);
+ },this,true);
+
+ window.compareFormButton = function() {
+ var compareCheckBoxes = YAHOO.util.Dom.getElementsByClassName('compareCheckBox','input');
+ var checked = 0;
+ for (var i = compareCheckBoxes.length; i--; ) {
+ if(compareCheckBoxes[i].checked){
+ checked++;
+ }
+ }
+ if (checked > 1 && checked < maxComparisons){
+ btnCompare.set("disabled",false);
+ }else{
+ btnCompare.set("disabled",true);
+ }
+ }
+
+ var btnStickied = new YAHOO.widget.Button("stickied");
+ btnStickied.on("click", function(e) {
+ var elements = myDataTable.getRecordSet().getRecords();
+ if(hideStickies == 0){
+ // hide non-selected attributes
+ for(i=0; i" + sData + "";
+ };
+
+ var myColumnDefs = [
+ {key:"checkBox",label:""},
+ {key:"title", label:"Name", sortable:true, formatter:this.formatUrl},
+ {key:"views", sortable:true},
+ {key:"clicks", sortable:true},
+ {key:"compares", sortable:true}
+ ];
+
+ var uri = "func=getCompareFormData";
+ if(typeof(listingIds) != 'undefined'){
+ for (var i = 0; i < listingIds.length; i++) {
+ uri = uri+';listingId='+listingIds[i];
+ }
+ }
+
+ this.myDataSource = new YAHOO.util.DataSource("?");
+ this.myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
+ this.myDataSource.connXhrMode = "queueRequests";
+ this.myDataSource.responseSchema = {
+ resultsList: "ResultSet.Result",
+ fields: ["title","views","clicks","compares","checkBox","checked","url"]
+ };
+
+ var myDataTable = new YAHOO.widget.DataTable("compareForm", myColumnDefs,
+ this.myDataSource, {initialRequest:uri});
+
+ this.myDataSource.doBeforeParseData = function (oRequest, oFullResponse) {
+ myDataTable.getRecordSet().reset();
+ return oFullResponse;
+ }
+ var myDataSource = this.myDataSource;
+
+ var myCallback = function() {
+ myDataTable.getRecordSet().reset();
+ this.set("sortedBy", null);
+ this.onDataReturnAppendRows.apply(this,arguments);
+ compareFormButton();
+ };
+
+ var callback2 = {
+ success : myCallback,
+ failure : myCallback,
+ scope : myDataTable
+ };
+
+ var reloadCompareForm = function() {
+ var attributeSelects = YAHOO.util.Dom.getElementsByClassName('attributeSelect','select');
+ var newUri = "func=getCompareFormData;search=1";
+ for (var i = attributeSelects.length; i--; ) {
+ newUri = newUri + ';search_' + attributeSelects[i].id + '=' + attributeSelects[i].value;
+ }
+ var elements = myDataTable.getRecordSet().getRecords();
+ for(i=0; i 1 && checked < maxComparisons){
+ btnCompare.set("disabled",false);
+ }else{
+ btnCompare.set("disabled",true);
+ }
+ }
+ };
+});
+