
	function hideInputBg(field)
	{
		ipField = document.getElementById(field);
		ipField.style.background = "#fff";
	}
	
	
	function IE_Refresh(){
		//if (document.all) location.reload();
	}
	window.onresize = IE_Refresh;


// XIST4C Globals
	XIST4C_GLOBALS = {};
// <<


// >> Standard Popup functions
	function StandardPopup(Attrs){
		// @params IE and Gecko-Browser compatible window parameter attributes.
		this.params = ['left', 'top', 'location', 'menubar', 'resizable', 'scrollbars', 'status', 'toolbar', 'height', 'width'];
		this.href = Attrs.href ? Attrs.href : 'http://www.google.de'; // url to the popup content
		this.name = Attrs.name ? Attrs.name : 'standardPopup'; // standard window name
		this.height = Attrs.height ? Attrs.height : '550'; // standard height opened window
		this.width = Attrs.width ? Attrs.width : '650'; // standard width opened window
		this.left = Attrs.left ? Attrs.left : null; // window left position from the upper left corner of the client screen
		this.top = Attrs.top ? Attrs.top : null; // window top position from the top of the client screen
		this.locationbar = Attrs.location ? Attrs.location : 'no'; // ['yes', 'no'] display the locationbar
		this.menubar = Attrs.menubar ? Attrs.menubar : 'no'; // ['yes', 'no'] display the menubar
		this.resizable = Attrs.resizable ? Attrs.resizable : 'yes'; // ['yes', 'no'] allows the user to change the window size
		this.scrollbars = Attrs.scrollbars ? Attrs.scrollbars : 'yes'; // ['yes', 'no'] show scrollbars if necessary
		this.status = Attrs.status ? Attrs.status : 'no'; // ['yes', 'no'] show statusbar
		this.toolbar = Attrs.toolbar ? Attrs.toolbar : 'no'; // ['yes', 'no'] show toolbar
		this.blank = Attrs.blank ? Attrs.blank : false; // ['true', 'false'] show window as popup or blank window
		this.wRef = null // window reference to make changes on the opened windowe
	}
	
	StandardPopup.prototype._formatParams = function()
	{
		var str = '\'';
		var objParam;
		for (var i = 0; i < this.params.length; ++i){
			objParam = this.params[i] == 'location' ? 'locationbar' : this.params[i];
			p = eval("this." + objParam);
			if (p){
				str += this.params[i] + '=' + p + ',';
			}
		}
		str = str.substring(0, str.length -1);
		str += '\'';
		return str;
	}
	
	StandardPopup.prototype.open = function(){
		if (this.blank){
			this.wRef = window.open(this.href);
		}else{
			var paraStr = this._formatParams();
			this.wRef = window.open(this.href, this.name, paraStr);
		}
		if (this.wRef)
			this.wRef.focus();
		return false;
	}
// <<


// >> rss publisher
	RSSPublisher = {
		publishers: false,
		register: function(args){
			this.append(args);
		},
		append: function(args){
			var RSSObj = new RSS();
			RSSObj.target = args.target;
			RSSObj.source = args.source;
			RSSObj.tags = args.tags;
			RSSObj.descLength = args.descLength;
			RSSObj.descLengthEnding = args.descLengthEnding
			RSSObj.pubDateFormat = args.pubDateFormat;
			RSSObj.refresh = args.refresh;
			RSSObj.itemsCount = args.itemsCount ? args.itemsCount : 5;
			if (typeof this.publishers != 'boolean'){
				this.publishers.push(RSSObj);
			}else{
				this.publishers = [RSSObj];
			}
			RSSObj.getSource();
		}
	}
	
	
	function RSS(){
		this.root = DIV(null);
		this.target = null;
		this.source = null;
		this.tags = ['title', 'description'];
		this.descLength = null;
		this.descLengthEnding = 32;
		this.pubDateFormat = 2;
		this.refresh = null;
		this.itemsCount = null;
		this.charCount = 0;
		this.stop = false;
	}
	
	RSS.prototype.getSource = function(){
		this.charCount = 0;
		this.stop = false;
		this.root.innerHTML = '';
		var def = doSimpleXMLHttpRequest(this.source);
		def.addCallbacks(bind('handleSource', this), bind('handleSourceError', this));
		if (this.refresh) callLater(this.refresh, bind('getSource', this));
	}
	
	RSS.prototype.handleSource = function(def){
		var xmlElements = def.responseXML.documentElement;
		var items = xmlElements.getElementsByTagName('item');
		var count = Math.min(items.length, this.itemsCount);
		var tags = this.tags;
		for (var i = 0; i < count; ++i){
			var href = this.getLink(items[i]);
			this.appendElement(this.getItem(items[i], tags, href, i), this.root);
		}
		this.publish();
	}
	
	RSS.prototype.handleSourceError = function(def){
		log(def.message);
		this.target.appendChild(DIV(null, 'Service ist voruebergehend nicht verfuegbar.'));
	}
	
	RSS.prototype.appendElement = function(elm, root){
		if (elm){
			root.appendChild(elm);
			return true;
		}
		return false;
	}
	
	RSS.prototype.cloneXML2DOM = function(src, tar, igRoot, len){
		for (var i = 0; i < src.childNodes.length; i++){
			var node = src.childNodes[i];
			switch (node.nodeType){
				case 1:
					if (! igRoot){
						var newNode = tar.appendChild(document.createElement(node.nodeName));
						for (var j = 0; j < node.attributes.length; j++){
							newNode.setAttribute(node.attributes[j].nodeName, node.attributes[j].nodeValue);
						}
						this.cloneXML2DOM(node, newNode, false, len);
						break;
					}else{
						this.cloneXML2DOM(node, tar, false, len);
						break;
					}
				case 3:
					if (len){
						var text = node.nodeValue;
						if (this.charCount + text.length < len){
							this.charCount += text.length;
						}else{
							var pos = 0;
							var t = '';
							while(1){
								t += text.substr(pos, 1);
								if (t.length + this.charCount >= len){
									var cCode = t.charCodeAt(t.length -1);
									if (cCode == this.descLengthEnding || pos == t.length){
										this.charCount += t.length;
										if (cCode == this.descLengthEnding){
											t += cCode == 32 ? '....' : ' ....';
											this.stop = true;
										}else{
											this.stop = false;
										}
										text = t;
										break;
									}
								}else if(text.length + this.charCount < len){
									var cCode = text.charCodeAt(text.length -1);
									this.charCount += text.length;
									text += cCode == 32 ? '....' : ' ....';
									this.stop = true;
									break;
								}
								pos++;
							}
						}
						subNode = document.createTextNode(text);
					}else{
						subNode = document.createTextNode(node.nodeValue);
					}
				tar.appendChild(subNode);
			}
			if (this.stop){
				this.charCount = 0;
				break;
			}
		}
	}
	
	RSS.prototype.cloneContent = function(src, len){
		var root = DIV(null);
		if (len){
			this.charCount = 0;
			this.stop = false;
		}
		this.cloneXML2DOM(src, root, false, len);
		return root.childNodes;
	}

	RSS.prototype.getFirstNodeMatch = function(nName, parent, type){
		var n = parent.childNodes;
		var nName = nName.toLowerCase();
		type = type ? type : 1;
		for (var i = 0; i < n.length; ++i){
			if (n[i].nodeType == type && n[i].nodeName.toLowerCase() == nName){
				return n[i];
			}
		}
		return false;
	}
	
	RSS.prototype.getLink = function(item){
		var link = this.getFirstNodeMatch('link', item);
		if (link && link.childNodes.length > 0) return link.childNodes[0].nodeValue;
		return false;
	}
	
	RSS.prototype.getItem = function(item, tags, href, count){
		var sty = count % 2 == 0 ? 'item' : 'item odd';
		var itemShell = DIV({'class': sty});
		for (var j = 0; j < tags.length; ++j){
			switch (tags[j]){
				case 'title':
					this.appendElement(this.getTitle(item, href), itemShell);
					break;
				case 'description':
					this.appendElement(this.getDescription(item), itemShell);
					break;
				case 'pubDate':
					this.appendElement(this.getPubDate(item), itemShell);
					break;
			}
		}
		return itemShell;
	}

	RSS.prototype.getTitle = function(item, href){
		var title = this.getFirstNodeMatch('title', item);
		if (title && title.childNodes.length > 0){
			return Layout.getTitle(this.cloneContent(title, false), href);
		}
		return false;
	}
	
	RSS.prototype.getDescription = function(item){
		var description = this.getFirstNodeMatch('description', item);
		if (description && description.childNodes.length > 0) {
			return Layout.getDescription(this.cloneContent(description, this.descLength));
		}
		return false;
	}
	
	RSS.prototype.getPubDate = function(item){
		var pubDate = this.getFirstNodeMatch('pubDate', item);
		if (pubDate && pubDate.childNodes.length > 0) {
			var dateGMT = pubDate.childNodes[0].nodeValue;
			pubDate.childNodes[0].nodeValue = this.formatDate(dateGMT);
			return Layout.getPubDate(this.cloneContent(pubDate, false));
		}
		return false;
	}
	
	RSS.prototype.formatDate = function(dateStr){
		var date = toISODate(new Date(dateStr));
		var time = toISOTime(new Date(dateStr));
		date = date.split('-');
		if (this.pubDateFormat == 1 || this.pubDateFormat == 4){
			var y = (date[0] % 1000);
			date[0] = y < 10 ? '0' + y : y;
			date[1] = Math.abs(date[1]);
			date[2] = Math.abs(date[2]);
			if (this.pubDateFormat == 4) return date[1] + '/' + date[2] + '/' + date[0];
			return date[2] + '.' + date[1] + '.' + date[0];
		}else if(this.pubDateFormat == 2 || this.pubDateFormat == 5){
			if (this.pubDateFormat == 5) return date[1] + '/' + date[2] + '/' + date[0];
			return date[2] + '.' + date[1] + '.' + date[0];
		}else if(this.pubDateFormat == 3 || this.pubDateFormat == 6){
			if (this.pubDateFormat == 6) return date[1] + '/' + date[2] + '/' + date[0] + ' ' + time;
			return date[2] + '.' + date[1] + '.' + date[0] + ' ' + time;
		}else{
			if (this.pubDateFormat == 5) return date[1] + '/' + date[2] + '/' + date[0];
			return date[2] + '.' + date[1] + '.' + date[0];
		}
	}
	
	RSS.prototype.publish = function(){
		$(this.target).innerHTML ='';
		$(this.target).innerHTML = this.root.innerHTML;
	}
	
	Layout = {
		getTitle: function(t, href){
			if (href) t = A({'href': href, 'target': '_blank'}, t);
			return DIV(
				{'class': 'rssElementTitle'},
				H3(null, SPAN(null, t))
			);
		},
		getDescription: function(desc){
			return DIV(
				{'class': 'rssElementDesc'},
				P({'class': 'inner'}, desc)
			);
		},
		getPubDate: function(d){
			return DIV(
				{'class': 'rssElementPubDate'},
				SPAN(null, d)
			);
		}
	}
// <<


