/**
 * @uses prototype, scriptaculous?effects,builder, namespace
 **/
Event.observe(window, 'load', function()
{
  var theMenu   = $$('.menu_left')[0];
  var theHandle = $('menu');
  
  if (!theMenu || !theHandle) return;
  var enabled   = document.cookie.indexOf('menu=1') > -1;
  
  if (enabled)  theMenu.setStyle({position: 'absolute', background: 'white', display: 'none'});
  
  var fun = function(event, justClose, justOpen)
  {
		if (!enabled) return;
		
		if (justOpen || !justClose && theMenu.style.display == 'none')
		{
		
		  theMenu.show();
		  
		} else {
		
			var elt = $(Event.element(event)); 
			
			if (elt && (elt.descendantOf(theMenu) || elt == theMenu))
			{
				//
			} else {
			  theMenu.hide();
		  };
		  
		};
		
		Event.stop(event);
	};
	
  //Event.observe(theHandle, "mouseover", function(ev ) { fun(ev, false, true);});
  Event.observe(document.body, "mouseover", function(ev ){ fun(ev, true);});
  
  Event.observe(theHandle, "click", function()
  {
    if (enabled = !enabled)
    {
      theHandle.src 			 = webroot + 'img/misc/show_reverse.gif';
      theHandle.style.left = '50px';
      theMenu.setStyle({position: 'absolute', background: 'white', display: 'none'});
    } else {
      theMenu.setStyle({position: '', background: '', display: ''});
      theHandle.src 			 = webroot + 'img/misc/show.gif';
      theHandle.style.left = '39px';
    };
    
    document.cookie = "menu="+(enabled?1:0)+"; expires=" + (new Date((new Date()).getTime() + 7 * 24 * 60 * 60 * 1000)).toGMTString() + "; path=/; ";
  });
});


Event.observe(document, 'dom:loaded', function() {
	startup();
});

function startup() {
	/**
	 * catch the error, there might not always be an image present
	 **/
	try
	{
	  var webroot = window.webroot || webroot || $$("img")[0].src.replace(/\/img\/.+$/, "") + "/";
	} catch(e) { ; };	

	
	/**
	 * add class to evade conditional comments
	 **/
	if (Prototype.Browser.IE)
  	{
    	document.body.className += ' IE';
    	window.IE 				 = {};

    	try
    	{
    	  window.IE.version        = navigator.appVersion.match(/MSIE\ *(\d)/)[1];
    	  document.body.className += ' IE'+window.IE.version ;
    	} catch(e) { ; };
    	 	
  	};
  	
	/* submit-button */
	$$('.submit-line').each( function (elements) {
		elements.getElementsBySelector('input').each(function (element) { 
			element.observe('mouseover', function(event) {
			    var isDisabled = element.disabled?'_disabled':''; 
				var classes    = element.up().up().className;
				
				if (classes.match('button-mega-big')) {
					element.style.background = 'url(' + webroot + 'img/button250x50'+isDisabled+'.png) no-repeat scroll 0pt 0px';
				} else if (classes.match('button-extra-big')) {
					element.style.background = 'url(' + webroot + 'img/button180x50'+isDisabled+'.png) no-repeat scroll 0pt 0px';
				} else if (classes.match('button-big')) {
					element.style.background = 'url(' + webroot + 'img/button130x50'+isDisabled+'.png) no-repeat scroll 0pt 0px';
				} else {
					element.style.background = 'url(' + webroot + 'img/button100x50'+isDisabled+'.png) no-repeat scroll 0pt 0px';
				}
			}.bind(element), true);
		})
	});
	$$('.submit-line').each( function (elements) {
		elements.getElementsBySelector('input').each(function (element) { 
			element.observe('mouseout', function(event) {
				var classes = element.up().up().className;
				
				if (classes.match('button-mega-big')) {
					element.style.background = 'url(' + webroot + 'img/button250x50.png) no-repeat scroll 0pt -25px';
				} else if (classes.match('button-extra-big')) {
					element.style.background = 'url(' + webroot + 'img/button180x50.png) no-repeat scroll 0pt -25px';
				} else if (classes.match('button-big')) {
					element.style.background = 'url(' + webroot + 'img/button130x50.png) no-repeat scroll 0pt -25px';
				} else {
					element.style.background = 'url(' + webroot + 'img/button100x50.png) no-repeat scroll 0pt -25px';
				}
			}.bind(element), true);
		})
	});
	
	/* toggle hider */
	$$('.toggle-hide').each(function(element) {
		element.hide();
	});
}

function toggleByGroup(group) {
	$$('.toggle-group-' + group).each(function(element) {
		element.toggle();
	});
}

function toggleInputFieldOnSelectChange(selectElement, valueToMatch, elementIdToToggle) {
	if (selectElement.value == valueToMatch) {
		$(elementIdToToggle).show();
	} else {
		$(elementIdToToggle).hide();
	}
}

function toggleInputFieldOnNonSelectChange(selectElement, valueToMatch, elementIdToToggle) {
	if (selectElement.value != valueToMatch) {
		$(elementIdToToggle).show();
	} else {
		$(elementIdToToggle).hide();
	}
}

function changeTextFromElementOnSelectChange(selectElement, valueToMatch, elementToChange, newText) {
	if (selectElement.value == valueToMatch) {
		$(elementToChange).update(newText);
	}
}

function selectAllCheckboxesByGroup(checkboxGroup) {
	$$('.checkbox-group-' + checkboxGroup).each(function(element) {
		element.checked = true;
	});
}

function unselectAllCheckboxesByGroup(checkboxGroup) {
	$$('.checkbox-group-' + checkboxGroup).each(function(element) {
		element.checked = false;
	});
}

function inverseAllCheckboxesByGroup(checkboxGroup) {
	$$('.checkbox-group-' + checkboxGroup).each(function(element) {
		if (element.checked) {
			element.checked = false;
		} else {
			element.checked = true;
		}
	});
}


var cleanNumberField = function(keyCode, node, allowEnter)
{
  if (keyCode == 13 && !allowEnter) return false;
  var theChar = (keyCode >= 96 && keyCode <= 105)? String.fromCharCode(keyCode - 48): String.fromCharCode(keyCode);
  
  if (!keyCode || keyCode == 110 || keyCode == Event.KEY_LEFT || keyCode == Event.KEY_UP || keyCode == Event.KEY_RIGHT || keyCode == Event.KEY_DOWN || keyCode == Event.KEY_DELETE || keyCode == Event.KEY_HOME || keyCode == Event.KEY_END || keyCode == Event.KEY_PAGEUP || keyCode == Event.KEY_PAGEDOWN || keyCode==Event.KEY_BACKSPACE || (keyCode==Event.KEY_TAB) || (keyCode==Event.KEY_RETURN) || (keyCode==Event.KEY_ESC) ||  theChar.match(/^\d+$/) || keyCode < 32 || keyCode > 126) return true;
  return false;
};

var toNumber = function(val)
{
  val = parseFloat(String(val).replace(/,/, '.').replace(/[^\d\.]/, ''), 10);
  if (!val || typeof(val) == 'NaN') val = 0;
  return val;
};


var showTab = function(tab)
{
  $$('.jsTab').map(function(el)
  {
    if (el == tab) return;
    
    $(el).up().className = $(el).up().className.replace(/\btabItemActive\b/g, "");
    $('jsTab'+el.href.replace(/^.+#/, "")).hide();
  });
  
  $(tab).up().className = $(tab).up().className.replace(/\ ?tabItemActive/g, "") + ' tabItemActive';
  $('jsTab'+tab.href.replace(/^.+#/, "")).show();
  
  //return false;
};

Event.observe(window, 'load', function()
{
  var h = document.location.hash;
  if (h && (h = h.replace(/#/, "")))
  {
    try
    {
      $$('.jsTab').map(function(el)
      {
        if (el.href.replace(/^[^#]+#/, "") == h) 
        {
          showTab(el);
          throw($break);
        };
      });
    } catch(e) { alert(e); };
  };
});

var cleanMoneyField = function(keyCode, node)
{
  var theChar = String.fromCharCode(keyCode);
  if (keyCode >= 96 && keyCode <= 105)
  {
    theChar = String.fromCharCode(keyCode - 48);
  };
  

  if (!keyCode || keyCode == 110 || keyCode == Event.KEY_LEFT || keyCode == Event.KEY_UP || keyCode == Event.KEY_RIGHT || keyCode == Event.KEY_DOWN || keyCode == Event.KEY_DELETE || keyCode == Event.KEY_HOME || keyCode == Event.KEY_END || keyCode == Event.KEY_PAGEUP || keyCode == Event.KEY_PAGEDOWN || keyCode==Event.KEY_BACKSPACE || (keyCode==Event.KEY_TAB) || (keyCode==Event.KEY_RETURN) || (keyCode==Event.KEY_ESC) ||  theChar.match(/^\d+$/) || keyCode < 32 || keyCode > 126) return true;
  return false;
};


function hideElement(elementId) {
	document.getElementById(elementId).style.display = 'none';
}

function showElement(elementId) {
	document.getElementById(elementId).style.display = 'block';
}

function toggleElement(elementId) {
	if(document.getElementById(elementId).style.display == 'none') {
		document.getElementById(elementId).style.display = 'block';
	} else {
		document.getElementById(elementId).style.display = 'none';
	}
}


var InPagePopup = function()
{
	var inpagePopupWrapper = null;
	
	/**
     * @param URL url escaped url, will be used in iframe src attribute
     **/
 	this.create = function(url)
	{
	  if (!inpagePopupWrapper) this.createInPagePopupWrapper();
	  
	  /**
	 * catch the error, there might not always be an image present
	 **/
		try
		{
		  var webroot = window.webroot || webroot || $$("img")[0].src.replace(/\/img\/.+$/, "") + "/";
		} catch(e) { ; };
	  
	  var _iframe = '';
	  _iframe += '<div class="contentWrapper">';
	  _iframe += '<div class="inpagePopupHeaderBar">';
	  _iframe += '<a style="position: absolute; right: 5px; top: 5px;" href="javascript:;" onclick="return inpagePopup.destroy();">';
	  _iframe += '<img src="' + webroot + 'img/icons/dialog-cancel.png" alt="Schlie&szlig;en" title="Schlie&szlig;en" />';
	  //_iframe += 'schliessen';
	  _iframe += '</a>';
	  _iframe += '</div>';
	  _iframe += '<iframe src="'+url+'" ></iframe>';
	  _iframe += '</div>';
	  
	  $(inpagePopupWrapper).update( _iframe );
	  
	  this.fixUI();
	  
	  $(inpagePopupWrapper).show();
	  return false;
	};
	
	this.fixUI = function()
	{
	  //$$('select').each(function(el) { $(el).hide(); } );
	  document.body.style.overflow = 'hidden';
	};
	
	this.unfixUI = function()
	{
	  //$$('select').each(function(el) { $(el).show(); } );
	  document.body.style.overflow = '';
	};
	
	this.createInPagePopupWrapper = function()
	{
	  inpagePopupWrapper = document.createElement('div');
	  inpagePopupWrapper.className = 'inPagePopup';
	  document.body.appendChild(inpagePopupWrapper);
	  inpagePopupWrapper = $(inpagePopupWrapper);
	};
	
	this.destroy = function()
	{
	  if (!inpagePopupWrapper) return;
	  
	  $(inpagePopupWrapper).hide();
	  $(inpagePopupWrapper).update('');
	  this.unfixUI();
	  
	  return false;
	};
};


var inpagePopup = new InPagePopup();
top.destroyPopup = function()
{
  inpagePopup.destroy();
};