ajax.dnd = {};
var zval = 3;

ajax.dnd.SimpleDragSource = function(elementId) {
	this.element = document.getElementById(elementId);
	this.dragging = false; // ÇöÀç µå·¡±×ÁßÀÎÁö ¿©ºÎ Ç¥½Ã
	this.selected = false; // ÇöÀç ¸¶¿ì½º´Ù¿î »óÅÂÀÎÁö Ç¥½Ã
	this.diff = null; // ¸¶¿ì½º À§Ä¡¿Í °´Ã¼ À§Ä¡
	
	this.mouseDown = ajax.Event.bindAsListener(this.doMouseDown, this);
	this.mouseMove = ajax.Event.bindAsListener(this.doMouseMove, this);
	this.mouseUp = ajax.Event.bindAsListener(this.doMouseUp, this);
	
	ajax.Event.addListener(
		this.element, "mousedown", this.mouseDown);
}
ajax.dnd.SimpleDragSource.prototype = {
	doMouseDown: function(e) {
		var event = window.event || e;
		if (!ajax.Event.isLeftButton(event)) return;
		
		this.selected = true;
	//	alert(zval+1);
		zval = zval+1 ;
	
		this.element.style.zIndex  = zval ;
		var elementXY = ajax.GUI.getXY(this.element);
		var mouseXY = ajax.Event.getMouseXY(event);
		this.diff = {
			x: mouseXY.x - elementXY.x,
			y: mouseXY.y - elementXY.y
		};
		
		ajax.Event.addListener(document, "mousemove", this.mouseMove);
		ajax.Event.addListener(document, "mouseup", this.mouseUp);
		ajax.Event.stopEvent(event);
	},
	doMouseMove: function(e) {
		if (!this.selected) return false;
		if (!this.dragging) {
			this.dragging = true;
			if(this.element.name!="index_weather" && this.element.name!="index_wmanual" && this.element.name!="index_newwrite"){
				ajax.GUI.setOpacity(this.element, 0.60);
			}
		}
		
		var event = window.event || e;
		var mouseXY = ajax.Event.getMouseXY(event);
		var newXY = {
			x: mouseXY.x - this.diff.x,
			y: mouseXY.y - this.diff.y
		}
		ajax.GUI.setXY(this.element, newXY.x, newXY.y);
		
		ajax.Event.stopEvent(event);
	},
	doMouseUp: function(e) {

		if (!this.selected) return;
		
		this.selected = false;
		this.diff = null;

		var tempName = this.element.id;

var index_widget=["","holic_choice","index_newnew","index_bestcse" ,"index_rankig","index_mania","index_together","index_category","index_note","index_goodroad","index_tag","index_doctor","index_friend","MainControlArea"];

	var temp_XY = ajax.GUI.getXY(document.getElementById( tempName ));
	//eleXY = temp_XY.x + "/" + temp_XY.y;
	var basis="Control_c";
	var basis_XY = ajax.GUI.getXY(document.getElementById( basis ));
	eleXY = (temp_XY.x - basis_XY.x) + "/" + (temp_XY.y - basis_XY.y);
     for(var i=1;i<index_widget.length;i++)
		{ 
		 
		if(tempName==index_widget[i]){
			
			//eleName = "p"+i+"XY";
		 	
			//setCookie(p[i], eleXY, 365);
			set_wgCookie('person',"p"+i,eleXY);
		  }
		 
        }
		//var cookie=XY_getCookie('person');
				
		//setCookie('person', cookie+eleXY, 365);
		
        


		var event = window.event || e;
		if (this.dragging) {
			this.dragging = false;
			
			if(this.element.name!="index_weather" && this.element.name!="index_wmanual" && this.element.name!="index_newwrite"){
			ajax.GUI.setOpacity(this.element, 1.0);
			}
		}
		ajax.Event.removeListener(
			document, "mousemove", this.mouseMove);
		ajax.Event.removeListener(
			document, "mouseup", this.mouseUp);
		ajax.Event.stopEvent(event);
	}
}

ajax.dnd.DNDManager = function() {
	this.dropTargetList = new Array();
	this.dragSourceList = new Array();
	
	this.mouseDown = ajax.Event.bindAsListener(this.doMouseDown, this);
	this.mouseMove = ajax.Event.bindAsListener(this.doMouseMove, this);
	this.mouseUp = ajax.Event.bindAsListener(this.doMouseUp, this);
	
	this.selectedDragSource = null;
}
ajax.dnd.DNDManager.prototype = {
	addDropTarget: function(dropTarget) {
		this.dropTargetList[this.dropTargetList.length] = dropTarget;
	},
	removeDropTarget: function(dropTarget) {
		var newList = new Array();
		for (var i = 0 ; i < this.dropTargetList.length ; i++) {
			if (this.dropTargetList[i] != dropTarget) {
				newList[newList.length] = this.dropTargetList[i];
			}
		}
		this.dropTargetList = newList;
	},
	addDragSource: function(dragSource) {
		this.dragSourceList[this.dragSourceList.length] = dragSource;
		ajax.Event.addListener(dragSource.getElement(),
		                       "mousedown", this.mouseDown);
	},
	removeDragSource: function(dragSource) {
		var newList = new Array();
		for (var i = 0 ; i < this.dropTargetList.length ; i++) {
			if (this.dragSourceList[i] != dragSource) {
				newList[newList.length] = this.dragSourceList[i];
			} else {
				ajax.Event.removeListener(
					dragSource.getElement(),
					"mousedown", this.mouseDown);
			}
		}
		this.dragSourceList = newList;
	},
	doMouseDown: function(e) {
		var event = window.event || e;
		if (!ajax.Event.isLeftButton(event)) return;
		
		var target = ajax.Event.getTarget(event);
		
		while (target && !target.dragSource) {
			target = target.parentNode;
		}
		this.selectedDragSource = target.dragSource;
		this.selectedDragSource.selectDrag(event);
		
		ajax.Event.addListener(document, "mousemove", this.mouseMove);
		ajax.Event.addListener(document, "mouseup", this.mouseUp);
		ajax.Event.stopEvent(event);
	},
	doMouseMove: function(e) {
		if (!this.selectedDragSource) return;

		var event = window.event || e;
		if (!this.selectedDragSource.isDragging()) {
			this.selectedDragSource.startDrag();
		}
		
		this.selectedDragSource.moveDrag(event);
		
		ajax.Event.stopEvent(event);
	},
	doMouseUp: function(e) {

		if (!this.selectedDragSource) return;
		
		var dragSource = this.selectedDragSource;
		this.selectedDragSource = null;
		
		var event = window.event || e;
		
		dragSource.deselectDrag(event);
		
		if (dragSource.isDragging()) {
			var mouseXY = ajax.Event.getMouseXY(event);
			
			var dropTarget = null;
			for (var i = 0 ; i < this.dropTargetList.length ; i++) {
				var droppable = this.dropTargetList[i].checkInDropTarget(
					dragSource, mouseXY);
				if (droppable) {
					dropTarget = this.dropTargetList[i];
					break;
				}
			}
			if (dropTarget) {
				dragSource.endDrag(event);
				dropTarget.drop(dragSource);
			} else {
				dragSource.cancelDrag(event);
			}
		}
		ajax.Event.removeListener(
			document, "mousemove", this.mouseMove);
		ajax.Event.removeListener(
			document, "mouseup", this.mouseUp);
		ajax.Event.stopEvent(event);
	}
}

ajax.dnd.DropTarget = function(elementId) {
	this.element = document.getElementById(elementId);
}
ajax.dnd.DropTarget.prototype = {
	checkInDropTarget: function(dragSource, mouseXY) {
		var bounds = ajax.GUI.getBounds(this.element);
		return bounds.x <= mouseXY.x && bounds.x + bounds.width >= mouseXY.x &&
		       bounds.y <= mouseXY.y && bounds.y + bounds.height >= mouseXY.y;
	},
	drop: function(dragSource) {
		var element = dragSource.getElement();
		this.element.appendChild(element);
	}
}

ajax.dnd.DragSource = function(elementId) {
	this.element = document.getElementById(elementId);
	this.element.dragSource = this;
	this.selected = false;
	this.dragging = false;
	this.diff = null;
}
ajax.dnd.DragSource.prototype = {
	getElement: function() {
		return this.element;
	},
	selectDrag: function(event) {
		this.selected = true;
		
		var elementXY = ajax.GUI.getBounds(this.element);
		var mouseXY = ajax.Event.getMouseXY(event);
		this.diff = {
			x: mouseXY.x - elementXY.x,
			y: mouseXY.y - elementXY.y
		};
	},
	deselectDrag: function(event) {
		this.selected = false;
		this.diff = null;
	},
	startDrag: function(event) {
		this.dragging = true;
		
		var elementXY = ajax.GUI.getBounds(this.element);
		this.element.style.position = "absolute";
		if(this.element.name!="index_weather" && this.element.name!="index_wmanual" && this.element.name!="index_newwrite"){
		ajax.GUI.setOpacity(this.element, 0.60);
		}
	},
	isDragging: function() {
		return this.dragging;
	},
	moveDrag: function(event) {
		var mouseXY = ajax.Event.getMouseXY(event);
		var newXY = {
			x: mouseXY.x - this.diff.x,
			y: mouseXY.y - this.diff.y
		}
		ajax.GUI.setXY(this.element, newXY.x, newXY.y);
	},
	endDrag: function(event) {
		this.dragging = false;
		this.element.style.position = "";
		if(this.element.name!="index_weather" && this.element.name!="index_wmanual" && this.element.name!="index_newwrite"){
			ajax.GUI.setOpacity(this.element, 1.0);
		}
		this.element.parentNode.removeChild(this.element);
	},
	cancelDrag: function(event) {
		this.dragging = false;
		this.element.style.position = "";
		if(this.element.name!="index_weather" && this.element.name!="index_wmanual" && this.element.name!="index_newwrite"){
		ajax.GUI.setOpacity(this.element, 1.0);
		}
	}
}

ajax.GUI.getXY = function(e)
{
	if(e.parentNode === null || e.style.display == 'none'){
		return false;
	}

	var parent = null;
	var pos = [];
	var box;

	if(document.getBoxObjectFor){
		box = document.getBoxObjectFor(e);
		pos = [box.x, box.y];
	}
	else
	{
		pos = [e.offsetLeft, e.offsetTop];
		parent = e.offsetParent;
		if(parent != e)
		{
			while(parent)
			{
				pos[0] += parent.offsetLeft;
				pos[1] += parent.offsetTop;
				parent = parent.offsetParent;
			}
		}
		var ua = navigator.userAgent.toLowerCase();
		if(ua.indexOf('opera')!=-1 || (ua.indexOf('safari')!=-1 && this.getStyle(e, 'position') == 'absolute')){
		pos[1] -= document.body.offsetTop;
		}
	}
	
	if(e.parentNode){ parent = e.parentNode; }
	else{ parent = null; }

	while(parent && parent.tagName != 'BODY' && parent.tagName != 'HTML'){
		pos[0] -= parent.scrollLeft;
		pos[1] -= parent.scrollTop;

		if(parent.parentNode){ parent = parent.parentNode; }
		else{ parent = null; }
	}
	return{x: pos[0], y: pos[1]};
}

ajax.GUI.getX = function(e){
	return ajax.GUI.getXY(e).x;
}

ajax.GUI.getY = function(e){
	return ajax.GUI.getXY(e).y;
}



function set_wgCookie(varname, itemname, value) {
	    
			var tmp = getCookie(varname);
			if (tmp=="" | ! tmp) {													//ÄíÅ°º¯¼ö »ý¼ºµÇÁö ¾ÊÀº°æ¿ì
				tmp = itemname + "=" + value + "&";
				
			}else if (getCookie2(varname,itemname)=="") {//Ç×¸ñÀÇ ±âÁ¸ °ªÀÌ ¾ø´Â°æ¿ì
			   
				tmp = tmp + itemname + "=" + value + "&"; 
				
			}else{													//Ç×¸ñÀÇ ±âÁ¸°ªÀÌ ÀÌ¹Ì ÀÖ´Â°æ¿ì
				var patn = new RegExp(itemname+"=(.*?)&");			
				tmp = tmp.replace(patn,itemname+"="+value+"&");		
				
			}
			makeCookie(varname,tmp);
		
	}



	/*function getCookie(varname) {
			if (varname == null)
				{ alert("c");
					return "";
				}
			else{	 alert("d");
				varname += "=";
				startpos = document.cookie.indexOf(varname);

				if (startpos >= 0) {
					startpos += varname.length;
					endpos = document.cookie.indexOf(";", startpos);
					if (endpos == -1) endpos = document.cookie.length;
					return unescape(document.cookie.substring(startpos, endpos));
				}
			}
    }*/
    
	function getCookie( name ) 
{ 
	if (name==null)
	{
		return "";
	}
	else
	{
			var nameOfCookie = name + "="; 
			var x = 0; 
			while ( x <= document.cookie.length ) 
			{ 
			var y = (x+nameOfCookie.length); 
			if ( document.cookie.substring( x, y ) == nameOfCookie ) { 
			if ( (endOfCookie=document.cookie.indexOf( ";", y )) == -1 ) 
			endOfCookie = document.cookie.length; 
			return unescape( document.cookie.substring( y, endOfCookie ) ); 
			} 
			x = document.cookie.indexOf( " ", x ) + 1; 
			if ( x == 0 ) 
			break; 
			} 
			return ""; 
	}
}

	function getCookie2(uName,uName2)		//ÄíÅ°¿­ Áß¿¡ uName2ÀÇ °ªÀ» ±¸ÇÑ´Ù 
	{    
        if (uName == null || uName2 == null)
		{ 
			return "";
		}

		else{
			var string = getCookie(uName);
			
			var flag = string.indexOf(uName2+'=');
			
			if (flag != -1) 
			{ 
				flag += uName2.length + 1
				end = string.indexOf('&', flag) 

				if (end == -1) end = string.length
				return unescape(string.substring(flag, end))
			}
			else
			{
				return ""
			}
		}
	}



	function makeCookie(cookieName,cookieData)
	{
		if (cookieData != "")
		{
		    var expiry = new Date();
		    expiry.setTime(expiry.getTime() + 90 * (24 * 60 * 60 * 1000));
		    setCookie2(cookieName, cookieData, expiry);
		}
	}
			

function setCookie(name, value, expiredays ){
	
    var todayDate = new Date();
    todayDate.setDate( todayDate.getDate() + expiredays );
    document.cookie = name+ "=" + escape( value ) + "; path=/; expires=" + todayDate.toGMTString() + ";"
}

	function setCookie2(cookieName, cookieData, expiry)
	{   
		document.cookie = cookieName + "=" + cookieData + ";path=/;expires=" + expiry.toGMTString(); 
	}