/**
 * @fileoverview
 * rainLoad Version 2.00 (2008.11.11)
 * 당 프로그램의 저작권은 http://cafen.net (outmind@cafen.net)에 있습니다
 * 당 프로그램의 수정 후 재 배포는 저작권자의 허락을 득한 후 재배포 할수 있습니다. 
 * 당 프로그램의 이용은 비 상업적인 목적의 경우 무료로 이용할 수 있습니다.
 * 당 프로그램의 이용은 상업적인 목적의 경우 저작권자의 허락을 득한 후 이용할 수 있습니다.
 * 당 프로그램의 설치후 관리자는 outmind@cafen.net 으로 설치하였다는 통보 메일을 발송하여야 합니다.
 * 당 프로그램안에 있는 모든 저작권 표시 영역은 수정할수 없습니다.
 *
 * ------------------------------------------------
 * 설치 방법은 함께 배포된 README 파일 참조 바랍니다.
 * ------------------------------------------------
 *
 * @author Kimjonggab(outmind@cafen.net)
 * @copyright Copyright (c) 2004 Cafen.net (http://cafen.net)
 */

window.onerror = HandleError

function HandleError(message, url, line) {
//  alert(message + '\r\n' + url + '\r\n' + line);	
  return true;
}

function reg_GolbalConf(part, key, val) {
	if (typeof window.rainGlobalConf == 'undefined')
		window.rainGlobalConf = {}
	if (part != '' && typeof window.rainGlobalConf[part] == 'undefined')
		window.rainGlobalConf[part] = {}
	if (part != '')
		window.rainGlobalConf[part][key] = val;
	else
		window.rainGlobalConf[key] = val;
}


var _rain_service_url = 'http://service.cafen.net/';

if (typeof rainGlobalLang == 'undefined' || rainGlobalLang.lang != 'ko' )
	document.write('<scr'+'ipt TYPE="text/JavaScript" charset="utf-8" LANGUAGE="JavaScript1.2" SRC="'+_rain_service_url+'charset/korean.js"></scr'+'ipt>');
if (typeof rain == 'undefined' || typeof rain.langSet == 'undefined')
	document.write('<scr'+'ipt TYPE="text/JavaScript" charset="utf-8" LANGUAGE="JavaScript1.2" SRC="'+_rain_service_url+'rainLangSet.js"></scr'+'ipt>');
if (typeof Prototype == 'undefined')
	document.write('<scr'+'ipt TYPE="text/JavaScript" charset="utf-8" LANGUAGE="JavaScript1.2" SRC="'+_rain_service_url+'prototype.js"></scr'+'ipt>');
if (typeof rain == 'undefined' || typeof rain.Popup == 'undefined')
	document.write('<scr'+'ipt TYPE="text/JavaScript" charset="utf-8" LANGUAGE="JavaScript1.2" SRC="'+_rain_service_url+'rainUtil_utf.js"></scr'+'ipt>');
if (typeof rain == 'undefined')
	var rain = new Object();
rain.load = function(packageLoad, lang, args) {
	var loadScript = [];
	if (lang == null) 
		lang = (typeof rainGlobalLang != 'undefined') ? rainGlobalLang.lang : 'ko';	
	if (typeof rainGlobalLang == 'undefined' || rainGlobalLang.lang != lang) {
		switch(lang.toLowerCase()) {
			case 'ja' :
				loadScript.push({script :'charset/japanese.js', 'name' : ''});
				break;
			case 'en' :
				loadScript.push({script :'charset/english.js', 'name' : ''});
				break;
			case 'ko' :
				loadScript.push({script :'charset/korean.js', 'name' : ''});
				break;
			case 'cn' :
				loadScript.push({script :'charset/chinese.js', 'name' : ''});
				break;
		}
	}	
	switch(packageLoad) {
		case 'search' :
			loadScript.push({script :'rainSearch.js', 'name' : 'rain.Rsearch'});
			break;
		case 'editors' :
			loadScript.push({script :'rainEditorS_utf.js', 'name' : 'rainEditorS'});
			break;
		case 'editor' :
			loadScript.push({script :'rainEditor_utf.js', 'name' : 'rainEditor'});
			loadScript.push({script :'swfupload.js', 'name' : 'SWFUpload'});
			break;
		case 'editorcross' :
			loadScript.push({script :'rainEditor_utf.js', 'name' : 'rainEditor'});
			loadScript.push({script :'swfupload.js', 'name' : 'SWFUpload'});
			loadScript.push({script :'xmlhttp.js', 'name' : 'XMLHTTP'});
			loadScript.push({script :'rainAjax.js', 'name' : 'rainAjax'});
			break;
		case 'parser' :
			loadScript.push({script :'rainEditorParser_utf.js', 'name' : 'rainEditorParser'});
			break;
		case 'chart' :
			loadScript.push({script :'swfobject.js', 'name' : 'SWFObject'});
			loadScript.push({script :'rainOFCJS.js', 'name' : 'rainGraph'});
			loadScript.push({script :'xmlhttp.js', 'name' : 'XMLHTTP'});
			loadScript.push({script :'rainAjax.js', 'name' : 'rainAjax'});
			break;
		case 'code' :
			document.write('<link rel="stylesheet" href="'+_rain_service_url+'dp.SyntaxHighlighter/Styles/SyntaxHighlighter.css" type="text/css">');

			loadScript.push({script :'swfupload.js', 'name' : 'SWFUpload'});
			loadScript.push({script :'dp.SyntaxHighlighter/Uncompressed/shCore.js', 'name' : 'dp'});
			loadScript.push({script :'rainSyntaxHighlighter.js', 'name' : 'rainSyntaxHighlighter'});
			break;
		case 'webhard' :
			loadScript.push({script :'swfupload.js', 'name' : 'SWFUpload'});
			loadScript.push({script :'rainWebHard_utf.js', 'name' : 'rain.WebHard'});
			break;
		case 'workflow' :
			loadScript.push({script :'swfupload.js', 'name' : 'SWFUpload'});
			loadScript.push({script :'rainWorkFlow_utf.js', 'name' : 'rain.WorkFlow'});
			break;
		case 'util' :
			break;
		case 'utilcross' :
			loadScript.push({script :'xmlhttp.js', 'name' : 'XMLHTTP'});
			loadScript.push({script :'rainAjax.js', 'name' : 'rainAjax'});
			break;
		case 'map' :
			if (args == null && typeof rainGlobalConf != 'undefined' && typeof rainGlobalConf.mapKeys != 'undefined') {
				var keys = [];
				keys.push((typeof rainGlobalConf.mapKeys.YAHOO != 'undefined') ? rainGlobalConf.mapKeys.YAHOO : '');
				keys.push((typeof rainGlobalConf.mapKeys.NAVER != 'undefined') ? rainGlobalConf.mapKeys.NAVER : '');
				keys.push((typeof rainGlobalConf.mapKeys.GOOGLE != 'undefined') ? rainGlobalConf.mapKeys.GOOGLE : '');
				keys.push((typeof rainGlobalConf.mapKeys.DAUM != 'undefined') ? rainGlobalConf.mapKeys.DAUM : '');
				keys.push((typeof rainGlobalConf.mapKeys.LIVE != 'undefined') ? rainGlobalConf.mapKeys.LIVE : '');
				args = keys.join(':');
			}
			if (args != null) {
				var keyinfo = args.split(':');
				if (keyinfo.length > 0 && keyinfo[0] != '') {
					loadScript.push({script :'http://kr.open.gugi.yahoo.com/Client/AjaxMap.php?v=3.7&appid=' + keyinfo[0] , 'name' : 'YMap'});
					reg_GolbalConf('mapKeys','YAHOO', keyinfo[0]);
				}
				if (keyinfo.length > 1 && keyinfo[1] != '') {
					loadScript.push({script :'http://maps.naver.com/js/naverMap.naver?key=' + keyinfo[1] , 'name' : 'NMap'});
					reg_GolbalConf('mapKeys','NAVER', keyinfo[1]);
				}
				if (keyinfo.length > 2 && keyinfo[2] != '') {
					loadScript.push({script :'http://maps.google.co.kr/maps?file=api&amp;v=2&amp;key=' + keyinfo[2] , 'name' : 'GMap'});
					reg_GolbalConf('mapKeys','GOOGLE', keyinfo[2]);
				}
				
				if (keyinfo.length > 3 && keyinfo[3] != '') {
					loadScript.push({script :'http://apis.daum.net/maps/maps.js?apikey=' + keyinfo[3]+'&amp;v' , 'name' : 'DMap'});
					reg_GolbalConf('mapKeys','DAUM', keyinfo[3]);
				}
				if (keyinfo.length > 4 && keyinfo[4] != '') {
					loadScript.push({script :'http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.2' , 'name' : 'VEMap'});
					reg_GolbalConf('mapKeys','LIVE', keyinfo[4]);
				}
			}
			loadScript.push({script : 'images/map/lib/rainMapUtil.js', 'name' : 'csList'});
			loadScript.push({script :'swfupload.js', 'name' : 'SWFUpload'});
			loadScript.push({script :'xmlhttp.js', 'name' : 'XMLHTTP'});
			loadScript.push({script :'rainAjax.js', 'name' : 'rainAjax'});
			loadScript.push({script :'rainMap_utf.js', 'name' : 'rain.RMap'});
//			loadScript.push({script :'rainMap_utf.js' + Math.floor(Math.random() * 99999+ 10000), 'name' : 'rain.RMap'});
			break;
	} 
	var checkLoad = [];
	for (var i = 0 ; i < loadScript.length; i++ ) {
		if (loadScript[i].name == '') 
			checkLoad.push(loadScript[i]);
		else if (typeof rain.loadedScript[loadScript[i].name] == 'undefined') {
			if (loadScript[i].name.indexOf('.') == -1 && typeof window[loadScript[i].name] == 'undefined') 
				checkLoad.push(loadScript[i]);
			else if (loadScript[i].name.indexOf('.') > 0) {
				var func_name = loadScript[i].name.split('.');
				if (typeof window[func_name[0]] == 'undefined' || typeof window[func_name[0]][func_name[1]] == 'undefined')
					checkLoad.push(loadScript[i]);
			}
		}
	}
	loadScript = checkLoad;
	for (var i = 0 ; i < loadScript.length; i++ ) {
		var currScripts = (loadScript[i].script instanceof Array) ? loadScript[i].script : [loadScript[i].script];
		for ( var j = 0; j < currScripts.length; j++) {
			var script_url = (currScripts[ j].indexOf('http://') == 0) ? currScripts[ j] : _rain_service_url + currScripts[ j];
			document.write('<script charset="UTF-8" src="'+ script_url +'" type="text/javascript"><\/script>');
		}
		if (loadScript[i].name != '')
			rain.loadedScript[loadScript[i].name]	= true;
	}
}

rain.loadQueue = null;
rain.loadedScript = {};
rain.addOnload = function(fnc) {
	if (typeof fnc != 'function') 
		return ; 
	if (rain.loadQueue == null) {
		rain.loadQueue = [];
		if (window.onload != null) {
			rain.loadQueue.push(window.onload);
			window.onload = null;
		}
	}
	rain.loadQueue.push(fnc);
	if (window.onload != rain.onload)
		window.onload = rain.onload;
}

rain.onload = function() {
	if (rain.loadQueue != null && rain.loadQueue.length > 0) {
		for (var i = 0; i < 	rain.loadQueue.length; i++) {
			if (typeof rain.loadQueue[i] == 'function') {
				try {
					rain.loadQueue[i]();
				} catch(ex) {
					alert(rain.nodeUtil.getClassInfo(ex));	
				}
			}
		}
	}
}