function forms_input_counter(item_id) {
	var length = document.getElementById(item_id).value.length;
	document.getElementById(item_id + '_counter').value = length;
}

var tagButtons = {
	B: 'but1',
	I: 'but2',
	U: 'but3',
	RED: 'but4',
	GREEN: 'but5',
	GREY: 'but6',
	EMAIL: 'but7',
	URL: 'but8',
	NP: 'but9'
};

var accessKeys = {
	'B': 'B',
	'I': 'I',
	'U': 'U', 
	'R': 'RED',
	'G': 'CREEN',
	'Y': 'GRAY',
	'E': 'EMAIL',
	'L': 'URL',
	'K': 'NP'
};

function cloneArg(arg) { 
	return arg; 
}

function appendEvent(obj, evt, func) {
	var prev = obj[evt];
	obj[evt] = function(e) {
		var ret;
		if (prev instanceof Function) ret = prev(e);
		if (ret !== false) return func(e);
	};
}

function navigateCtrlArrow() {
	document.onkeydown = document.onkeypress = function (e) {
		var event = e || window.event;
		if (event.ctrlKey  && !event.altKey && !event.shiftKey 
			&& (37 == event.keyCode || 39 == event.keyCode)) {
			if ('keydown' == event.type) {
				var lnk = document.getElementsByTagName('LINK');
				var dir = (37 == event.keyCode) ? 'prev' : 'next';
				for (var ix = 0; ix < lnk.length; ix++) {
					if (lnk[ix].rel && lnk[ix].href && lnk[ix].rel == dir) {
						document.location.replace(lnk[ix].href);
					}
				}
			}
			return false;
		}
	};
}

function prepareTextarea() {
	var noteText = document.getElementById('note_text');
	if (!!noteText) {
		noteText.onkeydown = noteText.onkeypress = function(e) {
			var event = e || window.event;
			if (event.ctrlKey && !event.altKey && !event.shiftKey) {
				if (event.keyCode == 13) {
					noteText.form.submit();
					return false;
				}
				var k = String.fromCharCode(event.keyCode);
				if (!!k && accessKeys[k]) {
					('keydown' == event.type) && InsertTags(accessKeys[k]);
					event.preventDefault ?
					event.preventDefault() :
					event.returnValue = false;
					return false;
				}
			}
			return true;
		};
		if (location.hash == '#form') noteText.focus();
	}
	var fileComment = document.getElementById('fileComment');
	if (!!fileComment) {
		if (!(fileComment.onkeydown instanceof Function)) {
			fileComment.onkeydown = function(e) {
				var event = e || window.event;
				if (event.ctrlKey && !event.altKey && !event.shiftKey && event.keyCode == 13) {
					fileComment.form.submit();
					return false;
				}
			}
		}			
	}
}

function prepareSmiles() {
	var smileContainer = document.getElementById('smiles');
	if (!!smileContainer) {
		var smiles = getChildsByClassName(smileContainer, 'smile');
		var l = smiles.length;
		for (var ix = 0; ix < l; ix++) {
			if (smiles[ix].nodeName == 'IMG') {
				smiles[ix].onclick = function(img) {
					return function() {
						insertSmile(img);
					}
				}(smiles[ix]);
			}
		}
	}
}

function prepareClipboardButtons() {
	var notesTable = document.getElementById('notesTable');
	if (!!notesTable) {
		var texts = getChildsByClassName(notesTable, 'copyText');
		var buttons = getChildsByClassName(notesTable, 'copyButton');
		var l = buttons.length;
		for (var ix = 0; ix < l; ix++) {
			if (!!texts[ix]) {
				if (!!window.clipboardData && !!clipboardData.setData) {
					buttons[ix].firstChild.onclick = function (txt) {
						return function() {
							clipboardData.setData('Text', txt);
							return false;
						};
					} (texts[ix].innerText);
					buttons[ix].style.cursor = 'pointer';
				} else {
					var clip = new ZeroClipboard.Client();
					clip.glue(buttons[ix].firstChild, buttons[ix]);
					clip.setText(texts[ix].innerText || texts[ix].textContent);
				}
			}
		}
	}
}

function getChildsByClassName(elm, className) {
	if (!!elm.getElementsByClassName) {
		return elm.getElementsByClassName(className);
	}
	var l = elm.childNodes.length;
	var re = new RegExp('(^| )' + className + '( |$)');
	var nodes = [];
	for (var i = 0; i < l; i++) {
		var cNode = elm.childNodes[i]
		if (!!cNode.className && re.test(cNode.className)) {
			nodes.push(cNode);
		}
		if (cNode.hasChildNodes()) {
			nodes = nodes.concat(getChildsByClassName(cNode, className));
		}
	}
	return nodes;
}

function insertSmile(img) {
	note = document.getElementById('note_text');
	note.focus();
	if (document.selection) {
		var sel = document.selection.createRange();
		sel.text = img.alt;
		sel.collapse(false);
		sel.select();
	} else if (note.selectionStart || note.selectionStart == '0') {
		var startPos = note.selectionStart;
		var endPos = note.selectionEnd;
		note.value = note.value.substring(0, startPos)
					+ img.alt
					+ note.value.substring(endPos, note.value.length);
		setSelectionRange(note, startPos + img.alt.length, startPos + img.alt.length);
	} else {
		note.value += img.alt;
	}
}

function InsertTags(tag) {
	if (!tagButtons[tag]) return;
	var tagButton = document.getElementById(tagButtons[tag]);
	if (!tagButton) return;
	var isClose = ('/' == tagButton.value.charAt(0));
	note = document.getElementById('note_text');
	if (insertTagAtCursor(note, tag, isClose)) {
		tagButton.value = tag;
	} else {
		tagButton.value = isClose ? tag : '/' + tag;
	}
}

function insertTagAtCursor(myField, myValue, isClose) {
	if (document.selection) {
	//IE support
		myField.focus();
		var mvl = myValue.length;
		sel = document.selection.createRange();
		var retValue = !!(sel.text);
		if (sel.text) {
			var stl = sel.text.length;
			sel.text = '[' + myValue + ']' + sel.text + '[/' + myValue + ']';
			sel.moveStart('character', (-3 - mvl - stl));
			sel.moveEnd('character', (-3 - mvl));
			sel.select();
		} else {
			sel.text = '[' + (isClose ? '/' : '') + myValue + ']';
		}
		return retValue;
	} else if (myField.selectionStart || myField.selectionStart == '0') {
	//MOZILLA/NETSCAPE support
		var startPos = myField.selectionStart;
		var endPos = myField.selectionEnd;
		if (endPos > startPos) {
			myField.value = myField.value.substring(0, startPos)
				+ '[' + myValue + ']'
				+ myField.value.substring(startPos, endPos)
				+ '[/' + myValue + ']'
				+ myField.value.substring(endPos);
			shiftPos = myValue.length + 2;
		} else {
			myField.value = myField.value.substring(0, startPos)
				+ '[' + (isClose ? '/' : '') + myValue + ']'
				+ myField.value.substring(startPos);
			shiftPos = myValue.length + (isClose ? 3 : 2);
		}
		setSelectionRange(myField,startPos + shiftPos,endPos + shiftPos);
		return endPos > startPos;
	} else {
		myField.value += myValue;
		return false;
	}
}

function setSelectionRange(input, selectionStart, selectionEnd) {
	if (input.createTextRange) {
		var range = input.createTextRange();
		range.collapse(true);
		range.moveEnd('character', selectionEnd);
		range.moveStart('character', selectionStart);
		range.select();
	} else if (input.setSelectionRange) {
		input.focus();
		input.setSelectionRange(selectionStart, selectionEnd);
	}
}

function goToPage(startURL, selObj) {
	var o = selObj.options;
	var l = o.length;
	for (var ix = 0; ix < l; ix++) {
		if (o[ix].selected) location.replace(startURL + o[ix].value);
	}
}

function ShowDate() {
	var weekDays = [
		"Воскресенье",
		"Понедельник",
		"Вторник",
		"Среда",
		"Четверг",
		"Пятница",
		"Суббота"
	];
	var _now = new Date();
	var _month = _now.getMonth();
	_month++;
	if (_month<10) { _month = "0" + _month; }
	var _day = _now.getDate();
	if (_day<10) { _day = "0" + _day; }
	var _year = _now.getFullYear();
	var myday = _now.getDay();
	document.write(weekDays[myday] + ", " + _day + "." + _month + "." + _year);
}

function showDiv(lay, text1, text2) {

	var reg = /(\d+)/
	var arr = reg.exec(lay)
	var href = 'href' + arr[0]

	if(document.getElementById(lay).style.display=='none'){
		document.getElementById(lay).style.display='';
		if (typeof text1 != 'undefined') document.getElementById(href).innerHTML = text1;
	} else {
		document.getElementById(lay).style.display='none';
		if (typeof text2 != 'undefined') document.getElementById(href).innerHTML = text2;
	}
}

function showEventForm(href, idBlock, captionShow, captionHide) {
	var blockStyle = document.getElementById(idBlock).style;
	var commentArea = document.getElementById('comment');
	if (blockStyle.display == 'none') {
		blockStyle.display = '';
		!!captionShow && (href.innerHTML = captionShow);
		commentArea.focus();
		if (!(commentArea.onkeydown instanceof Function)) {
			commentArea.onkeydown = function(e) {
				var event = e || window.event;
				if (event.ctrlKey && !event.altKey && !event.shiftKey && event.keyCode == 13) {
						commentArea.form.submit();
						return false;
				}
			}
		}
	} else {
		blockStyle.display = 'none';
		!!captionHide && (href.innerHTML = captionHide);
	}
}

function play() {
	if (navigator.appName == 'Microsoft Internet Explorer') {
		document.all.sound.src = "login.wav";
		setTimeout('document.location.href = "/cab/"',750);
	} else {
		document.location.href = '/cab/';
	}
}

appendEvent(window, 'onload', prepareTextarea);
appendEvent(window, 'onload', prepareClipboardButtons);
appendEvent(window, 'onload', prepareSmiles);
appendEvent(window, 'onload', navigateCtrlArrow);
