// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults
Object.extend(Element, {
    getWidth: function(element) {
            element = $(element);
            return element.offsetWidth; 
    },
    setWidth: function(element,w) {
            element = $(element);
            element.style.width = w +"px";
    },
    getHeight: function(element) {
            element = $(element);
    return element.offsetHeight;
    },
    setHeight: function(element,h) {
            element = $(element);
    element.style.height = h +"px";
    },
    setTop: function(element,t) {
            element = $(element);
    element.style.top = t +"px";
    },
    setLeft: function(element,l) {
            element = $(element);
            element.style.left = l +"px";
    },
    setInnerHTML: function(element,content) {
            element = $(element);
            element.innerHTML = content;
    },
    getPos: function(element)
    {
            var offsetTrail = $(element);
            var offsetLeft = 0;
            var offsetTop = 0;

            while (offsetTrail) 
            {
                    offsetLeft += offsetTrail.offsetLeft;
                    offsetTop += offsetTrail.offsetTop;
                    offsetTrail = offsetTrail.offsetParent;
            }
            if (navigator.userAgent.indexOf("Mac") != -1 && 
                    typeof document.body.leftMargin != "undefined") 
            {
                    offsetLeft += document.body.leftMargin;
                    offsetTop += document.body.topMargin;
            }

            return {left:offsetLeft, top:offsetTop};
    },
    shift:function(element)
    {
      element = $(element);
      if (element.style.display == 'none' || element.style.visibility == 'hidden')
      {
          this.show(element);
      }
      else
      {
        	this.hide(element);
      }
    },
    show_with_effect:function(element)
    {
    	new Effect.Appear(element, {from: 0.1, to: 1, duration:0.75});
    },
    hide_with_effect:function(element)
    {
    	new Effect.Fade(element, {duration: 0.75});
    }
});

function sleep(millisecond)
{
	var now = new Date();
  var exitTime = now.getTime() + millisecond;
  
  while(true)
  {
      now = new Date();
      if(now.getTime() > exitTime) return;
  }
}

function get_user(user_count, element)
{
	var el = 'content_user_about_' + user_count;
	var arr = $('list_users').childNodes;
	
	for(var i = 0; i < arr.length; i ++)
	{
		if (arr[i].nodeType == 1 && arr[i].tagName.toLowerCase() == 'a')
		{
			arr[i].className = '';
		}
	}
	element.className = 'active';
	
	hide_users();
	Element.show(el);
	//new Effect.Highlight(el, {startcolor:'#eaebef'});
	//new Ajax.Request(url, {method:'post', onSuccess: function(transport) {init_user(transport.responseJSON);}});
}

function hide_users()
{
	var content = $('content');
	var divs = content.select("div.about");
	
	for(var i = 0; i < divs.length; i++)
	{
		Element.hide(divs[i]);
	}
}

function init_user(user)
{
	$('content_user_about').innerHTML = user.description;
	//Element.show_with_effect('content_user_about');
	Element.show('content_user_about');
	new Effect.Highlight('content_user_about', {startcolor:'#eaebef'});
}

function getChilds(element, tag_name, list)
{
	element = $(element)
	var arr = element.childElements();
	
	if (element.tagName.toLowerCase() == tag_name)
	{
		list.push(element)
	}
	
	if (element.childElements().length > 0)
	{
		for (var i = 0; i < element.childElements().length; i++)
		{
			getChilds(element.childElements()[i], tag_name, list);
		}
	}
	
	return list;
}

function initTree(element)
{
	element = $(element)
	var list = new Array();
	getChilds(element, 'li', list);
	
	for (var i = 0; i < list.length; i++)
	{
		//new Draggable(list[i], { revert: true, handle: list[i].up('ul').id + '_move'});
		
		Droppables.add(list[i].down("div.icoPanel"), {hoverclass:'hover', onDrop:function(element, drop){drop.up('ul').appendChild(element);new Ajax.Request('/manage/content_categories/append', {asynchronous:true, evalScripts:true, parameters:'id=' + encodeURIComponent(element.id) + '&parent_id=' + drop.up('ul').id})}});
	}
}

function serialize(element)
{
	element = $(element);
	var uls = element.select("ul.structureList");

	return uls.map( function (item) {
        return ['sort' + "[]=" + encodeURIComponent(item.id.replace('cat_', '') )];
      }).flatten().join('&');
}

function shift_all(mode)
{
	var element = $('category-tabs');
	var arr = element.select('div[class="cont"]');
	for(var i = 0; i < arr.length; i++)
	{
		if (mode)	{arr[i].hide();} else {arr[i].show();}
	}
}

function showSubMenu(menu_id)
{
	var element = $('category-tabs');
	var arr = element.select('div[class="Two"]');
	for(var i = 0; i < arr.length; i++)
	{
		arr[i].hide();
	}
	Element.show(menu_id);
}

function exTree(node)
{
	var li = $(node).up("li");
	var uls = li.select('ul');
	mode = (node.className == 'minus')
	
	for(var i = 0; i < uls.length; i++)
	{
		if (mode)	{uls[i].hide();} else {uls[i].show();}
	}
	node.className = (mode) ? 'plus' : 'minus';
}

var l_slug_field = null;
function get_slug(field, parent_field)
{
	field = $(field);
	parent_field = $(parent_field);
	
	if (field.value.length == 0)
	{
		l_slug_field = field;
		new Ajax.Request('/manage/static_categories/get/translit?text=' + decodeURIComponent(parent_field.value), {method:'get', onSuccess: function(transport) {l_slug_field.value = transport.responseText;}});
	}
}

var langs = ['lang_ua', 'lang_ru', 'lang_en'];

function setLang(content, obj)
{
	var container = $(obj.parentNode);
	var arr = container.select("a");
	
	for(var i = 0; i < langs.length; i++)
	{
		Element.hide(langs[i]);
	}
	for(var i = 0; i < arr.length; i++)
	{
		arr[i].className = '';
	}
	
	obj.className = 'active';
	Element.show(content);
	
}

function addHidden(id)
{
	id = id.replace("cat_", "");
	var cont = $('list_post_categories');
	var hidden = document.createElement("input");
	hidden.type = 'hidden';
	hidden.value = id;
	hidden.name = "post[categories_ids][]";
	hidden.id = "cat_ids_" +id;
	
	cont.appendChild(hidden);
}

function removeHidden(id)
{
	id = id.replace("cat_", "");
	var cont = $('list_post_categories');
	var hidden = $("cat_ids_" + id);
	
	if (hidden && hidden.parentNode.id == cont.id)
		cont.removeChild(hidden);
}

function clean(element)
{
		element = $(element);
		if (element.value == 'Ваш e-mail')
			element.value = '';
}

function question(element)
{
	element = $(element)
	var ul = element.next('ul.result');

	if (ul.id == 'off' || typeof(ul.id) == 'undefined')
	{
		new Effect.BlindDown(ul,{});
		ul.id = 'on';
	}
	else
	{
		new Effect.BlindUp(ul,{});
		ul.id = 'off';
	}
}

var arr_buttons = ["tab_last_match.gif", "tab_next_match.gif", "tab_tournaments_table.gif"];
var arr_buttons_act = ["tab_last_match_active.gif", "tab_next_match_active.gif", "tab_tournaments_table_active.gif"];

function setTab(index)
{
	var index = parseInt(index) - 1;
	var element = $('tabs_panel');
	var buttons = element.select('img');
	for(var i = 0; i < buttons.length; i++)
	{
		if (buttons[i].src.indexOf("inact.gif") == -1)
			buttons[i].src = "/images/" +  (i == index ? arr_buttons_act[i] : arr_buttons[i]);
	}
}
function empty_fields(field_id)
{
	$(field_id + '_name').value = '';
	$(field_id + '_id').value = '';
}

function insert_notice(object, text)
{
	var div = $('div_notice') ? $('div_notice') : document.createElement('div');
	div.id = 'div_notice';
	div.className = 'notice';
	div.onclick = function()
	{ $(this).hide() }
	div.innerHTML = text;
	div.show();
	
	new Insertion.Bottom(object, div);
}

function toggle_table(table)
{
	table = $(table)
	for	(var i = 1; i < table.rows.length; i++)
	{
		table.rows[i].toggle();
	}
}
