/**
 * Navigation JS
 * Kreisjugendfeuerwehr Dithmarschen 
 *
 * @$LastChangedDate: 2007-12-29 01:08:20 +0100 (Sa, 29 Dez 2007) $
 * @$Rev: 65 $
 * @$Author: dinnerout $ // Sebastian Martens - www.sebastian-martens.de
 */


/**
 * Setzt die Position des Cursors innerhalb eines Input-Feldes
 * @author Sebastian Martens
 * @param inputId:String - Id des Input-Feldes
 * @param position:Integer - Cursorposition
 */ 
function inputCursorPosition(inputId,position) {
	node = document.getElementById(inputId);
	node.focus();
	
	if(document.selection){ // ie
		var range = document.selection.createRange();
   	 	range.moveStart('character', position);      
    	range.select();	
	}else{ // browser
		node.selectionEnd = position;
		node.selectionStart = position;
	}
}


/**
 * Fires an "on..." event, like onclick, onchange etc.
 * @param {String} evtname
 * @param {String} id
 */
function fireOnEvent(evtname, id) {
	var trigger = (typeof id == "string")?document.getElementById(id):id;
	if (trigger.fireEvent) {
		trigger.fireEvent(evtname);
	} else {
		var evt = document.createEvent("HTMLEvents");
		if (evtname.indexOf("on") == 0) evtname = evtname.substring(2, evtname.length);
		evt.initEvent(evtname, false, false);
		trigger.dispatchEvent(evt);
	} 
}

/**
 * Öffnet angegebene Datei in einem PopUp-Fenster
 * @param {Object} filename
 * @param {Object} x
 * @param {Object} y
 */
function openwindow(filename,x,y){  
	popup = window.open(filename,"PopUp","height="+y+",width="+x+",scrollbars=yes,menubar=no"); 
	if ( popup.document.close() ) {
		popup.document.close();
	}
}

/**
 * cookies
 * @param {Object} name
 */
function getCookie( name ) {
	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
		return null;
	}
	if ( start == -1 ) return null;
	var end = document.cookie.indexOf( ';', len );
	if ( end == -1 ) end = document.cookie.length;
	return unescape( document.cookie.substring( len, end ) );
}

/**
 * 
 * @param {Object} name
 * @param {Object} value
 * @param {Object} expires
 * @param {Object} path
 * @param {Object} domain
 * @param {Object} secure
 */
function setCookie( name, value, expires, path, domain, secure ) {
	var today = new Date();
	today.setTime( today.getTime() );
	if ( expires ) {
		expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );
	document.cookie = name+'='+escape( value ) +
		( ( expires ) ? ';expires='+expires_date.toGMTString() : '' ) + //expires.toGMTString()
		( ( path ) ? ';path=' + path : '' ) +
		( ( domain ) ? ';domain=' + domain : '' ) +
		( ( secure ) ? ';secure' : '' );
}

/**
 * 
 * @param {Object} name
 * @param {Object} path
 * @param {Object} domain
 */
function deleteCookie( name, path, domain ) {
	if ( getCookie( name ) ) document.cookie = name + '=' +
			( ( path ) ? ';path=' + path : '') +
			( ( domain ) ? ';domain=' + domain : '' ) +
			';expires=Thu, 01-Jan-1970 00:00:01 GMT';
}

/**
 * getElementById
 */
function $() {
	var elements = new Array();
	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == 'string')
			element = document.getElementById(element);
		if (arguments.length == 1)
			return element;
		elements.push(element);
	}
	return elements;
}

/**
 * get Element nodes by class name
 * @param {Object} searchClass
 * @param {Object} node
 * @param {Object} tag
 */
function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|$)');
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

/**
 * 
 * @param {Object} obj
 */
function toggle(obj) {
	// var el = document.getElementById(obj);
	if ( obj.style.display != 'none' ) {
		obj.style.display = 'none';
	}
	else {
		obj.style.display = '';
	}
}

/**
 * 
 * @param {Object} elm
 * @param {Object} evType
 * @param {Object} fn
 * @param {Object} useCapture
 */
function addEvent(elm, evType, fn, useCapture) {
	if (elm.addEventListener) {
		elm.addEventListener(evType, fn, useCapture);
		return true;
	}
	else if (elm.attachEvent) {
		var r = elm.attachEvent('on' + evType, fn);
		return r;
	}
	else {
		elm['on' + evType] = fn;
	}
}

/**
 * 
 * @param {Object} func
 */
function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	}
	else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}

/**
 * 
 * @param {Object} value
 */
Array.prototype.inArray = function (value) {
	var i;
	for (i=0; i < this.length; i++) {
		if (this[i] === value) {
			return true;
		}
	}
	return false;
}

/**
 * 
 * @param {Object} pAction
 * @param {Object} obj
 * @param {Object} pClass1
 * @param {Object} pClass2
 */
function changeCssClass(pAction,obj,pClass1,pClass2){
	if(pAction=="flip"){
		obj.className=!changeCssClass('verify',obj,pClass1)?obj.className.replace(pClass2,pClass1):
		obj.className.replace(pClass1,pClass2);
		return true;
	} 
	else if(pAction=="add"){
		if(!changeCssClass('verify',obj,pClass1)){obj.className+=obj.className?' '+pClass1:pClass1;}
		return true;
	}
	else if(pAction=="prepend"){
		if(!changeCssClass('verify',obj,pClass1)){obj.className = pClass1 + obj.className ? ' ' + obj.className : ''}
		return true;
	}
	else if(pAction=="remove"){
		var rep=obj.className.match(' '+pClass1)?' '+pClass1:pClass1;
		obj.className=obj.className.replace(rep,'');
		return true;
	}
	else if(pAction=="verify"){
		return new RegExp('\\b'+pClass1+'\\b').test(obj.className);
	}
	return false;
}

