
/**
 * XMCMS Application
 * USE THIS FUNCTION INSTEAD OF local.js object IF will be overwritten
 * @author			chris 
 * @copyright (c) 	Yellowspace
 * @date      		12.10.2010
 * @version   		$Id$
 *
 * @license xmcms.js is licensed under the terms of the Open Source
 * LGPL 3.0 license. Commercial use is permitted to the extent that the 
 * code/component(s) do NOT become part of another Open Source or Commercially
 * licensed development library or toolkit without explicit permission.
 * 
 * License details: http://www.gnu.org/licenses/lgpl.html
 *
 *
 
 Articles
 	
 Last Changes 
 
 */

function Interface () {
	
	this.window = false;
	this.title = '';
	
	this.init = function() {
		if(typeof Ext == 'object'
		&& typeof Ext.ux == 'object'
		&& typeof Ext.ux.Lightbox == 'object') {
			Ext.ux.Lightbox.register('a.obj-imgs', true);
		}
		this.loginBoxAnimation();
	}
	
	//---------------------------------------------------------------------------------------
	this.setLang = function(lang) {
		document.location.href = '/'+lang+myPlainPagePath;		
	}

	this.lengua = function(lang_key) {
		// Expl: IF.lengua('de');
		var found = false;
		var url = document.URL;
		var langs = ['en','es','de','it','fr'];
		var curr_lang = "/" + lang_key + "/";
		for(lang in langs) {
			if (url.match(lang)) {
				var found = url.replace(url,curr_lang);		
				break;
			}
		}
		
		if(found) document.location.href=found;
	}
	
	//---------------------------------------------------------------------------------------
	this.quicksearch = function(event) {
		if(event.keyCode != 13) return;
		this.do_search();
	}
	
	this.do_search = function() {
		document.location.href = '/search/'+this.quicksearchEL.value;
	}
	
	this.donotinterruptsubmits = function() { // deprecated
		this.coverbackground('visible',0.8);
		PA = new ProgressAnimation();
		PA.viewProgress(this.cover,false,'Bild wird geladen',false,0.5);
	}
	
	//---------------------------------------------------------------------------------------
	this.loginBoxAnimation = function() { 
		// show settings icon and show loginbox on mouseenter
		
		if(typeof Ext != 'object') return false;
		this.loginbox = Ext.get('loginbox'); 
		if(this.loginbox && this.loginbox.hasClass('logout')) {
			
			var hlcs = Ext.DomQuery.select('.hidden-login-click');
			var hlc = Ext.get(hlcs[0]);
			hlc.insertHtml('afterBegin','<img src="/javascripts/ext/plugins/img/silk/icons/cog.png" />');

			hlc.on('click',function(e,i){
				
				this.fadeIn({
					endOpacity: 1, //can be any value between 0 and 1 (e.g. .5)
					stopFx:true,
					easing: 'easeOut',
					duration: .5
				});
				
				IF.addEvent(document,'mousedown',IF.loginboxhider = function(event) {
					var el;
					el = IF.gettarget(event);
					var xEL = Ext.get(el);
					var loginbox = $(IF.loginbox.id);
					var test = xEL.up('#loginbox');
					
					// If the active button was clicked on, exit.
					if ((test) || (el == loginbox)) return;
					
					IF.loginbox.fadeOut({
						endOpacity: 0, //can be any value between 0 and 1 (e.g. .5)
						easing: 'easeIn',
						stopFx:true,
						duration: .5
					});						
					
					IF.removeEvent(document,IF.loginboxhider);
					
					}.bind(IF)
				);

			},this.loginbox);
			
			this.loginbox.fadeOut({
				endOpacity: 0, //can be any value between 0 and 1 (e.g. .5)
				easing: 'easeIn',
				stopFx:true,
				duration: .5
			});	
		}
	}

	//---------------------------------------------------------------------------------------
	
	this.preloadImages = function(images){

		/*
			Empl:

			images = [{
				src:'/local/media/images/image1.png'
			},{
				src:'/local/media/images/image2.png'
			}];	
			if(typeof images == 'object') IF.preloadImages.defer(500,IF,[images]);			
		*/


        var preload = Ext.get(document.body).createChild({tag:"div", style:"display:none"});
        if(images && images.length > 0) {
			Ext.each(images, function(image){
				if (typeof(image)=='string'){
				 image={src:image}
				}
				if (image.src){
					preload.createChild({tag:"img", src:image.src});
				}
				if (image.fullSrc){
					preload.createChild({tag:"img", src:image.fullSrc});
				}
			}, this);
        } else if(typeof images == 'object') {
        	for(img_sid in images) {
  				if (images[img_sid].src){
					preload.createChild({tag:"img", src:images[img_sid].src});
				}      		
        	} 
        }
    }
    
	//---------------------------------------------------------------------------------------
	this.active_img = 1;
	this.showDiashowImage = function(idx,key) {
		
		// previews
		document.getElementById('prv_'+key+this.active_img).style.display = 'none';
		document.getElementById('prv_'+key+idx).style.display = '';
		
		// downloads
		if(document.getElementById('dw_'+key+this.active_img)) {
			document.getElementById('dw_'+key+this.active_img).style.display = 'none';
		}
		if(document.getElementById('dw_'+key+idx)) {
			document.getElementById('dw_'+key+idx).style.display = '';
		}

		// selected
		if(document.getElementById('sel_'+key+this.active_img)) {
			document.getElementById('sel_'+key+this.active_img).className = '';
			document.getElementById('sel_'+key+idx).className = 'selected';		
		}
		
		this.active_img = idx;
	}	

	//---------------------------------------------------------------------------------------
	this.adjustSize = function(r) {
		sizeUnit = "%";
		defaultSize = 100;
		maxSize = 160;
		minSize = 98;	
	}

	//---------------------------------------------------------------------------------------
	this.setFooter = function(f_id,c_id,afterfooterset) {
	
		// used @ accognis.de
		
		if(typeof f_id == 'undefined') f_id = 'footer';
		if(typeof c_id == 'undefined') c_id = 'content';
		
		if(!document.getElementById(f_id)) return;
		ft = document.getElementById(f_id);
		if(!document.getElementById(c_id)) {
			ft.style.visibility = 'visible';
			return;
		}
		if(!PAGEdom) return;
		nt = document.getElementById(c_id); // contains left subnav and navboxes
		var nt_dp = PAGEdom.toDocumentPosition(nt); // get document position of navteaserarea
		var wHeight = PAGEdom.getWindowHeight();
		var pHeight = document.body.offsetHeight; // Safari needs body.offsetHeight //PAGEdom.getPageHeight();
		
		var xNt = Ext.get(c_id);
		var box_ptop = xNt.getStyle('padding-top');
		var box_pbottom = xNt.getStyle('padding-bottom');
		var box_btop = xNt.getStyle('border-top-width');
		var box_bbottom = xNt.getStyle('border-bottom-width');
		var nt_padding = parseInt(box_ptop) + parseInt(box_pbottom); 
		if(typeof box_bbottom != 'number') var box_bbottom = 0;
		if(typeof box_btop != 'number') var box_btop = 0;
		var nt_borderleftandright = parseInt(box_btop) + parseInt(box_bbottom);
		
		//if(typeof console == 'object') console.log('x nt_padding '+typeof nt_padding+': %o',nt_padding);
		//if(typeof console == 'object') console.log('x nt_borderleftandright '+typeof nt_borderleftandright+': %o',nt_borderleftandright);
		if(typeof nt_padding != 'number') var nt_padding = 0;
		if(typeof nt_borderleftandright != 'number') var nt_borderleftandright = 0;
		//if(typeof console == 'object') console.log('x 2 nt_padding '+typeof nt_padding+': %o',nt_padding);
		//if(typeof console == 'object') console.log('x 2 nt_borderleftandright '+typeof nt_borderleftandright+': %o',nt_borderleftandright);
		//if(typeof console == 'object') console.log('x 2 '+ nt_dp.y +': %o',nt_dp);
		var nt_dp_y = (parseInt(nt_dp.y) + parseInt(nt_borderleftandright) + parseInt(nt_padding));
		
		if(pHeight
		&& wHeight
		&& pHeight<wHeight) {
			var new_height = (parseInt(wHeight) - parseInt(ft.offsetHeight) - nt_dp_y);
			nt.style.height = new_height+'px'; // window.height - footer - navteaser position
		}

		op = 1;
		ft.style.opacity = op; // set opacity for effect : filter:alpha(opacity=50); -moz-opacity:0.5; opacity:0.5; 
		ft.style.filter = "alpha(opacity:"+Math.round(op*100)+")";
		
		if(typeof afterfooterset == 'function') {
			afterfooterset.defer(100,this,[this,f_id,c_id]);
		}
		
	}

	
	//---------------------------------------------------------------------------------------
	this.getPHPOSContent = function(event,sid,conf) { //,{width:200,height:400,autosize:false}
		
		if(event) var evTarget = this.gettarget(event); 
		var win = Ext.getCmp('xcontentwindow');
		if(!win) {
			var d = {
				animateTarget: evTarget ? evTarget.id : false,
				modal:false,
				autoLoad:{
					url:'/ajax/getphposcontent/'+sid,
					callback: function() {
						Ext.addBehaviors({
						   // add a listener for click on all anchors in element with id foo
						   '#xcontentwindow h3.expandable-header@click' : function(e, t){
							   IF.displayDown(e,t);
						   }					
						});
					}
				},
				id:'xcontentwindow',
				//minWidth:350,
				stateful:false,
				shadow:true,
				shadowOffset:8,
				shim:false,		
				bodyStyle:'padding: 10px 7px 10px 7px;',
				autoScroll:true,
				//waitMsgTarget:evTarget.id,
				//iconCls:'x-content-ico',
				closable:false,
				defaultButton:0,
				buttons:[{
					 text: $L('close')
					,scope:this
					,handler:function(button) {
						button.ownerCt.close();
					}							
				}],				
				bodyCfg: {
					cls: 'outercontent'
				},
				cls:'x-local'
			};
			if(typeof conf != 'object') var conf = {};
			o = Ext.apply(conf,d);
			
			var win = new Ext.Window(o);
		} else {
			win.load({
				url:'/ajax/getphposcontent/'+sid,
				callback: function() {
					Ext.addBehaviors({
					   // add a listener for click on all anchors in element with id foo
					   '#xcontentwindow h3.expandable-header@click' : function(e, t){
							IF.displayDown(e,t);
					   }
					});						
				}
			});
			if(conf && conf.width) win.setWidth(conf.width);
			if(conf && conf.height) win.setHeight(conf.height);
			win.center();
		}
		win.show.defer(50, win,evTarget.id);
	}
	

	//---------------------------------------------------------------------------------------
	this.loginOperation = function(operation) {
		//alert();
		document.forms['iflogin'].operation.value = operation;
		document.forms['iflogin'].onsubmit(); // workaround browser bugs.
		document.forms['iflogin'].submit();
	}

	//---------------------------------------------------------------------------------------
	this.logout = function() {
		document.forms['iflogin'].operation.value = '[logout]';
		document.forms['iflogin'].action = '/';
		document.forms['iflogin'].onsubmit(); // workaround browser bugs.
		document.forms['iflogin'].submit();
	}	
	
	//---------------------------------------------------------------------------------------
	this.toggleMode = function() {
		if(mode) mode_value = mode;
		else if (document.getElementById('list_rdbms')) mode_value = "admin";
		else mode_value = "browse";
		//mode_el = document.getElementById("mymode");
		switch (mode_value) {
			case"admin":
				document.getElementById("mymode").value = 'browse';
				//mode_value = document.getElementById("mymode").value;
				break;
			case"browse":
				document.getElementById("mymode").value = 'admin';
				//mode_value = document.getElementById("mymode").value;
				break;			
		}
		//alert(document.getElementById("mymode").value);
		document.forms['iflogin'].submit();
	}
	
	//---------------------------------------------------------------------------------------

	this.linkExternalLinks = function() {
		if(is_phpos_environment) return;
		 var links = document.getElementsByTagName('A');
		 for (var i=0; i<links.length; i++) { 
		  var v = links[i].getAttribute("href");
		  var c = links[i].getAttribute("onclick");
		  
		   if (!c
		   && v
		   && v.indexOf('http') != -1) {
			 links[i].setAttribute('target',"_blank");
			}
		 } 
	}

	this.jumpToExternalLink = function(myUrl,myName,hitId,hitName) {
		var jumpPage = "/link/external";
		var path = myUrl;
		jumpPage = jumpPage+"?path="+path;
		if ((hitName && hitName.length > 0) && (hitName && hitName.length >0)) jumpPage = jumpPage+"&object_id="+hitId+"&object_name="+hitName;
		mywin = window.open(jumpPage,myName);
		mywin.focus();
	}

	// browser
	//---------------------------------------------------------------------------------------
	this.browserSubmit = function(v,i,eidb) {
		//alert('huhu'); return;
		document.getElementById(i).value = v;
		document.forms['contentform'].onsubmit(); // workaround browser bugs.
		document.forms['contentform'].submit();
	}

	this.setDirPath = function(id,order_dir,eidb) {
		document.getElementById(eidb+'order').value = id;
		this.browserSubmit(order_dir,eidb+'order_dir');
	} 
		
	this.changeDirPath = function(id,order_dir,eidb) {
		img_path = '/images_admin/embedded_browser/';
		document.getElementById(eidb+'order').value = id;
		switch(order_dir) {
			case"desc":
				document.getElementById(id+'_order_dir_dot').src = img_path+"asc_blue_dot.gif";
				order_change = 'asc';
			break;
			case"asc":
				document.getElementById(id+'_order_dir_dot').src = img_path+"desc_blue_dot.gif";
				order_change = 'desc';
			break;	
		}	
		this.browserSubmit(order_change,eidb+'order_dir');
	} 
	
	// submit
	this.justSubmit = function(formname) {
		document.forms[formname].onsubmit(); // workaround browser bugs.
		document.forms[formname].submit();	
	}

	// submit
	this.setHiddenAndSubmit = function(hidden_value,hidden_id,formname) {
		document.getElementById(hidden_id).value = hidden_value;
		//alert(document.forms[formname]['triggers'].value)
		document.forms[formname].onsubmit(); // workaround browser bugs.
		document.forms[formname].submit();
	}

	this.extendFormField = function(fieldId,checkfieldvalue,confirmmessage) {
		var field = document.getElementById(fieldId);
		if (field.value != checkfieldvalue) return;
		
		var fieldtype = document.getElementById(fieldId).type;
		var n = prompt(confirmmessage,"")
		if (n == null) return;
		if (n.length >0) {	
			switch(fieldtype) {
				case"select-one":
					NeuerEintrag = new Option(n,n,false,true);
					field.options[field.options.length] = NeuerEintrag;
				break;
			}	
		}
	}	

	//---------------------------------------------------------------------------------------
	this.clearOnFocus = function() { // ext version
		/**
		* Clears all input/textareas with classname "clearonfocus"
		* on focus-Mouseevent. -- works bad on textareas with much text...
		*/
		
		var cofs = Ext.DomQuery.jsSelect('.cof');
		
		Ext.each(cofs,function(input) {
			var input = Ext.get(input);
			input._defaultValue = input.getAttribute('title');
			if((!input.id) || (input.id.length == 0)) input.id = 'id'+new Date().format('YmdHis')+'_'+(1+Math.floor((Math.random()*32767)));
			input.dom.removeAttribute('title');
			
			input.qtip = new Ext.ToolTip({
				target: input.id,
				cls:'x-local',
				anchor: 'top',
				autoHide: true,
				dismissDelay:0,
				anchorOffset: 10,
				html: input._defaultValue
			});
			
			input.addListener('focus', function(ev,input) {
				var input = Ext.get(input);
				if(input.getValue() == input._defaultValue) {
					$(input.id).value = '';
					//input.set({value:''});
					
				}
				input.addClass('on-focus');
				input.qtip.show();
			});
			input.addListener('blur', function(ev,input) {
				var input = Ext.get(input);
				if(input.getValue() == '') {
					//input.set({value:input._defaultValue});
					$(input.id).value=input._defaultValue;
				}
				input.removeClass('on-focus');	
				input.qtip.hide();
			});
			
		});	
	}

	//---------------------------------------------------------------------------------------
	//---------------------------------------------------------------------------------------
	
	
	this.magnifier_is_visible = false;
	this.magnify = function(m,e) {
		
	
		// if its an iphone or android phone
		var uagent = navigator.userAgent.toLowerCase();
		if((e) &&
			(uagent.match(/iphone/i)) ||
			(uagent.match(/android/i))
		) {
			var t = this.gettarget(e);
			if(t) {
				var href = t.getAttribute('href');
				if(href && href.indexOf('tel:') >= 0) { // use href
					try { window.location.href = href; }
					catch(err) { return false; }
				} else { // use message
					try { window.location.href = 'tel:'+m; }
					catch(err) { return false; }				
				}
				return true;
			}
		}
		
		if(this.magnifier_is_visible == true) {
			//this.hideMagnifier(false);
			setTimeout(function(){ this.magnify(m); }.bind(this), 300);
			return;
		}
		IF.magnifier_is_visible = true;
		
/*
.menuitemGNW {
	position: absolute;
	visibility: hidden;
}

.fllGN {
	background-image: url(/images_admin/icons/kr_hl.png);
	background-repeat: no-repeat;
	background-position: left top;
	width: 36px; 
	height:72px; 
	float:left;
}

.fllGNib {
	background-image: url(/images_admin/icons/kr_hr.png);
	background-repeat: no-repeat;
	background-position: right top;	
	height:72px; 
	width: 36px;
	float:left;
}

.fllGNCT {
	float:left;
	background-color: #000;
	margin: 1px 0 0 0;
	he

*/		
		st = PAGEdom.docScrollTop();
		mtop = (st+160)+'px';
		ww = GetWindowWidth();
		
		if(!this.mag) {
			this.mag = document.createElement('div');
			this.mag.style.position = 'absolute';
			this.mag.style.zIndex = 10020;
			this.mag.style.left = 60+'px';
			this.mag.style.top = mtop;		
			this.mag.style.width = (ww-120)+'px';	
			this.mag.style.textAlign = 'center';
			//this.mag.style.height = '180px';
			this.mag.style.padding = '3px';
			this.mag.style.fontWeight = 'bold';
			//this.mag.style.fontSize = '400%';
			this.mag.style.fontSize = '60px';
			this.mag.style.lineHeight = '60px';
			this.mag.style.color = '#fff';
			//this.mag.style.border = '1px solid red';
			document.getElementsByTagName('body')[0].appendChild(this.mag);
			this.mag_bg = document.createElement('div');
			this.mag_bg.style.position = 'absolute';
			this.mag_bg.style.zIndex = 10019;
			this.mag_bg.style.left = 60+'px';
			this.mag_bg.style.top = mtop;		
			this.mag_bg.style.width = (this.mag.offsetWidth)+'px';//(ww-60)+'px';
			this.mag_bg.style.height = this.mag.offsetHeight+'px';//'200px';
			op = 0.1;
			this.mag_bg.style.opacity = op; // set opacity for effect : filter:alpha(opacity=50); -moz-opacity:0.5; opacity:0.5; 
			//this.mag_bg.style.filter = "alpha(opacity:"+Math.round(op*100)+")";
			
			
			rk = document.createElement('div');
			rk.className = 'fllGN';
			this.mag_bg.appendChild(rk);
			
			ct = document.createElement('div');
			ct.style.width = (this.mag.offsetWidth - 72)+'px';
			ct.className = 'fllGNCT';
			this.mag_bg.appendChild(ct);	
			
			lk = document.createElement('div');
			lk.className = 'fllGNib';
			this.mag_bg.appendChild(lk);		
			document.getElementsByTagName('body')[0].appendChild(this.mag_bg);
	

		} else this.mag.style.display = '';
		
		this.mag.innerHTML = m;
		
		if(typeof Ext == 'object') {
			var mag_bg = Ext.get(this.mag_bg);
			mag_bg.fadeIn({
				endOpacity:.75, 
				duration:.25,
				easing:'easeOut',
				useDisplay:true,
				callback:function() {
					IF.magnifier_is_visible = true;
					
				}
			});
		} else {
			op = 0.7;
			this.mag_bg.style.opacity = op; // set opacity for effect : filter:alpha(opacity=50); -moz-opacity:0.5; opacity:0.5; 
			this.mag_bg.style.filter = "alpha(opacity:"+Math.round(op*100)+")";
			IF.magnifier_is_visible = true;
		}
		
		if(!this.hideme) {
			this.addEvent(document,'mousedown',this.hideme = function(event) {this.hideMagnifier(event);}.bind(this));
		}
		if (e && e.stopPropagation) {
			e.stopPropagation();
		} else if(e) {
			e.cancelBubble = true;
		} 
		
	}
	//---------------------------------------------------------------------------------------
	this.hideMagnifier = function(event) {
	
		var el;
		el = this.gettarget(event);
		if (el == this.mag) return;
		if (el == this.mag_bg) return;
		
		//PAGEdom.removeNode(this.mag);
		this.mag.style.display = 'none';
		mag_bg = this.mag_bg;
		if(typeof Ext == 'object') {
			var mag_bg = Ext.get(this.mag_bg);
			mag_bg.fadeOut({
				endOpacity: 0, 
				duration: .25,
				easing:'easeIn',
				useDisplay:true,
				//remove:true,
				callback:function() {
					IF.magnifier_is_visible = false;
				}
			});
		} else {
			//PAGEdom.removeNode(this.mag_bg);
			this.mag.style.display = 'none';
			IF.magnifier_is_visible = false;
		}
	}	
	
	this.sau_Effect_rmNode = function(obj) {
		PAGEdom.removeNode(obj.element);
		IF.magnifier_is_visible = false;
	}
	
	//---------------------------------------------------------------------------------------
	this.coverbackground = function(vs,op) {
		
		if(!op) op = 0;
		
		if(!this.cover) {
			this.cover = document.createElement('div');
			this.cover.style.position = 'absolute';
			this.cover.style.zIndex = 5;
			this.cover.style.left = 0+'px';
			this.cover.style.top = 0+'px';
			this.cover.style.opacity = op; // set opacity for effect : filter:alpha(opacity=50); -moz-opacity:0.5; opacity:0.5; 
			this.cover.style.filter = "alpha(opacity:"+Math.round(op*100)+")";
			this.cover.style.backgroundColor = "#fff";
			document.getElementsByTagName('body')[0].appendChild(this.cover);
		}
		
		if(!vs) {
			this.cover.style.visibility = 'hidden';
		} else {
			ww = PAGEdom.getWindowWidth();
			wh = PAGEdom.getWindowHeight();
			st = PAGEdom.docScrollTop();
			bodyheight = st+wh;
			bodyheight = document.body.offsetHeight;
			this.cover.style.width = (ww-15)+'px';
			this.cover.style.height = ((bodyheight-15))+'px';
			this.cover.style.visibility =  'visible';			
		}
	}
	
	//---------------------------------------------------------------------------------------
	this.setField = function(sourcefield_id,targetfield_id,value,disable) {
		sourcefield = $(sourcefield_id);
		targetfield = $(targetfield_id);
		if(targetfield.value != value) {
			targetfield.value = value;
		}
	}
	
	//---------------------------------------------------------------------------------------
	this.rot13init = function() {
	  var map = new Array();
	  var s   = "abcdefghijklmnopqrstuvwxyz";
	  
	  for (i=0; i<s.length; i++)
		map[s.charAt(i)]            = s.charAt((i+13)%26);
	  for (i=0; i<s.length; i++)
		map[s.charAt(i).toUpperCase()]  = s.charAt((i+13)%26).toUpperCase();
	  return map;
	}
	
	this.rot13map = false;
	this.rot13=function(a) {
	  if (!this.rot13map) this.rot13map=this.rot13init();
	  s = "";
	  for (i=0; i<a.length; i++) {
		  var b = a.charAt(i);
		  s += (b>='A' && b<='Z' || b>='a' && b<='z' ? this.rot13map[b] : b);
		}
	  return s;
	}
	
	this.decMailto=function(eAddr) {
		document.location = 'mailto:'+this.rot13(eAddr);
		return false;
	}  

	//---------------------------------------------------------------------------------------
	this.str_replace = function(search, replace, subject) {
	  var result = "";
	  var  oldi = 0;
	  for (i = subject.indexOf (search)
		 ; i > -1
		 ; i = subject.indexOf (search, i))
	  {
		result += subject.substring (oldi, i);
		result += replace;
		i += search.length;
		oldi = i;
	  }
	  return result + subject.substring (oldi, subject.length);
	}
	
	//---------------------------------------------------------------------------------------
	this.disable = function(obj) {

		//if(typeof console == 'object') console.log('x obj: %o',obj);
		for(id in obj) {
			//if(typeof console == 'object') console.log('x obj.id: %o',obj.id);
			if(obj && obj.id && obj.id.length >0 && $(obj.id)) {
				$(obj.id).addClassName('disabled');
				$(obj.id).disabled = true;
			}
		}			
	}
	
	this.enable = function(obj) {
		for(id in obj) {
			//DebugDump(obj.id,id);
			if(obj && obj.id && obj.id.length >0 && $(obj.id)) {
				$(obj.id).removeClassName('disabled');
				$(obj.id).disabled = false;
			}
		}
	}
	
	//---------------------------------------------------------------------------------------
	this.hideContainer = function(obj) {
		for(id in obj) {
			if($(obj.id)) {
				$(obj.id).addClassName('hidden');
			}
		}			
	}
	
	this.showContainer = function(obj) {
		for(id in obj) {
			if($(obj.id)) {
				$(obj.id).removeClassName('hidden');
			}
		}
	}	
	
	//---------------------------------------------------------------------------------------
	this.showMessage = function(o) {
		
		var d = {
			animEl: o.bt ? o.bt.id : false,
			modal: o.modal ? true : false,
			minWidth:350,
			stateful:false,
			shadow:true,
			shadowOffset:8,
			shim:false,	
			closable:false,
			cls:'x-local'
		};
		
		if(typeof o != 'object') var o = {};
		o = Ext.apply(o,d);
		
		var win = new Ext.Window(o);
		if(o.bt) win.show.defer(50, win,[o.bt.id]);
		else win.show.defer(50, win);
	}	
	//---------------------------------------------------------------------------------------
	this.displayDown = function(e,t) {
		var l = Ext.get(t);
		var p = l.next(false,true);
		var pl = Ext.get(p);
		if(p && pl.hasClass('collapsed-content') && (pl.is('h3') != true)) {
			if(pl.getStyle('display') == 'none') pl.setStyle('display','block');
			else pl.setStyle('display','none');
			this.displayDown(e,p);
		}
	}

	//---------------------------------------------------------------------------------------
	this.gettarget = function(event) {

		if(window
		&& (window.event)
		&& (window.event.srcElement)) {
			t = window.event.srcElement;
		} else {
			t = (event.target.tagName ? event.target : event.target.parentNode);
		}
		return t;
	}	
	

	//---------------------------------------------------------------------------------------
	this.addEvent = function(el,evname,func) {
	
		if (el.attachEvent) { // IE
			el.attachEvent("on" + evname, func);
		} else if (el.addEventListener) { // Gecko / W3C
			el.addEventListener(evname, func, true);
		} else {
			el["on" + evname] = func;
		}
	
	}
	
	//---------------------------------------------------------------------------------------
	this.removeEvent = function(el,evname,func) {
	
		if (el.detachEvent) { // IE
			el.detachEvent("on" + evname, func);
		} else if (el.removeEventListener) { // Gecko / W3C
			el.removeEventListener(evname, func, true);
		} else {
			el["on" + evname] = null;
		}
	
	}
}

IF = new Interface(); 
OnLoadFunctions[OnLoadFunctions.length] = "IF.init();";

var reg = 'phpos'; 
var is_phpos_environment = document.location.href.match(reg);
if(!is_phpos_environment) {
	browserSubmit = IF.browserSubmit;
	setDirPath = IF.setDirPath;
	changeDirPath = IF.changeDirPath;
}

//---------------------------------------------------------------------------------------
function checkSubmit() { // weiss nich, ob ich das brauche... ist der onsubmit gerade
	return true;
}

//---------------------------------------------------------------------------------------
function quicksearch(event) {
	if(event.keyCode != 13) return;
	INTERFACEdo_search();
}
//---------------------------------------------------------------------------------------
function INTERFACEdo_search() {
	setHidden('search','triggers');
	setActionAndSubmit('/suche','_self');
}



/*****************************************************
*/ function __P___Language() {}
/******************************************************/
 
if(typeof lang == 'undefined') lang = 'de';
lang_show_failed_keys = '';
if(typeof INT != 'object') INT = new Object();

function $L(key,o) {
	this.lang = lang;
	this.def_lang = 'en';
	if(!INT[key]) {
		return key+lang_show_failed_keys;
	} else if(INT[key]) { // key found
		var found_str = '';
		if(INT[key][this.lang]) found_str = INT[key][this.lang];
		else if(INT[key][this.def_lang]) found_str = INT[key][this.def_lang];
		else found_str = key+lang_show_failed_keys;
		if(typeof o == 'object') {
			var oidx=0;
			for(okey in o) {
				found_str = str_replace('$$'+okey,o[okey], found_str);
				oidx++;
			}
		} 
		return found_str;
	} else return key+lang_show_failed_keys;
}



//---------------------------------------------------------------------------------------
//-- TinyMCE Settings -------------------------------------------------------------------
//---------------------------------------------------------------------------------------

IF.tinymceSettings = {
	theme : "advanced",
	height: "400", //config.height,
	plugins: "safari,pagebreak,style,advhr,advimage,advlink,table,emotions,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,noneditable,visualchars,nonbreaking",
	theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",
	theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,code",
	theme_advanced_buttons3 : "hr,removeformat,|,sub,sup,|,charmap,nonbreaking,media,advhr,|,ltr,rtl,|,insertdate,inserttime,preview,|,forecolor",
	theme_advanced_buttons4 : "tablecontrols,|,visualaid,|,iespell,fullscreen,attribs,styleprops", // tables needed @ accognis.de
	//theme_advanced_buttons4 : "styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking",
	
	
	//theme_advanced_buttons4 : "styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking",
	theme_advanced_toolbar_location : "top",
	theme_advanced_toolbar_align : "left",
	theme_advanced_statusbar_location : "bottom",
	theme_advanced_resizing : false,
	extended_valid_elements : "a[name|href|target|title|onclick|class],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]",
	//theme_advanced_blockformats : "p,h1,h2,h3,h4,h5,h6,blockquote,div,address",
	
	
	/* linebreak tests, hier scheint etwas schlimmeres nicht zu stimmen...
	forced_root_block:false,
	remove_linebreaks:false,
	//force_p_newlines:false,
	//force_br_newlines:true,
	apply_source_formatting:true,
	entity_encoding:"",
	cleanup:false,
	cleanup_on_startup:true,
	//convert_newlines_to_brs:true,
	
	force_p_newlines:false,
	force_br_newlines:true,
	convert_newlines_to_brs:false,
	remove_linebreaks:true,					
	cleanup:false,
	
	*/
	cleanup_on_startup:false,
	//cleanup:false,
	verify_html:false,
	//template_external_list_url : "example_template_list.js"
	//file_browser_callback : "FileBrowser"
	file_browser_callback:"ezfilemanager",
	relative_urls:false,
	theme_advanced_enable:"styleselect",
	content_css: "/mcms/wolfundjaeger/_css/wysiwyg.css",
	body_id:'content',
	body_class:'p-normargin',	 
	language:"de"
	//onchange_callback:"myCustomOnChangeHandler"
	//add_form_submit_trigger:true
	//body_id:"content"
};


//---------------------------------------------------------------------------------------
//-- Size Functions -------------------------------------------------------------------
//---------------------------------------------------------------------------------------

function AdjustFontSize() {

	this.sizeUnit = "%";
	this.defaultSize = 100;
	this.maxSize = 125; // Windows 125! / Mac 145
	this.minSize = 90;

	this.init = function() {
		CFS = new CookieManager('fontSize');
		if ( !document.body || !document.getElementById ) return;
		var size = window.location.search? window.location.search.slice(1): CFS.getValue("fontSize");
		size = !isNaN( parseFloat(size) )? parseFloat(size): this.defaultSize;
		// in case default unit changed or size passed in url out of range
		if ( size > this.maxSize || size < this.minSize ) size = this.defaultSize;
		document.body.style.fontSize = size + this.sizeUnit;
	}
  
	this.adjust = function(inc) {
		var size = parseFloat( document.body.style.fontSize );
		/* !!!!! Änderung  Anfang !!!! */
		size = !isNaN( parseFloat(size) )? parseFloat(size): this.defaultSize;
		/* !!!!! Änderung Ende  !!!! */
		size += inc;
		// Test against max and min sizes 
		if (inc > 0) size = Math.min(size, this.maxSize);
		else size = Math.max(size, this.minSize);
		CFS.save( "fontSize", size, 180, "/" );
		document.body.style.fontSize = size + this.sizeUnit;
	}

	this.reset = function() {
		document.body.style.fontSize = this.defaultSize + this.sizeUnit;
		CFS.del("fontSize", "/");
	}
}


function Browser() {

  var ua, s, i;

  this.isIE    = false;  // Internet Explorer
  this.isOP    = false;  // Opera
  this.isNS    = false;  // Netscape
  this.version = null;

  ua = navigator.userAgent;

  s = "Opera";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isOP = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  s = "Netscape6/";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  // Treat any other "Gecko" browser as Netscape 6.1.

  s = "Gecko";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = 6.1;
    return;
  }

  s = "MSIE";
  if ((i = ua.indexOf(s))) {
    this.isIE = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }
}

var browser = new Browser();


function Local() {
	
	this.init = function() {
		if(this.startVisItem && typeof mode != 'undefined' && mode != 'admin') {
			
			var ic = Ext.get('inner-content'); 
			var ic_h = ic.getHeight();
			if(ic_h > 0 && ic_h < 400) {
				ic.setHeight(450);
			}
			
			this.showItem(this.startVisItem);
		}
		
		if(typeof Ext == 'object') {
			// init galeryitems? 
			// get p with photos, inside are the galeryitems
			// get a href and init their classes for lightbox
			var photo_wrs = Ext.DomQuery.select('div.photos');
			if(typeof photo_wrs == 'object') {
				for(i=0;i<photo_wrs.length;i++) {
					var ahrefs = Ext.DomQuery.select('a',photo_wrs[i]);
					for(a=0;a<ahrefs.length;a++) {
						var cl = ahrefs[a].className;
						Ext.ux.Lightbox.register('a.'+cl, true);
						break;
					}
				}
			}
		}
	}
	
	this.visItem = false;	
	this.showItem = function(id) {
		
		if(id == this.visItem) return true;
		
		if(this.visItem) {
			// unselect menu item
			var lim = Ext.get('menu_'+this.visItem);
			if(lim) lim.removeClass('selected');
			// shide last item
			var li = Ext.get(this.visItem);
			if(li) {
				li.fadeOut({
					duration: .5,
					endOpacity:0,
					useDisplay:true,
					easing: 'easeOut'
				});
			}			
		}
		
		
		// select menu item
		var im = Ext.get('menu_'+id);
		if(im) im.addClass('selected');		
		// show item
		var i = Ext.get(id);
		if(i) {
			i.fadeIn({
				duration: .5,
				endOpacity:1,
				useDisplay:true,
				easing: 'easeIn'
			});
		}					
		
		
		this.visItem = id;
		
	}
	
	
	
}

LC = new Local();
OnLoadFunctions[OnLoadFunctions.length] = "LC.init();";

//---------------------------------------------------------------------------------------
//-- Tabs ---------------------------------------------------------------------
//---------------------------------------------------------------------------------------

function Tabs() {
	
	this.selectedTab = false;
	this.init = function(tel) {
		this.parent = Ext.get(tel);
		if(!this.parent) return false;
		// get all hrefs and initialize tab and search for selected tab
		var ahrefs = Ext.DomQuery.select('a',tel);
		for(a=0;a<ahrefs.length;a++) {
			var xEL = Ext.get(ahrefs[a]);
			if(xEL.hasClass('selected')) this.selectedTab = xEL;
			xEL.addListener('click',this.selectTab,this,[xEL]);
		}
	}
	
	this.selectTab = function(ev,el) {
		if(this.selectedTab) {
			this.selectedTab.removeClass('selected');
			var lEl = Ext.get('prod'+this.selectedTab.id);
			lEl.setStyle('display','none');
		}
		var xEl = Ext.get(el);
		xEl.addClass('selected');
		var nlEl = Ext.get('prod'+xEl.id);
		nlEl.setStyle('display','block');
		this.selectedTab = xEl;
		return false;
	}
	
}

/*
//---------------------------------------------------------------------------------------
//-- Mailto Functions ---------------------------------------------------------------------
//---------------------------------------------------------------------------------------

function Mailto () {
	this.ajax_path = '/php-os/app_local/scripts/ajax_email.php';
	this.mail = false;
	this.linkid = false;
	this.emaillinks = new Object();
	this.changeVeMail = false;
	
	this.loadM = function(pclass,sid,emailfield,searchfield,elid,ab_sid) {
		//DebugDump(elid,'elid');
		if(!document.getElementById(elid)) return false;
		
		if(!this.emaillinks[elid]) {
			this.emaillinks[elid] = new Object();
			this.emaillinks[elid].linkid = elid;
		}
		
		
		
		if(document.getElementById(elid)) {
			
			this.emaillinks[elid].link = document.getElementById(elid);
		
			//if(this.emaillinks[elid].loaded === true 
			//&& this.emaillinks[elid].link.href.indexOf('mailto') >= 0) return true;
			
			if(this.emaillinks[elid].loaded === true) {
				this.emaillinks[elid].link.href = 'mailto:' + this.emaillinks[elid].mail;
				if(this.changeVeMail) {
					this.emaillinks[elid].link.innerHTML = this.emaillinks[elid].lvemail;
				}
				setTimeout(function(){this.emaillinks[elid].link.href = '#/spamschutz';}.bind(this), 500);
				return true;
			}
			this.getEmail(pclass,sid,emailfield,searchfield,elid,ab_sid);
		}
		
	}
	//---------------------------------------------------------------------------------------
	this.getEmail = function(pclass,sid,emailfield,searchfield,elid,ab_sid) {
		
		var postit = 'class='+pclass;
		postit += '&sid='+sid;
		postit += '&emailfield='+emailfield;
		postit += '&searchfield='+searchfield;
		postit += '&oncomplete=viewEmail';
		postit += '&elid='+elid;
		postit += '&ab_sid='+ab_sid;

		mAjax = new ajax();
		mAjax.initialize(this.ajax_path, {method:'post',postBody:postit, onComplete: this.getResponse}); 		
	}

	//---------------------------------------------------------------------------------------	
	this.viewEmail = function(node) {
		editorfield = node.getElementsByTagName("editor");
		this.editorAttr = JRESPONSE.parseAttributes(editorfield[0]);
		this.editorData = editorfield[0].firstChild.data; //unescape(nodes[fidx].firstChild.data);
		this.emaillinks[this.editorAttr['elid']].mail = this.editorData;
		this.setLink(this.editorAttr['elid'],this.editorAttr['vemail']);
	}	
	
	this.setLink = function(elid,vemail) {
		if(document.getElementById(this.emaillinks[elid].linkid)) {
			this.emaillinks[elid].loaded = true;
			this.emaillinks[elid].vemail = vemail;
			//this.emaillinks[elid].link.href = 'mailto:'+this.emaillinks[elid].mail;
			if(this.changeVeMail) {
				document.getElementById(this.emaillinks[elid].linkid+'_v').style.display = 'none';
				this.emaillinks[elid].link.innerHTML = this.emaillinks[elid].link.innerHTML + this.emaillinks[elid].vemail;
				this.emaillinks[elid].lvemail = this.emaillinks[elid].link.innerHTML;
			}
			//this.emaillinks[elid].href = 'mailto:'+this.mail;
		}
	}
	
	//---------------------------------------------------------------------------------------
	// just a container for AJAX Response and call to Respond()
	this.getResponse = function(request) {
		JRESPONSE = new Respond(request.responseXML);
		JRESPONSE.interpretResponse();
	}
	
	this.error = function(node) {
		alert('Fehler! Es wurde keine eMail-Adresse gefunden.');
	}
	
	this.loadAlleMails = function() {
		 var links = document.getElementsByTagName('A');
		 for (var i=0; i<links.length; i++) { 	
		 	if(links[i].id.indexOf('elink') >= 0) {
		 		//DebugDump(links[i].getAttribute('onclick'),'getAttr');
		 		//DebugDump(links[i].onclick,'onclick');
		 		//DebugDump(links[i].lang,'lang');
		 		//DebugDump(links[i].getAttribute('lang'),'getAtrr. lang');
		 		eval(links[i].getAttribute('lang'));
		 	}
		 }
	}
	
}

MT = new Mailto();

*/



