var U_inputs = new Array;
var U_select_opened = false;

function U_Menu(obj_id, object_name, options, c_function)
{
	// HTML attributes
	var _id = obj_id;
	var _name = object_name;
	var _options = options;
	var _value = '';
	var _disabled = false;
	var _cf = c_function;
	
	// U attributes
	var _style = '';
	var _class = '';
	var _img_enabled = 'img/m_a.png';
	var _img_disabled = '';
	var _img_width = 7;

	// External Variables


	// External Methods
	this.clickSelect = clickSelect;
	this.selectOption = selectOption;
	this.disable = setDisable;
	this.enable = setEnable;
	this.enabled = getEnabled;
	this.selected = getSelected;
	this.setText = setText;
	
	
	// Initialisation
	_class =  'select';

	initialise();

	U_inputs.push(new Array (_id, this));
	

	function initialise()
	{
	//	document.getElementById(_id).onclick = function(){U_clickSelect(this);return false};
		document.getElementById(_id).onclick = function(e){eval(_name).clickSelect(e);return false};
	}
	
	
	function clickSelect(e)
	{
		if (WN_cnote)
		{
			if (!U_select_opened) U_select_opened = showCombo();
			else U_select_opened = hideCombo();
		}

		if (!e) var e = window.event;
		e.cancelBubble = true;
		if (e.stopPropagation) e.stopPropagation();
	}

	
	function showCombo()
	{
		var option_container = document.createElement('div');
		option_container.setAttribute('id', 'U_options');
		option_container.className = 'options';
		
		for (var x = 0; x < _options.length; x++)
		{
			var u_option = document.createElement('a');
			u_option.setAttribute('href','#');
			u_option.setAttribute('id', 'U_select_option_' + x);
			u_option.className = 'option ' + _options[x][1];
	
//			u_option.onclick = function(){U_selectOption(this); return false};
			u_option.onclick = function(e){eval(_name).selectOption(e); return false};
			
			var u_option_text = document.createTextNode(_options[x][0]);
			u_option.appendChild(u_option_text);
			
			option_container.appendChild(u_option);
		}
		document.body.appendChild(option_container);
		
		var position = positionCombo();

		document.getElementById('U_options').style.position = 'absolute';
		document.getElementById('U_options').style.top = (position[1] + document.getElementById(_id).offsetHeight - 1) + 'px';
		document.getElementById('U_options').style.left = (position[0] + 0) + 'px';
		if (document.all) document.getElementById('U_options').style.width = (document.getElementById(_id).offsetWidth - 2) + 'px';
		else document.getElementById('U_options').style.minWidth = (document.getElementById(_id).offsetWidth - 2) + 'px';
		document.getElementById('U_options').style.zIndex = 100001;
	
		// Get select object
		for (x = 0; x < U_inputs.length; x++)
			if (U_inputs[x][0] == _id) break;
		U_select_caller = U_inputs[x][1];

		setTimeout("U_selectBackgroundEvent()", 1);

		return true;
	}
	
	
	function hideCombo()
	{
		document.body.removeChild(document.getElementById('U_options'));

		return false;
	}
	

	function positionCombo()
	{
		var x = 0; var y = 0;
		var reference = document.getElementById(_id);

		while (reference.offsetParent)
		{
			x += reference.offsetLeft;
			y += reference.offsetTop;
			reference = reference.offsetParent;
		}
		var position = new Array(x,y);

		return position;
	}
	
	
	function selectOption(e)
	{
		if (e) var obj = e.currentTarget;
		else if (window.event.srcElement) var obj = window.event.srcElement;

		var selected_option = /[0-9]+/.exec(obj.id);
		
		_value = _options[selected_option][1];
		document.getElementById(_id).innerHTML = (_options[selected_option][0].length <= 15)? _options[selected_option][0] : _options[selected_option][0].substr(0,12)+'..';

		c_function(_value);
		
		U_selectClose();
		
		if (!e) var e = window.event;
		e.cancelBubble = true;
		if (e.stopPropagation) e.stopPropagation();
	}


	function setText(text)
	{
		document.getElementById(_id).innerHTML = text;
	}
	
	
	function setDisabled(value)
	{
		_disabled = value;
	}
	
	
	function setEnable()
	{
		if (_disabled)
		{
			setDisabled(false);
			document.getElementById(_id).className = _class;
			document.getElementById(_id).style.backgroundImage = 'url(' + _img_enabled + ')';
	
			if (document.addEventListener) document.getElementById(_id).addEventListener('click', U_clickSelect, false);
			else if (document.attachEvent) document.getElementById(_id).attachEvent('onclick', U_clickSelect);
		}
	}

	
	function setDisable()
	{
		if (!_disabled)
		{
			setDisabled(true);
			document.getElementById(_id).className = 'U_select_disabled';
			document.getElementById(_id).style.backgroundImage = 'url(' + _img_disabled + ')';
	
			if (document.removeEventListener) document.getElementById(_id).removeEventListener('click', U_clickSelect, false);
			else if (document.detachEvent) document.getElementById(_id).detachEvent('onclick', U_clickSelect);
		}
	}
	
	
	function getEnabled()
	{
		return _disabled;
	}
	
	
	function getSelected()
	{
		return _value;
	}
}


function U_clickSelect(obj)
{
	for (var x = 0; x < U_inputs.length; x++)
		if (U_inputs[x][0] == obj.id) break;

	U_inputs[x][1].clickSelect();
}


function U_selectOption(obj)
{
	var option_item = /[0-9]+/.exec(obj.id);

	eval(U_select_caller.selectOption(option_item));	
	return false;
}


function U_selectClose()
{
	if (document.getElementById('U_options')) document.body.removeChild(document.getElementById('U_options'));
	
	if (document.removeEventListener) document.removeEventListener('click', U_selectClose, false);
	else if (document.detachEvent) document.detachEvent('onclick', U_selectClose);
	
	U_select_opened = false;
}


function U_selectBackgroundEvent()
{
	if (document.addEventListener) document.addEventListener('click', U_selectClose, false);
	else if (document.attachEvent) document.attachEvent('onclick', U_selectClose);
}

function U_Toggle(obj_id, object_name, c_function)
{
	// HTML attributes
	var _id = obj_id;
	var _name = object_name;
	var _value = 0;
	var _disabled = false;
	var _cf = c_function;
	
	// U attributes
	var _style = '';
	var _class = '';
	var _img_inactive = 'img/b_t_.gif';
	var _img_active = 'img/b_t_.gif';
	var _img_selected = 'img/b_t.gif';
	var _img_disabled = '';
	var _img_width = 7;

	// External Variables


	// External Methods
	this.clickToggle = clickToggle;
	this.setToggle = setToggle;
	this.disable = setDisable;
	this.enable = setEnable;
	this.enabled = getEnabled;
	this.toggle = getToggle;

	
	// Initialisation
	_id = obj_id;
	_disabled = false;

	initialise();

	U_inputs.push(new Array (_id, this));


	function initialise()
	{
//		document.getElementById(_id).onclick = function(){U_clickToggle(this);return false};
		document.getElementById(_id).onclick = function(e){eval(_name).clickToggle(e);return false};
	}

	
	function clickToggle(e)
	{
		if (WN_cnote)
		{
			if (!_value) {setTrue();_cf(1);}
			else {setFalse();_cf(0);}

			_value = (_value)? 0 : 1;
		}
		
		if (!e) var e = window.event;
		e.cancelBubble = true;
		if (e.stopPropagation) e.stopPropagation();
	}

	function setToggle(t)
	{
		_value = t;

		if (_value) setTrue();
		else setFalse();
	}

	function setTrue()
	{
		document.getElementById(_id).style.color = '#333';
		document.getElementById(_id).style.borderColor = '#333';
		document.getElementById(_id).style.backgroundColor = '#fff';
	}

	function setFalse()
	{
		document.getElementById(_id).style.color = '';
		document.getElementById(_id).style.borderColor = '';
		document.getElementById(_id).style.backgroundColor = '';
	}


	function setDisabled(value)
	{
		_disabled = value;
	}
	
	
	function setEnable()
	{
		if (_disabled)
		{
			setDisabled(false);
			document.getElementById(_id).className = _class;
			document.getElementById(_id).style.backgroundImage = (_value)? 'url(' + _img_active + ')' :'url(' + _img_inactive + ')' ;
	
			if (document.addEventListener) document.getElementById(_id).addEventListener('click', U_clickToggle, false);
			else if (document.attachEvent) document.getElementById(_id).attachEvent('onclick', U_clickToggle);
		}
	}

	
	function setDisable()
	{
		if (!_disabled)
		{
			setDisabled(true);
			document.getElementById(_id).className = 'U_toggle_disabled';
			document.getElementById(_id).style.backgroundImage = 'url(' + _img_inactive + ')';
	
			if (document.removeEventListener) document.getElementById(_id).removeEventListener('click', U_clickToggle, false);
			else if (document.detachEvent) document.getElementById(_id).detachEvent('onclick', U_clickToggle);
		}
	}
	
	
	function getEnabled()
	{
		return _disabled;
	}
	
	
	function getToggle()
	{
		return _value;
	}
}

function U_clickToggle(obj)
{
	for (var x = 0; x < U_inputs.length; x++)
		if (U_inputs[x][0] == obj.id) break;

	U_inputs[x][1].clickToggle();
}

function U_Button(obj_id, object_name, c_function)
{
	// HTML attributes
	var _id = obj_id;
	var _name = object_name;
	var _value = 0;
	var _disabled = false;
	var _cf = c_function;
	
	// U attributes
	var _style = '';
	var _class = '';

	// External Variables


	// External Methods
	this.clickButton = clickButton;
	this.clickYes = clickYes;
	this.clickNo = clickNo;
	this.forceChoice = forceChoice;
	this.setButton = setButton;
	this.setText = setText;
	this.disable = setDisable;
	this.enable = setEnable;
	this.enabled = getEnabled;

	
	// Initialisation
	_id = obj_id;
	_disabled = false;

	initialise();

	U_inputs.push(new Array (_id, this));


	function initialise()
	{
//		document.getElementById(_id).onclick = function(){U_clickButton(this);return false};
		document.getElementById(_id).onclick = function(e){eval(_name).clickButton(e);return false};
	}

	
	function clickButton(e)
	{
		if (WN_cnote)
		{
			if (!_value)
			{
				// dim background
				var dom_dim = document.createElement('div');
				dom_dim.setAttribute('id', 'dim_background');
				dom_dim.onclick = function(e){eval(_name).forceChoice(e);return false};
				document.body.appendChild(dom_dim);

				// show alert
				var dom_dlg = document.createElement('div');
				dom_dlg.onclick = function(e){eval(_name).forceChoice(e);return false};
				dom_dlg.setAttribute('id','privatedlg');

				var dom_dlg_tp = document.createElement('div');
				dom_dlg_tp.className = 'tp';
				dom_dlg.appendChild(dom_dlg_tp);

				var dom_dlg_ct = document.createElement('div');
				dom_dlg_ct.className = 'ct';

				var dom_dlg_ct_img = document.createElement('img');
				dom_dlg_ct_img.setAttribute('src','img/ic_warning.gif');
				dom_dlg_ct_img.className = 'fl';
				dom_dlg_ct.appendChild(dom_dlg_ct_img);

				var dom_dlg_ct_h3 = document.createElement('h3');
				dom_dlg_ct_h3.appendChild(document.createTextNode('Warning'));
				dom_dlg_ct.appendChild(dom_dlg_ct_h3);

				var dom_dlg_ct_p = document.createElement('p');
				dom_dlg_ct_p.innerHTML = 'You are going to change the status of this note to <strong>PUBLIC</strong>. This will make it visible to anyone.'
				dom_dlg_ct.appendChild(dom_dlg_ct_p);

				var dom_dlg_ct_p = document.createElement('p');
				dom_dlg_ct_p.innerHTML = 'Are you sure you want to continue?'
				dom_dlg_ct.appendChild(dom_dlg_ct_p);

				var dom_dlg_ct_a = document.createElement('a');
				dom_dlg_ct_a.setAttribute('href','#');
				dom_dlg_ct_a.className = 'button button3';
				dom_dlg_ct_a.onclick = function(e){shareNote(1);eval(_name).clickYes(e);return false};
				dom_dlg_ct_a.innerHTML = 'Yes';
				dom_dlg_ct.appendChild(dom_dlg_ct_a);

				var dom_dlg_ct_a = document.createElement('a');
				dom_dlg_ct_a.setAttribute('href','#');
				dom_dlg_ct_a.className = 'button button1';
				dom_dlg_ct_a.onclick = function(e){eval(_name).clickNo(e);return false};
				dom_dlg_ct_a.innerHTML = 'No';
				dom_dlg_ct.appendChild(dom_dlg_ct_a);

				var dom_dlg_ct_clr = document.createElement('div');
				dom_dlg_ct_clr.className = 'clr';
				dom_dlg_ct.appendChild(dom_dlg_ct_clr);

				dom_dlg.appendChild(dom_dlg_ct);

				var dom_dlg_bt = document.createElement('div');
				dom_dlg_bt.className = 'bt';
				dom_dlg.appendChild(dom_dlg_bt);

				document.body.appendChild(dom_dlg);
				
				//disable scroll
				document.body.style.overflow = 'hidden';

				setTimeout('backgroundCloseDlg()',1);
			}
			else
			{
				shareNote(0);
				setButton(0);
			}
		}
		
		if (!e) var e = window.event;
		e.cancelBubble = true;
		if (e.stopPropagation) e.stopPropagation();
	}
	
	function clickYes(e)
	{
		setButton(1);
		
		closeDlg();
		
		document.body.style.overflow = 'auto';
		
		if (!e) var e = window.event;
		e.cancelBubble = true;
		if (e.stopPropagation) e.stopPropagation();
	}
	
	function clickNo(e)
	{
		closeDlg();
		
		document.body.style.overflow = 'auto';
		
		if (!e) var e = window.event;
		e.cancelBubble = true;
		if (e.stopPropagation) e.stopPropagation();
	}
	
	function forceChoice(e)
	{
		if (!e) var e = window.event;
		e.cancelBubble = true;
		if (e.stopPropagation) e.stopPropagation();
	}

	function setButton(p)
	{
		_value = p;

		if (_value) setPublic();
		else setPrivate();
	}

	function setPublic()
	{
		document.getElementById(_id).innerHTML = 'Public';
		document.getElementById(_id).className = 'button button3';
	}

	function setPrivate()
	{
		document.getElementById(_id).innerHTML = 'Private';
		document.getElementById(_id).className = 'button button1';
	}

	function setText(t)
	{
		document.getElementById(_id).innerHTML = t;
	}

	function setDisabled(value)
	{
		_disabled = value;
	}
	
	
	function setEnable()
	{
		if (_disabled)
		{
			setDisabled(false);
	
			if (document.addEventListener) document.getElementById(_id).addEventListener('click', U_clickToggle, false);
			else if (document.attachEvent) document.getElementById(_id).attachEvent('onclick', U_clickToggle);
		}
	}

	
	function setDisable()
	{
		if (!_disabled)
		{
			setDisabled(true);
	
			if (document.removeEventListener) document.getElementById(_id).removeEventListener('click', U_clickToggle, false);
			else if (document.detachEvent) document.getElementById(_id).detachEvent('onclick', U_clickToggle);
		}
	}
	
	
	function getEnabled()
	{
		return _disabled;
	}
	
	
	function getToggle()
	{
		return _value;
	}
}

function U_clickButton(obj)
{
	for (var x = 0; x < U_inputs.length; x++)
		if (U_inputs[x][0] == obj.id) break;

	U_inputs[x][1].clickButton();
}


