// NameValueCollectionConverter
if(typeof(Ajaxs)=="undefined") Ajaxs={};
if(!Ajaxs.Web) Ajaxs.Web={};
if(!Ajaxs.Web.NameValueCollection) Ajaxs.Web.NameValueCollection={};

Ajaxs.Web.NameValueCollection=function(items){
this.__type="System.Collections.Specialized.NameValueCollection";
this.keys=[];
this.values=[];
if(items&&items.length>0){for(var i=0;i<items.length;i++) this.add(items[i][0], items[i][1]);}
};
Object.extend(Ajaxs.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 Ajaxs.toJSON({__type:this.__type,keys:this.keys,values:this.values});}
},true);

// DataSetConverter
if(typeof(Ajaxs)=="undefined") Ajaxs={};
if(!Ajaxs.Web) Ajaxs.Web={};
if(!Ajaxs.Web.DataSet) Ajaxs.Web.DataSet={};

Ajaxs.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(Ajaxs)=="undefined") Ajaxs={};
if(!Ajaxs.Web) Ajaxs.Web={};
if(!Ajaxs.Web.DataTable) Ajaxs.Web.DataTable={};

Ajaxs.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.addColumns=function(cs){for(var i=0;i<cs.length;i++) this.addColumn(cs[i][0],cs[i][1]);};
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 Ajaxs.toJSON(dt);
};
this.addRow=function(row){this.Rows.push(row);};
this.addRows=function(rs){
	if(rs==null) return;
	for(var y=0;y<rs.length;y++){
		var row={};
		for(var z=0;z<this.Columns.length && z<rs[y].length;z++)	row[this.Columns[z].Name]=rs[y][z];
		this.addRow(row);
	}
};
if(c!=null) this.addColumns(c);
if(r!=null) this.addRows(r);
};

// ProfileBaseConverter
if(typeof(Ajaxs)=="undefined") Ajaxs={};
if(!Ajaxs.Web) Ajaxs.Web={};
if(!Ajaxs.Web.Profile) Ajaxs.Web.Profile={};

Ajaxs.Web.Profile=function(){
this.toJSON=function(){throw "Ajaxs.Web.Profile 不能转换为JSON格式！  ";};
this.setProperty_callback=function(res){};
this.setProperty=function(name,object){
	this[name]=object;
	Ajaxs.Services.Profile.SetProfile({name:o},this.setProperty_callback.bind(this));
};
};

// IDictionaryConverter
if(typeof(Ajaxs)=="undefined") Ajaxs={};
if(!Ajaxs.Web) Ajaxs.Web={};
if(!Ajaxs.Web.Dictionary) Ajaxs.Web.Dictionary={};

Ajaxs.Web.Dictionary=function(type,items){
this.__type=type;
this.keys=[];
this.values=[];
if(items&&items.length>0){for(var i=0; i<items.length; i++) this.add(items[i][0], items[i][1]);}
};
Object.extend(Ajaxs.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 Ajaxs.toJSON({__type:this.__type,keys:this.keys,values:this.values});}
},true);

