﻿function addEvent(objElement, strEventType, ptrEventFunc, bPhase) {
	if (!bPhase) bPhase = false;
	if (objElement.addEventListener) objElement.addEventListener(strEventType, ptrEventFunc, bPhase);
		else if (objElement.attachEvent) objElement.attachEvent('on' + strEventType, ptrEventFunc);
}

function matchClass(eNode, sClass) {
	if (eNode && eNode.className) {
		return (eNode.className.length && eNode.className.match( new RegExp('(^|\\s+)(' + sClass + ')($|\\s+)') ) );
	}
}

function addClass( objNode, strNewClass ) {
	replaceClass( objNode, strNewClass, '' );
}

function removeClass( objNode, strCurrClass ) {
	replaceClass( objNode, '', strCurrClass );
}

function replaceClass( objNode, strNewClass, strCurrClass ) {
	var strOldClass = strNewClass;
	if ( strCurrClass && strCurrClass.length ){
		strCurrClass = strCurrClass.replace( /\s+(\S)/g, '|$1' );
		if ( strOldClass.length ) strOldClass += '|';
		strOldClass += strCurrClass;
	}
	objNode.className = objNode.className.replace( new RegExp('(^|\\s+)(' + strOldClass + ')($|\\s+)', 'g'), '$1' );
	objNode.className += ( (objNode.className.length)? ' ' : '' ) + strNewClass;
}


function removeInputPlaceholder(oEvt, eInput) {
	if (!eInput) {
		if (window.event) eInput = event.srcElement;
		else if (oEvt) eInput = oEvt.target;
	}
	if (eInput && eInput.tagName.toLowerCase() == 'input') {
		if (matchClass(eInput, 'empty')) {
			removeClass(eInput, 'empty');
			eInput.value = '';
		}
	}
}

function placeInputPlaceholder(oEvt, eInputToInit) {
	if (eInputToInit) eInput = eInputToInit;
	else {
		if (window.event) eInput = event.srcElement;
		else if (oEvt) eInput = oEvt.target;
	}
	if (eInput && eInput.tagName && eInput.tagName.toLowerCase() == 'input') {
		if (
			!eInput.value.length
			|| (eInputToInit && eInput.value == eInput.getAttribute('placeholder'))
		) {
			addClass(eInput, 'empty');
			eInput.value = eInput.getAttribute('placeholder');
		}
	}
}

function initPlaceholders() {
	for (var i = 0; (eInput = document.getElementsByTagName('input')[i]); i++) {
		if (
			(eInput.type == 'text' || eInput.type == 'password')
			&& eInput.getAttribute('placeholder')
		) {
			if (eInput.onsearch !== null) {
				addEvent(eInput, 'blur', placeInputPlaceholder);
				addEvent(eInput, 'focus', removeInputPlaceholder);
				placeInputPlaceholder(null, eInput);
			}
		}
	}
}

if (window.addEvent) addEvent(window, 'load', initPlaceholders);
