function ElementAppendChild(dst, src)
{
    if(dst.insertAdjacentElement)
    {
        dst.insertAdjacentElement('beforeEnd', src);
        return src;
    }
    else
    {
        return dst.appendChild(src);
    }
}

function ElementInsertBefore(dst, src)
{
    if(dst.insertAdjacentElement)
    {
        dst.insertAdjacentElement('beforeBegin', src);
        return src;
    }
    else
    {
        return dst.parentNode.insertBefore(src, dst);
    }
}


function AddField(id)
{
	var field = $(id);
	
	if(!field.bottomElement)
		field.bottomElement = field.nextSibling;
	
	var newField = field.cloneNode(true);
	
	newField.id = '';
		
	newField = ElementInsertBefore(field.bottomElement, newField);
	newField.getElementsByTagName('input')[0].value = '';
	
	new Insertion.Bottom(newField, '<input type="button" value="x" onclick="DelField(this);" />');
}

function DelField(obj)
{
	obj.parentNode.parentNode.removeChild(obj.parentNode);
}

function CheckFields(form, fields)
{
	var error = false;
	for(var i=0; i < fields.length; ++i)
	{
		var el = form[fields[i]];
		if(el.value.length == 0)
		{
			error = true;
			Element.addClassName(el, 'error');
			el.title = 'Required field';
		}
		else
		{
			Element.removeClassName(el, 'error');
			el.title = '';
		}
	}
	
	if(error)
		alert('Please provide information for required fields');
	
	return !error;
}

function GoToSection(cls, direction)
{
	var els = $(document.body).getElementsByClassName(cls);
	
	for(var i = 0; i < els.length; ++i)
	{
		
		if(els[i].visible())
		{
			if(direction == 'next' && i != els.length - 1)
			{			
				els[i + 1].show();
				els[i].hide();
			}
			
			if(direction == 'prev' && i != 0)
			{
				els[i - 1].show();
				els[i].hide();
			}
			
			if(direction == 'first')
			{
				els[i].hide();
				els[0].show();
			}
			
			break;
		}
		
	}
}


function Steps(sectionClass, menuClass, onstep)
{
	this._sectionClass = sectionClass;
	this._menuClass = menuClass;
	this._menuItems = [];
	if(onstep)
		this._onstep = onstep;
}

Steps.prototype = 
{
	_findVisible: function()
	{
		var els = $(document.body).getElementsByClassName(this._sectionClass);
		this._sections = els;
		if(this._menuClass)
			this._menuItems = $(document.body).getElementsByClassName(this._menuClass);
	
		for(var i = 0; i < els.length; ++i)
		{
			if(els[i].visible())
				return i;
		}		
	},
	
	go: function(index, cur)
	{
		var cur = cur || this._findVisible();
		
		if(index == this._sections.length || index < 0)
			return;
		
		this._sections[cur].hide();
		this._sections[index].show();
		
		if(this._menuItems.length == this._sections.length)
		{
			this._menuItems[cur].removeClassName('selected');
			this._menuItems[index].addClassName('selected');
		}
		
		this._onstep(index, this._sections.length);
	},
	
	_onstep: function(index, count)
	{
		
	},
	
	next: function()
	{
		var cur = this._findVisible();
		this.go(cur + 1, cur);
	},
	
	prev: function()
	{
		var cur = this._findVisible();
		this.go(cur - 1, cur);
	}
};


function ClearRadio(form, name)
{
	for(var i = 0; i < form.elements.length; ++i)
	{
		if(form.elements[i].name == name && form.elements[i].type == 'radio')
			form.elements[i].checked = false;
	}
}

function GoAfterConfirm(url, msg)
{
	msg = msg || 'Are you sure ?';
	
	if(confirm(msg))
		location.href = url;		
}