var isBrowsMSIE = document.attachEvent != null;
var isBrowsGecko = !document.attachEvent && document.addEventListener;
// ----------- Login Form Proceed ----------
function showFloatForm(event, formAct) {

	var floatForm = document.getElementById('xo-useraction'); if (!floatForm) return true;

	var X = f_scrollLeft() + Math.round(f_clientWidth()/2);
	var Y = f_scrollTop() + Math.round(f_clientHeight()/2);

	Fire_PopupDocLayer('xo-useraction', event, 'click', X, Y, 2000, closeFloatForm, (stopALoginFormutoClose = true));

	var alphaBg = document.getElementById('xo-useraction-bg');
	alphaBg.style.width = document.body.scrollWidth + 10 + 'px';
	alphaBg.style.height = document.body.scrollHeight + 'px';
	Change_LayerVisibility('xo-useraction-bg', true, false);

	if(document.forms['login']) {
		var float_form = document.forms['login'];
		if(float_form.login) {
			if(float_form.login.select) {
				setTimeout("document.forms['login'].login.select();", 50);
			}
			//setTimeout("document.forms['login'].login.focus();", 50);
		}
		if(float_form.url) {
			float_form.url.value = (formAct) ? formAct : '';
		}
	}

	Attach_EventListener(document, 'keyup', closeFloatFormEscape);

	return false;
}
function closeFloatForm(event) {
	Change_LayerVisibility('xo-useraction', false, true);
	Change_LayerVisibility('xo-useraction-bg', false, true);
	return false;
}
function closeFloatFormEscape(event) {
	if (event.keyCode==27) {
		closeFloatForm(event);
		Detach_EventListener(document, 'keyup', closeFloatForm);
	}
	return false;
}
// ------------ End Login Form Proceeding --
function f_clientWidth() {
	return f_filterResults (
		window.innerWidth ? window.innerWidth : 0,
		document.documentElement ? document.documentElement.clientWidth : 0,
		document.body ? document.body.clientWidth : 0
	);
}
function f_clientHeight() {
	return f_filterResults (
		window.innerHeight ? window.innerHeight : 0,
		document.documentElement ? document.documentElement.clientHeight : 0,
		document.body ? document.body.clientHeight : 0
	);
}
function f_scrollLeft() {
	return f_filterResults (
		window.pageXOffset ? window.pageXOffset : 0,
		document.documentElement ? document.documentElement.scrollLeft : 0,
		document.body ? document.body.scrollLeft : 0
	);
}
function f_scrollTop() {
	return f_filterResults (
		window.pageYOffset ? window.pageYOffset : 0,
		document.documentElement ? document.documentElement.scrollTop : 0,
		document.body ? document.body.scrollTop : 0
	);
}
function f_filterResults(n_win, n_docel, n_body) {
	var n_result = n_win ? n_win : 0;
	if (n_docel && (!n_result || (n_result > n_docel)))
		n_result = n_docel;
	return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}
/* Crossbrowser stop event propogation */
function Cancel_EventPropagation(element, event, cancelDefault, cancelPropogation) {

	cancelPropogation = (cancelPropogation === false) ? false : true;
	cancelDefault = (cancelDefault === false) ? false : true;

	if (isBrowsMSIE) {
		if (element) {
			if (element.returnValue) {
				if (cancelDefault) element.returnValue = false;
			}
			if (element.cancelBubble) {
				if (cancelPropogation) element.cancelBubble = true;
			}
		}
		if (cancelDefault) window.event.returnValue = false;
		if (cancelPropogation) window.event.cancelBubble = true;
	}
	else if (isBrowsGecko && event) {
		if (element) {
			if (element.preventDefault) {
				if (cancelDefault) element.preventDefault();
			}
			if (element.stopPropagation) {
				if (cancelPropogation) element.stopPropagation();
			}
		}
		if (cancelDefault) event.preventDefault();
		if (cancelPropogation) event.stopPropagation();
	}
}
function Change_LayerVisibility(id, forceOpen, forceClose) {
	var layer = document.getElementById(id); if (!layer) return false;

	if ((Check_LayerVisibility(layer) === 'hidden' && !forceClose) || forceOpen) {
		//layer.style.visibility = 'visible';
		layer.style.display = 'block';
	}
	else if ((Check_LayerVisibility(layer) === 'visible' && !forceOpen) || forceClose) {
		//layer.style.visibility = 'hidden';
		layer.style.display = 'none';
	}
	return false;
}

function Check_LayerVisibility(layer) {

	if (typeof(layer) == 'string'){layer = document.getElementById(layer);}
	else if(typeof(layer) != 'object') {return 'undef';}

	//if (layer.style.visibility == '') layer.style.visibility = Get_ElementCurrentStyle(layer, 'visibility');
	if (layer.style.display == '') layer.style.display = Get_ElementCurrentStyle(layer, 'display');

	//if (layer.style.visibility == 'hidden' && layer.style.display == 'none') {
	if (layer.style.display == 'none') {
		return 'hidden';
	}
	//else if (layer.style.visibility == 'visible' && layer.style.display == 'block') {
	else if (layer.style.display == 'block') {
		return 'visible';
	}
	return 'undef';
}
function Get_ElementCurrentStyle(element, CssStyleProperty) {
	if (!element) return false;
	if (element.currentStyle) {
		return element.currentStyle[CssToJavascriptStyle(CssStyleProperty)];
	}else if (window.getComputedStyle) {
		var compStyle = window.getComputedStyle(element, '');
		return compStyle.getPropertyValue(CssStyleProperty);
	}else {
		return '';
	}
}
function CssToJavascriptStyle(CssProperty) {
	var stringArray = CssProperty.toLowerCase().split('-');
	if (stringArray.length == 1) {
		return stringArray[0];
	}
	var ret = (CssProperty.indexOf("-") == 0) ? stringArray[0].charAt(0).toUpperCase() + stringArray[0].substring(1) : stringArray[0];
	for (var i = 1; i < stringArray.length; i++) {
		var s = stringArray[i];
		ret += s.charAt(0).toUpperCase() + s.substring(1);
	}
	return ret;
}
/* Crossbrowser attachEvent | addEventListener */
function Attach_EventListener(element, action, callback, capture) {
	capture = (capture) ? true : false;
	element = (element) ? element : document;
	if (isBrowsMSIE && element.attachEvent) {
			element.attachEvent("on"+action, callback);
	}
	else if (isBrowsGecko && element.addEventListener) {
		element.addEventListener(action, callback, capture);
	}
}

