/**
	@name FORCERClass
	@version 0.1
	@copyright 2009 EURIP.com
**/
var FORCERClass = Class.create({
	Version: '0.0.2',
	Browser: {
		IE:     !!(window.attachEvent && !window.opera),
		Opera:  !!window.opera,
		WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,
		Gecko:  navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1,
		MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)
		},

	DefaultContainer: {
		loadingimg:'<div class="sloading"></div>',
		loading:'<div class="sbox_network"><div class="sbox_t">Loading</div>Please wait ...</div>'
		},

//	FORCER Constructor
  initialize: function() {
	  }
	});
//var FORCER = new FORCERClass();


/**
	@name FORCERWindowClass
	@version 0.1.2
	@copyright 2011 EURIP.com
**/
var FORCERWindowClass = Class.create(FORCERClass,{
	Version: '0.1.2',

	Config: {
		folderImages:'/jslib/forcer/data/',
		divLoading:'<div class="sloading"></div>',
		defaultCFG:{title:'Info Window',sizeX:400,sizeY:200,layout:'xp',timer:false,fade:true,fadeColor:'#000',fadeOpacity:0.7,close:true,drag:false,resize:false,fullscreen:false,maxscreen:false,scroll:true,buttons:[],button:''}
		},

	Template: {
		"alert":new Template('<div class="sbox_error"><div class="sbox_t">#{datatitle}</div>#{databody}</div>'),
		"button":new Template('<button type="button" onClick="#{link}" style="margin:20px 20px 0 0">#{name}</button>'),
		"iframe":new Template('<iframe src="#{dataurl}" name="forcerwindowoverlayiframe" width="100%" height="100%" scrolling="auto" marginheight="0" marginwidth="0" frameborder="0"><img scr="/imglib/loading/28.gif"></iframe>'),
		"image":new Template('<div class="imagebox sloading" id="forcerwindowoverlayimagediv" style=\"width:100%;height:100%\"><h1 id="forcerwindowoverlayimagetitle">#{datatitle}</h1><p id="forcerwindowoverlayimagedesc">#{datadesc}</p><img id="forcerwindowoverlayimage" src="/imglib/blank.gif"></div>'),
		"prompt":new Template('<div id="forcerwindowoverlaybody">#{databody}</div>'),
		"article":new Template('<div class="glassblank" style="background-color:rgba(255,255,255,.9);width:inherit;height:inherit"><div id="forcerwindowoverlayarticletitle" class="glassblank" style="font-weight:bold;padding:0 0 0 20px;color:#fff;background-color:rgba(0,0,0,.8)">#{datatitle}</div><div id="forcerwindowoverlayarticlebody" style="width:100%;height:90%;overflow:auto">#{databody}</div>'),

		"t-chat":new Template('<div id="forcerwindowoverlaybox" class="css3shadowboxwhite css3radius" style="width:inherit;height:inherit;color:#000000;font-size:10pt;font-weight:normal;text-align:left;background-color:#{bgcolor};border:#{bordercolor} 1px solid"><div id="forcerwindowoverlaytop" class="css3radiust css3gradient" style="width:inherit;height:18px;padding-top:2px;color:#ffffff;font-size:10pt;font-weight:bold;background-color:#{topcolor}">&nbsp;&bull;&nbsp;<span id ="forcerwindowoverlaytitle">#{title}</span></div><div id="forcerwindowoverlaybody" style="width:inherit;height:(inherit-18px);overflow:auto;text-align:left"></div></div>'),

		"t-glass":new Template('<div id="forcerwindowoverlaybox" class="glasswhite" style="width:inherit;height:inherit;color:#000000;font-size:10pt;font-weight:normal;text-align:left"><div id="forcerwindowoverlaytop" class="glassblank" style="width:inherit;height:18px;padding-top:2px;color:#ffffff;font-size:10pt;font-weight:bold;background-color:#{topcolor}">&nbsp;&bull;&nbsp;<span id ="forcerwindowoverlaytitle">#{title}</span></div><div id="forcerwindowoverlaybody" style="width:inherit;height:calc(inherit-18px);overflow:auto;text-align:left"></div></div>'),

		"t-xp":new Template('<div id="forcerwindowoverlaybox" class="css3shadowboxwhite css3radius" style="width:inherit;height:inherit;color:#000000;font-size:10pt;font-weight:normal;text-align:left;background-color:#{bgcolor};border:#{bordercolor} 1px solid"><div id="forcerwindowoverlaytop" class="css3radiust css3gradient" style="width:inherit;height:18px;padding-top:2px;color:#ffffff;font-size:10pt;font-weight:bold;background-color:#{topcolor}">&nbsp;&bull;&nbsp;<span id ="forcerwindowoverlaytitle">#{title}</span></div><div id="forcerwindowoverlaybody" style="width:inherit;height:(inherit-18px);overflow:auto;text-align:center"></div></div>'),
		"t-blank":new Template('<div id="forcerwindowoverlaybox" style="width:inherit;height:inherit;color:#000000;font-size:10pt;font-weight:normal;text-align:left;overflow:hidden"><div id="forcerwindowoverlaybody" style="width:inherit;height:inherit;overflow:hidden"></div></div>')
		},

	Layout: {
		"glass":['glass','#000000','#aaaaaa','#000000'],
		"xp":['xp','#000000','#444444','#ffffff'],
		"xpred":['xp','#ff794a','#9a0000','#ffa4a4'],
		"xpgreen":['xp','#9afe66','#357d19','#cdffcc'],
		"xpblue":['xp','#3e99df','#003399','#afd8ff'],
		"xpyellow":['xp','#ffff01','#ffcc00','#feff99'],
		"xpgrey":['xp','#000000','#444444','#dedede'],
		"blank":['blank','#000000','#444444','#ffffff'],
		"chat":['chat','#ffff01','#ffcc00','#feff99']
		},

	ObjStatus: {
		overlayLayer:false,
		overlayLayerFadeIn:false,
		overlayLayerFadeClick:false,
		overlayContainer:false,
		overlayContainerDrag:false,
		overlayContainerTimer:false,
		overlayContent:false,
		imgObj:false,
		imgLoader:false
		},

//	FORCERWindow Constructor
  initialize: function() {
	  },

//	FORCERWindow.Alert(msg,config)
	Alert: function(databody,datacfg) {
		datacfg = this._parseConfig(datacfg);
		if (typeof(databody) != 'string') databody = '';
		this.OverlayLoadTemplate(datacfg);
		this.OverlaySetBody(databody+this._parseButtons(datacfg));
		this.OverlayContainerShow(datacfg);
		return true;
		},

//	FORCERWindow.OpenUrl(datatitle,dataurl,datacfg)
	OpenUrl: function(datatitle,dataurl,datacfg) {
		if (typeof(dataurl) != 'string')	return false;
		if (typeof(datatitle) != 'string')	datatitle = 'URL: '+dataurl;
		datacfg.title= datatitle;
		datacfg.resize = true;
		datacfg = this._parseConfig(datacfg);
		this.OverlayLoadTemplate(datacfg);
		this.OverlaySetBody(FORCERWindow.Template.iframe.evaluate({"dataurl":dataurl}));
		this.OverlayContainerShow(datacfg);
		return true;
		},

//	FORCERWindow.OpenImage(datatitle,dataurl,datadesc,datacfg)
	OpenImage: function(datatitle,dataurl,datadesc,datacfg) {
		if (typeof(dataurl) != 'string')	return false;
		if (typeof(datatitle) != 'string')	datatitle = 'Picture: '+dataurl;
		datacfg = this._parseConfig(datacfg);
		this.OverlayLoadTemplate(datacfg);
		this.OverlaySetBody(FORCERWindow.Template.image.evaluate({"datatitle":datatitle,"datadesc":datadesc}));
		this.OverlayContainerShow(datacfg);
		this.ObjStatus.imgObj = new Image();
		this.ObjStatus.imgLoader = this.ObjStatus.imgObj.on("load", this._OpenImageLoaded.bind(this));
		this.ObjStatus.imgObj.src = dataurl;
		return;
		},

//	FORCERWindow._OpenImageLoaded()
	_OpenImageLoaded: function() {
		this.ObjStatus.imgLoader.stop();
		this._setSize(this.ObjStatus.imgObj.width+22,this.ObjStatus.imgObj.height+45);
		$('forcerwindowoverlayimage').writeAttribute({'src':this.ObjStatus.imgObj.src});
		},

//	FORCERWindow.openPrompt(datatitle,databody,datacfg)
	openPrompt: function(datatitle,databody,datacfg) {
		if (typeof(databody) != 'string')	databody = '';
		if (typeof(datatitle) != 'string')	datatitle = 'Prompt';
		datacfg.title= datatitle;
		datacfg = this._parseConfig(datacfg);

		this.OverlayLoadTemplate(datacfg);
		this.OverlaySetBody(FORCERWindow.Template.prompt.evaluate({"databody":databody})+this._parseButtons(datacfg));
		this.OverlayContainerShow(datacfg);
		return true;
		},

//	FORCERWindow.OpenArticle(datatitle,datadesc,datacfg)
	OpenArticle: function(datatitle,databody,datacfg) {
		if (typeof(datatitle) != 'string')	datatitle = 'Artikel';
		if (typeof(databody) != 'string')	databody = '';
		datacfg.title = datatitle;
		datacfg.layout = 'blank';
		datacfg.maxscreen = true;
		datacfg.buttons = "close";
		datacfg = this._parseConfig(datacfg);
		this.OverlayLoadTemplate(datacfg);
		this.OverlaySetBody(FORCERWindow.Template.article.evaluate({"datatitle":datatitle,"databody":databody})+this._parseButtons(datacfg));
		this.OverlayContainerShow(datacfg);
		return true;
		},

//		FORCERWindow.OpenUploadBar(datamsg,datamodus,databt)
	OpenUploadBar: function(datamsg,datamodus,databt) {
		this.openPrompt('Upload in Progress','<div class="sbox_network"><div class="sbox_t">Upload in Progress</div>'+datamsg+'<br><div id=\"OverlayUploadProgress\" class=\"progressBarflash\"></div></div>',{'layout' : 0, 'fade' : true, 'close' : false, 'sizeX' : 500, 'sizeY' : 200});
		return true;
		},

//	FORCERWindow.OpenAlert(datamsg,datamodus)
	OpenAlert: function(datamsg,datamodus) {
		switch (datamodus) {
			case "error5":this.openPrompt('Error','<div class="sbox_error"><div class="sbox_t">Error</div>'+datamsg+'</div>',{"timer":5,"layout":'xpred',"fade":true,"sizeX":400,"sizeY":170});break;
			case "error":this.openPrompt('Error','<div class="sbox_error"><div class="sbox_t">Error</div>'+datamsg+'</div>',{"layout":'xpred',"fade":true,"sizeX":400,"sizeY":170,"buttons":"ok"});break;
			case "load":this.openPrompt('Loading','<div class="sbox_network"><div class="sbox_t">Loading</div>'+datamsg+'</div>',{"layout":'xp',"fade":true,"close":false,"sizeX":400,"sizeY":170});break;
			case "upload":this.openPrompt('Uploading','<div class="sbox_save"><div class="sbox_t">Uploading</div>'+datamsg+'</div>',{"layout":'xp',"fade":true,"close":false,"sizeX":400,"sizeY":170});break;
			case "saving":this.openPrompt('Saving','<div class="sbox_save"><div class="sbox_t">Saving</div>'+datamsg+'</div>',{"layout":'xp',"fade":true,"close":false,"sizeX":400,"sizeY":170});break;
			case "wait":this.openPrompt('Please wait','<div class="sbox_network"><div class="sbox_t">Please wait</div>'+datamsg+'</div>',{"layout":'xp',"fade":true,"close":false,"sizeX":400,"sizeY":170});break;
			case "success":	this.openPrompt('Successful','<div class="sbox_success"><div class="sbox_t">Successful</div>'+datamsg+'</div>',{"layout":'xpgreen',"fade":true,"close":false,"sizeX":400,"sizeY":170,"buttons":'ok'});break;
			case "success5":this.openPrompt('Successful','<div class="sbox_success"><div class="sbox_t">Successful</div>'+datamsg+'</div>',{"timer":5,"layout":'xpgreen',"fade":false,"close":false,"sizeX":400,"sizeY":170,"buttons":'ok'});break;
			default:this.openPrompt('Info',datamsg,{"layout":'xpblue',"fade":true,"sizeX":400,"sizeY":170,"buttons":'ok'});break;
			}
		return true;
		},

//	FORCERWindow OverlayLoadTemplate
	OverlayLoadTemplate: function(datacfg) {
		this.OverlayContainerInit(datacfg);
		if (this.ObjStatus.overlayContainer) {
			this.OverlayResetTemplate();
			if (this.Layout[datacfg.layout]) {var localLayout = this.Layout[datacfg.layout];}
			else {var localLayout = this.Layout['xp'];}
			
			var evaldata = Object.extend(datacfg,{'bordercolor':localLayout[1],'topcolor':localLayout[2],'bgcolor':localLayout[3]});
			
			this.OverlaySetContainer(this.Template['t-'+localLayout[0]].evaluate(evaldata));
			if (datacfg.drag && !datacfg.fullscreen)  {
				this.ObjStatus.overlayContainerDrag = new Draggable('forcerwindowoverlaycontainer',{handle:'forcerwindowoverlaytop'});
				try {$('forcerwindowoverlaytop').setStyle({cursor:'move'});}
				catch(e) {}
				}
			if (datacfg.resize && !datacfg.fullscreen)  {
				this.ObjStatus.overlayContainer.setStyle({"resize":'both'});
				}
			if (datacfg.close)  {
				this.ObjStatus.overlayContainer.insert({"top":'<img src="'+this.Config.folderImages+'close.gif" style="position:absolute;right:1px;top:1px;cursor:pointer;z-index:9999" onClick="FORCERWindow.OverlayContainerHide()">'});
				}
			return true;
			}
		return false;
		},

//	FORCERWindow OverlayContainerShow()
	OverlayContainerShow: function(datacfg) {
		if (!this.ObjStatus.overlayContainer) {	return false;}
		if (datacfg.fade) {this.OverlayLayerFadeIn(datacfg);}
		else {this.OverlayLayerFadeOut();}
		this._setSize(datacfg.sizeX,datacfg.sizeY);
		this.ObjStatus.overlayContainer.show();
		if (datacfg.timer && typeof(datacfg.timer)=='number')  {
			window.setTimeout('FORCERWindow.OverlayContainerHide();',(datacfg.timer*1000));
			}
		return true;
		},

//	FORCERWindow.OverlayContainerHide()
	OverlayContainerHide: function() {
		if (this.ObjStatus.overlayContainer)  {
			this.ObjStatus.overlayContainer.hide();
			this.OverlayResetTemplate();
			}
		this.OverlayLayerFadeOut();
		},

//	FORCERWindow.OverlaySetContainer()
	OverlaySetContainer: function(content) {
		try {this.ObjStatus.overlayContainer.update(content);}
		catch(e) {}
		},

//	FORCERWindow.OverlaySetTitle()
	OverlaySetTitle: function(content) {
		try {$('forcerwindowoverlaytitle').update(content);}
		catch(e) {}
		},

//	FORCERWindow.OverlaySetBody()
	OverlaySetBody: function(content) {
		try {$('forcerwindowoverlaybody').update(content);}
		catch(e) {}
		},

//	FORCERWindow.OverlayLayerFadeIn()
	OverlayLayerFadeIn: function(datacfg) {
		if (this.ObjStatus.overlayLayerFadeIn)  {return false;}
			this.ObjStatus.overlayLayerFadeIn = true;
			var arrayPageSize = this.getPageSize();
			$$('select','object','embed').each(function(node){node.style.visibility='hidden';});
			if (!this.ObjStatus.overlayLayer)  {
				$$('body')[0].appendChild(new Element("div",{"id":'forcerwindowoverlay',"class":'css3trans',"style":'position:absolute;top:0;left:0;z-index:99;width:'+arrayPageSize[0]+'px;height:'+arrayPageSize[1]+'px;background-color:'+datacfg.fadeColor}));
				this.ObjStatus.overlayLayer = $('forcerwindowoverlay');
				this.ObjStatus.overlayLayer.hide();
				}
			else  {
				this.ObjStatus.overlayLayer.setStyle({"backgroundColor":datacfg.fadeColor,"width":arrayPageSize[0]+'px',"height":arrayPageSize[1]+'px'});
				}
			if (datacfg.close)  {
				this.ObjStatus.overlayLayerFadeClick = this.ObjStatus.overlayLayer.on("click",this.OverlayContainerHide.bind(this));
				}
			else if (this.OverlayContainerHideB) {
				this.ObjStatus.overlayLayerFadeClick.stop();
				}
			this.ObjStatus.overlayLayer.show();
			this.ObjStatus.overlayLayer.setOpacity(datacfg.fadeOpacity);
			return true;
			},

//	FORCERWindow.OverlayLayerFadeOut()
	OverlayLayerFadeOut: function() {
		if (!this.ObjStatus.overlayLayer || !this.ObjStatus.overlayLayerFadeIn)  {return false;}
		this.ObjStatus.overlayLayerFadeIn = false;
		this.ObjStatus.overlayLayer.hide();
		$$('select','object','embed').each(function(node){node.style.visibility='visible';});
		return true;
		},

//	FORCERWindow.OverlayResetTemplate()
	OverlayResetTemplate: function() {
		if (this.ObjStatus.overlayContainerDrag) {
			this.ObjStatus.overlayContainerDrag.destroy();
			this.ObjStatus.overlayContainerDrag = false;
			}
		if (this.ObjStatus.overlayContainer) {
			this.ObjStatus.overlayContainer.update();
			}
		return true;
		},

//	FORCERWindow.OverlayContainerInit()
	OverlayContainerInit: function(datacfg) {
		var arrayWindowSize = this.getWindowSize();
		var arrayPagePosition = [((arrayWindowSize[0]-datacfg.sizeX)/2),((arrayWindowSize[1]-datacfg.sizeY)/2)];
		if (!this.ObjStatus.overlayContainer)  {
			var objBody = $$('body')[0];
			objBody.appendChild(new Element("div",{"id":'forcerwindowoverlaycontainer',"class":'css3trans',"style":'position:fixed;left:'+(arrayPagePosition[0])+'px;top:'+(arrayPagePosition[1])+'px;z-index:999;width:'+datacfg.sizeX+'px;height:'+datacfg.sizeY+'px',"display":'none',"text-align":'left'}));
			this.ObjStatus.overlayContainer = $('forcerwindowoverlaycontainer');
			}
		else {
			this.ObjStatus.overlayContainer.setStyle({"left":arrayPagePosition[0]+'px',"top":arrayPagePosition[1]+'px'});
			}
		return true;
		},

//	FORCERWindow._parseButtons(datacfg)
	_parseButtons: function(datacfg) {
		if (typeof(datacfg.buttons) == "object" && datacfg.buttons.length > 0) {
			var str = '<center>';
			for (var i = 0; i < datacfg.buttons.length; i++) {
				if (datacfg.buttons[i].link == 'close') {datacfg.buttons[i].link = 'FORCERWindow.OverlayContainerHide()';}
				str += FORCERWindow.Template.button.evaluate(datacfg.buttons[i]);
				};
			str += '</center>';
			return str;
			}
		return '';
		},	  

//	FORCERWindow._setSize(w,h)
	_setSize: function(w,h) {
		var currentSize = [this.ObjStatus.overlayContainer.getWidth(),this.ObjStatus.overlayContainer.getHeight()];
		if (currentSize[0] != w || currentSize[1] != h)  {
			var arrayWindowSize = this.getWindowSize();
			var arrayPagePosition = [((arrayWindowSize[0]-w)/2),((arrayWindowSize[1]-h)/2)];
			this.ObjStatus.overlayContainer.setStyle({"width":w+'px',"left":arrayPagePosition[0]+'px',"height":h+'px',"top":arrayPagePosition[1]+'px'});
			}
		return true;
		},	  

//	FORCERWindow._parseConfig(config)
	_parseConfig: function(config) {
		if (typeof(config) != 'object' || config.length == 0)	{return this.Config.defaultCFG;}
		var data = $H(this.Config.defaultCFG).merge(config).toObject();
		if (data.fullscreen || data.maxscreen)  {
			var WindowSize = this.getWindowSize();
			data.sizeX = (WindowSize[0]-50);
			data.sizeY = (WindowSize[1]-50);
			if (data.maxscreen && data.sizeX > 980)  {data.sizeX = 980;}
			}
		if (typeof(data.buttons) == 'string')  {
			switch (data.buttons) {
				case "close": data.buttons = [{"name":'schließen',"link":'close'}];break;
				case "ok":	data.buttons = [{"name":'ok',"link":'close'}];break;
				default: data.buttons = [{"name":'ok',"link":'close'}];break;
				}
			}
		return data;
		},	  

//	FORCERWindow.getScrollSize()
	getScrollSize: function() {
		if (window.innerHeight && window.scrollMaxY) {
			return[window.innerWidth + window.scrollMaxX,window.innerHeight + window.scrollMaxY];
			}
		else if (document.body.scrollHeight > document.body.offsetHeight) {
			return[document.body.scrollWidth,document.body.scrollHeight];
			}
		return [document.body.offsetWidth,document.body.offsetHeight];
		},

//	FORCERWindow.getWindowSize()
	getWindowSize: function() {
		var windowWidth, windowHeight;
		if (self.innerHeight) {
			windowWidth = (document.documentElement.clientWidth) ? document.documentElement.clientWidth : self.innerWidth;
			windowHeight = self.innerHeight;
			}
		else if (document.documentElement && document.documentElement.clientHeight) {
			windowWidth = document.documentElement.clientWidth,windowHeight = document.documentElement.clientHeight;
			}
		else if (document.body) {
			windowWidth = document.body.clientWidth,windowHeight = document.body.clientHeight;
			}	
		return [windowWidth,windowHeight];
		},

//	FORCERWindow.getPageSize()
	getPageSize: function() {
		var ScrollSize = this.getScrollSize(),WindowSize = this.getWindowSize();
		return [(ScrollSize[0]<WindowSize[0])?ScrollSize[0]:WindowSize[0],(ScrollSize[1]<WindowSize[1])?WindowSize[1]:ScrollSize[1]];
		}
	});
var FORCERWindow = new FORCERWindowClass();


/**
	@name FORCERAjax
	@version 0.1
	@copyright 2011 EURIP.com
**/
var FORCERAjaxClass = Class.create(FORCERClass,{
	Version: '0.1.1',

	Config: {
		contentModus:'text'
		},

//	FORCERAjax.RequestData(datamodus,dataurl,datacfg,funcSuccess,funcFailure,infoMode)
	RequestData: function(datamodus,dataurl,datacfg,funcSuccess,funcFailure,infoMode) {
		datacfg = this.parseDataCfg(datacfg);
		if (infoMode == 'overlay')  {
			FORCERWindow.OpenAlert('Please wait ...','load');
			}
		else if (typeof(infoMode) == 'string')  {
			$(infoMode).update('<div class="sbox_network"><div class="sbox_t">Loading</div>Please wait ...</div>');
			}
		new Ajax.Request(dataurl, {
			method: datacfg.method,
			parameters: datacfg.parameters.toQueryString(),
			contentType: datacfg.contentType,
			encoding: datacfg.encoding,
			postBody: datacfg.postBody,
			onSuccess: function(transport) {
				if (infoMode == 'overlay')  {FORCERWindow.OverlayContainerHide();}
			  if (typeof(funcSuccess)=="string")  {eval(funcSuccess+'(transport)');}
			  },
			onFailure: function(transport) {
				if (infoMode == 'overlay')  {FORCERWindow.OpenAlert('Cannot load information ... please try again later ...','error');}
			  if (typeof(funcFailure)=="string")  {eval(funcFailure+'(transport)');}
			  }
			});
	  },



//	FORCERAjax.UpdateDiv(datacontainer,dataurl,datacfg,funcSuccess,funcFailure,infoMode)
	UpdateDiv: function(datacontainer,dataurl,datacfg,funcSuccess,funcFailure,infoMode) {
		try {container = $(datacontainer);}
		catch (e)  {container=false;}
		if (!container)  {alert('datacontainer missing: ' + datacontainer);return false;}
		datacfg = this.parseDataCfg(datacfg);
		if (infoMode == 'div')  {container.update(this.DefaultContainer.loading);}
		else if (infoMode == 'divimg')  {container.update(this.DefaultContainer.loadingimg);}
		else if (infoMode == 'overlay')  {FORCERWindow.OpenAlert('Loading content, please wait ...','load');}
		new Ajax.Request(dataurl, {
			method: datacfg.method,
			parameters: datacfg.parameters.toQueryString(),
			contentType: datacfg.contentType,
			encoding: datacfg.encoding,
			postBody: datacfg.postBody,
			onSuccess: function(transport) {
				container.update(transport.responseText);
				if (infoMode == 'overlay')  {FORCERWindow.OverlayContainerHide();}
				if (typeof(funcSuccess)=="string")  {eval(funcSuccess+'(transport)');}
				},
			onFailure: function(transport) {
				if (infoMode == 'div')  {container.update('<div class="sbox_error"><div class="sbox_t">Error</div>UpdateDiv Error</div>');}
				else if (infoMode == 'divimg')  {container.update();}
				else if (infoMode == 'overlay')  {FORCERWindow.OpenAlert('UpdateDiv Error','error');}
				if (typeof(funcFailure)=="string")  {eval(funcFailure+'(transport)');}
				}
			});
	  },


//	FORCERAjax.sendForm(dataform,funcSuccess,funcFailure,infoMode)
	sendForm: function(dataform,funcSuccess,funcFailure,infoMode) {
		if (typeof(infoMode)=="string") {
			if (infoMode=='overlay') {FORCERWindow.OpenAlert('Please wait while sending data ...','wait');}
			else {
				try {$(infoMode).update(this.DefaultContainer.loadingimg);}
				catch(e) {}
				}
			}
		$(dataform).request({
			onSuccess: function(transport) {
				if (infoMode == 'overlay')  {FORCERWindow.OverlayContainerHide();}
			  if (typeof(funcSuccess)=="string")  {eval(funcSuccess+'(transport)');}
				},
			onFailure: function(transport) {
				if (infoMode == 'overlay')  {FORCERWindow.OpenAlert('Cannot send data ... please try again later ...','error');}
			  if (typeof(funcFailure)=="string")  {eval(funcFailure+'(transport)');}
				}
			});
	  },

//	FORCERAjax parseDataCfg
	parseDataCfg: function(datacfg) {
		if (typeof(datacfg) != 'object') datacfg = {};
		if (typeof(datacfg.asynchronous) != 'boolean')	datacfg.asynchronous = true;
		if (typeof(datacfg.contentModus) != 'string')	datacfg.contentModus = 'text';
		if (typeof(datacfg.contentType) != 'string')	datacfg.contentType = 'application/x-www-form-urlencoded';
		if (typeof(datacfg.encoding) != 'string')		datacfg.encoding = 'UTF-8';
		if (typeof(datacfg.method) != 'string')		datacfg.method = 'post';
		if (typeof(datacfg.parameters) != 'object')	datacfg.parameters = $H();
		if (typeof(datacfg.postBody) != 'string')		datacfg.postBody = '';
//		if (typeof(datacfg.postBody) != 'string')				datacfg.postBody = None;
//		if (typeof(datacfg.evalJS) != 'boolean')				datacfg.evalJS = true;
//		if (typeof(datacfg.evalJSON) != 'boolean')			datacfg.evalJSON = true;
//		if (typeof(datacfg.sanitizeJSON) != 'boolean')	datacfg.sanitizeJSON = true;
//		if (typeof(datacfg.requestHeaders) != 'string')	datacfg.requestHeaders = 'See text';
		return datacfg;
		},



//	FORCERAjax.parseResultData(dataresponse,datamodus,delimiter,response)



	parseResultData: function(response,datamodus,delimiter) {
		var result;
		var filedata;
		var fileroot;
		var tempdata;

		if (datamodus=='xml')  {
			result = [];
			filedata = response.responseXML;
			if (typeof(filedata)!='object')	{return false;}
			fileroot = filedata.getElementsByTagName(delimiter);
			for (var i = 0; i < fileroot.length; i++) {
				tempdata = fileroot[i];
				result[i] = {};
				for (var j = 0; j < tempdata.childNodes.length; j++) {
					with (tempdata.childNodes[j]) {
						if (firstChild && typeof(firstChild.nodeValue)=='string')  {
							result[i][nodeName] = firstChild.nodeValue;
							}
						}
					}
				}
			}

		else if (datamodus=='csv')  {
			result = [];
			filedata = this.obj.responseText;
			if (typeof(filedata)=='undefined')	{return false;}
			tempdata = filedata.split('\n');
			for (var i = 0; i < tempdata.length; i++) {
				result[i] = tempdata[i].split(delimiter);
				}
			}
		else  {
			result = this.obj.responseText;
			if (typeof(result)=='undefined')	{return '';}
			}

	
  return result;
	}





	});
var FORCERAjax = new FORCERAjaxClass();





















/**
	@name FORCERFormClass
	@version 0.2
	@copyright 2011 EURIP.com
**/
var FORCERFormClass = Class.create({

//	Constructor
	initialize: function() {
		},

//	setFieldOk
	setFieldOk: function(fieldid) {
		var field = $(fieldid),fieldmsg = $('msg'+fieldid);
		if (field) {
			field.removeClassName('error');field.addClassName('ok');
			if (fieldmsg) {fieldmsg.style.display = "none";}
			}
		},

//	setFieldError
	setFieldError: function(fieldid) {
		var field = $(fieldid),fieldmsg = $('msg'+fieldid);
		if (field) {
			field.removeClassName('ok');field.addClassName('error');
			if (fieldmsg) {fieldmsg.style.display = "block";}
			}
		},

//	resetFieldStatus
	resetFieldStatus: function(fieldid) {
		var field = $(fieldid),fieldmsg = $('msg'+fieldid);
		if (field) {
			field.removeClassName('ok');field.removeClassName('error');
			if (fieldmsg = $('msg'+fieldid)) {fieldmsg.style.display = "none";}
			}
		},

//	CheckFieldEmpty()
	CheckFieldEmpty: function(fieldid) {
		var field = $F(fieldid);fieldmsg = $('msg'+fieldid);
		if (typeof(field)=='string') {
			if (field.length < 2)  {
				if (fieldmsg) {FORCERWindow.OpenAlert(fieldmsg.innerHTML,'error','ok');}
				else {FORCERWindow.OpenAlert('Please fill out the field','error','ok');}
				try  {$(fieldid).focus();}
				catch(e)	{}
				return true;
				}
			}
		return false;
		},

//	CheckFieldEmail()
	CheckFieldEmail: function(fieldid) {
		var field = $F(fieldid);fieldmsg = $('msg'+fieldid);
		if (typeof(field)=='string') {
			if (!FORCERString.isEmail(field))  {
				if (fieldmsg) {FORCERWindow.OpenAlert(fieldmsg.innerHTML,'error','ok');}
				else {FORCERWindow.OpenAlert('Please insert correct email-address','error','ok');}
				try  {$(fieldid).focus();}
				catch(e)	{}
				return true;
				}
			}
		return false;
		},

//	CheckFieldNice()
	CheckFieldNice: function(fieldid) {
		var field = $F(fieldid);fieldmsg = $('msg'+fieldid);
		if (typeof(field)=='string') {
			if (!FORCERString.isNice(field))  {
				if (fieldmsg) {FORCERWindow.OpenAlert(fieldmsg.innerHTML,'error','ok');}
				else {FORCERWindow.OpenAlert('Please insert name without special chars','error','ok');}
				try  {$(fieldid).focus();}
				catch(e)	{}
				return true;
				}
			}
		return false;
		},

//	AjaxObserver
	AjaxObserver: function(fieldid,ajaxurl,ajaxfield,ajaxpara,funcSuccess,funcFailure,valueCheck) {
		var field = $(fieldid);
		if (field) {
			new Form.Element.Observer(fieldid,10,function(el,value) {
				if (el.present())  {
					if (typeof(valueCheck)=="string" && valueCheck=="email" && !FORCERString.isEmail(value))  {return;}
					var ajaxcfg = {parameters:ajaxpara};
					ajaxcfg.parameters.set('o','boolean');
					ajaxcfg.parameters.set(ajaxfield,value);
					FORCERAjax.RequestData('json',ajaxurl,ajaxcfg,funcSuccess,funcFailure,false);
					}
				else  {
					FORCERForm.resetFieldStatus(el.id);
					}
				});
			}
		},

//	function: AjaxObserverAnswerCheck
	AjaxObserverAnswerCheck: function(data,funcSuccess,funcFailure,funcAbort) {
		var result = data.responseText.evalJSON(true);
		if (typeof(result) == 'boolean')  {
			if (result)  {
				if (typeof(funcSuccess)=="string")  {eval(funcSuccess+'()');}
				}
			else  {
				if (typeof(funcFailure)=="string")  {eval(funcFailure+'()');}
				}
			}
		else if (typeof(funcAbort)=="string")  {eval(funcAbort+'()');}
		}
	});
var FORCERForm = new FORCERFormClass();




/**
	@name FORCERStringClass
	@version 0.2
	@copyright 2011 EURIP.com
**/
var FORCERStringClass = Class.create({

//	Constructor
	initialize: function() {
		},

//	isNice
	isNice: function(data) {
		regex = /^([öüäÖÄÜa-zA-Z0-9_\.\-\ ])+$/;
		return (regex.test(data)) ? true : false;
		},

//	FORCER isEmail
	isEmail: function(email) {
		regex = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		return (regex.test(email)) ? true : false;
		}
	});
var FORCERString = new FORCERStringClass();

