var ie = /MSIE/.test(navigator.userAgent);
var moz = !ie && navigator.product == "Gecko";
/*
 * Extends the event object with srcElement, cancelBubble, returnValue,
 * fromElement and toElement
 */
function extendEventObject() {
	Event.prototype.__defineSetter__("returnValue", function (b) {
		if (!b) this.preventDefault();
		return b;
	});

	Event.prototype.__defineSetter__("cancelBubble", function (b) {
		if (b) this.stopPropagation();
		return b;
	});

	Event.prototype.__defineGetter__("srcElement", function () {
		var node = this.target;
		while (node.nodeType != 1) node = node.parentNode;
		return node;
	});

	Event.prototype.__defineGetter__("fromElement", function () {
		var node;
		if (this.type == "mouseover")
			node = this.relatedTarget;
		else if (this.type == "mouseout")
			node = this.target;
		if (!node) return;
		while (node.nodeType != 1) node = node.parentNode;
		return node;
	});

	Event.prototype.__defineGetter__("toElement", function () {
		var node;
		if (this.type == "mouseout")
			node = this.relatedTarget;
		else if (this.type == "mouseover")
			node = this.target;
		if (!node) return;
		while (node.nodeType != 1) node = node.parentNode;
		return node;
	});

	Event.prototype.__defineGetter__("offsetX", function () {
		return this.layerX;
	});
	Event.prototype.__defineGetter__("offsetY", function () {
		return this.layerY;
	});
}

/*
 * Emulates element.attachEvent as well as detachEvent
 */
function emulateAttachEvent() {
	HTMLDocument.prototype.attachEvent =
	HTMLElement.prototype.attachEvent = function (sType, fHandler) {
		var shortTypeName = sType.replace(/on/, "");
		fHandler._ieEmuEventHandler = function (e) {
			window.event = e;
			return fHandler();
		};
		this.addEventListener(shortTypeName, fHandler._ieEmuEventHandler, false);
	};

	HTMLDocument.prototype.detachEvent =
	HTMLElement.prototype.detachEvent = function (sType, fHandler) {
		var shortTypeName = sType.replace(/on/, "");
		if (typeof fHandler._ieEmuEventHandler == "function")
			this.removeEventListener(shortTypeName, fHandler._ieEmuEventHandler, false);
		else
			this.removeEventListener(shortTypeName, fHandler, true);
	};
}

/*
 * This function binds the event object passed along in an
 * event to window.event
 */
function emulateEventHandlers(eventNames) {
	for (var i = 0; i < eventNames.length; i++) {
		document.addEventListener(eventNames[i], function (e) {
			window.event = e;
		}, true);	// using capture
	}
}

/*
 * Simple emulation of document.all
 * this one is far from complete. Be cautious
 */

function emulateAllModel() {
	var allGetter = function () {
		var a = this.getElementsByTagName("*");
		var node = this;
		a.tags = function (sTagName) {
			return node.getElementsByTagName(sTagName);
		};
		return a;
	};
	HTMLDocument.prototype.__defineGetter__("all", allGetter);
	HTMLElement.prototype.__defineGetter__("all", allGetter);
}

function extendElementModel() {
	HTMLElement.prototype.__defineGetter__("parentElement", function () {
		if (this.parentNode == this.ownerDocument) return null;
		return this.parentNode;
	});

	HTMLElement.prototype.__defineGetter__("children", function () {
		var tmp = [];
		var j = 0;
		var n;
		for (var i = 0; i < this.childNodes.length; i++) {
			n = this.childNodes[i];
			if (n.nodeType == 1) {
				tmp[j++] = n;
				if (n.name) {	// named children
					if (!tmp[n.name])
						tmp[n.name] = [];
					tmp[n.name][tmp[n.name].length] = n;
				}
				if (n.id)		// child with id
					tmp[n.id] = n
			}
		}
		return tmp;
	});

	HTMLElement.prototype.contains = function (oEl) {
		if (oEl == this) return true;
		if (oEl == null) return false;
		return this.contains(oEl.parentNode);
	};
}

function emulateCurrentStyle() {
	HTMLElement.prototype.__defineGetter__("currentStyle", function () {
		return this.ownerDocument.defaultView.getComputedStyle(this, null);
		/*
		var cs = {};
		var el = this;
		for (var i = 0; i < properties.length; i++) {
			cs.__defineGetter__(properties[i], encapsulateObjects(el, properties[i]));
		}
		return cs;
		*/
	});
}

function emulateHTMLModel() {

	// This function is used to generate a html string for the text properties/methods
	// It replaces '\n' with "<BR"> as well as fixes consecutive white spaces
	// It also repalaces some special characters
	function convertTextToHTML(s) {
		s = s.replace(/\&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/\n/g, "<BR>");
		while (/\s\s/.test(s))
			s = s.replace(/\s\s/, "&nbsp; ");
		return s.replace(/\s/g, " ");
	}

	HTMLElement.prototype.insertAdjacentHTML = function (sWhere, sHTML) {
		var df;	// : DocumentFragment
		var r = this.ownerDocument.createRange();

		switch (String(sWhere).toLowerCase()) {
			case "beforebegin":
				r.setStartBefore(this);
				df = r.createContextualFragment(sHTML);
				this.parentNode.insertBefore(df, this);
				break;

			case "afterbegin":
				r.selectNodeContents(this);
				r.collapse(true);
				df = r.createContextualFragment(sHTML);
				this.insertBefore(df, this.firstChild);
				break;

			case "beforeend":
				r.selectNodeContents(this);
				r.collapse(false);
				df = r.createContextualFragment(sHTML);
				this.appendChild(df);
				break;

			case "afterend":
				r.setStartAfter(this);
				df = r.createContextualFragment(sHTML);
				this.parentNode.insertBefore(df, this.nextSibling);
				break;
		}
	};

	HTMLElement.prototype.__defineSetter__("outerHTML", function (sHTML) {
	   var r = this.ownerDocument.createRange();
	   r.setStartBefore(this);
	   var df = r.createContextualFragment(sHTML);
	   this.parentNode.replaceChild(df, this);

	   return sHTML;
	});

	HTMLElement.prototype.__defineGetter__("canHaveChildren", function () {
		switch (this.tagName) {
			case "AREA":
			case "BASE":
			case "BASEFONT":
			case "COL":
			case "FRAME":
			case "HR":
			case "IMG":
			case "BR":
			case "INPUT":
			case "ISINDEX":
			case "LINK":
			case "META":
			case "PARAM":
				return false;
		}
		return true;
	});

	HTMLElement.prototype.__defineGetter__("outerHTML", function () {
		var attr, attrs = this.attributes;
		var str = "<" + this.tagName;
		for (var i = 0; i < attrs.length; i++) {
			attr = attrs[i];
			if (attr.specified)
				str += " " + attr.name + '="' + attr.value + '"';
		}
		if (!this.canHaveChildren)
			return str + ">";

		return str + ">" + this.innerHTML + "</" + this.tagName + ">";
	});


	HTMLElement.prototype.__defineSetter__("innerText", function (sText) {
		this.innerHTML = convertTextToHTML(sText);
		return sText;
	});

	var tmpGet;
	HTMLElement.prototype.__defineGetter__("innerText", tmpGet = function () {
		var r = this.ownerDocument.createRange();
		r.selectNodeContents(this);
		return r.toString();
	});

	HTMLElement.prototype.__defineSetter__("outerText", function (sText) {
		this.outerHTML = convertTextToHTML(sText);
		return sText;
	});
	HTMLElement.prototype.__defineGetter__("outerText", tmpGet);

	HTMLElement.prototype.insertAdjacentText = function (sWhere, sText) {
		this.insertAdjacentHTML(sWhere, convertTextToHTML(sText));
	};
}


if (moz) emulateHTMLModel();

function PGRedirect(link)
{
    window.location = link;
}

function StartAction()
{
	document.getElementById('loader').style.display = "";
	document.getElementById('loader').style.visibility = "visible";	
}

function StartActionBlock(where)
{
	document.getElementById(where).style.display = "";
	document.getElementById(where).style.visibility = "visible";	
}


function ShowError(message)
{
	jQuery.facebox(message);	
}

function ShowErrorInBox(message, where)
{	
	document.getElementById(where).style.display = ""; 
	document.getElementById(where).style.visibility = "visible";
	document.getElementById(where).innerHTML = "";
	document.getElementById(where).insertAdjacentHTML('AfterBegin', '<span style="color:red; font-size:12px; font-family:\'Lucida Console\', Monaco, monospace;">'+message+'</span>');
}

function HideErrorInBox(where)
{	
	document.getElementById(where).style.display = "none"; 
	document.getElementById(where).style.visibility = "hidden";
}

function FillSuccess()
{
	//document.all.BoxContent.innerHTML = "";
	//document.all.BoxContent.insertAdjacentHTML('AfterBegin', 'Success');
	
jQuery.facebox('Success');	
	
}

function FSuccess() 
{
	document.getElementById('loader').style.display = "none"; 
	document.getElementById('loader').style.visibility = "hidden";
	//jQuery.facebox.close();	
}

function FSuccessBlock(where) 
{
	document.getElementById(where).style.display = "none"; 
	document.getElementById(where).visibility = "hidden";
	//jQuery.facebox.close();	
}

function FOK() 
{
	document.getElementById('ok').style.display = "";
	document.getElementById('ok').style.visibility = "visible";
}
function ErrorHide() 
{
	document.getElementById('Error').style.display = "none"; 
	document.getElementById('Error').style.visibility = "hidden";
}

function ShowHideObject(Hidea, Obj, action)
{

    var div = document.getElementsByTagName('div');
    for (var i = 0; i < div.length; i++) {
        if (div[i].className.substr(0, 2) == Hidea) {
				SHObj = document.getElementById(div[i].className);
				if(SHObj.style.display != "none")
				{
					SHObj.style.display == "none";
					SHObj.style.visibility = "hidden";
				}
        }
    }

	SHObj = document.getElementById(Obj);
	if(action == 'show'){ SHObj.style.display = "";}
	return false;
}

function addFileInput( elem, upload_alert, ElementId ) {
		if ( false != elem )
		{
			filepath = elem.value.split("\\");
			filename = filepath[filepath.length-1];
			extensionpath = filename.split(".");
			extension = extensionpath[extensionpath.length-1];
		 	if( !extension.match(/(jpg)|(jpeg)|(JPG)|(JPEG)|(GIF)|(gif)/) )
			{
				alert ( upload_alert );
				document.getElementById(ElementId).disabled = true;
				return false;
			}
		}
		document.getElementById(ElementId).disabled = false;
}

function addFileInputPhoto( elem, upload_alert ) {
		if ( false != elem )
		{
			filepath = elem.value.split("\\");
			filename = filepath[filepath.length-1];
			extensionpath = filename.split(".");
			extension = extensionpath[extensionpath.length-1];
		 	if( !extension.match(/(jpg)|(jpeg)|(JPG)|(JPEG)/) )
			{
				alert ( upload_alert );
				document.getElementById('SubmitPhoto').disabled = true;
				return false;
			}
		}
		document.getElementById('SubmitPhoto').disabled = false;
}

function ChangeLangu(Param) 
{
	if(!Param)
	{
		document.all.Language.style.display = "";
		document.all.Language.style.visibility = "visible";
		return false;
	}
	else
	{
		document.all.Language.style.display = "none";
		document.all.Language.style.visibility = "hidden";
	}
}
function Search(Param) 
{
	if(!Param)
	{
		document.all.Search.style.display = "";
		document.all.Search.style.visibility = "visible";
		return false;
	}
	else
	{
		document.all.Search.style.display = "none";
		document.all.Search.style.visibility = "hidden";
	}
}

function SignIn(Param) 
{
	if(!Param)
	{
		document.getElementById('SignInBox').style.display = "";
		document.getElementById('SignInBox').style.visibility = "visible";		
		//jQuery.facebox({ div: '#SignInBox' });
		document.getElementById('login_user').focus();
		return false;
	}
	else
	{
		document.getElementById('SignInBox').style.display = "none";
		document.getElementById('SignInBox').visibility = "hidden";
		return false;
	}
}

function SignUp(Param) 
{
	if(!Param)
	{
		document.getElementById('SignUpBox').style.display = "";
		document.getElementById('SignUpBox').style.visibility = "visible";	
		document.getElementById('newprogress').innerHTML = "";
		document.getElementById('newprogress').insertAdjacentHTML('AfterBegin', '');
		document.getElementById('name').focus();
		return false;
	}
	else
	{
		document.getElementById('SignUpBox').style.display = "none";
		document.getElementById('SignUpBox').visibility = "hidden";
		return false;
	}
}

function Recover(Param) 
{
	if(!Param)
	{
		SignIn('Close');
		document.getElementById('RecoverBox').style.display = "";
		document.getElementById('RecoverBox').style.visibility = "visible";	
		document.getElementById('progress').innerHTML = "";
		document.getElementById('progress').insertAdjacentHTML('AfterBegin', '');
		document.getElementById('email').focus();
		return false;
	}
	else
	{
		document.getElementById('RecoverBox').style.display = "none";
		document.getElementById('RecoverBox').visibility = "hidden";
		return false;
	}
}

function UserBox(Param) 
{
	if(!Param)
	{
		document.getElementById('UBox').style.display = "";
		document.getElementById('UBox').style.visibility = "visible";
		return false;
	}
	else
	{
		document.getElementById('UBox').style.display = "none";
		document.getElementById('UBox').style.visibility = "hidden";
	}
}

function Contacts(Param) 
{
	if(!Param)
	{
		document.all.Contacts.style.display = "";
		document.all.Contacts.style.visibility = "visible";
		return false;
	}
	else
	{
		document.all.Contacts.style.display = "none";
		document.all.Contacts.style.visibility = "hidden";
	}
}

function FRedirect() 
{
	document.location.href="/";
}

function FRedirectUrl(url) 
{
	document.location.href=url;
}

function SaveLangu(Param, RedirectUrl) 
{
		$("#loading")
		.ajaxStart(function(){
			$(this).show();
		})
		.ajaxComplete(function(){
			$(this).hide();
		});
		
		StartAction();
		
		$.ajaxFileUpload
		(
			{
				url:'/events/'+Param+'.php',
				secureuri:false,
				dataType: 'json',
				success: function (data, status)
				{
					if(typeof(data.error) != 'undefined')
					{
						if(data.error != '')
						{
							ShowError(data.error);
						}else
						{
							ShowError(data.msg);
							setTimeout(' ', 1500);
							FRedirectUrl(RedirectUrl);
						}
					}
				},
				error: function (data, status, e)
				{
					alert(e);
				}
			}
		)
		return false;
}

function HtmlShow(Param)
{
	if(!Param)
	{
		document.getElementById('HTMLInfo').style.display = "";
		document.getElementById('HTMLInfo').style.visibility = "visible";
		return false;
	}
	else
	{
		document.getElementById('HTMLInfo').style.display = "none";
		document.getElementById('HTMLInfo').style.visibility = "hidden";
	}
}

function ListOver(HeaderLine, Box) {
	document.getElementById(HeaderLine).style.color='#fff';
	document.getElementById(HeaderLine).style.backgroundColor='#333';	
	document.getElementById(Box).style.backgroundColor = '#e8e8e8';
	return false;
}
function ListOut(HeaderLine, Box) {
	document.getElementById(HeaderLine).style.color='#000';
	document.getElementById(HeaderLine).style.backgroundColor='#fff';	
	document.getElementById(Box).style.backgroundColor = '#fff';
	return false;
}

function overmenu_item(obj_listmenu_item)
  { 
   obj_listmenu_item.childNodes[1].style.display="block";
   obj_listmenu_item.childNodes[1].style.top=obj_listmenu_item.offsetHeight;
   obj_listmenu_item.style.background="#FFF";
   obj_listmenu_item.style.padding=0;
   obj_listmenu_item.childNodes[0].style.border="solid 0px #e8e8e8";
   obj_listmenu_item.childNodes[0].style.borderBottom="none";
   color_text=obj_listmenu_item.style.color;
   obj_listmenu_item.style.color="#dfd";
  }
  
function outmenu_item(obj_listmenu_item)
  {  
   obj_listmenu_item.childNodes[1].style.display="none";
   obj_listmenu_item.style.background="transparent";
   obj_listmenu_item.style.padding=0;
   obj_listmenu_item.style.paddingBottom=0;
   obj_listmenu_item.childNodes[0].style.border="none";
   obj_listmenu_item.style.color=color_text;
  }
  
	function show_userphoto_menu(Code){
		document.getElementById(Code).style.visibility="visible";
	}
	function hide_userphoto_menu(Code){
		document.getElementById(Code).style.visibility="hidden";
	}	  
