/* 加上幾個中文字並以 UTF-8 存檔就不會被編輯器改回 Big5 */

function RPCParam(n, v){
	if(n){
		this.name=n;
	}
	this.value=v;
}

function RPCCall_FromText(part,url_type){
	if(part == "action"){
		if (url_type == "safe")
			return "https://" + this.host + "/rpc2.php";
		else
			return "http://" + this.host + "/rpc2.php";
	}
	else if(part=="input"){}
}

function mkHidden(d, f, n, v, stress){
	if(stress){
		d.write("<name:  " + n +"      value:  "+ v +">\n");
	}
	else{
		d.write("<input type='hidden' name='" + n +"'>\n");
		f.elements[f.elements.length - 1].value = v;
	}
}

function RPCCall_Execute(doc, stress){
	var f;
	var p="";
	var url_type = this.url_type;
	
	if (url_type == "" || url_type == undefined)
		url_type = "normal";
	stress = (stress != null);
	doc.open("text/html","replace");
	doc.write(
		"<html>\n"
		+ "<head>\n"
		+ "<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>\n"
		+ "</head>\n"
		+ "<body>\n"
		+ "<form name='rpcform' method='post' action='" + this.formtext('action',url_type) + "' enctype='multipart/form-data'>\n"
	);

	var f = doc.rpcform;
	mkHidden(doc, f, "__rpcname", this.name, stress);
	mkHidden(doc, f, "__style", (this.style ? this.style : "html"), stress);
	mkHidden(doc, f, "__tag", (this.tag ? this.tag : this.name), stress);
	mkHidden(doc, f, "__ver", (this.ver ? this.ver : "2"), stress);
	mkHidden(doc, f, "__redir", location.hostname, stress);
	mkHidden(doc, f, "u_str", unescape(getCookieValue("u_str")), stress);
	mkHidden(doc, f, "charset", (this.charset ? this.charset : "utf8"), stress);
	if(this.ds){mkHidden(doc, f, "__ds", this.ds, stress);}
	if(this.debug){mkHidden(doc, f, "__debug", this.debug, stress);}
	if(this.params){
		for(var i = 0; i < this.params.length; i++){
			if(this.params[i].name){
				mkHidden(doc, f, this.params[i].name, this.params[i].value, stress);
			}
		}
	}

	doc.write(
		"</form>\n"
		+ (stress ? "" : "<script language='javascript'>window.onload=function(){document.rpcform.submit();}<\/script>\n")
		+ "</body>\n"
		+ "</html>\n"
	);

	doc.close();
}

function RPCCall_MultiExecute(docs, hosts) {
	if ((!docs) || (!hosts))
		return;
	var h=this.host;
	var t=this.tag;
	var i=docs.length;
	var j=hosts.length;
	var k=0;
	while ((k<i) && (k<j)) {
		this.host=hosts[k];
		this.tag=t+"_"+k;
		this.RPCCall_Execute(docs[k]);
		k++;
	}
	this.host=h;
}

function RPCCall(name, ds, host){
	this.name=name;
	if (ds)
		this.ds=ds;
	if(host){
		this.host=host;
	}
	else{
		var h=location.hostname;
		this.host=h;
	}
	this.params=new Array();
	//In case of IE5 does not support "array.push()"
	if(this.params.push == null){
		this.params.push = function(e){
			this.params[this.params.length] = e;
		}
	}
	this.setParam = function(n,v){
		this.params.push(new RPCParam(n,v));
	}

	this.execute=RPCCall_Execute;
	this.formtext=RPCCall_FromText;
}

function getCookieValue(name, doc) {
	if (!doc)
		doc=document;		
	var ca=doc.cookie.split(';');
	for (var i=0; i<ca.length; i++) {
		var c=ca[i];
		var j=c.indexOf('=');
		if (j>0) {
			var n=c.substring(0, j);
			for (var k=0; k<n.length; k++)
				if (n.charAt(k)!=' ')
					break;
			n=n.substring(k);
			if (name==n)
				return c.substring(j+1);
		}
	}

	//IE8 cookie問題修正
	try{
		return (
			window == NetaskTop ?
			getCookieValue(name) : 
			NetaskTop.getCookieValue(name)
		);
	}
	catch(ex){
		return "";
	}
}
