/*
*	JSLib::Common
*/

	var ie = 0;
	/*@cc_on
	ie = 1;
	@*/

	function g( docloc ) {

		document.location.href = docloc;

	}

	addLoadListener = function (fn) {
		if (typeof window.addEventListener != 'undefined') {
			window.addEventListener('load', fn, false);
		} else if (typeof document.addEventListener != 'undefined')	{
			document.addEventListener('load', fn, false);
		} else if (typeof window.attachEvent != 'undefined') {
			window.attachEvent('onload', fn);
		} else {

			var oldfn = window.onload;

			if (typeof window.onload != 'function')	{
				window.onload = fn;
			} else {
				window.onload = function() {
					oldfn();
					fn();
				};
			}
		}
	}

	/*
	addEvent function from http://www.quirksmode.org/blog/archives/2005/10/_and_the_winner_1.html
	*/
	addEvent = function(obj, type, fn) {
		if (obj.addEventListener)
			obj.addEventListener(type, fn, false);
		else if (obj.attachEvent) {
			obj["e"+type+fn] = fn;
			obj[type+fn] = function() {obj["e"+type+fn]( window.event );}
			obj.attachEvent("on"+type, obj[type+fn]);
		}
	}

	/* Cookie handlers */
	createCookie = function (name,value,days) {
		if (days) {
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		} else var expires = "";

		document.cookie = name+"="+value+expires+"; path=/";
	}

	readCookie = function (name) {
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
		return null;
	}

	eraseCookie = function (name) {
		createCookie(name,"",-1);
	}


	DateClock = function() {

		var clockId = 0;

		var tDate = new Date();

		var dHour = tDate.getHours();
		var dMin = tDate.getMinutes();



		if (dHour.toString().length < 2) {
			dHour = '0' + dHour;
		}

		if (dMin.toString().length < 2) {
			dMin = '0' + dMin;
		}

		document.getElementById('big_time').innerHTML = ""
									                       + dHour + ":"
									                       + dMin;

		clockID = setTimeout("DateClock()", 1000);

	}

	//addLoadListener(DateClock);

	function formatDate( ODate ) {

		if ( ODate.getHours() < 10 ) {
			var StrDate = '0' + ODate.getHours();
		} else {
			var StrDate = ODate.getHours();
		}

		if ( ODate.getMinutes() < 10 ) {
			StrDate += ':0' + ODate.getMinutes();
		} else {
			StrDate += ':' + ODate.getMinutes();
		}

		return StrDate;

	}

	function getElementsByClassName(oElm, strTagName, strClassName){
		var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
		var arrReturnElements = new Array();
		strClassName = strClassName.replace(/-/g, "\-");
		var oRegExp = new RegExp("(^|\s)" + strClassName + "(\s|$)");
		var oElement;
		for (var i=0; i<arrElements.length; i++) {
			oElement = arrElements[i];
			if (oRegExp.test(oElement.className)) {
				arrReturnElements.push(oElement);
			}
		}
		return (arrReturnElements)
	}

	function getPageSize( type ) {

		var xScroll, yScroll;

		if (window.innerHeight && window.scrollMaxY) {
			xScroll = document.body.scrollWidth;
			yScroll = window.innerHeight + window.scrollMaxY;
		} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
			xScroll = document.body.scrollWidth;
			yScroll = document.body.scrollHeight;
		} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
			xScroll = document.body.offsetWidth;
			yScroll = document.body.offsetHeight;
		}

		var windowWidth, windowHeight;
		if (self.innerHeight) { // all except Explorer
			windowWidth = self.innerWidth;
			windowHeight = self.innerHeight;
		} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
			windowWidth = document.documentElement.clientWidth;
			windowHeight = document.documentElement.clientHeight;
		} else if (document.body) { // other Explorers
			windowWidth = document.body.clientWidth;
			windowHeight = document.body.clientHeight;
		}

		// for small pages with total height less then height of the viewport
		if(yScroll < windowHeight){
			pageHeight = windowHeight;
		} else {
			pageHeight = yScroll;
		}

		// for small pages with total width less then width of the viewport
		if(xScroll < windowWidth){
			pageWidth = windowWidth;
		} else {
			pageWidth = xScroll;
		}


		arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight)
		//return arrayPageSize;

		return pageHeight;
	}


	/* http://www.netlobo.com/url_query_string_javascript.html */
	function gup( name ) {
		name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
		var regexS = "[\\?&]"+name+"=([^&#]*)";
		var regex = new RegExp( regexS );
		var results = regex.exec( window.location.href );
		if( results == null )
			return "";
		else
			return results[1];
	}


	function isInteger(s) {
		var i;

		for (i = 0; i < s.length; i++) {
			// Check that current character is number.
			var c = s.charAt(i);
			if (((c < "0") || (c > "9"))) return false;
		}

		// All characters are numbers.
		return true;
	}


	function stripCharsInBag(s, bag){
		var i;
		var returnString = "";

		// Search through string's characters one by one.
		// If character is not in bag, append to returnString.
		for (i = 0; i < s.length; i++) {
			// Check that current character isn't whitespace.
			var c = s.charAt(i);
			if (bag.indexOf(c) == -1) returnString += c;
		}
		return returnString;
	}

	isValidPhone = function( phoneStr ) {
		var digits = "0123456789";
		var phoneNumberDelimiters = "()+- ";
		var minDigitsInIPhoneNumber = 6;

		var s = stripCharsInBag( phoneStr, phoneNumberDelimiters);
		if ( ! isInteger(s) || s.length <= minDigitsInIPhoneNumber) {
			return false;
		}

		return true;
	}

	isValidEmail = function( emailStr ) {
		var mailfilter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

		if (mailfilter.test( emailStr ) == false) {
			return false;
		}

		return true;
	}

	is_number = function(a_string) {
		tc = a_string.charAt(0);
		if (tc == "0" || tc == "1" || tc == "2" || tc == "3" ||	tc == "4" || tc == "5" || tc == "6" || tc == "7" || tc == "8" || tc == "9") {
			return true;
		} else {
			return false;
		}
	}
/*
	Array.prototype.inArray = function(search_term) {
		var i = this.length;
		if (i > 0) {
			do {
				if (this[i] === search_term) {
					return true;
				}
			} while (i--);
		}
		return false;
	}
*/

	/*  Common behaviour objects */

	var filterPluginBehavior = {

		insertLetter : function( letter ) {

			if (document.getElementById('fltr_inputfield').innerHTML.length > 16) {
				return false;
			}

			document.getElementById('fltr_inputfield').innerHTML += letter;
			document.getElementById('filter_value').value += letter;
		},

		backspace : function() {
			txt = document.getElementById('fltr_inputfield').innerHTML
			txt = txt.slice(0, -1);
			document.getElementById('fltr_inputfield').innerHTML = txt;
			document.getElementById('filter_value').value = txt;
		},

		initFilterPage : function( docroot ) {

			var ul;
			var a;
			var form;
			var gMode = gup('m');
			var gType = gup('type');
			var gMod = gup('mod');

			// Add event handler to cancel buttons
			if ( ( a = document.getElementById('filter_o_cancel') ) || ( a = document.getElementById('filter_cancel') ) ) {
				a.onclick = function() {
					document.location.href= docroot + '?m=' + gMode + '&mod=' + gMod;
				}
			}

			// Add onsubmit functions

			if ( ( form = document.getElementById('filter_frm') ) && gType == 'text') {
				form.onsubmit = function() {
					var firstchar = document.getElementById('filter_value').value[0];
					var arrSpan = document.getElementsByTagName('span');
					var filterVal = 0;
					for ( var i = 0, il = arrSpan.length; i < il; i++) {
						if ( arrSpan[i].id.indexOf( 'oitem' ) != -1 && arrSpan[i].innerHTML.indexOf( firstchar ) != -1 ) {
							filterVal = arrSpan[i].id.split('_')[1];
						}
					}
					
					document.getElementById('filter_value').value = filterVal;
				}
			}

			if ( ul = document.getElementById('keyboard_text') ) {
				aLetters = new Array( '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'ö', 'ü', 'q', 'w', 'e', 'r', 't', 'z', 'u', 'i', 'o', 'p', 'ő', 'ú', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'é', 'á', 'ű', 'í', 'y', 'x', 'c', 'v', 'b', 'n', 'm', 'ó', ' ' );
			} else if ( ul = document.getElementById('keyboard_num') ) {
				aLetters = new Array( '0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
			} else if ( ul = document.getElementById('keyboard_num_reg') ) {
				aLetters = new Array( '1', '2', '3', '4', '5', '6', '7', '8', '9', '', '0');
			} else if ( ul = document.getElementById('filter_options') ) {
			} else if ( document.getElementById('lotoption_list') ) {
				lotOption.init();
				//a billentyu viselkedes kulon osztalyba kerult.
				return false;
			} else {
				return false;
			}

			aA = ul.getElementsByTagName('a');

			for ( var i = 0; i < aA.length; i++) {

				switch(ul.id) {
					case 'keyboard_text':

						aA[i].onclick = ( function( letter ) {
							return function() {
								filterPluginBehavior.insertLetter( letter );
								return false;
							}
						} ) ( aLetters[i] );

						break;
					case 'keyboard_num':

						aA[i].onclick = ( function( letter ) {
							return function() {

								for ( var e = 0; e < aA.length; e++) {
									aA[e].className = undefined;
								}

								try {
									document.getElementById('plugin_value').value = parseInt( letter ) + 1;
								}
								catch(Err) {}
								try {
									registrationNumbers(letter);
								}
								catch(Err) {}
								this.className = 'focus';
								document.getElementById('filter_frm').submit();
								return false;
							}
						} ) ( aLetters[i] );

						break;

					case 'keyboard_num_reg':
					
						aA[i].onclick = ( function( letter ) {
							return function() {
								try {
									registrationNumbers(letter);
								}
								catch(Err) {}

								return false;
							}
						} ) ( aLetters[i] );

						aA[aLetters.length - 2].onclick = function() {
							delRegNumbers();
							return false;
						};
						
						break;

					case 'filter_options':

						aA[i].onclick = function() {

							for ( var e = 0; e < aA.length; e++) {
								aA[e].className = undefined;
							}

							document.getElementById('filter_value').value = this.id;
							this.className = 'focus';
							return false;
						};

						break;
				}

			}

			if ( ul.id == 'keyboard_text') {
				aA[aA.length - 1].onclick = function() {
					filterPluginBehavior.backspace();
					return false;
				};
			}

		}

	} /* filterPluginBehavior */

	var lotOption = {

		arrList: [],

		blockedArrows: false,

		seq : 0,

		highlight : function( arrLi, selectedIndex ) {

			// Selected torlese
			for ( var i = 0; i < arrLi.length; i++ ) {
				if ( arrLi[i].className == 'selected' ) {
					arrLi[i].className = '';
					break;
				}
			}

			arrLi[selectedIndex].className = 'selected';

		},

		init : function() {
			var arrow_u = document.getElementById('arrow_u');
			var arrow_d = document.getElementById('arrow_d');
			var darrow_u = document.getElementById('darrow_u');
			var darrow_d = document.getElementById('darrow_d');
			
			lotOption.filterlabel = document.getElementById('filterlabel').innerHTML;
			lotOption.filterlabel2 = document.getElementById('filterlabel2').innerHTML;
			
			//A lista elemeit tartalmazo tomb feltoltese:
			var ul = document.getElementById('lotoption_list');
			var arrLi = ul.getElementsByTagName('li');
			for ( var e = 0; e < arrLi.length; e++ ) {
				for ( var r = 0; r < arrLi[e].childNodes.length; r++ ) {

					if ( arrLi[e].childNodes[r].nodeType == 3 ) {
						this.arrList[e] = [ arrLi[e].childNodes[r].nodeValue, arrLi[e].childNodes[r].parentNode.id ];
					}

				}
			}

			// Ellenorzes az ures filter ertekre
			if ( formFilter = document.getElementById('filter_frm') ) {
				formFilter.onsubmit = function() {
					if ( ! document.getElementById('filter_value').value ) {
						alert('Kérem válasszon a listából!');
						return false;
					}
				}
			}

			arrow_d.onclick = function() {
				if (lotOption.blockedArrows ) return false;

				var ul = document.getElementById('lotoption_list');
				var arrLi = ul.getElementsByTagName('li');
				var firstLi = arrLi[0];
				var actMarginTop = parseInt(firstLi.style.marginTop);

				if (  arrLi.length === 1 ) {
					return false;
				}

				if ( ! actMarginTop ) {
					actMarginTop = 0;
				}

				if ( arrLi.length > 2 && actMarginTop < -(44 * (arrLi.length-3) ) ) {
					return false;
				}

				// Lista mozgatasa lefele
				if ( lotOption.seq > 1 && actMarginTop > -(44 * (arrLi.length-3) ) ) {
					firstLi.style.marginTop = ( actMarginTop - 44 ) + 'px';
				}

				if (lotOption.seq > arrLi.length-1) {
					return false;
				}

				// Kivalasztott elem highlight
				lotOption.highlight( arrLi, lotOption.seq );
				lotOption.seq++;

				//Ertek adas az inputnak
				document.getElementById('filter_value').value = arrLi[lotOption.seq].id.split('_')[1];
			}

			arrow_u.onclick = function() {
				if (lotOption.blockedArrows) return false;

				var ul = document.getElementById('lotoption_list');
				var arrLi = ul.getElementsByTagName('li');
				var firstLi = arrLi[0];
				var actMarginTop = parseInt(firstLi.style.marginTop);

				if ( isNaN(actMarginTop) ) {
					actMarginTop = 0;
				}

				// Lista mozgatasa felfele
				if ( lotOption.seq < arrLi.length && actMarginTop < 0) {
					firstLi.style.marginTop = ( actMarginTop + 44 ) + 'px';
				}
				if ( lotOption.seq < 2 ) {
					return false;
				}

				// Kivalasztott elem highlight
				lotOption.seq--;
				lotOption.highlight( arrLi, lotOption.seq-1 );

				//Ertek adas az inputnak
				document.getElementById('filter_value').value = arrLi[lotOption.seq-1].id.split('_')[1];
			}

			darrow_u.onclick = function() {
				if (lotOption.blockedArrows) return false;

				var ul = document.getElementById('lotoption_list');
				var arrLi = ul.getElementsByTagName('li');
				var firstLi = arrLi[0];
				firstLi.style.marginTop = '0px';

				lotOption.highlight( arrLi, 0 );
				lotOption.seq = 1;

				//Ertek adas az inputnak
				document.getElementById('filter_value').value = arrLi[0].id.split('_')[1];
			}


			darrow_d.onclick = function() {
				if (lotOption.blockedArrows) return false;

				var ul = document.getElementById('lotoption_list');
				var arrLi = ul.getElementsByTagName('li');
				var firstLi = arrLi[0];

				if ( arrLi.length > 3 ) {
					firstLi.style.marginTop = (-44 * (arrLi.length-3) ) + 'px';
				}

				lotOption.highlight( arrLi, arrLi.length-1 );
				lotOption.seq = arrLi.length;

				//Ertek adas az inputnak
				document.getElementById('filter_value').value = arrLi[arrLi.length-1].id.split('_')[1];
			}

			this.initKeyboard();
			this.initInputField();
		},

		aLetters : [ 	'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
						'ö', 'ü', 'q', 'w', 'e', 'r', 't', 'z', 'u', 'i',
						'o', 'p', 'ő', 'ú', 'a', 's', 'd', 'f', 'g', 'h',
						'j', 'k', 'l', 'é', 'á', 'ű', 'í', 'y', 'x', 'c',
						'v', 'b', 'n', 'm', 'ó', ' ' ],

		letterBuffer : '',

		initKeyboard : function() {
			
			var ul = document.getElementById('keyboard_lotoption');
			
			if ( ! ul ) {
				return true;
			}
			
			var aA = ul.getElementsByTagName('a');

			for ( var i = 0; i < aA.length; i++) {

				aA[i].onclick = ( function( letter ) {
					return function() {
						lotOption.insertLetter( letter );
						return false;
					}
				} ) ( this.aLetters[i] );

			}

			aA[aA.length - 1].onclick = function() {
				lotOption.backspace();
				return false;
			};

		},
		
		insertLetter : function( letter ) {
			this.letterBuffer += letter;
			this.refreshValue();
			//document.getElementById('bottom_txt_indicator').childNodes[0].nodeValue = this.letterBuffer;
		},

		backspace: function() {
			if ( ! this.letterBuffer) {
				return;
			}
			this.letterBuffer = this.letterBuffer.slice(0, -1);
			this.refreshValue();
		},
		
		initInputField : function() {
			
			var inp = document.getElementById('filter_web_input');
			
			if ( ! inp ) {
				return true;
			}
			
			inp.onkeyup = function() {
				lotOption.letterBuffer = this.value;
				lotOption.refreshValue();
			}
			
		},

		refreshValue: function() {

			this.blockedArrows = false;
			this.seq = 0;

			if ( ! this.letterBuffer ) {
				document.getElementById('bottom_txt_indicator').childNodes[0].nodeValue = 'Kezdje el gépelni ' + lotOption.filterlabel;
			} else {
				document.getElementById('bottom_txt_indicator').childNodes[0].nodeValue = "\u201C" + this.letterBuffer.toUpperCase() + "\u201E - val kezdődő " + lotOption.filterlabel2;
			}
			document.getElementById('top_txt_indicator').childNodes[0].nodeValue = document.getElementById('bottom_txt_indicator').childNodes[0].nodeValue;

			var filteredList = [];
			if ( this.letterBuffer ) {
				for ( var e = 0; e < this.arrList.length; e++ ) {
					if ( this.arrList[e][0].toLowerCase().indexOf(this.letterBuffer.toLowerCase()) === 0 ) {
						filteredList.push( this.arrList[e] );
					}
				}
			}

			if ( ! this.letterBuffer ) {
				filteredList = this.arrList;
			}

			if ( ! filteredList.length ) {
				filteredList[1] = [ 'Sajnos nincs találat', '' ];
				filteredList[0] = filteredList[2] = [ '', ''];
				this.blockedArrows = true;
			}

			var newUl = document.createElement('ul');
			newUl.id = 'lotoption_list';
			for ( var e = 0; e < filteredList.length; e++ ) {
				var filteredLi = document.createElement( 'li' );
				filteredLi.id = filteredList[e][1];
				filteredLi.appendChild( document.createTextNode( filteredList[e][0] ) );

				newUl.appendChild( filteredLi );
			}

			var oldUl = document.getElementById('lotoption_list');
			oldUl.parentNode.replaceChild( newUl, oldUl );

			if ( ! this.blockedArrows && this.letterBuffer) {
				this.highlight( newUl.getElementsByTagName('li'), 0 );
				document.getElementById('filter_value').value = newUl.getElementsByTagName('li')[0].id.split('_')[1];
			}

			if ( ! this.letterBuffer ) {
				document.getElementById('filter_value').value = '';
			}

		}

	}



