function mouseMove(ev)
{
	ev = ev || window.event;

	if(ev.pageX || ev.pageY)
	{
		mousePosX = ev.pageX;
		mousePosY = ev.pageY;
	}
	else
	{
		mousePosX = ev.clientX + document.body.scrollLeft - document.body.clientLeft;
		mousePosY = ev.clientY + document.body.scrollTop  - document.body.clientTop;
	}

	if(dragId)
	{
		element = document.getElementById(dragId);
		element.style.top = (mousePosY+dragPosY)+'px';
		element.style.left = (mousePosX+dragPosX)+'px';


		parent = element.parentNode;
		childs = parent.childNodes;

		dragDest = null;

		for(i = 0; i < childs.length; i++)
		{
			childPosY = getElementPosY(childs[i]);
			limit = childPosY + (childs[i].offsetHeight / 2);
			if(mousePosY < limit && childs[i].id != dragId && childs[i].id != 'selection')
			{
				dragDest = childs[i].id;
				break;
			}
		}

		beforeElement = document.getElementById(dragDest);
		selection = document.getElementById('selection');
		parent.insertBefore(selection,beforeElement);
	}
}

var mousePosX = 0;
var mousePosY = 0;
var dragPosX = 0;
var dragPosY = 0;
var dragId;
var dragDest;
document.onmousemove = mouseMove;

function drag_start(id)
{
	element = document.getElementById(id);

	dragPosX = getElementPosX(element)-mousePosX;
	dragPosY = getElementPosY(element)-mousePosY;
	dragId = id;

	next = 0;
	parent = element.parentNode;
	childs = parent.childNodes;
	for(i = 0; i < childs.length; i++)
	{
		if(childs[i].id == id) next = 1;
		if(next == 1)
		{
			dragDest = childs[i].id;
			break;
		}
	}
}
function drag_stop()
{
	dragId = null;
	dragDest = null;
	dragPosX = 0;
	dragPosY = 0;
}

function getElementPosX(element)
{
	var left = 0;

	while (element.offsetParent)
	{
		left += element.offsetLeft;
		element = element.offsetParent;
	}

	left += element.offsetLeft;

	return left;
}

function getElementPosY(element)
{
	var top = 0;

	while (element.offsetParent)
	{
		top += element.offsetTop;
		element = element.offsetParent;
	}

	top += element.offsetTop;

	return top;
}

var ajaxBooleanQueue_input = new Array();
var ajaxBooleanQueue_url = new Array();
var ajaxBooleanQueue_data = new Array();
var ajaxBooleanQueue_state = false;
var ajaxBooleanQueue_cursor = -1;

function build_debug(text)
{
	document.getElementById('build_debug').style.display = 'block';
	document.getElementById('build_debug').innerHTML += '<br/>'+text;
}

function build_ajax_conexion()
{
	if (window.XMLHttpRequest)
	{
		xhr = new XMLHttpRequest();
	}
	else if (window.ActiveXObject)
	{
		xhr = new ActiveXObject("Microsoft.XMLHTTP");
	}
	return xhr;
}

function build_change_class(id,class_css)
{
	document.getElementById(id).className = class_css;
}

function build_multi_text_delete(id)
{
	document.getElementById(id).innerHTML = '';
}

function build_multi_text_add(id)
{
	input_values = new Array();
	count = document.getElementById(id+'_count').value;
	for(i = 0;i < count; i++)
	{
		if(document.getElementById(id+i))
		{
			input_values[i] = document.getElementById(id+i).value;
		}
	}

	reg = new RegExp(id+'_new','g');
	code = '<span id="input_'+id+count+'">'+document.getElementById('input_'+id+'_new').innerHTML+'</span>';
	code = code.replace(reg,id+count);
	document.getElementById('input_'+id+'_main').innerHTML += code;
	document.getElementById(id+'_count').value++;

	for(i = 0;i < count; i++)
	{
		if(document.getElementById(id+i))
		{
			document.getElementById(id+i).value = input_values[i];
		}
	}
}

function build_input_ajax_boolean(input,url,data)
{
	xhr = build_ajax_conexion();
	xhr.onreadystatechange = function()
	{
		if (xhr.readyState == 4)
		{
			if (xhr.status == 200)
			{
				build_ajax_boolean_callback(input,xhr.responseText,1);
			}
			else build_ajax_boolean_callback(input,'error',1);
		}
	}

	xhr.open('POST',url,true);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xhr.send("value="+document.getElementById(input).value+'&'+data);

	document.getElementById(input+'_true').style.display = 'none';
	document.getElementById(input+'_false').style.display = 'none';
	document.getElementById(input+'_error').style.display = 'none';
	document.getElementById(input+'_wait').style.display = 'inline';
}

function build_ajax_add_to_queue(input,url,data)
{
	ajaxBooleanQueue_input.push(input);
	ajaxBooleanQueue_url.push(url);
	ajaxBooleanQueue_data.push(data);

	if(!ajaxBooleanQueue_state)
	{
		ajaxBooleanQueue_cursor++;
		input2 = ajaxBooleanQueue_input[ajaxBooleanQueue_cursor];
		url2 = ajaxBooleanQueue_url[ajaxBooleanQueue_cursor];
		data2 = ajaxBooleanQueue_data[ajaxBooleanQueue_cursor];

		build_ajax_boolean(input2,url2,data2);
	}
}

function build_ajax_boolean(input,url,data)
{
	ajaxBooleanQueue_state = true;

	xhr = build_ajax_conexion();
	xhr.onreadystatechange = function()
	{
		if (xhr.readyState == 4)
		{
			if (xhr.status == 200)
			{
				build_ajax_boolean_callback(input,xhr.responseText,0);
			}
			else build_ajax_boolean_callback(input,'error',0);

			if(ajaxBooleanQueue_url.length > (ajaxBooleanQueue_cursor+1))
			{
				ajaxBooleanQueue_cursor++;
				input2 = ajaxBooleanQueue_input[ajaxBooleanQueue_cursor];
				url2 = ajaxBooleanQueue_url[ajaxBooleanQueue_cursor];
				data2 = ajaxBooleanQueue_data[ajaxBooleanQueue_cursor];

				build_ajax_boolean(input2,url2,data2);
			}
			else
			{
				ajaxBooleanQueue_state = false;
			}
		}
	}

	xhr.open('POST',url,true);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xhr.send(data);

	document.getElementById(input+'_true').style.display = 'none';
	document.getElementById(input+'_false').style.display = 'none';
	document.getElementById(input+'_error').style.display = 'none';
	document.getElementById(input+'_wait').style.display = 'inline';
}

function build_ajax_boolean_callback(id,out,input)
{
	if(out == 1)
	{
		if(input) build_change_class(id,'build_input_ajax_boolean_true');
		document.getElementById(id+'_true').style.display = 'inline';
		document.getElementById(id+'_false').style.display = 'none';
		document.getElementById(id+'_error').style.display = 'none';
		document.getElementById(id+'_wait').style.display = 'none';
	}
	else if(out == 0)
	{
		if(input) build_change_class(id,'build_input_ajax_boolean_false');
		document.getElementById(id+'_true').style.display = 'none';
		document.getElementById(id+'_false').style.display = 'inline';
		document.getElementById(id+'_error').style.display = 'none';
		document.getElementById(id+'_wait').style.display = 'none';
	}
	else
	{
		if(input) build_change_class(id,'build_input_ajax_boolean_error');
		document.getElementById(id+'_true').style.display = 'none';
		document.getElementById(id+'_false').style.display = 'none';
		document.getElementById(id+'_error').style.display = 'inline';
		document.getElementById(id+'_wait').style.display = 'none';
		build_debug(out);
	}
}

function build_email(id)
{
	email = document.getElementById(id).value;
	if(email != '')
	{
		if(email.indexOf("@") != "-1"
			&& email.indexOf(".") != "-1")
		{
			document.getElementById(id+'_false').style.display = 'none';
		}
		else
		{
			document.getElementById(id+'_false').style.display = 'inline';
		}
	}
}

function build_perm_change(id,user)
{
	perm_type = document.getElementById(id+'_type').value;
	perm = document.getElementById(id).value;
	if(perm_type == 'all')
	{
		document.getElementById(id+'_div').style.display = "none";
		document.getElementById(id).value = 'all';
	}
	else if(perm_type == 'gest')
	{
		document.getElementById(id+'_div').style.display = "none";
		document.getElementById(id).value = 'gest';
	}
	else if(perm_type == 'user')
	{
		document.getElementById(id+'_div').style.display = "none";
		document.getElementById(id).value = 'user';
	}
	else if(perm_type == 'disable')
	{
		document.getElementById(id+'_div').style.display = "none";
		document.getElementById(id).value = '';
	}
	else if(perm_type == 'self')
	{
		document.getElementById(id+'_div').style.display = "none";
		document.getElementById(id).value = 'u'+user;
	}
	else if(perm_type == 'filter')
	{
		document.getElementById(id+'_div').style.display = "inline";
		document.getElementById(id).value = '';
	}
}

function build_password(id,min,max,confirm)
{
	password = document.getElementById(id).value;
	if(password.length == 0)
	{
		build_change_class(id,'build_input_password_true');
		document.getElementById(id+'_small').style.display = 'none';
		document.getElementById(id+'_big').style.display = 'none';
	}
	else if(password.length < min && min)
	{
		build_change_class(id,'build_input_password_false');
		document.getElementById(id+'_small').style.display = 'inline';
		document.getElementById(id+'_big').style.display = 'none';
	}
	else if(password.length > max && max)
	{
		build_change_class(id,'build_input_password_false');
		document.getElementById(id+'_small').style.display = 'none';
		document.getElementById(id+'_big').style.display = 'inline';
	}
	else
	{
		build_change_class(id,'build_input_password_true');
		document.getElementById(id+'_small').style.display = 'none';
		document.getElementById(id+'_big').style.display = 'none';
	}

	if(confirm && password.length > 0)
	{
		document.getElementById(confirm).value = '';
		document.getElementById(id+'_confirm').style.display = 'inline';
		document.getElementById(id+'_bad_confirm').style.display = 'none';
	}
}

function build_password_confirm(id,password)
{
	document.getElementById(password+'_confirm').style.display = 'none';
	if(document.getElementById(id).value == document.getElementById(password).value)
	{
		build_change_class(id,'build_input_password_true');
		document.getElementById(password+'_bad_confirm').style.display = 'none';
	}
	else
	{
		build_change_class(id,'build_input_password_false');
		document.getElementById(password+'_bad_confirm').style.display = 'inline';
	}
}

function sntx_dual(sntx_area, repdeb, repfin)
{
	var input = document.getElementById(sntx_area);
	input.focus();
	//Internet Explorer
	if(typeof document.selection != 'undefined')
	{
		//Insertion du code de formatage
		var range = document.selection.createRange();
		var insText = range.text;
		range.text = repdeb + insText + repfin;
		//Ajustement de la position du curseur
		range = document.selection.createRange();
		if (insText.length == 0)
		{
			range.move('character', -repfin.length);
		}
		else
		{
			range.moveStart('character', repdeb.length + insText.length + repfin.length);
		}
		range.select();
	}
	//Gecko
	else if(typeof input.selectionStart != 'undefined')
	{
		//Insertion du code de formatage
		var start = input.selectionStart;
		var end = input.selectionEnd;
		var insText = input.value.substring(start, end);
		input.value = input.value.substr(0, start) + repdeb + insText + repfin + input.value.substr(end);
		//Ajustement de la position du curseur
		var pos;
		if (insText.length == 0)
		{
			pos = start + repdeb.length;
		}
		else
		{
			pos = start + repdeb.length + insText.length + repfin.length;
		}
		input.selectionStart = pos;
		input.selectionEnd = pos;
	}
	//Autre
	else
	{
		//Requête de la position d'insertion
		var pos;
		var re = new RegExp('^[0-9]{0,3}$');
		while(!re.test(pos))
		{
			pos = prompt("Insertion à la position (0.." + input.value.length + "):", "0");
		}
		if(pos > input.value.length)
		{
			pos = input.value.length;
		}
		//Insertion du code de formatage
		var insText = prompt("Veuillez entrer le texte à formater:");
		input.value = input.value.substr(0, pos) + repdeb + insText + repfin + input.value.substr(pos);
	}
}

function build_fade(div_front,opacity,speed)
{
	front = document.getElementById(div_front);

	if (opacity < 100)
	{
		opacity = opacity + (speed * 100);
		if (document.all)
		{
			front.filters.alpha.opacity = opacity;
		}
		front.style.MozOpacity = Math.min(parseFloat(front.style.MozOpacity) + speed, 0.99);
		front.style.opacity = Math.min(parseFloat(front.style.opacity) + speed, 0.99);
	}

	if (opacity < 100) setTimeout('build_fade("' + div_front + '", ' + opacity + ', '+speed+')', 100);
}

function build_fade_loop(images,titles,div_front,div_back,div_title,sleep,speed)
{
	image_0 = images[0];
	if(images.length-1 > image_0) image_1 = image_0 + 1;
	else image_1 = 1;
	images[0] = image_1;

	back = document.getElementById(div_back);
	back.style.backgroundImage = 'url(' + '\'' + images[image_0] + '\'' + ')';

	front = document.getElementById(div_front);
	front.style.backgroundImage = 'url(' + '\'' + images[image_1] + '\'' + ')';

	title = document.getElementById(div_title);
	title.innerHTML = titles[image_1];



	if (document.all) front.filters.alpha.opacity = 0;
	front.style.MozOpacity = 0;
	front.style.opacity = 0;

	build_fade(div_front,0,speed);

	stringTable_image = "["+images[0];
	for(i = 1; i < images.length; i++)
	{
		stringTable_image += ",'"+images[i]+"'";
	}
	stringTable_image += "]";

	stringTable_title = "["+images[0];
	for(i = 1; i < titles.length; i++)
	{
		stringTable_title += ",'"+titles[i]+"'";
	}
	stringTable_title += "]";

	setTimeout('build_fade_loop('+stringTable_image+','+stringTable_title+',"'+div_front+'","'+div_back+'","'+div_title+'",'+sleep+','+speed+')', sleep);
}

function build_opacity(id,alpha)
{
	element = document.getElementById(id);

	if (document.all)
	{
		element.filters.alpha.opacity = alpha*100;
	}
	else
	{
		element.style.MozOpacity = alpha;
		element.style.opacity = alpha;
	}
}

function build_mark_over(name,mark)
{
	if(mark >= 0) build_change_class(name+'_0','build_input_mark_void_1');
	else build_change_class(name+'_0','build_input_mark_void_0');

	for(i = 1; i <= 5; i++)
	{
		if(i <= mark)
		{
			build_change_class(name+'_'+i,'build_mark_1');
		}
		else
		{
			build_change_class(name+'_'+i,'build_mark_0');
		}
	}
}

function build_mark_click(name,mark)
{
	document.getElementById(name).value = mark;
}

function build_input_list_drag()
{
	id = this.id;
	element = document.getElementById(id);

	drag_start(id);

	selection = document.createElement('li');
	selection.className = 'selection';
	selection.id = 'selection';
	element.parentNode.insertBefore(selection,element);

	element.style.Zindex = '1';
	element.style.left = (mousePosX+dragPosX)+'px';
	element.style.top = (mousePosY+dragPosY)+'px';
	element.style.position = 'absolute';

	element.onmousedown = null;
	document.onmouseup = build_input_list_undrag;
	//build_opacity(id,0.5);
}


function build_input_list_undrag()
{
	id = dragId;
	element = document.getElementById(id);
	child = document.getElementById(dragDest);

	selection = document.getElementById('selection');
	parent = selection.parentNode;
	parent.removeChild(selection);

	element.style.Zindex = '0';
	element.style.position = 'static';
	element.style.left = '0px';
	element.style.top = '0px';
	element.parentNode.insertBefore(element,child);

	//build_opacity(id,1);

	element.onmouseup = null;
	element.onmousedown = build_input_list_drag;
	drag_stop();

	itemPosition = document.getElementById('item_position');

	parent = element.parentNode;
	childs = parent.childNodes;
	dragDest = null;
	itemPosition = document.getElementById('item_position');
	itemPosition.value = null;
	for(i = 0; i < childs.length; i++)
	{
		if(childs[i].id != 'selection' && childs[i].nodeType != 3)
		{
			itemPosition.value += ';'+childs[i].id;
		}
	}
}

function build_input_list(name,list)
{
	listZone = document.getElementById(name);

	for(i = 0;i < list.length; i++)
	{
		id = name+'_'+i;
		text = document.createTextNode(list[i]);
		element = document.createElement('li');

		element.appendChild(text);
		listZone.appendChild(element);

		element.id = id;
		element.onmousedown = build_input_list_drag;
	}
}


function build_input_list_item(name)
{
	element = document.getElementById(name);
	element.onmousedown = build_input_list_drag;
}

function build_show_menu(id)
{
	document.getElementById(id).style.display = 'inline';
}

function build_hide_menu(id)
{
	document.getElementById(id).style.display = 'none';
}

function build_help_box(message)
{
	element = document.getElementById('helpBox');
	if(element)
	{
		element.style.display = 'block';
		element.style.position = 'absolute';
		element.style.left = (mousePosX-10)+'px';
		element.style.top = (mousePosY+10)+'px';
		element.innerHTML = message;
		dragId = 'helpBox';
		dragPosX = -10
		dragPosY = 10;
	}
}

function build_help_box_close()
{
	element = document.getElementById('helpBox');
	if(element)
	{
		element.style.display = 'none';
		dragId = '';
		dragPosX = 0
		dragPosY = 0;
	}
}

function build_input_user(name)
{
	search = document.getElementById(name).value;
	document.getElementById(name+'_advise').innerHTML = document.getElementById(name).value;

	build_ajax_add_to_queue(name,'_user_search.php','search='+search);
}

function build_input_wysiwyg_area(name)
{
	if (navigator.appName=="Microsoft Internet Explorer")
	{
		document.write('<div style="scroll:auto;" class="build_input_wysiwyg" id="'+name+'" contentEditable="true"></div>');
	}
	else
	{
		var iframe=document.createElement('iframe');
		iframe.setAttribute('id',name);
		iframe.setAttribute('width',600);
		iframe.setAttribute('height',500);
		iframe.style.border = '1px solid #808080';
		iframe.style.fontWeight = 'normal';
		document.body.appendChild(iframe);

		iframe.addEventListener('load', function()
		{ document.getElementById(name).contentWindow.document.designMode='on'; }, true);
		document.getElementById(name). contentWindow.document.close();
	}
}

function build_input_folder_click(name,folder)
{
	document.getElementById(name).value = folder;
}

function build_input_folder_open(name,folder)
{
	list = document.getElementById(name+'_list_'+folder);
	item = document.getElementById(name+'_item_'+folder);
	if(list)
	{
		if(list.style.display == 'none')
		{
			list.style.display = 'block';
			if(list)
			{
				item.className = 'build_input_folder_open';
			}
		}
		else
		{
			list.style.display = 'none';
			if(list)
			{
				item.className = 'build_input_folder_close';
			}
		}
	}
	build_input_folder_click(name,folder);
}

function build_show_hide_layer(id)
{
	layer = document.getElementById(id);
	if(layer)
	{
		if(layer.style.display == 'none')
		{
			layer.style.display = 'block';
		}
		else
		{
			layer.style.display = 'none';
		}
	}
}

function antiSpam_form(id,url)
{
	document.forms[id].action = url;
}

var image_zoom = '';

function mc_mozaic_open(id)
{
	image_zoom = id;
	mc_mozaic_loop(id,100,75);
}
function mc_mozaic_loop(id,size,pos)
{
	time = 25;

	image = document.getElementById(id);
	if(image)
	{
		image.style.width = pos+'px';
		image.style.height = pos+'px';
		image.style.left = ((75-pos)/2)+'px';
		image.style.top = ((75-pos)/2)+'px';

		if(pos < size && image_zoom == id)
		{
			image.style.position = 'relative';
			image.style.zindex = 2;

			pos++;
			setTimeout('mc_mozaic_loop("' + id + '", ' + size + ', '+pos+')', time);
		}
		else if(pos > 75 && image_zoom != id)
		{
			image.style.position = 'relative';
			image.style.zindex = 1;

			pos--;
			setTimeout('mc_mozaic_loop("' + id + '", ' + size + ', '+pos+')', time);
		}
		else if(pos >= size)
		{
			setTimeout('mc_mozaic_loop("' + id + '", ' + size + ', '+size+')', time);
		}
		else if(pos == 75)
		{
			image.style.position = 'static';
			image.style.zindex = 1;
		}
	}
}
