/**
    TP-Ajax v0.2a - Testversion
    
    Autor:  Thomas Puttkamer | tvp1981 (at) gmx (dot) de
    Erstellung: 01.08.2009
	Überarbeitung: 10.05.2010
    (c) 2009-2010 by Thomas Puttkamer
    
    Implementierung der Updater-Engine
    Benötigt jQuery ab Version 1.4.0

	Hinweis:
	Da das Prototype-Framework derzeit inkompatibel zu Microsoft-Produkten schein und sich diese Probleme nicht beheben ließen,
	wurde Dieses mit der aktuellen Version ersetzt. Derzeit kommt jQuery zum Einsatz.
	
	Implementierung:
	
	- navigation
	Bietet ein verzögertes PullDown-Menu
	Main-Target: #id
	Sub-Target:	sub_#id
	
	Funktionen
		addNavigation	-	Fügt ein Navigationselement hinzu
		setDelay		-	Bestimmt die Dauer des Fade-In/-Out Effekts
		setFadeDelay	-	Bestimmt die Dauer des Fade-Out Starts beim Verlassen der Navigation
**/

if(typeof(JSON) == "undefined"){
	var JSON = {
			parse: function(parseText) {
				parseText = 'parseText = ' + parseText;
				eval(parseText);
				return parseText;
			}
	}
}

var message;
if (!message) {
	message=(function() {
		var options = {
			'title'		:	'',
			'message'	:	'',
			'delay'		:	5000,
			'width'		:	400,
			'left'		:	'center'
		};
		var _xtime = {};
		var top = 50;
		
		function _start(id) {
			$.extend(options,arguments[1] || {});
			var _mess = $('#'+id);
			if (_mess.length==0) {
				$(document.body).append('<div class="window" id="'+id+'"><div class="window-title cf"><h2>{Titel}</h2><a href="#">close</a></div><div class="window-message cf">{Data}</div></div>');
				_mess = $('#'+id);
			}
			_mess.find('h2:first').text(options.title);
			_mess.find('a:first').click(function() {
				_closeMessage(id);
			});
			_mess.find('.window-message').html(options.message);
			if (typeof(_xtime[id])=='undefined') {
				_mess.css('top',top);
				top = top+_mess.attr('clientHeight');
				_xtime[id] = null;
				_mess.hide();
			}
		}
		
		function _showMessage(id) {
			var _mess = $('#'+id);
			_mess.find('h2:first').text(options.title);
			_mess.find('.window-message').html(!arguments[1] ? options.message : message);
			_mess.css('width',options.width);
			_mess.show();
			if (_xtime[id]) {
				clearTimeout(_xtime[id]);
				_xtime[id] = null;
			}
			_xtime[id] = window.setTimeout(function() {
				_closeMessage(id);
			},options.delay);
		}
		
		function _closeMessage(id) {
			var _mess = $('#'+id);
			_mess.hide();
			clearTimeout(_xtime[id]);
			_xtime[id] = null;
		}
		
		return {
			start: function(id) {
				_start(id,arguments[1] ||{});
			},
			showMessage: function(id) {
				var _mess = $('#'+id);
				if(_mess.length==0) {
					_start(id,arguments[2] || {});
				}
				_showMessage(id,arguments[1]);
			}
		}
	}());
}

var navigation;
if (!navigation) {
	navigation=(function() {
		var delay 			= 250;
		var fadeDelay		= 1500;
		var aktivElement	= null;
		var fadeTimer		= null;
		var fadeCounter		= 0;
		
		function _addNavigation(element) {
			var eL = $(element);
			if (!eL) 
				return false;
			var eLs = $('#sub_' + eL[0].id);
			if (eLs.length==0)
				return false;
			// Sollte Element oder SubElement nicht exisiteren FALSE
			eL.bind('mouseout',function() {
				navigation.fadeOut();
			});
			eLs.bind('mouseout',function() {
				navigation.fadeOut();
			});
			eL.bind('mouseover',function() {
				navigation.showSub('sub_' + this.id);
			});
			eLs.bind('mouseover',function() {
				navigation.showSub(this.id);
			});
			// FadeOut
		}
		
		function _setDelay(d) {
			if (isNaN(d))
				return false;
			delay = parseInt(d);
		}
		
		function _setFadeDelay(d) {
			if (isNaN(d))
				return false;
			this.fadeDelay = parseInt(d);
		}
		
		function _doFadeOut() {
			if (fadeId==fadeCounter)
				aktivElement.hide(delay);
			aktivElement = null;
		}
		
		function _fadeOut() {
			fadeId = fadeCounter;
			if (fadeTimer)
				clearTimeout(fadeTimer);
			fadeTimer = window.setTimeout(_doFadeOut,fadeDelay);
		}
		function _showSub(id) {
			element = $('#'+id);
			if (element.length==0)
				return;
			fadeCounter++;
			if (aktivElement && element[0]==aktivElement[0])
				return;
			if (fadeTimer)
				clearTimeout(fadeTimer);
			fadeTimer = null;
			if (aktivElement!=null)
				$(aktivElement).hide(delay);
			aktivElement = element;
			element.show(delay);
		}
		
		return {
			addNavigation: function() {
				for (i=0;i<arguments.length;i++)
					_addNavigation(arguments[i]);
				
			},
			showSub: function() {
				if (arguments[0])
					_showSub(arguments[0]);
			},
			/**
			* setDelay 
			*	Bestimmt die FadeIn/-Out-Dauer
			*	@param delay:	Delay in MS
			**/
			setDelay: function() {
				if (arguments[0])
					_setDelay(arguments[0]);
			},
			/**
			* setDelay 
			*	Bestimmt Zeit, die verstreicht, bis ein FadeOut einsetzt
			*	@param delay:	Delay in MS
			**/
			setFadeDelay: function() {
				if (arguments[0])
					_setFadeDelay(arguments[0]);
			},
			fadeOut: function() {
				_fadeOut();
			}
		}
	}());	
}
// WebKFZ Kommunikationsengine
var webkfz;
if (!webkfz) {
	webkfz=(function() {
		var _openLinks = {
			
		};
		var _linkVorschau 	= null;
		var _timeCheck 		= null;
		var _sizeVorschau	= null;
		var _tmpBilder		= {};
		var _vorschauSize	= null;
		var AusdruckSAB 	= /http:\/\/sab24\.de\/asc\/K\/(\w.+)\/images\/small\/(\w.+)\.jpg/;
		
		var _xxl_tmp		= {};
		
		function _init() {
			var suche = $('.wk_search');
			if (suche.length>0) {
				suche.bind('change',_setListe);
			}
			_linkVorschau = $('#wk_bildvorschau').attr('src');
			_sizeVorschau = [$('#wk_bildvorschau').attr('width'),$('#wk_bildvorschau').attr('heigth')];
			$('.wk_picprev').each(function(index,element) {
				var flink = $(element).attr('src');
	            if(AusdruckSAB.exec(flink)) {
	            	flink = 'http://sab24.de/asc/K/' + RegExp.$1 + '/images/medium/' + RegExp.$2 + '.jpg';
					var ximg = new Image();
					ximg.src = flink;
					_tmpBilder[$(element).attr('id')] = ximg;
				}
				
				if (_vorschauSize==null) {
					_vorschauSize = [$(element).attr('width'),$(element).attr('height')];
					return;
				}
/*				if (_vorschauSize[0]>$(element).attr('width'))
					_vorschauSize[0]=$(element).attr('width')
				if (_vorschauSize[1]>$(element).attr('height'))
					_vorschauSize[1]=$(element).attr('height')*/
			});
			$('.wk_picprev').each(function(index,element) {
				var down = [$(element).attr('width')/_vorschauSize[0],$(element).attr('height')/_vorschauSize[1]];
				var	pos = (down[0]<down[1]) ? 0 : 1;
				$(element).attr({
					'width'		:	Math.round($(element).attr('width')*down[pos]),
					'height'	:	Math.round($(element).attr('height')*down[pos])
				});
			});
			$('.wk_picprev').bind({
				'mouseover'	:	_setPicPrev,
				'mouseout'	:	function() { _setNormalPic(true); }
			});
			$('.wk_sepwin').each(function(index,element) {
				_openLinks[$(element).attr('id')] = $(element).attr('href');
				$(element).attr('href','javascript:void(0)');
			});
			$('.wk_sepwin').bind({
				'click'		:	_openWin
			});
			if ($('#wk_xxl').length>0)
				_init_xxl();
		}
		
		function _init_xxl() {
			var xxl_mini = $('.wk_xxlmini');
			$('#wk_xxlgesamt').html(xxl_mini.length);
			if (xxl_mini.length==0) 
				return;
			$('#wk_xxlaktuell').text(1);
			xxl_mini.each(function(index,element) {
				var flink = $(element).attr('src');
	            if(AusdruckSAB.exec(flink)) {
	            	flink = 'http://sab24.de/asc/K/' + RegExp.$1 + '/images/' + RegExp.$2 + '.jpg';
					var ximg = new Image();
					ximg.src = flink;
					_xxl_tmp[index] = ximg;
				} else
					return;
				$(element).bind('click',function() {
					$('#wk_xxllargepic').attr('src',_xxl_tmp[index].src);
					$('#wk_xxlaktuell').text(index+1);
				});
			});
			$('#wk_xxlback, #wk_xxlnext').bind('click',function() {
				var aktuell = parseInt($('#wk_xxlaktuell').text());
				var maximum = parseInt($('#wk_xxlgesamt').text());
				aktuell--;
				if ($(this).attr('id') == 'wk_xxlback')
					aktuell--;
				else
					aktuell++;
				if (aktuell<0)
					aktuell = 0;
				if (aktuell>=maximum)
					aktuell = maximum-1;
				$('#wk_xxllargepic').attr('src',_xxl_tmp[aktuell].src);
				$('#wk_xxlaktuell').text(aktuell+1);
			});
		}
		
		function _setPicPrev() {
			window.clearTimeout(_timeCheck);
			if (!_linkVorschau) {
				_linkVorschau = $('#wk_bildvorschau').attr('src');
				_sizeVorschau = [$('#wk_bildvorschau').attr('width'),$('#wk_bildvorschau').attr('heigth')];
			}
            var fid = $(this).attr('id');
            if(_tmpBilder[fid]) {
   				$('#wk_bildvorschau').attr('src',_tmpBilder[fid].src);
				return;
			}
		}
		
		function _setNormalPic() {
			if (!arguments[0]) {
                _timeCheck = window.setTimeout(function() {
                    _setNormalPic(false);
                }, 300);
                return;
			} else {
                window.clearTimeout(_timeCheck);
            }
			$('#wk_bildvorschau').attr({
				'src'	:	_linkVorschau,
				'width'	:	_sizeVorschau[0],
				'heigth':	_sizeVorschau[1]
			});
		}
		
		function _openWin() {
			if (_openLinks[$(this).attr('id')]) {
				var MeinFenster = window.open(_openLinks[$(this).attr('id')], "Fenster", "scrollbars=yes,width=825,height=720");
				MeinFenster.focus();
			}
		}
		function _setListe() {
			var pdata = $('.wk_search').serializeArray();
			var pparams = {};
			for (i=0;i<pdata.length;i++)
				pparams[pdata[i]['name']] = pdata[i]['value'];
			pparams['action'] = 'liste';
			pparams['wk_liste'] = $('#wk_liste').length;
			tpa.load(pparams);
		}
	
		return {
			init: function() {
				_init();
			}
		}
	}());	
}

var tabmanager;
if (!tabmanager) {
	tabmanager=(function() {
		function _init(element) {
			if (!element == null) 
				element = body;
			$('a').each(function(index,ele) {
				anker = ele.attr('href').split('#');
			});
		}
						 
		return {
			init: function() {
				if (arguments[0])
					_init(arguments[0]);
				else
					_init(null);
			}
		}
	}());	
}

var tpa;
if (!tpa) {
	tpa=(function() {
		var options = {
	        'ajaxfile'      :   '/ajax.php',
        	'multithreat'   :   true,
    	    'method'        :   'post',
	        'parameters'    :   {}
		}
		var updateFunction = null;
		
		function _setAjaxFile(filename) {
			options['ajaxfile'] = filename;
		}
		
		function _updateData(mjs) {
	        if (typeof(mjs)=='object') {
    	        for (tid in mjs) {
        	        switch(tid) {
            	        case 'layout'   : if (typeof(mjs['layout'])=='object') {
											for (lid in mjs['layout']) {
                                            	layout = $('#'+lid).html(mjs['layout'][lid]);
                                            }
                                        }
                                        
                                        break;
                                      // Ending Updatin Layouts
                   		case 'formdata' :   // TODO: Bringing Formdata into Layout 
										var xElement = null;
                                        var formEl = null;
                                        if (typeof(mjs['formdata']['options'])!='undefined') {
                                            var mo = mjs['formdata']['options'];
                                            var modata = null;
                                            for (moind in mo) {
                                                // Form-Elemente
                                                modata = mo[moind];
                                                formEl = $('#' + moind);
												if (formEl.length==0)
													continue;
                                                if (typeof(formEl[0])!='undefined' && typeof(formEl[0].options)!='undefined') {
                                                    // Form-Daten setzen
                                                    formEl[0].options.length = 0;
													if (typeof(modata)=='object' && !jQuery.isArray(modata))
                                                    for (modind in modata) {
                                                        formEl[0].options.add(new Option(modind,modata[modind],false,false));
                                                    }
                                                }
                                            }
                                        }
                                        if (typeof(mjs['formdata']['settet'])=='object') {
                                            var settet = mjs['formdata']['settet'];
                                            for (setind in settet) {
	                                            xElement = $('#' + setind);
												if (xElement.length==0)
													continue;
												if (xElement && xElement[0].type) {
													switch(xElement[0].type) {
														case 'checkbox'	:	
															xElement[0].checked = 
																settet[setind]==xElement[0].value ? 'checked' : false;
															break;
														default : xElement.val(settet[setind]); break;
													}
			                                    }
                                            }
                                        }
                                        break;
            	        case 'code'     :   if (typeof(mjs['code']) == 'object') 
                                            for (cid in mjs['code'])
                                                eval(mjs['code'][cid]);
                                        else
                                            eval(mjs['code']);
                                        break;
                                        // Ending Eval-Getted Code
						case 'messages'	:	if (typeof(mjs['messages']) == 'object') 
                                            	for (cid in mjs['messages']) {
                                                	message.start(cid,mjs['messages'][cid]);
													message.showMessage(cid);
												}
	                                        break;
        	        }
    	        }
	        }
	        if (updateFunction)
    	        updateFunction(mjs['data'] || {});
				
		}
		
		function _load() {
			var params = $.extend({}, options.parameters, arguments[0]);
			if (arguments[1] && jQuery.isFunction(arguments[1])) 
				updateFunction = arguments[1];
			else
				updateFunction = null;
			$.ajax({
  				type		: 'POST',
  				url			: options['ajaxfile'],
				data		: params,
				success		: _updateData
			});
		}
		
		return {
			// RETURN DATA
			load:	function() {
				if (arguments.length>1)
					_load(arguments[0],arguments[1]);
				else
					_load(arguments[0]);
			},
			setAjaxFile: function() {
				if(arguments[0])
					_setAjaxFile(arguments[0]);
			}
		}
	}());	
}

$(document).ready(function() {
	$('.mainNav').each(function(ind,element) {
		navigation.addNavigation(element);
	});
	webkfz.init();
});


