//--------------------------------------------------------------
// Copyright (C) 2006 Michael Schwarz (http://www.ajaxpro.info).
// All rights reserved.
//--------------------------------------------------------------
// Converter.js
// NameValueCollectionConverter
if(typeof Ajax == "undefined") Ajax={};
if(typeof Ajax.Web == "undefined") Ajax.Web={};
if(typeof Ajax.Web.NameValueCollection == "undefined") Ajax.Web.NameValueCollection={};
Ajax.Web.NameValueCollection = function(items) {
this.__type = "System.Collections.Specialized.NameValueCollection";
this.keys = [];
this.values = [];
if(items != null && !isNaN(items.length)) {
for(var i=0; i<items.length; i++)
this.add(items[i][0], items[i][1]);
}
};
Object.extend(Ajax.Web.NameValueCollection.prototype, {
add: function(k, v) {
if(k == null || k.constructor != String || v == null || v.constructor != String)
return -1;
this.keys.push(k);
this.values.push(v);
return this.values.length -1;
},
containsKey: function(key) {
for(var i=0; i<this.keys.length; i++) {
if(this.keys[i] == key) return true;
}
return false;
},
getKeys: function() {
return this.keys;
},
getValue: function(k) {
for(var i=0; i<this.keys.length && i<this.values.length; i++) {
if(this.keys[i] == k) return this.values[i];
}
return null;
},
setValue: function(k, v) {
if(k == null || k.constructor != String || v == null || v.constructor != String)
return -1;
for(var i=0; i<this.keys.length && i<this.values.length; i++) {
if(this.keys[i] == k) this.values[i] = v;
return i;
}
return this.add(k, v);
},
toJSON: function() {
return AjaxPro.toJSON({__type:this.__type,keys:this.keys,values:this.values});
}
}, true);
// DataSetConverter
if(typeof Ajax == "undefined") Ajax={};
if(typeof Ajax.Web == "undefined") Ajax.Web={};
if(typeof Ajax.Web.DataSet == "undefined") Ajax.Web.DataSet={};
Ajax.Web.DataSet = function(t) {
this.__type = "System.Data.DataSet,System.Data";
this.Tables = [];
this.addTable = function(t) {
this.Tables.push(t);
};
if(t != null) {
for(var i=0; i<t.length; i++) {
this.addTable(t[i]);
}
}
};
// DataTableConverter
if(typeof Ajax == "undefined") Ajax={};
if(typeof Ajax.Web == "undefined") Ajax.Web={};
if(typeof Ajax.Web.DataTable == "undefined") Ajax.Web.DataTable={};
Ajax.Web.DataTable = function(c, r) {
this.__type = "System.Data.DataTable,System.Data";
this.Columns = [];
this.Rows = [];
this.addColumn = function(name, type) {
this.Columns.push({Name:name,__type:type});
};
this.toJSON = function() {
var dt = {};
var i;
dt.Columns = [];
for(i=0; i<this.Columns.length; i++)
dt.Columns.push([this.Columns[i].Name, this.Columns[i].__type]);
dt.Rows = [];
for(i=0; i<this.Rows.length; i++) {
var row = [];
for(var j=0; j<this.Columns.length; j++)
row.push(this.Rows[i][this.Columns[j].Name]);
dt.Rows.push(row);
}
return AjaxPro.toJSON(dt);
};
this.addRow = function(row) {
this.Rows.push(row);
};
if(c != null) {
for(var i=0; i<c.length; i++)
this.addColumn(c[i][0], c[i][1]);
}
if(r != null) {
for(var y=0; y<r.length; y++) {
var row = {};
for(var z=0; z<this.Columns.length && z<r[y].length; z++)
row[this.Columns[z].Name] = r[y][z];
this.addRow(row);
}
}
};
// ProfileBaseConverter
if(typeof Ajax == "undefined") Ajax={};
if(typeof Ajax.Web == "undefined") Ajax.Web={};
if(typeof Ajax.Web.Profile == "undefined") Ajax.Web.Profile={};
Ajax.Web.Profile = function() {
this.toJSON = function() {
throw "Ajax.Web.Profile cannot be converted to JSON format.";
};
this.setProperty_callback = function(res) {
};
this.setProperty = function(name, object) {
this[name] = object;
AjaxPro.Services.Profile.SetProfile({name:o}, this.setProperty_callback.bind(this));
};
};
// IDictionaryConverter
if(typeof Ajax == "undefined") Ajax={};
if(typeof Ajax.Web == "undefined") Ajax.Web={};
if(typeof Ajax.Web.Dictionary == "undefined") Ajax.Web.Dictionary={};
Ajax.Web.Dictionary = function(type,items) {
this.__type = type;
this.keys = [];
this.values = [];
if(items != null && !isNaN(items.length)) {
for(var i=0; i<items.length; i++)
this.add(items[i][0], items[i][1]);
}
};
Object.extend(Ajax.Web.Dictionary.prototype, {
add: function(k, v) {
this.keys.push(k);
this.values.push(v);
return this.values.length -1;
},
containsKey: function(key) {
for(var i=0; i<this.keys.length; i++) {
if(this.keys[i] == key) return true;
}
return false;
},
getKeys: function() {
return this.keys;
},
getValue: function(key) {
for(var i=0; i<this.keys.length && i<this.values.length; i++) {
if(this.keys[i] == key){ return this.values[i]; }
}
return null;
},
setValue: function(k, v) {
for(var i=0; i<this.keys.length && i<this.values.length; i++) {
if(this.keys[i] == k){ this.values[i] = v; }
return i;
}
return this.add(k, v);
},
toJSON: function() {
return AjaxPro.toJSON({__type:this.__type,keys:this.keys,values:this.values});
}
}, true);
