var Ajax = function(objname)
{
	this.objname = objname;
	this.req;
	this.debug_mode = false;

	this.loadXMLDoc = function(url) {
		this.req = false;
		if (window.XMLHttpRequest) {
			try {
				this.req = new XMLHttpRequest();
			}
			catch(e) {
				this.req = false;
			}

		} else if (window.ActiveXObject) {
			try {
				this.req = new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch(e) {
				try {
					this.req = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch(e) {
					this.req = false;
				}
			}

		}
		if (this.req) {
			var str = '';
			str += 'function(){\n';
			str += ' if('+this.objname+'.req.readyState == 4){\n';
			str += '  if('+this.debug_mode+'){\n'; 
			str += '	document.write('+this.objname+'.req.responseText);\n';
			str += '  }\n';
			str += '  eval('+this.objname+'.req.responseText);\n';
			str += ' }\n';
			str += '}';
			eval(this.objname+ '.getdata = ' + str);
			this.req.onreadystatechange = this.getdata;

			this.req.open("GET", url, true);
			this.req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=EUC-KR");
			this.req.send("");
			}
	}

	this.loadXMLDocPost = function(url, queryString) {
		this.req = false; 
		if (window.XMLHttpRequest) {
			try {
				this.req = new XMLHttpRequest();
			}
			catch(e) {
				this.req = false;
			}
		}
		else if (window.ActiveXObject) {
			try {
				this.req = new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch(e) {
				try {
					this.req = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch(e) {
					this.req = false;
				}
			}
		}
		if (this.req) {
			this.req.open("POST", url, true);
			var str = '';
			str += 'function(){\n';
			str += ' if('+this.objname+'.req.readyState == 4){\n';
			str += '  if('+this.debug_mode+'){\n'; 
			str += '	document.write('+this.objname+'.req.responseText);\n';
			str += '  }\n';
			str += '  eval('+this.objname+'.req.responseText);\n';
			str += ' }\n';
			str += '}';

			eval(this.objname+ '.getdata = ' + str);
			this.req.onreadystatechange = this.getdata;
			this.req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; Charset=utf-8");
			this.req.send(queryString);
		}
	}
}

var SelectControl = function()
{
	this.ChangeIndex = function(id, fromIndex, toIndex, selectedindex)
	{
		var obj = this.GetObj(id);

		if(!this.IndexCheck(obj, fromIndex))
		{
			alert('ÀÌµ¿ ÀÎµ¦½º ¹üÀ§°¡ ¹þ¾î³µ½À´Ï´Ù.');
			return;
		}
		if(!this.IndexCheck(obj, toIndex))
		{
			alert('¸ñÀûÁö ÀÎµ¦½º ¹üÀ§°¡ ¹þ¾î³µ½À´Ï´Ù.');
			return;
		}

		var tempOption = obj[fromIndex];
		obj[fromIndex] = new Option(obj[toIndex].text, obj[toIndex].value);
		obj[toIndex] = tempOption;



		if(selectedindex)
			obj.selectedIndex = selectedindex;
		else
			obj.blur();
	}
	this.ChangeOrderDown = function(id, index)
	{
		this.ChangeIndex(id, index, index+1, index+1);
	}
	this.ChangeOrderUp = function(id, index)
	{
		this.ChangeIndex(id, index, index-1, index-1);
	}
	this.ChangeText = function(id, index, text)
	{
		var obj = this.GetObj(id);
		obj[index].text = text;
	}
	this.ChangeValue = function(id, index, value)
	{
		var obj = this.GetObj(id);
		obj[index].value = text;
	}
	this.ChangeAll = function(id, optionStr, itemCutChar, valueCutChar)
	{
		var obj = this.GetObj(id);
		if(!obj)
		{
			//alert('id°¡ '+id+'ÀÎ ¿ÀºêÁ§Æ®°¡ ¾ø½À´Ï´Ù');
			return;
		}



		var items = optionStr.split(itemCutChar);

		obj.length = 0;
		

		for(var i = 0 ; i < items.length ; i++)
		{
			var item = items[i].split(valueCutChar);
			obj[obj.length] = new Option(item[0], item[1]);
		}
	}
	this.Add = function(id, text, value, index)
	{
		var obj = this.GetObj(id);
		obj[obj.length] = new Option(text, value);

		if(index)
		{
			this.ChangeIndex(id, obj.length-1, index);
		}
	}
	this.Del = function(id, index)
	{
		var obj = this.GetObj(id);
		if(!index)
		    index = obj.selectedIndex;
		if(index == -1)
		{
		    alert('¼±ÅÃµÈ Ç×¸ñÀÌ ¾ø½À´Ï´Ù');
		    return;
		}
	
		obj[index] = null;
	}
	this.DelAll = function(id)
	{
		var obj = this.GetObj(id);
		obj.length = 0;
	}





	this.IndexCheck = function(obj, index)
	{
		if(index < 0 || index > obj.length-1)
		{
			return false;
		}
		return true;
	}
	this.GetObj = function(id)
	{
		return document.getElementById(id);
	}
	this.GetAllValue = function(id, divider)
	{
	    if(!divider)
		divider = ':';
	    var obj = this.GetObj(id);
	    var str = '';

	    for(var i = 0 ; i < obj.length ; i++)
	    {
		if(str)
		    str += divider;
		str += obj[i].value;
	    }	
	    return str;
	}
}





var StampControl = function(objName, layerID, viewonly)
{
	this.objName = objName;
	this.obj = document.getElementById(layerID);
	this.obj.style.position = 'relative';
	this.obj.style.borderWeight = '2px';

	this.url;
	this.width;
	this.height;
	this.key;
	this.objx;
	this.objy;
	this.zindex = 1000;
	this.mode;
	this.oldimg;
	this.viewonly = viewonly;

	if(!viewonly)
	{

	this.obj.attachEvent("onmouseup", 
			function()
			{
			if(!eval(objName+'.url'))
			{
			alert('ÀÔ·ÂÀ§Ä¡ ¼³Á¤ ÈÄ Å¬¸¯ÇÏ¼¼¿ä');
			return;
			}
			var x = window.event.x;
			var y = window.event.y;

			eval(objName+'.AddImage(x, y)');
			}	
			);
	this.obj.attachEvent("onmousemove", 
			function()
			{
			if(!eval(objName+'.url'))
			{
			return;
			}
			var x = window.event.x;
			var y = window.event.y;

			eval(objName+'.objx.value=x');
			eval(objName+'.objy.value=y');
			var oi = eval(objName+'.oldimg');
			if(oi)
			{
			oi.style.left = (x-10)+'px';
			oi.style.top = (y-10)+'px';
			}
			}
			);
	}


	this.PreImage = function(url, xid, yid, width, height, x, y, mode)
	{
		this.SetImage(url, xid, yid, width, height, mode);
		if(!this.viewonly)
		{
			this.objx.value = x;
			this.objy.value = y;
		}
		this.AddImage(x, y);
	}
	this.DelImage = function(xid, yid)
	{
		var oldImage = eval(this.objName+'.'+xid+'_'+yid);
		if(oldImage != null)
		{
			oldImage.parentNode.removeChild(oldImage);
		if(!this.viewonly)
		{
			document.getElementById(xid).value = '';
			document.getElementById(yid).value = '';
		}
			eval(this.objName+'.'+xid+'_'+yid+'=null;');
		}
		else
		{
			alert('±âÁ¸¿¡ µî·ÏÇÑ ÀÌ¹ÌÁö°¡ ¾ø½À´Ï´Ù');
		}
	}
	this.SetImage = function(url, xid, yid, width, height, mode)
	{
		var oldImage = eval(this.objName+'.'+xid+'_'+yid);
		if(!this.viewonly && oldImage != null)
		{
			this.ChangeBorder(oldImage, 4, '#ff0000');
			if(!mode && !confirm('Ç¥½ÃµÈ Å×µÎ¸®ÀÇ °³Ã¼ À§Ä¡¸¦ ¼öÁ¤ÇÏ½Ã°Ú½À´Ï±î?'))
			{
				this.ChangeBorder(oldImage, 0);
				return;
			}
			this.ChangeBorder(oldImage, 0);
		}
		else//ÃÖÃÊ
		{
			var x = 0;
			var y = 0;
			var lay = document.createElement('div');
			lay.id = xid+'_'+yid;
			lay.style.position = 'absolute';
			lay.style.left = x+'px';
			lay.style.top = y+'px';
			lay.style.zIndex = this.zindex++;
			var widthstr = '';
			var heightstr = '';
			var edit = '';
			if(width)
				widthstr = ' width='+width;
			if(height)
				heightstr = ' height='+height;
			if(mode)
			{
				edit = 'onmousedown="if(!'+this.objName+'.url) '+this.objName+".SetImage('"+url+"', '"+xid+"','"+yid+"','"+width+"','"+height+"','"+mode+"');\" ";
			}


			lay.innerHTML = "<img src='"+url+"' "+widthstr+heightstr+edit+" />";

			this.obj.appendChild(lay);

			eval(this.objName+'.'+xid+'_'+yid + ' = lay;');
			this.oldimg = lay;

		}
		this.oldimg= eval(this.objName+'.'+xid+'_'+yid);
		this.url = url;
		this.objx = document.getElementById(xid);
		this.objy = document.getElementById(yid);
		this.key = xid+'_'+yid;


		this.width = width;
		this.height = height;
	}

	this.ChangeBorder = function(obj, border, color)
	{
		obj.style.borderWidth= border+'px';
		obj.style.borderStyle= 'solid';
		if(color)
			obj.style.borderColor = color;
	}
	this.AddImage = function(x, y)
	{
		if(!this.url)
			return;
		if(x == '')
			x = window.event.x;
		if(y == '')
			y = window.event.y;

		if(this.oldimg)
		{	
			this.oldimg.style.left = (x-10)+'px';
			this.oldimg.style.top = (y-10)+'px';
			this.oldimg.style.zIndex = this.zindex++;
			this.Reset();
		}
	}
	this.Reset = function()
	{
		this.url = '';
		this.objx = '';
		this.objy = '';
		this.width = '';
		this.height = '';
		this.oldimg = '';
	}
}

var LayerControl = function(id)
{
	
	this.obj = document.getElementById(id);
	if(!this.obj)
	{
		alert(id+'¿¤¸®¸ÕÆ®°¡ ¾ø½À´Ï´Ù');
		return;
	}
	this.obj.style.position = 'relative';
	this.childlist = [];
	this.zindex = 100;

	this.AddGroup = function(id, html, pos, zindex, item1, item2, item3, item4, item5)
	{
		if(!pos)
			return;
		var posgroup = pos.split('|');
		for(var i = 1 ; i <= posgroup.length ; i++)
		{
			if(posgroup[i-1]=='' || posgroup[i-1] == ':')
				continue;
			var p = posgroup[i-1].split(':');
			if(p[0] == '' || p[1] == '')
				continue;
			this.Add(id+'_'+i, html, p[0], p[1], zindex, item1, item2, item3, item4, item5);
		}
	}
	this.Add = function(id, htm, x, y, zindex, item1, item2, item3, item4, item5)
	{
		if(!zindex)
			zindex = this.zindex++;
		var existindex = this.ExistCheck(id);
		if(existindex == -1)
		{
			var layer = document.createElement('div');
			layer.style.position = 'absolute';
			layer.id = id;
			layer.zIndex = zindex; 
			layer.innerHTML = htm;

			if(item1 == 'npc')
			{
				x -= 10;
				y -= 10;
				var overevent = 'function(){npccontentview("'+item2+'", "'+item3+'", "'+item4+'", "'+x+'px", "'+y+'px");}';
				var outevent = 'function(){npccontenthidden();}';
				if(layer.attachEvent)
				{
					eval("layer.attachEvent('onmouseover', "+overevent+");");
					eval("layer.attachEvent('onmouseout', "+outevent+");");
				}
				else
				{
					eval("layer.addEventListener('mouseover', "+overevent+", true);");
					eval("layer.addEventListener('mouseout', "+outevent+", true);");
				}
			}
			if(item1 == 'mon')
			{
				x -= 10;
				y -= 10;
				var overevent = 'function(){moncontentview("'+item2+'", "'+item3+'", "'+item4+'", "'+x+'px", "'+y+'px");}';
				var outevent = 'function(){moncontenthidden();}';
				if(layer.attachEvent)
				{
					eval("layer.attachEvent('onmouseover', "+overevent+");");
					eval("layer.attachEvent('onmouseout', "+outevent+");");
				}
				else
				{
					eval("layer.addEventListener('mouseover', "+overevent+", true);");
					eval("layer.addEventListener('mouseout', "+outevent+", true);");
				}
			}
			layer.style.left = x+'px';
			layer.style.top = y+'px';
			this.childlist[this.childlist.length] = layer;
			this.obj.appendChild(layer);
		}
		else
		{
			this.childlist[existindex].style.zIndex = zindex;
		}
	}
	this.GetObj = function(id)
	{
		var existindex = this.ExistCheck(id);
		if(existindex != -1) 
			return this.childlist[existindex];
		return null;
	}
	this.Del = function(id)
	{
		var existindex = this.ExistCheck(id);
		if(existindex == -1)
		{
			alert('¾ÆÀÌµð°¡ '+id+'ÀÎ ¿¤¸®¸ÕÆ®°¡ ¾ø½À´Ï´Ù');
			return;
		}
		this.obj.removeChild(this.childlist[existindex]);
		this.childlist[existindex] = null;
	}
	this.DelAll = function()
	{
		for(var i = 0 ; i < this.childlist.length ; i++ )
		{
			if(!this.childlist[i])
				continue;
			this.obj.removeChild(this.childlist[i]);
		}

		this.childlist.length = 0;
	}
	this.DelHead = function(head)
	{
		var loop = this.childlist.length;
		var delindex = [];
		for(var i = 0 ; i < loop ; i++)
		{
			if(!this.childlist[i])
				continue;
			var tempid = this.childlist[i].id;
			var temp = tempid.split(head);
			if(temp[1])
			{
				this.Del(tempid);
			}
		}
		for(var i = 0 ; i < delindex.length ; i++)
		{
			this.childlist[delindex[i]] = null;
		}
	}
	this.ExistCheck = function(id)
	{
		for(var i = 0 ; i < this.childlist.length ; i++)
		{
			if(this.childlist[i] && this.childlist[i].id == id)
				return i;
		}
		return -1;
	}
}

var HamtImgTabControl = function(parentid, idtail)
{
	if(!idtail)
		idtail = '';
	this.idtail = idtail;

    this.parentObj = document.getElementById(parentid);

    this.ChangeTabImg = function(selobj)
    {	    
		var imgs = this.parentObj.getElementsByTagName('img');
		for(var i = 0 ; i < imgs.length ; i++)
		{
			this.buttonset(imgs[i], 'out');
		}
		this.buttonset(selobj, 'over');
    }
    
    this.ChangeTabImg2 = function(selobj, classstr)
    {	    
		var imgs = this.parentObj.getElementsByTagName('img');
		for(var i = 0 ; i < imgs.length ; i++)
		{
			this.buttonset(imgs[i], 'out');
			this.buttoncss(imgs[i], '');
		}
		this.buttonset(selobj, 'over');
		this.buttoncss(selobj, classstr);
    }

    this.buttonset = function (obj, mode)
    {
		var filename = obj.src;
		var file = filename.split('/');
		var filepos = '';
		
		for(var i = 0 ; i < file.length-1 ; i++)
			filepos += file[i]+'/';
		
		file = file[file.length-1];

		var exp = file.split('.');
		var temp = exp[0].split('_');

		var contentlayerid = '';

		if(temp.length < 2)
			contentlayerid = exp[0].split('_')[0];
		else
		{
			for(var i = 0 ; i < temp.length-1 ; i++)
			{
				if(contentlayerid)
					contentlayerid += '_';
				contentlayerid += temp[i];
			}
		}

		var contentlayerobj = document.getElementById(contentlayerid+this.idtail);
		
		switch(mode)
		{
			case 'over' :
			obj.src = filepos+contentlayerid+'_on.gif';
			if(contentlayerobj)
				contentlayerobj.style.display = 'block';
			break;
			case 'out' :
			if(exp[0].split('_')[1] == 'off')
			break;
			obj.src = filepos+contentlayerid+'_off.gif';
			if(contentlayerobj)
				contentlayerobj.style.display = 'none';
			break;
		}
    }
    
    this.buttoncss = function (obj, classstr) {
    	obj.className = classstr;
    }
}
