var Xms = {

	showThrobber: function() 
	{
		if ($('throbber') != null) {
			$('throbber').style.visibility = 'visible';
			$('throbber').style.display = 'block';
		}
	},

	hideThrobber: function()
	{
		if ($('throbber') != null) {
			$('throbber').style.visibility = 'hidden';
			$('throbber').style.display = 'none';
		}
	},

	windowOverlay: function(status)
	{
		var window_overlay = $('window_overlay')
		if(null != window_overlay) {
			if('on' === status) {
				new Effect.Appear('window_overlay', {duration: 0.5});
				window_overlay.style.height = Element.getDimensions(document.body).height + 'px';
				window_overlay.style.width  = Element.getDimensions(document.body).width + 'px';
				//Event.observe('window_overlay', 'click', function() { Xms.windowOverlay('off') } );
				return true;
			} else if('off' === status) {
				//Event.stopObserving('window_overlay', 'click', function() { Xms.windowOverlay('off') } );
				new Effect.Fade('window_overlay', {duration: 0.5});
				$('ajaxBuffer').update('');
				return true;
			} else {
				alert('Unknow status');
				return false;
			}
		} else {
			alert('No overlay div found. Check your code please.');
			return false;
		}
	},
	makeFixed: function(element)
	{
		if(null != $(element)) {
			Xms._keepFixed(element)
			Event.observe(window, 'scroll', function () { Xms._keepFixed(element) });
		}
	},
	fireFixed: function(element)
	{
		if(null != $(element)) {
			Xms._keepFixed =  Xms._keepFixed.bindAsEventListener();
			Event.stopObserving(window, 'scroll', function () { Xms._keepFixed(element) });
		}
	},
	_keepFixed: function(element)
	{
		if($(element) != null) {
			var offsetX = document.viewport.getScrollOffsets()[0];
			var offsetY = document.viewport.getScrollOffsets()[1];
			var halfSreenX = (document.viewport.getWidth()/2);
			var halfSreenY = (document.viewport.getHeight()/2);
			
			var fixedX = (halfSreenX + offsetX) - ($(element).getWidth()/2);
			var fixedY  = (halfSreenY + offsetY) - ($(element).getHeight()/2);

			new Effect.Move (element,{ x: fixedX, y: fixedY, mode: 'absolute'});
		}
		return;
	},
	prepareInputsForHints: function()
	{
		var inputs = document.getElementsByTagName("input");
		for(var i = 0; i <inputs.length; i++){
			if(inputs[i].parentNode.getElementsByTagName("span")[0]){
				inputs[i].onfocus = function(){
					this.parentNode.getElementsByTagName("span")[0].style.display="inline";
				}
				inputs[i].onblur = function(){
					this.parentNode.getElementsByTagName("span")[0].style.display="none";
				}
			}
		}
		var selects = document.getElementsByTagName("select");
		for(var k = 0; k < selects.length; k++){
			if(selects[k].parentNode.getElementsByTagName("span")[0]){
				selects[k].onfocus = function(){
					this.parentNode.getElementsByTagName("span")[0].style.display="inline";
				}
				selects[k].onblur = function(){
					this.parentNode.getElementsByTagName("span")[0].style.display="none";
				}
			}
		}
		var textareas = document.getElementsByTagName("textarea");
		for(var j = 0; j < textareas.length; j++){
			if(textareas[j].parentNode.getElementsByTagName("span")[0]){
				textareas[j].onfocus = function(){
					this.parentNode.getElementsByTagName("span")[0].style.display="inline";
				}
				textareas[j].onblur = function(){
					this.parentNode.getElementsByTagName("span")[0].style.display="none";
				}
			}
		}
		var files = document.getElementsByTagName("file");
		for(var z = 0; z < files.length; z++){
			if(files[z].parentNode.getElementsByTagName("span")[0]){
				files[z].onfocus = function(){
					this.parentNode.getElementsByTagName("span")[0].style.display="inline";
				}
				files[z].onblur = function(){
					this.parentNode.getElementsByTagName("span")[0].style.display="none";
				}
			}
		}
	},
	
	lockUnLockBottons: function(bottomsArray,type)
	{
		for(i = 0; i < bottomsArray.length; i++)
		{
			if(type == 'lock') {
				Form.Element.disable(bottomsArray[i]);
			} else {
				Form.Element.enable(bottomsArray[i]);
			}
		}
	},
	
	clearErrors: function(elementIds, errorIds)
	{
		if(errorIds != null) {
			for(i = 0; i < errorIds.length; i++) {
				var errorObj = $(errorIds[i]);
				if(errorObj != null) {
					errorObj.removeClassName('active');
				}
			}
		}
		if(elementIds != null) {
			for(i = 0; i < elementIds.length; i++) {
				var elementObj = $(elementIds[i]);
				if(elementObj != null) {
					elementObj.removeClassName('x-form-invalid');
				}
			}
		}
	},
	
	showErrors: function(elementObj, errorIds)
	{
		var errorsArray = Array(errorIds);
		if(elementObj != null) {
			elementObj.activate();
			elementObj.addClassName('x-form-invalid');
		}
		if(errorsArray != null) {
			for(i = 0;i < errorsArray.length; i++) {
				var errorObj = $(errorsArray[i]);
				if(errorObj != null) {
					errorObj.addClassName('active');
				}
			}
		}
		return true;
	},
	getCookie : function(name) {		
		var re = new RegExp(name+'=([^;]+)');
		var val = re.exec(document.cookie);
		if (val) {
			return decodeURIComponent(val[1]);
		} else {
			return null
		}
	},
	deleteCookie : function(name, path, domain) {
		if (this.getCookie(name)) {
			document.cookie = name + "=" +
			((path) ? "; path=" + path : "") +
			((domain) ? "; domain=" + domain : "") +
			"; expires=Thu, 01-Jan-70 00:00:01 GMT";
		}
	},
	switchWindowShield : function(status) {
		idShield = 'windowShield';
		shield =$(idShield);
		if(shield != null) {
			if(status == 'on') {
				new Effect.Appear(idShield, { duration: 0.5, from: 0.0 , to: 0.2});
				$(idShield).style.height =  document.body.scrollHeight;
				$(idShield).style.width = document.body.scrollWidth;
				return true;
			} else if(status == 'off') {
				new Effect.Fade(idShield, { duration: 0.5 });
				return true;
			}
		}
		return false;
	},
	initMCEForum: function(fields) {
		tinyMCE.init(
			{
				mode : "textareas",
				theme : "advanced",
				language : "ru",
				plugins : "safari,pagebreak,style,inlinepopups,advhr,advimage,advlink," +
					"insertdatetime,preview,contextmenu,paste,directionality," +
					"fullscreen,noneditable,nonbreaking,xhtmlxtras,template,example,smiles",
				theme_advanced_toolbar_location : "top",
				theme_advanced_toolbar_align : "left",
				elements : fields,
				theme_advanced_buttons1 : "bold,italic,underline,strikethrough," +
					"|,justifyleft,justifycenter,justifyright,justifyfull,|," +
					"fontselect,fontsizeselect,forecolor,backcolor,|,"+"bullist,numlist,|,link,unlink," +
					"sub,sup,|,blockquote, example, smiles, image",
				theme_advanced_buttons2 : null,
				theme_advanced_buttons3 : null,
				theme_advanced_toolbar_location : "top",
				theme_advanced_toolbar_align : "left",
				theme_advanced_statusbar_location : "bottom",
				theme_advanced_resizing : true,
				content_css : "/skins/nashvek/css/style.css"
			}
		);
	},
	getContentMCE: function(fieldId) {
		 return tinyMCE.get(fieldId).getContent().strip();
	},
	redirect: function(link){
		window.location = link;
	}
}

Array.prototype.inArray = function (value) {
	var i;
	for (i=0; i < this.length; i++) {
		if (this[i] === value) {
			return true;
		}
	}
	return false;
};