var jquery_ready_state = false;
var help_areas_active = false;
var msi6=jQuery.browser.msie && jQuery.browser.version <= 6;

function MyFoundation()
{
	// configuration
	this.cookie_based_box_state = true; // *************** must be set to false on productive!!!

	// css foundation
	var path = jQuery("link[href*='base.css']").attr('href'); // *************** must be set to static.min.css on productive!!!
	this.theme_base_path = path.replace('base.css',''); // *************** must be set to static.min.css on productive!!!
	var path_folders = new Array();
	path_folders = this.theme_base_path.split("/");
	this.theme_name = path_folders[path_folders.length-2];

	// js foundation
	var path = jQuery("script[src*='base_jq.js'][type*='javascript']").attr('src'); // *************** must be set to src*='static.min.js' on productive!!!
	path_folders = path.split("/");
	path_folders.pop();
	this.js_base_path = path_folders.join('/');


}

var FOUNDATION = new MyFoundation();

function prepare_document(jquery_reference) // for document ready jq bindings
{
    jquery_ready_state = false;
	// the first parameter a jquery-reference and is given by jquery-caller jQuery(document).ready(this_function)
	// 'this' is set to caller dom element
	//return repare_document();
	setTimeout("repare_document()", 1);
    jquery_ready_state = true;
}
function repare_document(c) // may be called with optional context parameter for ajaxed parts
{
	if ( isBodyContext(c) && prepare_document.prepared == true) return; // may only be called once without context (whole document)
	prepare_document.prepared = true;
	c = c || jQuery('html');
	prepare_global_hotkeys();
	prepare_MENUE();
	prepare_forms();
	prepare_searchfieldbutton();
	repare_boxes(c);
	repare_buttons(c);
	repare_browsers(c); //should be the last!

}
function repare_all(c) // only for usage after ajax reload
{
	if(isBodyContext(c)) { alert("repare_all(c) function used  without any jq context. abording."); return; }
	repare_document(c);
	// and the rest:
	repare_forms(c);
	repare_tables(c);
	repare_tabs(c);
	repare_shadows(c);
}


// sub-prepares

function prepare_browsers(jquery_reference) { return repare_browsers(); }
function repare_browsers(c) // may be called with optional context parameter for ajaxed parts
{
	var isBodyElement=isBodyContext(c);
	if ( isBodyElement && prepare_browsers.prepared == true) return; // may only be called once without context (whole document)
	c = c || jQuery('body');
    if(jQuery.browser.msie) {
		jQuery('body').addClass('browser_msie');
		if(msi6){jQuery('body').addClass('browser_msie6');}
		// IE fix for span-background-image icons
		jQuery('a.link_icon', c).css({'backgroundImage': 'none', 'paddingRight': '0'}).append("<img class='inline' style='padding-right: 0' src='"+FOUNDATION.theme_base_path+"arrows/arrow.right.gif'/>");
		jQuery('a.icon_link', c).css({'backgroundImage': 'none', 'paddingLeft': '0'}).prepend("<img class='inline' style='padding-left: 0' src='"+FOUNDATION.theme_base_path+"arrows/arrow.right.gif'/>");
    }
    else if(jQuery.browser.safari) {
		//safari 2.x fix
		jQuery("a.link_icon", c).after("<i></i>");
    }
	if (isBodyElement)
	prepare_browsers.prepared = true;
}
function prepare_global_hotkeys()
{
	if(prepare_global_hotkeys.prepared != true) { // executed only ones
		jQuery(document).bind('keydown',{combi:'space', disableInInput: true}, function(evt){

		  if (MENUE.open) {
		    hideSubMenue(true);
		  } else {
		    MENUE.opened = false; // deactivate auto-close
		    showSubMenue(jQuery('#MENUEBAR .path th#start').get(0));
		  }
		  evt.stopPropagation();
   		  evt.preventDefault();
    	  return false;
		});
		jQuery(document).bind('keydown',{combi:'g', disableInInput: true}, function(evt){

		  if (jQuery("#grid").css("display") == "none") {
		    jQuery("#grid").css("display", "block");
		  } else {
		    jQuery("#grid").css("display", "none");
		  }
		  evt.stopPropagation();
   		  evt.preventDefault();
    	  return false;
		});
		jQuery(document).bind('keydown',{combi:'d', disableInInput: true}, function(evt){

		  if (jQuery("#dim").css("display") == "none") {
		    jQuery("#dim").css("display", "block");
		  } else {
		    jQuery("#dim").css("display", "none");
		  }
		  evt.stopPropagation();
   		  evt.preventDefault();
    	  return false;
		});
		jQuery(document).bind('keydown',{combi:'h', disableInInput: true}, mark_help_areas);

	}
	prepare_global_hotkeys.prepared = true;
}

function prepare_MENUE()
{
    //main menue
	if(MENUE.prepared != true) { // executed nly ones
		MENUE.menuebar = jQuery('#MENUEBAR');
	    jQuery('#MENUEBAR .path th:not(#none):not(#home)').each(function() {
	    	var n = jQuery(this);
	    	var a = jQuery("a:not(.none)", n);
	    	var l = a.attr('href');
	    	a.attr('href', 'javascript:void(0);');
	    	n.click(function(e) {return(showSubMenue(this));});
	    });
	    jQuery("#overlay-help, #overlay-menue").click(function() {
		      hideSubMenue(true);
		});

	}
	MENUE.prepared = true;
}

function Menue()
{
	this.opened = false;
	this.open = false;
	this.prepared = false;
	this.prepare = prepare_MENUE;
	this.overlay_visible = false;
}

var MENUE = new Menue();

function prepare_boxes(jqr) { return repare_boxes(); } // for jq bindings
function repare_boxes(c) // may be recalled with optional context parameter
{
	var isBodyElement=isBodyContext(c);
	if ( isBodyElement && prepare_boxes.prepared == true) return; // may only be called once without context (whole document)
	c = c || jQuery('body');
	jQuery("div.box, div.obox, div.ibox", c).each(function(){
		n = jQuery(this);
		jQuery(".hd", n).each(function(){
			m = jQuery(this);
			jQuery("a.open", m).hide();
			jQuery("a.open, a.close").attr('href', 'javascript:void(0);')
			jQuery("div.controls", m).parent('div').bind('click', close_box_by_event).css('cursor', 'pointer');
		});
		if (n.attr('id') != undefined && FOUNDATION.cookie_based_box_state == true) {
		  var id = readCookie(n.attr('id'));
		  if (id == 'closed') {
		    close_box(n);
		    return;
		  }
		}
		if (n.hasClass('closed')) {
			if (FOUNDATION.cookie_based_box_state == true) {
		  		var id = readCookie(n.attr('id'));
		  	} else {
		  		var id = 'closed';
		  	}
		  if (id != 'open') {
		    close_box(n);
		    return;
		  }
		}
	});
	if (isBodyElement)
	prepare_boxes.prepared = true;
}

function prepare_buttons(jqr) { return repare_buttons(); } // for document ready jq bindings
function repare_buttons(c) // may be recalled with optional context parameter
{
	var isBodyElement=isBodyContext(c);
	
	if ( isBodyElement && prepare_buttons.prepared == true) return; // may only be called once without context (whole document)
	c = c || jQuery('body');
	
	jQuery("div.tabs a, a.button, a.button2go, a.superbutton, a.superbutton2go, a.flatbutton, a.flatbutton2go", c).mouseup(function() { jQuery(this).blur(); }).filter('.disabled').each(function(){
		n = jQuery(this);
		n.attr("href", "javascript:void(0)");

	});
	if (isBodyElement)
	prepare_buttons.prepared = true;
}

function prepare_shadows(jqr) { setTimeout("repare_shadows()", 1) ; } // for document ready jq bindings
function repare_shadows(c) // may be recalled with optional context parameter
{
	var isBodyElement=isBodyContext(c);
	if ( isBodyElement && prepare_shadows.prepared == true) return; // may only be called once without context (whole document)
	c = c || jQuery('body');
    jQuery(".dropshadow", c).wrap("<table class='shadowed'><tr><td><div class='sw0'><div class='sw1'><div class='sw2'><div class='sw3'>" + "</div></div></div></div></td></tr></table>");
	if (isBodyElement)
    prepare_shadows.prepared = true;
}

function prepare_searchfieldbutton() // executed only ones
{
	if(prepare_searchfieldbutton.prepared != true) {
		jQuery(document).bind('keydown',{combi:'s', disableInInput: true}, function(evt){
			jQuery("form.searchfieldbutton input.text").focus();
			 evt.stopPropagation();
   		 	evt.preventDefault();
    		return false;
		});

	}
	prepare_searchfieldbutton.prepared = true;
}

function isBodyContext(c){

	if (c == undefined) return true;
	return false;
}
function prepare_forms (jqr) { setTimeout("repare_forms()", 1); } // for document ready jq bindings
function repare_forms (c) // may be recalled with optional context parameter
{
	var isBodyElement=isBodyContext(c);
	if ( isBodyElement && prepare_forms.prepared == true) return; // may only be called once without context (whole document)
	c = c || jQuery('body');

	// Im IE funktioniert der ENTER-Key nicht wenn eine Form keinen Input type sumbit hat
	 if(jQuery.browser.msie) {
		 if (!msi6){
			jQuery("form input.submit", c).keypress(function(e) { if(e.which == 13) {
				var form = jQuery(this).parents("form").eq(0);
				jQuery(":submit", form).click();
				return false;
			}});
			jQuery("form.searchfieldbutton input", c).keypress(function(e) { if(e.which == 13) {
				var form = jQuery(this).parents("form").eq(0);
				jQuery(":submit", form).click();
				return false;
			}}); 
		 }

		var hoverIntent_t;

		var expandL   = function(event){
		   var select=jQuery(this);
		   hoverIntent_t = setTimeout( function(){expandSelect(select,true,event)}, 50 );

		}
		var expandR   = function(event){
		   var select=jQuery(this);
		   hoverIntent_t = setTimeout( function(){expandSelect(select,false,event)} , 50 );
			
		}
		var contract = function(){
			hoverIntent_t = clearTimeout(hoverIntent_t);
			var jqueryElement=jQuery(this);
			var isOpen=jqueryElement.data( "isOpen");
			
			if ( !isOpen==true) {

				if (jqueryElement.hasClass('expand') && jqueryElement.parent().hasClass("select_container_fade")){
					
					// THIS ist die Select box
					jqueryElement.removeClass("expand");
					var maxWidth=jQuery.data(jqueryElement.get(0), "max-width");
					var width=jQuery.data(jqueryElement.get(0), "width");
					jqueryElement.css('max-width',maxWidth);
					jqueryElement.width(width);
					var container=jqueryElement.parent().parent();
					// Select bevor id='select-container'
					//container.fadeOut();
					jqueryElement.insertBefore(container);
					container.remove();

				}
			}
		}
		var focus    = function(){
			var select=jQuery(this);
       		select.data("isOpen",true);
	 	}
		var blur     = function(){
			var select=jQuery(this);
        	select.data( "isOpen",false);
			contract.call(this);
		}
	
		jQuery("form select.extendLeft", c).hover(expandL, contract).focus(focus).click(focus).blur(blur).change(blur);
		jQuery("form select.extendRight", c).hover(expandR, contract).focus(focus).click(focus).blur(blur).change(blur);
	}
	if (msi6){
		jQuery("form a.submit", c).click(submit_form);
		jQuery("form input.submit", c).keypress(function(e) { if(e.which == 13) {submit_form(this); return false;}} );
		jQuery("form input[type=text]").addClass('text');
		jQuery("form input[type=password]").addClass('password');
	}
	else {
		jQuery("form a.submit", c).click(function(eventObject){
			var form = jQuery(this).parents("form").eq(0);
			if (jQuery(this).attr('name') != undefined)
			{

				jQuery("#submit_name",form).remove();
				form.append("<input id=\"submit_name\" type=\"hidden\" name=\"submit_name\" value=\"" + jQuery(this).attr('name') + "\"> ");
			}
			jQuery(":submit", form).click();

			//if(	eventObject.target != undefined) eventObject.stopPropagation();
			return true;

		});
		jQuery("form",c).each(function(){
			var tmpForm=jQuery(this);
				if (jQuery(":submit",jQuery(this)).size()==0) {
					tmpForm.append("<input style='position:absolute;left:-12500px' type='submit' value='submitbutton' name='submitbutton'/>");
				}
			}
		)
	}
	jQuery("form.submit :submit", c).click(submit_form);
	jQuery("form a.reset", c).click(reset_form);
	jQuery("form a.submit, form a.sajax,form a.reset", c).attr('href', 'javascript:void(0);');
	jQuery("form textarea, form input, form select", c).each(function()
		{	
			_prepare_form_input_inits(this);
			if(this.disabled) jQuery(this).addClass('disabled');
			if((this.tagName.toLowerCase() != 'select' && jQuery(this).attr('type').toLowerCase() != 'checkbox' && jQuery(this).attr('type').toLowerCase() != 'radio' ) || !jQuery.browser.msie ) { // because of IE: select box doesnt work with bounded event handler
				jQuery(this).focus( function() { form_focus_element(jQuery(this));});
			}
			jQuery(this).blur( function() { form_blur_element(jQuery(this)); });
			if(jQuery.browser.msie && this.tagName.toLowerCase() == 'select') {
				if(jQuery(this).attr('style') != undefined) {
					orig_style = jQuery(this).attr('style');
				} else {
					orig_style = '';
				}
				var w = jQuery('<div style="float:left;display:inline;'+orig_style+'"></div>');
				w.attr("class", jQuery(this).attr("class"));
				w.addClass('selectbox-wrapper');
				jQuery(this).attr("style", orig_style+";margin-left:0; border:0;").wrap(w);
			}
		});
	//repare_checkboxes(c);
	if (isBodyElement)
		prepare_forms.prepared = true;
}
/**
 * Fix für IE
 * @param jqr JQueryreference der SelectBox
 * @param left wenn true wird die Selectbox links ausgweitet ansonsten rechts
 */
function expandSelect(jqr,left,event){
	var tmpSelect=jqr;
   
	if (!tmpSelect.hasClass('expand')){
		var position = tmpSelect.position();
		x= position.left;
		y=position.top;
		var oldWidth=tmpSelect.outerWidth();
		var maxWidth=tmpSelect.css('max-width');
		jQuery.data(tmpSelect.get(0), "max-width",maxWidth);
		jQuery.data(tmpSelect.get(0), "width",oldWidth);
		tmpSelect.css('width','auto');
		tmpSelect.css('max-width','600px');
		var newWidth=tmpSelect.outerWidth();
		tmpSelect.css('max-width',maxWidth);
		if (oldWidth>=newWidth) {
			tmpSelect.width(oldWidth);
		}
		else {
			tmpSelect.addClass("expand");

			diff=0;
			if (left)
				diff=newWidth-oldWidth;
			width = tmpSelect.outerWidth();
			height = tmpSelect.outerHeight();

			tmpSelect.css('max-width',newWidth);
			var wrapperContainer="<div id=\"select_container\" style='width:"+ oldWidth +"px;height:"+height+"px;margin:0px; border:0;'><div class=\"select_container_fade\" style='position:absolute;top:"+y+"px;left:"+(x-diff)+"px;width:"+ width +"padding:0;margin:0;'></div></div>";

			tmpSelect.wrap(wrapperContainer);
		}
	}
}
function _prepare_form_input_inits(t) // internal, only called by (p)repare_forms()
{
	var n = jQuery(t);
	if(t.tagName.toLowerCase() == 'input' && t.value.indexOf(' ') == 0 ) {
	  t.setAttribute('init_value', t.value.substring(1));
	  t.setAttribute('value', t.value.substring(0));
	}
	if(t.tagName.toLowerCase() == 'textarea' && (n.text().indexOf(' ') == 0 || n.text().indexOf('_') == 0)) {
	  var s_string = jQuery(t).text().substring(1);
	  t.setAttribute('init_value', s_string);
	  n.text( s_string );
	}
}
function prepare_checkboxes(jqr) { setTimeout("repare_checkboxes()", 1); } // for document ready jq bindings
function repare_checkboxes(c) // may be recalled with optional context parameter
{
	var isBodyElement=isBodyContext(c);
	if ( isBodyElement && prepare_checkboxes.prepared == true) return; // may only be called once without context (whole document)
	c = c || jQuery('body');
	var p = FOUNDATION.theme_base_path+"empty.png";
	var options = {empty: p};
	jQuery('input:checkbox, input:radio', c).checkbox(options);
	jQuery('a.code', c).each(function() {
	  jQuery(this).click(function(){
	    eval(jQuery(this).text());
	    return false;
	  })
	});
	//jQuery('input:checkbox').shiftClick();
	if (isBodyElement)
	prepare_checkboxes.prepared = true;
}


function prepare_accordions(jqr) { setTimeout("repare_accordions()", 1); } // for document ready jq bindings
function repare_accordions(c) // may be recalled with optional context parameter
{
	var isBodyElement=isBodyContext(c);
	if ( isBodyElement && prepare_accordions.prepared == true) return; // may only be called once without context (whole document)
	c = c || jQuery('body');
	jQuery('#acc1', c).accordion({ active: '.selected', selectedClass: 'active', header: "dt", autoheight: true });
	jQuery('#acc2', c).accordion({ active: '.selected', selectedClass: 'active', header: "dt", autoheight: true });
	jQuery('#acc3', c).accordion({ active: '.selected', selectedClass: 'active', header: "dt", autoheight: true });
	if (isBodyElement)
		prepare_accordions.prepared = true;
}

function prepare_tables(jqr) { setTimeout("repare_tables()", 1); } // for document ready jq bindings
function repare_tables(c) // may be recalled with optional context parameter
{
	var isBodyElement=isBodyContext(c);
	if ( isBodyElement && prepare_tables.prepared == true) return; // may only be called once without context (whole document)
	c = c || jQuery('body');
    jQuery("table.sep tr", c).filter("td:first-child", c).end().filter("td:last-child").addClass("first-child"); // IE hack
	if (isBodyElement)
    prepare_tables.prepared = true;
}

function prepare_tabs(jqr) { setTimeout("repare_tabs()", 1); } // for document ready jq bindings
function repare_tabs(c) // may be recalled with optional context parameter
{
	var isBodyElement=isBodyContext(c);
	if ( isBodyElement && prepare_tabs.prepared == true) return; // may only be called once without context (whole document)
	c = c || jQuery('body');
    jQuery('div.tabs > ul', c).tabs({ fxFade: false,click:tabClicked }).show();
    //jQuery('.rotatingtabs > ul', c).tabs({ fxFade: true }).tabsRotate(5000);
	if (isBodyElement)
    prepare_tabs.prepared = true;
}
function tabClicked(position,show,hide){
	
	
	var divElement=$(show);
	
	var tabObject = divElement.parent();
	var server_url = tabObject.attr('rel');
	if (server_url!=undefined)
		jQuery.post(server_url, {selectedTabId: divElement.attr('id'),tabIdentifier:tabObject.attr('id')});
}

/***********/
/* library */
/***********/

function showSubMenue(n)
{
	var n = jQuery(n);
	if(!n.attr('id')) return;
	show_overlay(jQuery('#overlay-menue'));
	var sub_menue = jQuery('#MENUE .menue.'+n.attr('id'));
	var x = n.offset()['left'];
	var y = jQuery('#MENUEBAR').offset()['top'];
	sub_menue.css({left: x+"px", zIndex: 100002 });
	jQuery('#MENUE .menue').each( function() { // close all other sub menues
	  if( ! jQuery(this).hasClass(n.attr('id')) ) {
	    jQuery(this).css('zIndex', 100001).hide();
	    jQuery(this).removeClass("open");
	  }
	});
	if (sub_menue.hasClass("open")) { 
		hideSubMenue();
		
	} else {
		sub_menue.show();
		sub_menue.addClass("open");
		MENUE.open = true;
	}
	
}
function IEfilterhack(t) { t.style.removeAttribute('filter'); }

function hideSubMenue(forced)
{
	if (forced === undefined) { forced = false }
	if(MENUE.open || forced) {
		jQuery('#MENUE .menue').removeClass("open").hide();
		hide_overlay(jQuery('#overlay-menue'));
		MENUE.open = false;
	}
}

//boxes

function close_box_by_event(event)
{
	//'this' is given
	if(event != undefined) event.stopPropagation();
	var bn = jQuery(this).parent().parent();
	close_box(jQuery(this).parent().parent(), jQuery(this));
	var _id = bn.attr('id');
	if(FOUNDATION.cookie_based_box_state == false) {
		var _server_url = jQuery('a.close', bn).attr('rel');
		close_to_server(_id, _server_url);
	}
}
function close_box(bn, tn)
{
	if (bn.attr('id') != undefined && FOUNDATION.cookie_based_box_state == true) createCookie(bn.attr('id'), 'closed', 7);
	bn.children(".bd, .bdb, .bda, .sp").children(".c").slideUp("fast");
	bn.children(".hd").children(".c").children(".controls").children("a.close").hide();
	bn.children(".hd").children(".c").children(".controls").children("a.open").show();
	bn.addClass("closed");
	if(tn == undefined) tn = jQuery(".hd .c", bn).eq(0);
	tn.unbind('click',close_box_by_event).bind('click', open_box_by_event);
}
function close_to_server(id, server_url)
{
	//alert("box id="+id+" url="+server_url);
	//obacht: id and server_url may be 'undefined!
	if(id != undefined && server_url != undefined)
	{
		jQuery.post(server_url, {id: id});
	}
}

function open_box_by_event(event)
{
	//'this' is given
	if(event != undefined) event.stopPropagation();
	var bn = jQuery(this).parent().parent();
	open_box( bn, jQuery(this));
	var _id = bn.attr('id');
	if(FOUNDATION.cookie_based_box_state == false) {
		var _server_url = jQuery('a.open', bn).attr('rel');
		open_to_server(_id, _server_url);
	}
}

function open_box(bn, tn)
{
	if (bn.attr('id') != undefined && FOUNDATION.cookie_based_box_state == true) createCookie(bn.attr('id'), 'open', 7);
	bn.children(".bd, .bdb, .bda, .sp").children(".c").slideDown("fast");
	bn.children(".hd").children(".c").children(".controls").children("a.open").hide();
	bn.children(".hd").children(".c").children(".controls").children("a.close").show();
	bn.removeClass("closed");
	if(tn == undefined) tn = jQuery(".hd .c", bn).eq(0);
	tn.unbind('click',open_box_by_event).bind('click', close_box_by_event);
}
function open_to_server(id, server_url)
{
	//alert("box id="+id+" url="+server_url);
	//obacht: id and server_url may be 'undefined!
	if(id != undefined && server_url != undefined)
	{
		jQuery.post(server_url, {id: id});
	}
}

//forms
function form_focus_element(n)
{

  n.addClass('focus');
  n.removeClass('inputalert');
  var tn = n.get(0).tagName;
  if ((tn.toLowerCase() == "textarea" || tn.toLowerCase() == "input") && n.attr('type') != 'checkbox' && n.attr('type') != 'radio') {
	var pos = caretPosition(n);
	if (n.attr('type') != 'select')
		//n.val(n.val().trim());
    if (n.attr('init_value') != undefined) if(n.val().toLowerCase().trim() == n.attr('init_value').toLowerCase()) {
      	n.val("");
      	pos = 0;
    }
    var maxlength = n.attr('maxlength');
    if (maxlength == undefined) maxlength = n.get(0).getAttribute('maxlength'); //due to jquery doesnt want to return maxlength if not given (seems 2be a bug)

    if (maxlength != undefined) {
		maxlength = parseInt(maxlength);
		if (maxlength > 0 && maxlength < 10000) {
			if(n.hasClass('showremainingchars')) {
				x = n.offset()['left'];
				y = n.offset()['top'];
				width = n.outerWidth();
				height = n.outerHeight();
				n.after("<div id='input_char_counter' class='focus' style='position: absolute; top: "+ y +"px; left: "+(x+width+10)+"px; width: 40px; height: 20px; padding: 0; margin: 0;'>"+ maxlength +"</div>");
				
			}
			n.unbind('keyup').keyup(form_field_control_by_event);
			form_field_control(n.get(0));
		}
    }
    //caretPosition(n, pos);
  }
  return true;
}
function searchfieldbutton_focus(n)
{
    if (n.attr('init_value') != undefined) if(n.val().toLowerCase() == n.attr('init_value').toLowerCase()) {
      n.val("");
    }
}
function form_blur_element(n)
{
	jQuery('div#input_char_counter').remove();
	jQuery('form .focus').removeClass('focus');
	n.removeClass("inputalert");
	n.parent().removeClass("inputalert");
	form_validate_input_element(n);
}
function form_validate_input_element(n) //patched by marcus E.
{
	var value = n.val();
	if (n[0].tagName == "INPUT" || n[0].tagName == "TEXTAREA") {
	    value = value.trim();
	    n.val(value);
	    if (value == "") {
            if (n.hasClass('notempty')) {
	            if (n.attr('init_value') != undefined) {n.val(" "+n.attr('init_value'));}
	            n.addClass('inputalert');
	            return false;
            } else {
	            return true;
            }
	    } else { // value given
            if(value == n.attr('init_value')) {
				if (n.hasClass('notempty')) {
			        n.val(" "+n.attr('init_value'));
			        n.addClass('inputalert');
			        return false;
				} else {
			        n.val("");
			        return true;
				}
            } else {
                    return true;
            }
	    }
	} else if (n[0].tagName == "SELECT") {
	    if (value == '') {
	    	if(jQuery.browser.msie) {
	            n.parent().addClass('inputalert');
	            return false;
	    	} else {
	            n.addClass('inputalert');
	            return false;
	    	}
	    }
		 if (n.hasClass('notempty')) {
			if (value == 'default.option.null') {
		    	if(jQuery.browser.msie) {
		            n.parent().addClass('inputalert');
		            n.addClass('inputalert');
		            return false;
		    	} else {
		            n.addClass('inputalert');
		            return false;
		    	}
			}
		 }
	}
	return true;
}
function searchfieldbutton_blur(n)
{
	if(n.val() == "") n.val(n.attr('init_value'));
}
function form_field_control_by_event(event){  return form_field_control(event.target); }

function form_field_control(node)
{
	var maxlength = jQuery(node).attr('maxlength');
	if (maxlength == undefined) maxlength = jQuery(node).get(0).getAttribute('maxlength'); //due to jquery doesnt want to return maxlength (seems 2be a bug)
	var str_length = parseInt(node.value.length);
	var max_length = parseInt(maxlength);
	var diff = max_length - str_length;
	var counter = jQuery('div#input_char_counter')
	if(diff < 0) {
		node.value = node.value.substring(0, max_length);
		counter.removeClass('focus');
		counter.addClass('inputalert');
		diff = 0;

	} else if(diff > 0 && counter.hasClass('inputalert')) {
		counter.removeClass('inputalert');
		counter.addClass('focus');
	}
	counter.text("+ "+diff);
}
function reset_form(dom_this)
{
	var n = (dom_this == undefined || dom_this instanceof jQuery.Event) ? jQuery(this) : jQuery(dom_this);
	var form = n.parents("form").eq(0);
	jQuery(".inputalert", form).removeClass("inputalert");
	jQuery(".focus", form).removeClass("focus");
	jQuery('.formalert', form).slideUp('slow');
	form.get(0).reset();
	jQuery("textarea, input, select", form).each(function() { _prepare_form_input_inits(this); });
}
function submit_form(dom_this)
{ // takes event para and sets 'this'

	var n = (dom_this == undefined || dom_this instanceof jQuery.Event) ? jQuery(this) : jQuery(dom_this);
	
	var form = n.parents("form").eq(0);
	var valid = true;
	
	jQuery(".focus", form).removeClass("focus");
	jQuery("input, textarea, select", form).each( function() {
		v = form_validate_input_element(jQuery(this));
		if (v == false) valid = false;
	});

	if (msi6 && n.attr('name') != undefined)
	{
		jQuery("#submit_name",form).remove();
		form.append("<input id=\"submit_name\" type=\"hidden\" name=\"submit_name\" value=\"" + n.attr('name') + "\"> ");
	}
	
	if (form.attr('name') != undefined)
	{
		jQuery("#form_name",form).remove();
		form.append("<input id=\"form_name\" type=\"hidden\" name=\"form_name\" value=\"" + form.attr('name') + "\"> ");
	}

	if(valid) {

		try {

			form.get(0).submit();
			if (dom_this instanceof jQuery.Event)
				dom_this.preventDefault();

		}
		finally {
			if (msi6)
				return false;
			else
			return true;
		}		

	} else {
		jQuery('.formalert', form).slideDown('slow');
		return false;
	}
}
function caretPosition(n, pos) {
	target = n.get(0);
    if (arguments.length == 1) { //get
      if (target.selectionStart) { //DOM
        var pos = target.selectionStart;
        return pos > 0 ? pos : 0;
      }
      else if (target.createTextRange) { //IE
		target.focus();
		var range = document.selection.createRange();
		if (range == null)
			return '0';
		var re = target.createTextRange();
		var rc = re.duplicate();
		re.moveToBookmark(range.getBookmark());
		rc.setEndPoint('EndToStart', re);
		return rc.text.length;
      }
      else return 0;
    } //set
    if (target.setSelectionRange) {//DOM
      target.setSelectionRange(pos, pos);
    } else if (target.createTextRange) { //IE
      var range = target.createTextRange();
      range.collapse(true);
      range.moveEnd('character', pos);
      range.moveStart('character', pos);
      range.select();
    }
  }
/* COOKIES */

function createCookie(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=/";
}

function readCookie(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;
}

function eraseCookie(name) {
  createCookie(name,"",-1);
}
var help_areas_active = false;

function mark_help_areas() {
  if (help_areas_active) {
    help_areas_active = false;
    jQuery(".helplinkarea").remove();
    hide_overlay(jQuery("#overlay-help"));
    jQuery("div#cluetip").css({display: 'none'});
  } else {
    show_overlay(jQuery("#overlay-help"));
    help_areas_active = true;
    jQuery(".help").each(function(){
      n = jQuery(this);
      x = n.offset()['left'];
      y = n.offset()['top'];
      width = n.outerWidth();
      height = n.outerHeight();
      help = (n.attr('help') == undefined) ? "null" :  n.attr('help');

      ip = n;
      n.parents("div").each(function(){
        if(jQuery(this).css("position") == "absolute") { // why not ip at all?
          ip = MENUE.menuebar;
          return;
        }
      });

      c = n.clone();
      c.css({margin: 0, visibility: 'visible'});
      h = jQuery("<a class='helplinkarea' style='top: "+(y-2)+"px; left: "+(x-2)+"px; width: "+width+"px; height: "+height+"px; cursor:help;' href='#"+help+"' rel='#"+help+"'>"+"</a>");
      help_link_area = h.append(c);

      ip.after(help_link_area);
      help_link_area.fadeTo(1000, 1);
      help_link_area.cluetip({
        local: true,
        showTitle: false,
        cluezIndex: 21000,
        positionBy: 'mouse',
        arrows: true,
        activation: 'click',
        width: 'auto',
        height: 'auto',
        waitImage: false,
        sticky: true,
        closePosition: 'bottom',
        closeText: '<a href="javascript: void(0);" class="button"><span><img src="'+FOUNDATION.theme_base_path+'/buttons/button.standard.icon.delete.gif"/></span></a><div class="defloat"></div>'
      });

    });
  }
}
function show_overlay(el) {
    dw = jQuery(document).width()-40;
    dh = jQuery(document).height()-40;
    IE6_hide_selectboxes(); // IE workaround
    el.css({width: dw, height: dh, display: 'block'}).show();
}
function hide_overlay(el) {
    el.hide().css({display: 'none'});
    IE6_show_selectboxes();
}

function IE6_hide_selectboxes() {
	if(msi6) {
		jQuery("#main select").css({visibility: 'hidden'}); // IE workaround
	}
	return true;
}
function IE6_show_selectboxes() {
	if(msi6) {
		jQuery("select").css({visibility: 'visible'});
	}
	return true;
}

String.prototype.trim=function(){
    return this.replace(/^\s*|\s*$/g,'');
}

function introspect(o) {
	var s = "";
	for(i in o) {
		s += ">>> " + i + " = " + o[i].toString() + "\n";
	}
	return s;
}
