

/*---------------------------------------------------------------------------------
	title : proFrame È£Ãâ
	content:	callProFrame(appId,svcId,fnId,DTOlist,method)
				ex>callProFrame(appId,svcId,fnId,DTOlist,method)
------------------------------------------------------------------------------------*/
//var ajaxservice =  "http://"+window.location.host+"/proframeWeb/XMLSERVICES/";
var ajaxservice =  "/proframeWeb/XMLSERVICES/";

function callProFrame(appId,svcId,fnId,DTOlist,method){
	var msg = pfm_makeMsgXml(appId,svcId,fnId,DTOlist);
	//alert(msg);
	pfm_sendRequest(method, msg, "POST", ajaxservice ,false,false);

}

/**
 * Version : 0.2
 * Date : 2008.02.09
 * author : TmaxSoft
 */
function pfm_makeMsgXml(appname, svcname, fnname, dto)
{
	var buffer = new StringBuffer();
	buffer.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
	buffer.append("<message>\n  <proframeHeader>\n");
	buffer.append("    <pfmAppName>" + appname + "</pfmAppName>\n");
	buffer.append("    <pfmSvcName>" + svcname + "</pfmSvcName>\n");
	buffer.append("    <pfmFnName>" + fnname + "</pfmFnName>\n");
	buffer.append("  </proframeHeader>\n  <systemHeader></systemHeader>\n");
	for(var key in dto) {
		buffer.append("    <" + key + ">\n" + pfm_DtoToXml(dto[key]) + "</" + key + ">\n");
	}
	buffer.append("</message>\n");

	return buffer.toString();
}


function pfm_DtoToXml(dto)
{
	var buffer = new StringBuffer();

	if (!(dto instanceof Object))	return dto;

		for(var key in dto) {


			if(dto[key] instanceof Array)
			{
				for(var i=0;i<dto[key].length;i++)
				{
					buffer.append("    <" + key + ">\n" + pfm_DtoToXml(dto[key][i]) + "    </" + key + ">\n");
	
				}
			}
			else 
			{	
				buffer.append("    <" + key + ">" + pfm_DtoToXml(dto[key]) + "</" + key + ">\n");
			}
		}
	

	return buffer.toString();	

}




function pfm_insertValueWithName(dtoObj,dtoName,field,value)
{
	if(dtoObj[dtoName] == null) dtoObj[dtoName] = {};

	dtoObj[dtoName][field] = value;

	return dtoObj;
}


function pfm_insertValue(dtoObj,field,value)
{
	for(var key in dtoObj) {

		dtoObj[key][field] = value;
		
	}
	

	return dtoObj;
}

function pfm_insertListValue(listObj,listName,index,field,value)
{

	if(listObj[listName] == null)  listObj[listName] = [];
	else if(! (listObj[listName] instanceof Array) ) return null;
	
	listObj[listName][index][field] = value;
	
	return listObj;

}


function pfm_insertListValueToDtoWithName(dtoObj,dtoName,listName,index,field,value)
{

	if(dtoObj[dtoName] == null) dtoObj[dtoName] = {};
	
	if(dtoObj[dtoName][listName] == null)  dtoObj[dtoName][listName] = [];
	else if(! (dtoObj[dtoName][listName]  instanceof Array) ) return null;
	
	dtoObj[dtoName][listName][index][field] = value;
	
	return dtoObj;

}

function pfm_insertListValueToDto(dtoObj,listName,index,field,value)
{
		
	for(var key in dtoObj) {
		
		
		if(dtoObj[key][listName] == null){  
			dtoObj[key][listName] = [];
			
		}
		else if(! (dtoObj[key][listName]  instanceof Array) ) return null;
		
		//alert(key+"|"+listName+"|"+index+"|"+field+"|"+value + '1');
		if(dtoObj[key][listName][index] == null )  dtoObj[key][listName][index] = {};
		dtoObj[key][listName][index][field] = value;
		//alert(key+"|"+listName+"|"+index+"|"+field+"|"+value + '2');
	
	}

	return dtoObj;

}


//	function pfm_sendRequest(callback,data,method,url,async,sload,multi,user,password)
	function pfm_sendRequest(callback,data,method,url,sload,multi)
	{
		var oj = createHttpRequest();
		if( oj == null ) return null;

//		alert("create Http Request");

//		var sload = (!!sendRequest.arguments[5])?sload:false;
//		if(sload || method.toUpperCase() == 'GET')url += "?";
//		if(sload)url=url+"t="+(new Date()).getTime();

//		alert("2");

		var bwoj = new chkAjaBrowser();
		var opera	  = bwoj.bw.opera;
		var safari	  = bwoj.bw.safari;
		var konqueror = bwoj.bw.konqueror;
		var mozes	  = bwoj.bw.mozes ;

		if(opera || safari || mozes){
			oj.onload = function () { callback(oj); }
		} else {

			oj.onreadystatechange =function ()
			{
//				if ( oj.readyState == 4 ){
					callback(oj);
//				}
			}
		}

//		data = uriEncode(data);
		if(method.toUpperCase() == 'GET') {
			url += data;
		}

//		alert("end Encoding");

//		oj.open(method,url,async,user,password);
		oj.open(method,url,false);

//		alert("3");

		setEncHeader(oj, multi);

//		alert("4");

		oj.send(data);

//		alert("5");

		function setEncHeader(oj, multi){

			//var contentTypeUrlenc = 'application/x-www-form-urlencoded; charset=UTF-8';
			var contentTypeUrlenc = '';
			if (multi) {
				contentTypeUrlenc = 'multipart/form-data; boundary=---------------------------7d69c1880408';
				//contentTypeUrlenc = 'multipart/form-data';
			} else {
				contentTypeUrlenc = 'application/x-www-form-urlencoded; charset=UTF-8';
			}
			if(!window.opera){
				oj.setRequestHeader('Content-Type',contentTypeUrlenc);
			} else {
				if((typeof oj.setRequestHeader) == 'function')
					oj.setRequestHeader('Content-Type',contentTypeUrlenc);
			}
			return oj;
		}

		function uriEncode(data){

			if(data!=""){
				var encdata = new StringBuffer();
				var datas = data.split('&');
				for(i=1;i<datas.length;i++)
				{
					var dataq = datas[i].split('=');
					encdata.append('&');
					encdata.append(encodeURIComponent(dataq[0]));
					encdata.append('=');
					encdata.append(EncodeURIComponent(unescape(dataq[1])));
				}
			} else {
				encdata.append("");
			}
			return encdata.toString();
		}


		return oj;
	}



	function chkAjaBrowser()
	{
		var a,ua = navigator.userAgent;
		this.bw= {
		  safari    : ((a=ua.split('AppleWebKit/')[1])?a.split('(')[0]:0)>=124 ,
		  konqueror : ((a=ua.split('Konqueror/')[1])?a.split(';')[0]:0)>=3.3 ,
		  mozes     : ((a=ua.split('Gecko/')[1])?a.split(" ")[0]:0) >= 20011128 ,
		  opera     : (!!window.opera) && ((typeof XMLHttpRequest)=='function') ,
		  msie      : (!!window.ActiveXObject)?(!!createHttpRequest()):false
		}
		return (this.bw.safari||this.bw.konqueror||this.bw.mozes||this.bw.opera||this.bw.msie);
	}

	function createHttpRequest()
	{
		if(window.ActiveXObject){
			try {
				return new ActiveXObject("Msxml2.XMLHTTP") ;
			} catch (e) {
				try {
					return new ActiveXObject("Microsoft.XMLHTTP") ;
				} catch (e2) {
					return null ;
	 			}
	 		}
		} else if(window.XMLHttpRequest){
			 //Win Mac Linux m1,f1,o8 Mac s1 Linux k3??
			return new XMLHttpRequest() ;
		} else {
			return null ;
		}
	}


/**
* String Buffer Method
* 
*/

 function StringBuffer() { 
   this.buffer = []; 
 } 

 StringBuffer.prototype.append = function append(string) { 
   this.buffer.push(string); 
   return this; 
 }; 

 StringBuffer.prototype.toString = function toString() { 
   return this.buffer.join(""); 
 }; 

