/**
* Javascript
* standard-funktionen
*
* @author heiko pfefferkorn
* @copyright 2007 i-fabrik gmbh
* @version $Id: core.js,v 1.3 2007/09/10 14:03:55 heiko Exp $
*
*/

	var Core = {
		start: function(){
			DBG.log('Core.start');
			DBG.time('Core.time');

			Core.tTip();

			if ($$('pre')) WIDGETS.setPreTagPosition();

			$$('input, select, textarea').each(function(elm){
				elm.addEvent('focus', function(){
					this.addClass('focus');
				}).addEvent('blur', function(){
					this.removeClass('focus');
				});
			});

			DBG.timeEnd('Core.time');
		},

		tTip: function() {
			if ($$('.tooltip')) {
				DBG.log('Core.tTip > (.tooltip)');

				var ttip = new Tips($$('.tooltip'), {
					onShow: function(toolTip) {
						toolTip.setOpacity(0.9);
					},
					maxTitleChars: 50,
					offsets      : {x:12,y:14},
					className    : 'standard'
				});
			}

			if ($$('.tooltip_special')) {
				DBG.log('Core.tTip > (.tooltip_special)');

				var ttip_special = new Tips($$('.tooltip_special'), {
					maxTitleChars: 50,
					offsets      : {x:12,y:14},
					className    : 'special'
				});
			}
		}
	};


	var WIDGETS = {
		openWindow: function(url,wn,ft,ww,wh,wc){
			if(window.screen)
				if(wc){
					var wl = (screen.width-ww)/2;
					var wt = (screen.height-wh)/2;
					ft+=(ft!='')?',':'';
					ft+=',left='+wl+',top='+wt;
				}
			window.open(url,wn,ft+((ft!='')?',':'')+'width='+ww+',height='+wh);
		},

		validateEmail: function(s){
			var rx1  = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
			var rx2  = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
			var flag = !rx1.test(s) && rx2.test(s);

			return flag;
		},

		setMouseOverClass: function(o,c){
			if(!o) return;

			o.each(function(elm){
				o.addEvent('mouseover', function(){ this.addClass(c); });
				o.addEvent('mouseout', function(){ this.removeClass(c); });
			});
		},

		checkDate: function(o){
			var v_parse = parseDate(o.getValue, "d.M.y");

			if( v_parse==null ){
				var prompt_date = new MooPrompt("", "Bitte korrigieren Sie Ihre Datumeingabe!", {
					width       : 260,
					height      : 55,
					buttons     : 1,
					button1     : 'OK',
					buttonClass1: 'input_button',
					onButton1   : function(){
						$(o.id).focus();
						$(o.id).select();
					}
				});
			}
		},

		setPreTagPosition: function() {
			var pos = 0;

			$$("pre").each(function(pre) {
				var pre_fx   = new Fx.Styles(pre, {duration:400, wait:false});
				var pre_drag = new Drag.Move($(pre), {
					'onStart'    : function(elm) {elm.setOpacity(0.2);},
					'onComplete': function(elm) {
						var f_color = '#33ff66';
						var b_color = '#000000';

						elm.setStyles({'background-color':f_color,'color':b_color});
						elm.setOpacity(1);
						pre_fx.start({
							'background-color': b_color,
							'color'           : f_color
						});
					},
					'limit'     : {x:[0,0], y:[0,getScrollHeight()]}
				});
				pre.setStyle("top", pos);
				var pre_size = pre.getSize();
				pos+= pre_size.size.y+5;
			});
		}
	};


	var Referenzen = {
		start: function(){
			if($$('referenzen') && $$('#referenzen div.accToggler') && $$('#referenzen div.accSlider')) {
				DBG.log('Referenzen.start');

				$$('div.accToggler').each(function(toggler, i) {
					toggler.addEvent('mouseenter', function() {
						if(!this.hasClass('active'))
							this.addClass('over');
					}).addEvent('mouseleave', function() {
						this.removeClass('over');
					});
				});

				var refAccordion = new Accordion($$('#referenzen div.accToggler'), $$('#referenzen div.accSlider'), {

					opacity : false,


					onActive: function(toggler, element){
						// mehr ausblenden
						if($E('div.ref_more', toggler))
							$E('div.ref_more', toggler).setStyle('display', 'none');
						toggler.addClass('active');
					},

					onBackground: function(toggler, element){
						// mehr einblenden
						if($E('div.ref_more', toggler))
							$E('div.ref_more', toggler).setStyle('display', 'block');
						toggler.removeClass('active');
					},
					show      : 0,
					duration  : 200,
					alwaysHide: true
				}, $('referenzen'));
			}
		}
	};


	if (window.opera)
		window.addEvent('load', Core.start);
	else
		window.addEvent('domready', Core.start);