// JavaScript Document
function IsBetween(x, y, minx, miny, maxx, maxy)
{
	if (x >= minx && x <= maxx && y >= miny && y <= maxy) return true;
	return false;
}

function ModifyListByValue(val, list, add)
{
	var	items	= $(list);
	var	reg		= new RegExp("(^|,)" + val + "(,|$)", "g");
	var pos		= reg.exec(items.val());
	if (pos != null)
	{
		car			= (RegExp.$1 == ',' && RegExp.$2 == ',') ? "," : "";
		items.val(items.val().replace(reg, car));
	}
	if (add)
	{
		if (items.val() == "") items.val(val);
		else items.val(items.val() + "," + val);
	}
}

function ModifyListByItem(obj, list)
{
	ModifyListByValue(obj.value, list, obj.checked);
}

function ModifyListByList(items, list, add)
{
	$(items).each(function() {
		ModifyListByValue($(this).val(), list, add);
		this.checked	= add;
	});
}

function ParseInt(text)
{
	if (text)
		return parseInt(text.replace("px", ""));
	return NaN;
}

function EncodeRE(s)
{
	return s.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1');
}

function QueryString(str, key)
{
	var	re			= new RegExp("[?&]" + key + "=([^&$]*)", "i");
	var	offset		= str.search(re);
	if ( offset == -1 ) return null;
	return RegExp.$1;
}

function ParseUri(sourceUri)
{
	var uriPartNames	= ["source","protocol","authority","domain","port","path","directoryPath","fileName","query","anchor"];
	var uriParts		= new RegExp("^(?:([^:/?#.]+):)?(?://)?(([^:/?#]*)(?::(\\d*))?)?((/(?:[^?#](?![^?#/]*\\.[^?#/.]+(?:[\\?#]|$)))*/?)?([^?#/]*))?(?:\\?([^#]*))?(?:#(.*))?").exec(sourceUri);
	var uri				= {};
	
	for(var i = 0; i < 10; i++)
	{
		uri[uriPartNames[i]] = (uriParts[i] ? uriParts[i] : "");
	}
	// Always end directoryPath with a trailing backslash if a path was present in the source URI
	// Note that a trailing backslash is NOT automatically inserted within or appended to the "path" key
	if(uri.directoryPath.length > 0)
	{
		uri.directoryPath = uri.directoryPath.replace(/\/?$/, "/");
	}
	
	return uri;
}

function ConfirmURL(url, message)
{
	if (typeof message == "undefined") message = "Esti sigur?";
	if (confirm(message)) location.href = url;
}

function FitImage(obj)
{
	var	containerWidth	= obj.parent("div").width();
	var	containerHeight	= obj.parent("div").height();
	var	imageWidth		= obj.width();
	var	imageHeight		= obj.height();
	var	width			= 0;
	var	height			= 0;
	var	resize			= false;
	if (imageWidth > containerWidth)
	{
		width	= containerWidth;
		height	= imageHeight * (width / imageWidth);
		resize	= true;
	}
	if (height > containerHeight)
	{
		height	= containerHeight;
		width	= imageWidth * (height / imageHeight);
		resize	= true;
	}
	
	if (resize)
	{
		obj.width(width);
		obj.height(height);
	}
	obj.css("left", (obj.parent("div").width() - obj.width()) / 2 + ParseInt(obj.parent("div").css("padding-left")));
	obj.css("top", (obj.parent("div").height() - obj.height()) / 2 + ParseInt(obj.parent("div").css("padding-top")));
	obj.css("visibility", "visible");
}

function GetVerticalSpace(obj)
{
	return	ParseInt(obj.css("padding-top"))
			+ ParseInt(obj.css("padding-bottom"))
			+ ParseInt(obj.css("border-top-width"))
			+ ParseInt(obj.css("border-bottom-width"))
			+ ParseInt(obj.css("margin-top"))
			+ ParseInt(obj.css("margin-bottom"));
}

function GetHorizontalSpace(obj)
{
	return	ParseInt(obj.css("padding-left"))
			+ ParseInt(obj.css("padding-right"))
			+ ParseInt(obj.css("border-left-width"))
			+ ParseInt(obj.css("border-right-width"))
			+ ParseInt(obj.css("margin-left"))
			+ ParseInt(obj.css("margin-right"));
}

function ShowEmailLink(name, domain)
{
	document.write('<a href=\"mailto:' + name + '@' + domain + '\">');
	document.write(name + '@' + domain + '</a>');
}

/* urmatoarele 4 functii pot fi sterse pentru ca au fost puse doar pentru backward compatibility */
function ChangeClassOnHoverForID(e, t, id, cssClass)
{
	changeClassOnHoverForElement(e, t, document.getElementById(id), cssClass);
}

function changeClassOnHoverForElement(e, t, element, cssClass)
{
	changeCSSClassForElement(isMouseLeaveOrEnter(e, t), element, cssClass);
}

function changeCSSClassForElement(condition, element, cssClass)
{
	if (condition)
		element.className = cssClass;
}
function isMouseLeaveOrEnter(e, handler)
{
//source: http://www.dynamic-tools.net/toolbox/isMouseLeaveOrEnter/
	if (e.type != 'mouseout' && e.type != 'mouseover') return false;
	var reltg = e.relatedTarget ? e.relatedTarget :
	e.type == 'mouseout' ? e.toElement : e.fromElement;
	while (reltg && reltg != handler) reltg = reltg.parentNode;
	return (reltg != handler);
}

function AutoPostBack(formName)
{
	document.getElementById('IsAutoPostBack').value = 1;
	document.forms[formName].submit();
	return true;
}

// TEMP
function AddRemItems(element, list)
{
	return AddRemValue(element.value, list, element.checked);
}

function AddRemValue(val, list, add)
{
	items		= document.getElementById(list);
	var	reg		= new RegExp("(^|,)" + val + "(,|$)", "g");
	var pos		= reg.exec(items.value);
	if (pos != null)
	{
		car			= (RegExp.$1 == ',' && RegExp.$2 == ',') ? "," : "";
		items.value = items.value.replace(reg, car);
	}
	if (add)
	{
		if (items.value == "") items.value = val;
		else items.value += "," + val;
	}
}


function AddRemList(category, items, list)
{
	for (index = 0; index < items.length; index++)
	{
		element			= document.getElementById(items[index]);
		if (element.checked != category.checked)
		{
			element.checked	= category.checked;
			AddRemItems(element, list); 
		}
	}
}

function AddRemNumber(val, to, from, addedValue, add)
{
	toObj			= document.getElementById(to);
	fromObj			= document.getElementById(from);
	addedValueObj	= document.getElementById(addedValue);
	fromValue		= parseFloat(fromObj.value);
	
	if (add)
	{
		if (fromValue >= val)
		{
			toObj.value			= val;
			fromObj.value		= fromValue - val;
			addedValueObj.value	= val;
		}
		else
		{
			toObj.value			= fromValue;
			fromObj.value		= 0;
			addedValueObj.value	= fromValue;
		}
	}
	else
	{
		fromObj.value			= fromValue + parseFloat(addedValueObj.value);
		toObj.value				= 0
		addedValueObj.value		= 0;
	}
//	alert("Added: " + addedValueObj.value + " FROM: " + fromObj.value);
}