var HTTP = {};

HTTP.request = function( /* method,url,data,callback,datakind,async,timeout,onSuccess,dummy */ args ) {

	var getXMLHttp = function() {

		if(typeof XMLHttpRequest == 'undefined') {
	
			return new ActiveXObject(navigator.userAgent.indexOf('MSIE 5') >= 0 ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP');

		} else {

			return new XMLHttpRequest();

		}

	};

	var dataParser = function(data, kind) {
	
		var contentType = data.getResponseHeader('content-type');
		if( (contentType && contentType.indexOf('xml') >= 0) || kind == 'xml') {
			
			return data.responseXML;
		
		} else {
			
			if(kind == 'script') {
				
				eval.call(window, data.responseText);
			
			} else if(kind == 'json') {
				
				return eval(data.responseText);
			
			} else {
				
				return data.responseText;
			
			}
		
		}

	};

	var myArgs = {

		method : args.method || 'POST',
		url : args.url || '',
		data : HTTP.serialize( args.data ) || '',
		callback : args.callback || '',
		datakind : args.datakind || '',
		async : args.async || true,
		responseCheck : 1,
		responseTime : args.timeout || 5000,
		setTimer : null,
		onSuccess : args.onSuccess || function() {},
		dummy : args.dummy || ''
			
	};
	
	var req = getXMLHttp();
		
	myArgs.setTimer = window.setTimeout(function() {
			
		myArgs.responseCheck = 0;

	}, myArgs.responseTime);

	req.onreadystatechange=function() {

		if(req.readyState == 4 && myArgs.responseCheck == 1) {

			if(myArgs.setTimer) { 
					
				window.clearTimeout(myArgs.setTimer); 
				myArgs.setTimer = null; 
				
			}
				
			if(req.status == 200) {
	
				if(myArgs.callback) {
						
					myArgs.callback( dataParser(req, myArgs.datakind.toLowerCase()) );

				} else {

					myArgs.onSuccess( dataParser(req, myArgs.datakind.toLowerCase()) );

				}


			} else {

				//alert(req.status);

			}

			req = null;

		}

	};

	var dummy = function(check) {
		if(check == true) {
			var time = new Date();
			return time.getTime();
		} else {
			return '';
		}
	}

	if(myArgs.method.toLowerCase() == 'get') {
		
		if(myArgs.url.indexOf('?') >= 0) {
			myArgs.url += '&' + myArgs.data + '&' + dummy(myArgs.dummy);
		} else {
			myArgs.url += '?' + myArgs.data + '&' + dummy(myArgs.dummy);
		}
		req.open( myArgs.method, myArgs.url, myArgs.async);
		req.send( null );

	} else {
    
		req.open( myArgs.method, myArgs.url, myArgs.async);
		req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		req.send( myArgs.data + '&' + dummy(myArgs.dummy) );

	}

};

HTTP.serialize = function(o) {

	if(!o) { 
			
		return ''; 
			
	} else {

		var r = [];
	
		for(var i in o) {
			r.push( i + '=' + encodeURIComponent( o[i] ) );
		}
	
		return r.join('&');

	}

};

HTTP.load = function(o, data, url) {

	if(!o) return;
	var myData = data;
	var el = HTTP.getElement(o);
	var myUrl = url;
	HTTP.request( {
	
		url : myUrl,
		method : 'GET',
		data : myData,
		onSuccess : function(data) {

			el.innerHTML = '';
			el.innerHTML = data;

		}

	} );

};

HTTP.get = function(url,data,callback,type) {

	var myData = data || '';
	var myUrl = url || '';
	var myType = type || '';
	var myCallback = callback || function() {};
	var temp;
	HTTP.request( {
	
		url : myUrl,
		method : 'get',
		data : myData,
		datakind : myType,
		onSuccess : function(data) {

			myCallback(data);

		}

	} );
	
};

HTTP.getElement = function(o) {

	if(!o) return;
	if(document.getElementById(o)) {
		return document.getElementById(o);
	} else {
		return document.getElementsByName(o)[0];
	}

};


function xmlExchange(Tmp_url) {
    HTTP.request( {
        method : 'POST',// method 생략가능 , 생략하면 default : POST
        url : Tmp_url+'exchange.php', // 필수항목, 이파일은 webroot에 있음.
        onSuccess : function(xml) { //onSuccess 생략가능, 생략하면 callback 으로 이용가능, 예) callback : myFunc,

        var rootDoc = xml.getElementsByTagName('naver').item(0);
				var item = rootDoc.getElementsByTagName('currency');
				var Day = rootDoc.getElementsByTagName('last_update').item(0).firstChild.nodeValue;
				
				var result='';
				var result2='';
				var result3='';
				var result4='';
				var result5='';
				var result6='';
            for(var i=0;i<item.length;i++) {
                if(item[i].getElementsByTagName('ename').item(0).firstChild.nodeValue == "U.S.A.") {
                    result += item[i].getElementsByTagName('standard').item(0).firstChild.nodeValue;
                    result2 += item[i].getElementsByTagName('buy').item(0).firstChild.nodeValue;
                    result3 += item[i].getElementsByTagName('sell').item(0).firstChild.nodeValue;
                }
                
                if(item[i].getElementsByTagName('ename').item(0).firstChild.nodeValue == "JAPAN") {
                    result4 += item[i].getElementsByTagName('standard').item(0).firstChild.nodeValue;
                    result5 += item[i].getElementsByTagName('buy').item(0).firstChild.nodeValue;
                    result6 += item[i].getElementsByTagName('sell').item(0).firstChild.nodeValue;
                }
            }
					    
        document.getElementById('us_exchange').value = result;
        
        if(document.getElementById('exchange_buy')) {
            document.getElementById('exchange_buy').value = result2;
        }
        
        if(document.getElementById('exchange_sell')) {
            document.getElementById('exchange_sell').value = result3;
        }
        
        document.getElementById('jp_exchange').value = result4;
        
        if(document.getElementById('jp_exchange_buy')) {
            document.getElementById('jp_exchange_buy').value = result5;
        }
        
        if(document.getElementById('jp_exchange_sell')) {
            document.getElementById('jp_exchange_sell').value = result6;
        }
		},
		datakind : 'xml', // 생략가능, 생략했지만 서버의 content-type 이 xml 이면 xml 로 리턴받음
		async : true, // 생략가능 true 비동기 false 동기
		timeout : 8000, // 생략가능, 생략하면 default cancel time : 5 sec
		dummy : true // 생략가능 , IE 등에서 캐쉬하는 것을 방지하기 위함...

    } );
}