/**
 * @author SergeyVoronkov
 * подтверждение ссылки
 * 
 * init(htmlNode || stringId)- Ссылка
 * o(object) - Опции
 * {
 * 	ok(html) - текст подтверждения
 * 	cancel(html) - текст отмены
 * 	onOk (function) - функция выполняема при подтверждение если не указана выполняется клик по ссылке
 * 	onCancel(function) - функция выполняема при отмене
 * }
*/
var linkConfirm = {
	element:function(id)
	{
		if('string' != typeof id) return id;
		return document.getElementById(id);
	},
	extend:function(h1,h2)
	{
		for(var i in h2){h1[i] = h2[i];}
		return h1;
	},
	createElement:function(tag,o,parent)
	{
		var el = document.createElement(tag);
		this.extend(el,o);
		if(parent) parent.appendChild(el);
		return el;
	},
	swap:function(n1,n2)
	{
		var r1 = n1.nextSibling,r2 = n2.nextSibling,p1 = n1.parentNode,p2 = n2.parentNode;
		if(p1)
		{
			if(r1)p1.insertBefore(n2,r1);else p1.appendChild(n2);
			if(!p2) p1.removeChild(n1);
		}
		if(p2)
		{
			if(r2)p2.insertBefore(n1,r2);else p2.appendChild(n1);
			if(!p1) p2.removeChild(n2);
		}
		return n1;
	},
	initGroup:function(o)
	{
		return function(link){return linkConfirm.init(link,o)};
	},
	/**
	 * Инициализация ссылки
	 * @param {Object} link (htmlNode || stringId)- Ссылка
	 * @param {Object} o(object) - Опции
	 * {
	 * 	ok(html) - текст подтверждения
	 * 	cancel(html) - текст отмены
	 * 	onOk (function) - функция выполняема при подтверждение если не указана выполняется клик по ссылке
	 * 	onCancel(function) - функция выполняема при отмене
 	 * }
	 */
	init: function(link, o){
		var l = linkConfirm.element(link);
		if (l) {
			var o = linkConfirm.extend({
				ok: "Да ",
				cancel: "Нет",
				onOk: (l.onclick || (l.href &&
				function(){
					window.location.href = l.href;
					return false;
				}))
			}, o);
			l.onclick = function(){
				var cont = linkConfirm.createElement("span", {
					className: this.className
				});
				var ok = linkConfirm.createElement("a", {href: "javascript:void(0)",innerHTML: o.ok},cont);
				var cancel = linkConfirm.createElement("a", {href: "javascript:void(0)",innerHTML: o.cancel},cont);
				var del = linkConfirm.swap(this, cont);
				ok.onclick = function(){
					linkConfirm.swap(del, cont);
					if (o.onOk && o.onOk.apply(l, arguments) !== false && l.href) 
						window.location.href = l.href;
				};
				cancel.onclick = function(){
					linkConfirm.swap(del, cont);
					if (o.onCancel) 
						o.onCancel.apply(l);
				};
				return false;
			};
		}
		return l;
	}
}