var dragged_element = null;
var g_drop = null;
var source_element = null;
var drop_areas = [];
var empty_areas = [];
var offset_x = 0;
var offset_y = 0;

var drop_area;
var dragged_area;

function findPos(obj) {
	var curleft = curtop = curwidth = curheight = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		curwidth = obj.offsetWidth;
		curheight = obj.offsetHeight;
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	
	return [curleft,curtop,curwidth,curheight];
}

document.getElementsByClassName = function(cl) {
	var retnode = [];
	var myclass = new RegExp('\\b'+cl+'\\b');
	var elem = this.getElementsByTagName('*');
	for (var i = 0; i < elem.length; i++) {
		var classes = elem[i].className;
		if (myclass.test(classes)) {
			retnode.push(elem[i]);
		}
	}
	return retnode;
};

function createXMLHttp() {
	var xmlhttp;
	try {
		xmlhttp = new XMLHttpRequest();
	} catch(e) {
		try {
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch(e) {
			xmlhttp = null;
		}
	}

	return xmlhttp;
}

var current_top = 0;

function move(obj, pos) {
	var a = findPos(obj);

	var changed = false;

	var old_left = obj.style.left;
	obj.style.left = "" + ((a[0] + pos[0] + 1) / 2) + "px";
	if (old_left != obj.style.left) changed = true;

	var old_top = obj.style.top;
	obj.style.top = "" + ((a[1] + pos[1] + 1) / 2) + "px";
	if (old_top != obj.style.top) changed = true;

	if (changed) {
		setTimeout(function () { move(obj, pos); }, 100);
	} else {
		obj.parentNode.removeChild(obj);
	}
}

// --------------------------------------------------------------
// --------------------------------------------------------------

function drag_move(e) {
	if (dragged_element != null) {
		if (!e) {
			dragged_element.style.left = "" + (event.clientX - offset_x) + "px";
			dragged_element.style.top = "" + (event.clientY - offset_y) + "px";
		} else {
			dragged_element.style.left = "" + (e.pageX - offset_x) + "px";
			dragged_element.style.top = "" + (e.pageY - offset_y) + "px";
		}
	}
	try {
		e.preventDefault();
	} catch(e) {
		event.returnValue = false;
	}
}

function save_box_position() {
	var test = document.getElementsByClassName('box');
	var tmp;
	var ele;
	var boxes_left = "";
	var boxes_right = "";
	var j = 0;
	var k = 0;

	for(i = 0;i < test.length;i++) {
		ele = document.getElementById(test[i].id);
		tmp = "" + test[i].id;
		if (ele.parentNode.id == 'boxes_left') {
			if (k != 0) {
				boxes_left += ",";
			}
			boxes_left += tmp.substr(3, 1000);
			k++;
		} else {
			if (j != 0) {
				boxes_right += ",";
			}
			boxes_right += tmp.substr(3, 1000);
			j++;
		}
	}

	xmlhttp = createXMLHttp();
	
	var u = "/emploi/save_box_position.php?current_url=" + location.href;
	if (k != 0) {
		u += "&boxes_left=" + boxes_left;
	}
	if (j != 0) {
		u += "&boxes_right=" + boxes_right;
	}

	xmlhttp.open('GET', u);
	xmlhttp.send(null);	
}

function drag_end(e) {
	if (dragged_element == null) {
		return;
	}

	var x, y;
	if (!e) {
		x = event.clientX + document.body.scrollLeft;
		y = event.clientY + document.body.scrollTop;
	} else {
		x = e.pageX;
		y = e.pageY;
	}

	var found = false;

	for(i = 0;i < drop_areas.length;i++) {
		g_drop = drop_areas[i];
		drop_area = findPos(g_drop);

		if ((x > drop_area[0]) && (x < (drop_area[0] + drop_area[2])) && (y > drop_area[1]) && (y < (drop_area[1] + drop_area[3]))) {

			try {
				dragged_element.parentNode.removeChild(dragged_element);
			} catch(exception) {
			}
			g_drop.parentNode.insertBefore(source_element, g_drop);
			
			found = true;
		}
	}
	
	if (!found) {
		for(i = 0;i < empty_areas.length;i++) {
			g_drop = empty_areas[i];
			drop_area = findPos(g_drop);

			if ((x > drop_area[0]) && (x < (drop_area[0] + drop_area[2])) && (y > drop_area[1]) && (y < (drop_area[1] + drop_area[3]))) {

				dragged_element.parentNode.removeChild(dragged_element);
				g_drop.appendChild(source_element);
			
				found = true;
			}
		}
	}

	if (!found) {
		move(dragged_element, dragged_area);
	} else {
		save_box_position();
	}
	dragged_element = null;
	try {
		e.preventDefault();
	} catch(e) {
		event.returnValue = false;
	}
}

function drag_begin(e) {
	var ele = this.parentNode.parentNode.parentNode;
	source_element = ele;

	dragged_area = findPos(ele);
	dragged_element = ele.cloneNode(true);
	document.body.appendChild(dragged_element);

	dragged_element.style.position = 'absolute';
	dragged_element.style.width = ele.parentNode.offsetWidth + 'px';

	if (!e) {
		offset_x = event.clientX - dragged_area[0];
		offset_y = event.clientY - dragged_area[1];
		dragged_element.style.left = "" + (event.clientX - offset_x) + "px";
		dragged_element.style.top = "" + (event.clientY - offset_y) + "px";
	} else {
		offset_x = e.pageX - dragged_area[0];
		offset_y = e.pageY - dragged_area[1];
		dragged_element.style.left = "" + (e.pageX - offset_x) + "px";
		dragged_element.style.top = "" + (e.pageY - offset_y) + "px";
	}

	try {
		e.preventDefault();
	} catch(e) {
		event.returnValue = false;
	}
}

function drag_init(drag, drop) {
	var id;
	var test = document.getElementsByClassName(drag);
	var tmp_area;
	var handler;

	for(i = 0;i < test.length;i++) {
		id = test[i].id;
		handler = document.getElementById(id + "_handler");
		if (handler) {
			document.getElementById(id + "_handler").onmousedown = drag_begin;
			document.onmousemove = drag_move;
			document.onmouseup = drag_end;

			drop_areas.push(document.getElementById(id));
		}
	}
	
	empty_areas.push(document.getElementById('boxes_left'));
	empty_areas.push(document.getElementById('boxes_right'));

	g_drop = drop;
}

function toggle_box(id) {
	var childs = document.getElementById(id).childNodes;
	for(i = 0;i < childs.length;i++) {
		if (childs[i].className == 'box_bottom') {
			if (childs[i].style.display == 'none') {
				childs[i].style.display = 'block';
			} else {
				childs[i].style.display = 'none';
			}
		}
	}
}

function login_box() {
	var xmlhttp = createXMLHttp();

	xmlhttp.onreadystatechange = function () {
		if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
			var ele = document.createElement("div");
			ele.innerHTML = xmlhttp.responseText;
			ele.style.position = 'absolute';
			ele.style.width = '280px';
			
			try {
				var tmp = (innerWidth - 280) / 2;
			} catch(exception) {
				var tmp = (document.body.offsetWidth - 280) / 2;
			}
			
			ele.style.left = '' + tmp + 'px';
			ele.style.top = '225px';
			document.body.appendChild(ele);
		}
	};

	xmlhttp.open("GET", "/include/boxes/box503.php");

	xmlhttp.send(null);
}

function check_login() {
	var xmlhttp = createXMLHttp();
	
	var login = document.getElementById('re_login').value;
	var passwd = document.getElementById('re_passwd').value;

	xmlhttp.onreadystatechange = function () {
		if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
			if (xmlhttp.responseText == '1') {
				location='/recruteurs/';
			} else {
				alert("Erreur d'identification");
			}
		}
	};
	
	xmlhttp.open("GET", "/recruteurs/ajax_login.php?login=" + login + "&passwd=" + passwd);

	xmlhttp.send(null);
}

function map_box() {
	var xmlhttp = createXMLHttp();

	xmlhttp.onreadystatechange = function () {
		if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
			var ele = document.createElement("div");
			ele.innerHTML = xmlhttp.responseText;
			ele.style.position = 'absolute';
			ele.style.width = '600px';
			
			try {
				var tmp = (innerWidth - 600) / 2;
			} catch(exception) {
				var tmp = (document.body.offsetWidth - 600) / 2;
			}
			
			ele.style.left = '' + tmp + 'px';
			ele.style.top = '225px';
			document.body.appendChild(ele);
		}
	};

	xmlhttp.open("GET", "/include/boxes/box102.php");

	xmlhttp.send(null);
}