/*****************************************************************************
	Hilfsfunktion  / Lib für flight
	benötigt prototype
*****************************************************************************/

var ns = (navigator.appName == "Netscape") && (navigator.appVersion < "5");
var ns6= (navigator.appName == "Netscape") && (navigator.appVersion > "5");
var ie = (navigator.appName == "Microsoft Internet Explorer");
var ie6 = (navigator.userAgent.indexOf("MSIE 6.0") > 0);


/*****************************************************************************
	Erwartet den Namen einer Gruppe von Radiobuttons.
	Gibt zurück den Wert des Elementes, das "checked" ist.
*****************************************************************************/
function getCheckedValue(btn) {
	if(btn) {
		for(var i = 0; i < btn.length; i++) {
			if(btn[i].checked) return(btn[i].value);
		}
	}
	return('undefined');
}


function MM_showHideLayers() { //v9.0
	var i,p,v,obj,args=MM_showHideLayers.arguments;
	for (i=0; i<(args.length-2); i+=3) {
		with (document) {
			if (getElementById && ((obj=getElementById(args[i]))!=null)) { 
				v=args[i+2];
				if (obj.style) {
					obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v;
				}
				obj.visibility=v; 
			}
		}
	}
}


function PopUp (width,height,typ) {
	if (typ == 1)
		var opt = "width=" + width + ",height=" + height + ",resizable=1,toolbar=1,scrollbars=1";
	else
		var opt = "width=" + width + ",height=" + height + ",resizable=0,toolbar=0,scrollbars=0";
	
	neuesFenster=open("","anzeigeFenster",opt);
	window.neuesFenster.focus();
}


function getHost() {
	var regex = "[^htp:/][a-zA-Z]{2,}[^.]";
	var myrxp = new RegExp(regex);
	return (document.location.href.match(myrxp));
}

function hook_layer(base_element, target_element, options) {
	if(document.loaded) {
		var offsetLeft = options.left || 100
		var offsetTop = options.top || -30
		$(target_element).clonePosition(base_element, {setWidth:false, setHeight:false, offsetLeft:offsetLeft, offsetTop:offsetTop});
		$(target_element).show();
	}
}

function hide_layer(element) {
	$(element).hide();
}



function setValue (element, value) {
	if(!element) return(false);
	switch (element.type.toLowerCase()) {
	case 'submit':
	case 'hidden':
	case 'password':
	case 'text':
		element.value = value;
  		return(true);
	case 'checkbox': // TODO: checkbox + radio inmplementieren
	case 'radio':
  		return(false);
	case 'select-one':
		for (var i=0;i< element.options.length;i++) {
			if (element.options[i].value == value) {
  				element.selectedIndex = i;
    			return(true);
			}        
		}
		/* Wert nicht in Liste? dann fügen wir den Wert als option hinzu */
		var opt = '<option value="' + value + '">'  + value + '</p>';
		element.insert({bottom: opt});
		element.selectedIndex = i;
    }
    return(true);
}
    

function set_css_rule(stylesheet_path, selector, property,  value) {
	/* Stylesheet mit bestimmtem Namen */ 
	var stylesheet;
	var stylesheet_found = 0;
	var rule_found = 0;
	for (var i = 0; i < document.styleSheets.length; i++) {
		if (document.styleSheets[i].href == stylesheet_path) {
			stylesheet = document.styleSheets[i];
			stylesheet_found = 1;
			break;
		}
	}
	if(stylesheet_found) {
		var rules = stylesheet.cssRules?stylesheet.cssRules:stylesheet.rules // Browserabhängigkeit abstrahieren
		for (i = 0; i < rules.length; i++) {
			if(rules[i].selectorText && rules[i].selectorText.toLowerCase() == selector.toLowerCase()) {
				var rule = rules[i];
				rule_found = 1;
				break;
			}
		}
		rule.style[property] = value;
	}

	return(stylesheet_found && rule_found);
}




// graft() function
// Originally by Sean M. Burke from interglacial.com

//function graft (parent, t, doc) {
//
//    // Usage: graft( somenode, [ "I like ", ['em',
//    //               { 'class':"stuff" },"stuff"], " oboy!"] )
//
//    doc = (doc || parent.ownerDocument || document);
//    var e;
//
//    if(t == undefined) {
//        throw complaining( "Can't graft an undefined value");
//    } else if(t.constructor == String) {
//        e = doc.createTextNode( t );
//    } else if(t.length == 0) {
//        e = doc.createElement( "span" );
//        e.setAttribute( "class", "fromEmptyLOL" );
//    } else {
//        for(var i = 0; i < t.length; i++) {
//            if( i == 0 && t[i].constructor == String ) {
//                var snared;
//                snared = t[i].match( /^([a-z][a-z0-9]*)\.([^\s\.]+)$/i );
//                if( snared ) {
//                    e = doc.createElement(   snared[1] );
//                    e.setAttribute( 'class', snared[2] );
//                    continue;
//                }
//                snared = t[i].match( /^([a-z][a-z0-9]*)$/i );
//                if( snared ) {
//                    e = doc.createElement( snared[1] );  // but no class
//                    continue;
//                }
//
//                // Otherwise:
//                e = doc.createElement( "span" );
//                e.setAttribute( "class", "namelessFromLOL" );
//            }
//
//            if( t[i] == undefined ) {
//                throw complaining("Can't graft an undefined value in a list!");
//            } else if(  t[i].constructor == String ||
//                                    t[i].constructor == Array ) {
//                graft( e, t[i], doc );
//            } else if(  t[i].constructor == Number ) {
//                graft( e, t[i].toString(), doc );
//            } else if(  t[i].constructor == Object ) {
//                // hash's properties => element's attributes
//                for(var k in t[i])  e.setAttribute( k, t[i][k] );
//            } else {
//                throw complaining( "Object " + t[i] +
//                    " is inscrutable as an graft arglet." );
//            }
//        }
//    }
//
//    parent.appendChild( e );
//    return e; // return the topmost created node
//}
//
//function complaining (s) { alert(s); return new Error(s); }
//  
//
