/* 
 **************************************************************************************************************************************************************
 **** Некоторые общие функции  ********************************************************************************************************************************
 ************************************************************************************************************************************************************** 
*/

/*
 *** Выводим текст в информационное окно и отображаем его ***
*/
// ***input:
// - header, text - заголовок и сам текст
function STDShowMsg(header,text) {
	document.getElementById('infoFormHeader').innerHTML         = header;
	document.getElementById('infoFormText').innerHTML   = text;			
	document.getElementById('infoForm').style.display = 'block';
}


/*
  *** Вставляем значение первого поля во второе поле **********************************************************************************************************
*/
// ***input:
// - fldID1, fldID2 - id соотв. полей
function STDFieldToField(fldID1,fldID2) {
	fldObj1 = document.getElementById(fldID1);
	fldObj2 = document.getElementById(fldID2);
	fldObj2.value = fldObj1.value;
}


/*
 *** Поверяем правильно ли веден E-mail в поле + выделяем соотв. цветом + приводим к нижн. регистру ************************************************************
*/
// ***input:
// - fldObjID - id поля
function STDEmailProssesing(fldObjID) {	
	//получаем объект поля
	fldObj = document.getElementById(fldObjID);
	//приводим к нижнему регистру
	fldObj.value = fldObj.value.toLowerCase(); 
	//выделяем соотв. цветом
	if(!fldObj.value.match(/^[0-9a-z_\-\.]+@[0-9a-z_\-\.]+\.[a-z]{2,3}$/i)) {
		fldObj.style.color = '#cc0000';
	}
	else fldObj.style.color = '#008800';	
}

/*
 *** Создаем элемент с помощью DOM ******************************************************************************************************************************
*/
// ***input:
// - el_type  - элемент(тег элемента, если указано 'text' - создает текстовый узел)
// - text     - текст для текствого узла или innerHTML('' - если ну нужно задавать) для тега
// - class_nm - класс('' - если ну нужно задавать)
// - params   - массив пар "свойство - значение" или 0, если не нужно
// ***output:
// - возвращаем сам элемент
function STDCrtWDOM(el_type,text,class_nm,params) {
	var obj;
	if(el_type != 'text') {
		obj = document.createElement(el_type);
		if(text != '') {
			obj.innerHTML = text;
		}
		if(class_nm != '') {
			obj.className = class_nm;
		}
		if(params != 0) {
			for(i = 0; i < params.length; i++) {
				obj.setAttribute(params[i][0],params[i][1]);
			}
		}		
	}
	else {
		obj = document.createTextNode(text);
	}
	return obj;
}

/*
 *** Проверка, можно ли ввести еще символы в поле(если не превысило макс. допустим. кол-во) *************************************************************************
*/
// ***input:
// - fldObjID   - id объекта поля
// - maxSymbols - макс. числол символов
// - evt        - событие нажатия клавиши
function STDInputCheckAllowPress(fldObjID,maxSymbols,evt) {
	//обрабатываем событие, если IE
	if (!evt)  evt = window.event;
	//берем объкт поля
	fldObj = document.getElementById(fldObjID);		
	//если нажали 'enter', а в запасе только один символ - не разрешаем
	if(evt.keyCode == 13 && fldObj.value.length == (maxSymbols-1)) {
		return false;
	}
	//смотрим код нажатой клавиши
    switch (evt.keyCode){
		//если стрелки, delete, enter, backspace
        case 8: case 46:  case 37:
        case 38: case 39: case 40:	
		//разрешаем нажать
		return true;
    }		
	//если превысили кол-во символов
	if(fldObj.value.length >= maxSymbols) {
		//не позволяем нажать
		return false;
	}
	//иначе позволяем
	else return true;
}

/*
 *** Выводим инфу о кол-во символов в поле ******************************************************************************************************************
*/
// ***получаем:
// - fldObjID   - id объекта поля
// - dstObjID   - id объекта, куда нужно вывести кол-во
// - maxSymbols - макс. числол символов
// - showType   - тип отображения('curr' - текущ. кол-во символов и 'left' - осталось)
function STDShowFieldSymbolsCountAdv(fldObjID,infObjID,maxSymbols,showType) {
	//берем объект поля
	fldObj = document.getElementById(fldObjID);		
	//берем объект куда нужно вывести
	infObj = document.getElementById(infObjID);
	//отображаем его род. эл.
	infObj.parentNode.style.position   = '';
	infObj.parentNode.style.visibility = '';
	//обрезаем, если превысили
	if(fldObj.value.length > maxSymbols) {
		fldObj.value = fldObj.value.substring(0,maxSymbols);
	}	
	//если выводим сколько осталось
	if(showType == "left") {		
		infObj.innerHTML = maxSymbols - fldObj.value.length;
	}
	//если выводим текущее
	else infObj.innerHTML = fldObj.value.length;	
}

/* 
 *** Placeholder Funcs **********************************************************************************************************************************
*/
function InputPlaceholder (input, value, cssFilled, cssEmpty)
{
	var thisCopy = this
	
	this.Input = input
	this.Value = value
	this.SaveOriginal = (input.value == value)
	this.CssFilled = cssFilled
	this.CssEmpty = cssEmpty

	this.setupEvent (this.Input, 'focus', function() {return thisCopy.onFocus()})
	this.setupEvent (this.Input, 'blur',  function() {return thisCopy.onBlur()})
	this.setupEvent (this.Input, 'keydown', function() {return thisCopy.onKeyDown()})

	if (input.value == '') this.onBlur();

	return this
}

InputPlaceholder.prototype.setupEvent = function (elem, eventType, handler)
{
	if (elem.attachEvent)
	{
		elem.attachEvent ('on' + eventType, handler)
	}

	if (elem.addEventListener)
	{
		elem.addEventListener (eventType, handler, false)
	}
}

InputPlaceholder.prototype.onFocus = function()
{
	if (!this.SaveOriginal &&  this.Input.value == this.Value)
	{
		this.Input.value = ''
	}
	else
	{
			this.Input.className = this.CssFilled
	}
}

InputPlaceholder.prototype.onKeyDown = function()
{
	//this.Input.className = ''
	this.Input.className = this.CssFilled
}

InputPlaceholder.prototype.onBlur = function()
{
	if (this.Input.value == '' || this.Input.value == this.Value)
	{
		this.Input.value = this.Value
		this.Input.className = this.CssEmpty
	}
	else
	{
		this.Input.className = this.CssFilled
	}
}
