/*
 * Common - 2009.06.19
 */

function MCPPEventRegister(object, eventName, handler)
{
	if (object.addEventListener)
		object.addEventListener(eventName, handler, false);
	else if (object.attachEvent)
		object.attachEvent('on' + eventName, handler);
}

function MCPPEventUnregister(object, eventName, handler)
{
	if (object.removeEventListener)
		object.removeEventListener(eventName, handler, false);
	else if (object.detachEvent)
		object.detachEvent('on' + eventName, handler);
}

function MCPPEventStopPropagation(event)
{
	if (event.stopPropagation)
		event.stopPropagation();
	else
		event.cancelBubbel = true;
	
	if (event.preventDefault)
		event.preventDefault();
	else
		event.returnValue = false;
}

function MCPPSetOpacity(object, opacity)
{
	if (opacity < 1.0 && opacity > 0.0)
	{
		object.style.display = "block";
		object.style.opacity = opacity;
		object.style.MozOpacity = opacity;
		object.style.filter = "alpha(opacity=" + (opacity * 100) + ")";
	}
	else if (opacity >= 1.0)
	{
		object.style.display = "block";
		
		MCPPRemoveStyle(object, 'opacity');
		MCPPRemoveStyle(object, 'MozOpacity');
		MCPPRemoveStyle(object, 'filter');
	}
	else if (opacity <= 0.0)
	{
		object.style.display = "none";
		
		MCPPRemoveStyle(object, 'opacity');
		MCPPRemoveStyle(object, 'MozOpacity');
		MCPPRemoveStyle(object, 'filter');
	}
}

function MCPPRemoveStyle(object, style)
{
	if (object.style.removeAttribute)
		object.style.removeAttribute(style);
	else
		object.style.removeProperty(style);
}

function MCPPGetElementByClassName(parent, className)
{
	if (parent)
	{
		var enumerator = parent.childNodes;
		
		for (i = 0; i < enumerator.length; ++i)
		{
			if (enumerator[i].className == className)
				return enumerator[i];
		}
	}
	
	return null;
}

function MCPPAddHoverImages(container)
{
	var enumerator;
	
	enumerator = container.getElementsByTagName('img');
	
	MCPPAddHoverImagesToControls(enumerator)
	
	enumerator = container.getElementsByTagName('input');
	
	MCPPAddHoverImagesToControls(enumerator)
}

function MCPPAddHoverImagesToControls(enumerator)
{
	var i = 0;
	
	while (i < enumerator.length)
	{
		if (enumerator[i].className == 'hover')
		{
			enumerator[i].normal = enumerator[i].src;
			enumerator[i].hover = enumerator[i].src.replace('.jpg', '-hover.jpg')
			                                       .replace('.jpeg', '-hover.jpeg')
			                                       .replace('.gif', '-hover.gif')
			                                       .replace('.png', '-hover.png');
			
			MCPPEventRegister(enumerator[i], 'mouseover', function(e)
			{
				var target;
				if (!e) var e = window.event;
				if (e.target) target = e.target;
				else if (e.srcElement) target = e.srcElement;
				if (target.nodeType == 3)
					target = target.parentNode;
					
				target.src = target.hover;
			});
			
			MCPPEventRegister(enumerator[i], 'mouseout', function(e)
			{
				var target;
				if (!e) var e = window.event;
				if (e.target) target = e.target;
				else if (e.srcElement) target = e.srcElement;
				if (target.nodeType == 3)
					target = target.parentNode;
				
				target.src = target.normal;
			});
		}
		
		++i;
	}
}

function MCPPRemoveOverflow(id, tagName, className)
{
	var container = document.getElementById(id);
	
	if (container)
	{
		return MCPPRemoveOverflowFromContainer(container, tagName, className);
	}
}

function MCPPRemoveOverflowFromContainer(container, tagName, className)
{
	var enumerator = container.getElementsByTagName(tagName);
	var i = enumerator.length;
	
	while (container.scrollHeight > container.clientHeight && i > 0)
	{
		var item = enumerator[--i];
		
		if (item.className == className)
			item.parentNode.removeChild(item);
	}
}

function MCPPAddPlaceholder(input, text, color, trim)
{
	input.onfocus = function()
	{
		if (this.placeholder)
		{
			this.placeholder = false;
			this.value = '';
			MCPPRemoveStyle(input, 'color');
		}
	};
	
	input.onblur = function()
	{
		if (MCPPTrim(this.value) == '')
		{
			this.placeholder = true;
			this.value = text;
			this.style.color = color;
		}
		else if (trim)
		{
			this.value = MCPPTrim(this.value);
		}
	};
	
	input.onblur();
}

function MCPPTrim(string)
{
	return string.replace(/^\s+|\s+$/g, '');
}

function MCPPFixIE()
{
	var enumerator;
	var i = 0;
	
	enumerator = container.getElementsByTagName('input');
	
	while (i < enumerator.length)
	{
		if (enumerator[i].type == 'image')
		{
			enumerator[i].onclick = function(event)
			{
				var input = document.createElement('span');
				
				input.innerHTML = '<input type="hidden" name="' + this.name + '" value="' + this.value + '" />';
				
				this.parentNode.appendChild(input);
			};
		}
		
		++i;
	}
}
