function $() {
    var elements = [];
  for (var i = 0; i < arguments.length; i++) {
	var element = arguments[i];
        if (typeof element == 'string') {
	  element = document.getElementById(element);
	}
        if (arguments.length == 1) {
	elements.push(element);
            return element;
  }
    }
  return elements;
}

function Get_Cookie(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));
}

function Set_Cookie(name, value, expires, path, domain, secure) {
    var cookieString = name + '=' + escape(value) + ((expires) ? ';expires=' + expires.toGMTString() : '') + ((path) ? ';path=' + path : '') + ((domain) ? ';domain=' + domain : '') + ((secure) ? ';secure' : '');
	document.cookie = cookieString;
}

function Delete_Cookie(name, path, domain) {
    if (Get_Cookie(name)) {
        document.cookie = name + '=' + ((path) ? ';path=' + path : '') + ((domain) ? ';domain=' + domain : '') + ';expires=Thu, 01-Jan-70 00:00:01 GMT';
    }
}

function not_shown_yet(cookiename) {
	if (Get_Cookie(cookiename) == 'already_shown') {
		return false;
	} else {
        Set_Cookie(cookiename, 'already_shown');
		return true;
	}
}

function MM_openBrWindow(theURL, winName, features) {
    window.open(theURL, winName, features);
}

function switchImage(imgName, imgSrc) {
    if (document.images) {
        if (imgSrc != 'none') {
		document.images[imgName].src = imgSrc;
	}
    }
}

function validMail(formID, elementID) {
    if (!document.forms[formID].elements[elementID].value.match(/^[a-zA-Z0-9_\-]+([\.|\+][a-zA-Z0-9_\-]+)*@([0-9a-zA-Z][0-9a-zA-Z\-]*[0-9A-Za-z]\.)+([A-Za-z]{2,4})$/)) {
        document.forms[formID].elements[elementID].value = '';
		return false;
	}
}

function checkDisplay(elementID)
{
    var node = document.getElementById(elementID);

    if (node)
    {
        if (node.style.display == 'none')
        {
            node.style.display = '';
        }
        else
        {
            node.style.display = 'none';
        }
    }
}

function hasClassName(elementName, KlassenName) {
    var element = $(elementName);
    if (!(element)) {
        return;
    }

    var elementClassName = element.className;
    return (elementClassName.length > 0 && (elementClassName == KlassenName || new RegExp('(^|\\s)' + KlassenName + '(\\s|$)').test(elementClassName)));
}

function addClassName(elementName, KlassenName) {
    var element = $(elementName);
    if (!(element)) {
        return;
    }

    if (!hasClassName(elementName, KlassenName)) {
		element.className += (element.className ? ' ' : '') + KlassenName;
	}
    return element;
}

function strip(string) {
    return string.replace(/^\s+/, '').replace(/\s+$/, '');
}

function removeClassName(elementName, KlassenName) {
    var element = $(elementName);
    if (!(element)) {
        return;
    }

    element.className = strip(element.className.replace(
    new RegExp('(^|\\s+)' + KlassenName + '(\\s+|$)'), ' '));
    return element;
}

function element_visible(element) {
    return $(element).style.display != 'none';
}

function element_hide(element) {
    $(element).style.display = 'none';
    return element;
}

function element_show(element) {
    $(element).style.display = 'block';
    return element;
}

function toggle(element) {
    var is_visible = element_visible(element);

	if (is_visible) {
		element_hide(element);
	} else {
		element_show(element);
	}
    return $(element);
}

function toggleClass(elementName, KlassenName) {
    var element = $(elementName);
    if (!(element)) {
        return;
    }

	if (hasClassName(elementName, KlassenName)) {
		removeClassName(elementName, KlassenName);
	} else {
		addClassName(elementName, KlassenName);
	}
    return element;
}

/**
 * validMailByID(elementID)
 *
 * validates a E-Mail address by giving the ID of the field where the address is
 * strored
 *
 * @param string  elementID the name of the field, where the address is stored
 *
 * @return boolean
 */

function validMailByID(elementID) {
    var elementValue = $(elementID).value;
    if (!elementValue.match(/^[a-zA-Z0-9_\-]+([\.|\+][a-zA-Z0-9_\-]+)*@([0-9a-zA-Z][0-9a-zA-Z\-]*[0-9A-Za-z]\.)+([A-Za-z]{2,4})$/)) {
        elementValue = '';
        return false;
    } else {
        return true;
    }
}

/**
 * disableOptions(id,start,end)
 *
 * clears the options on a select field
 *
 * @param string  form  the Tab where the field is placed
 * @param string  field the name of the field, which should be focused
 *
 * @return void
 */

function disableOptions(id, start, end) {
    for (var i = start; i < end; i++) {
        $(id).options[1] = null;
    }
}

/**
 * fillOptions(id)
 *
 * fills options into a select field
 *
 * @param string  form  the Tab where the field is placed
 * @param string  field the name of the field, which should be focused
 *
 * @return void
 */

function fillOptions(id) {
    opt = ['- -', '3', '8', '15', '25', '29', '43', '92', '183'];
    for (var i = 0; i < $(id).options.length; i++) {
        $(id).options[i] = null;
    }
    for (var i = 0; i < opt.length; i++) {
        $(id).options[i] = new Option(opt[i], opt[i], false, true);
    }
    $(id).options[0].selected = 'true';
}

/**
 * filterKrankenhausTageGeld(value)
 *
 * fills options for the field 'krankentagegeld_ab'
 *
 * @param string  value  ?
 *
 * @return void
 */

function filterKrankenhausTageGeld(value) {
    if (value == 1) {
        disableOptions('krankentagegeld_ab', 1, 6);
        $('krankentagegeld_ab').options[1].selected = 'true';
    } else if ($('krankentagegeld_ab').options.length < 8) {
        fillOptions('krankentagegeld_ab', 1, 6);
    }
}

/**
 * Decimal(sText, replace)
 *
 * transforms a string to a decimal
 *
 * @param string  form  the Tab where the field is placed
 * @param string  field the name of the field, which should be focused
 *
 * @return boolean
 */

function Decimal(sText, replace) {
    if (replace !== true) {
        replace = false;
    }
    if (typeof(sText) != 'string') {
        sText = sText.toString();
    }
    if (replace === true && sText.indexOf(',') != -1) {
        sText = sText.replace(/\./g, '');
        sText = sText.replace(/,/, '.');
    }
    sText = parseInt(sText, 10);
    if (sText == 'NaN') {
        sText = '';
    }
    return sText;
}

/**
 * IsDecimal(sText, replace)
 *
 * checks if a var holds decimal data
 *
 * @param string  form  the Tab where the field is placed
 * @param string  field the name of the field, which should be focused
 *
 * @return boolean
 */

function IsDecimal(sText, replace) {
    if (sText === '') {
        return true;
    }
    dummy = Decimal(sText, replace);
    if (dummy === '') {
        return true;
    }
    return isNaN(dummy);
}

/* Teilnahmebedingungen aus- und einblenden */

function showbox(id) {
	var obj = document.getElementById(id);
    if (obj.className == 'hilfehidden') {
		obj.className = 'hilfevisible';
        if (jQuery.browser.msie && jQuery.browser.version == '6.0') {
			jQuery('select').css('visibility', 'hidden');
			jQuery('#box').css('left', '249px');
			jQuery('#box').css('bottom', '140px');
		}
    } else {
		obj.className = 'hilfehidden';
        if (jQuery.browser.msie && jQuery.browser.version == '6.0') {
			jQuery('select').css('visibility', 'visible');
		}
	}
}

function hidebox(id) {
	var obj = document.getElementById(id);
    if (obj.className == 'hilfevisible') {
		obj.className = 'hilfehidden';
        if (jQuery.browser.msie && jQuery.browser.version == '6.0') {
			jQuery('select').css('visibility', 'visible');
		}
    } else {
		obj.className = 'hilfevisible';
	}
}

/* PKV-Tabelle auf LP */

function filterTable() {
    if (jQuery('#beruf').val()== 0 && jQuery('#geschlecht').val() == 0) {
		jQuery('#AngestM').show();
    } else {
		jQuery('#AngestM').hide();
	}
    if (jQuery('#beruf').val()== 0 && jQuery('#geschlecht').val() == 1) {
		jQuery('#AngestW').show();
    } else {
		jQuery('#AngestW').hide();
	}
    if (jQuery('#beruf').val()== 1 && jQuery('#geschlecht').val() == 0) {
		jQuery('#SelbstM').show();
    } else {
		jQuery('#SelbstM').hide();
	}
    if (jQuery('#beruf').val()== 1 && jQuery('#geschlecht').val() == 1) {
		jQuery('#SelbstW').show();
    } else {
		jQuery('#SelbstW').hide();
	}
    if (jQuery('#beruf').val()== 2 && jQuery('#geschlecht').val() == 0) {
		jQuery('#BeamteM').show();
    } else {
		jQuery('#BeamteM').hide();
	}
    if (jQuery('#beruf').val()== 2 && jQuery('#geschlecht').val() == 1) {
		jQuery('#BeamteW').show();
    } else {
		jQuery('#BeamteW').hide();
	}
    if (jQuery('#beruf').val()== 3 && jQuery('#geschlecht').val() == 0) {
		jQuery('#SonstigeM').show();
    } else {
		jQuery('#SonstigeM').hide();
	}
    if (jQuery('#beruf').val()== 3 && jQuery('#geschlecht').val() == 1) {
		jQuery('#SonstigeW').show();
    } else {
		jQuery('#SonstigeW').hide();
	}
}

/** Sitemap Functions **/

jQuery(document).ready(function() {

	/* Hide/Show Links Level3 */
	jQuery('ul.level2 li span.trigger').click(function() {
		var childrenStatus = jQuery(this).siblings('ul').css('display');
        if (childrenStatus == 'none') {
			jQuery(this).parents('li').addClass('on');
		}
		else {
			jQuery(this).parents('li').removeClass('on');
		}
	});

	/* Hide/Show Sitemap-Categories */
    jQuery('ul.sitemap_navi li a').eq(0).addClass('active').end().click(function(event) { /* this cachen */
		     var $this =  jQuery(this);
        event.preventDefault(); /* Content list verstecken */
        jQuery('ul.level1 > li').hide(); /* active Klasse hinzufuegen */
		     jQuery(this).parents('li').addClass('active');
        jQuery(this).parents('li').siblings('li').removeClass('active'); /* Verlinktes tab anzeigen */
		     var linked = $this.attr('href');
	        jQuery(linked).show();
	 });
});
