/**
	@name FORCERClass
	@version 0.1
	@copyright 2009 EURIP.com
**/
var FORCERClass = Class.create({
	Version: '0.0.1',
	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/)
		},

	Config: {libraryCount: 0},


	DivContainer: {
		ok: '<div class="box_msg_ok">###</div>',
		error: '<div class="box_msg_error">###</div>',
		loading: '<div class="box_msg_loading">###</div>',
		uploading: '<div class="box_msg_uploading">###</div>',
		saving: '<div class="box_msg_saving">###</div>',
		system: '<div class="box_msg_system">###</div>'
		},


//	FORCER Constructor
  initialize: function() {
	  },

//	function: FORCER.loadLibrary(libraryName,callFunc)
	loadLibrary: function(libraryName,callFunc) {
		var head = document.getElementsByTagName('head')[0];
		var script = document.createElement('script');
		script.type= 'text/javascript';
   	script.onreadystatechange = function () {
  		alert('readyState: '+this.readyState);
   		if (this.readyState == 'complete' && typeof(callFunc) == 'string') eval(callFunc);
			}
		script.onload = eval(callFunc);
		script.src= libraryName;
		head.appendChild(script);
	  }
	});
var FORCER = new FORCERClass();














/**
	@name FORCERWindowClass
	@version 0.1
	@copyright 2009 EURIP.com
**/
var FORCERWindowClass = Class.create({
	Version: '0.0.1',

	Config: {
		folderImages:'/jslib/forcer/data/',
		overlayContentX:400,
		overlayContentY:200,
		overlayFade:true,
		overlayFadeOpacity:0.7,
		overlayFadeDuration:1,
		overlayFadeColor:'#000',
		overlayLayout:0
		},

	Layout: [	// Name, NameTemplate, NameImage, ColorBorder, ColorBG
		['defaultxp','yp','default','#444444','#ffffff'],
		['defaultborder','border','default','#444444','#ffffff'],
		['defaultblank','blank','default','#444444','#ffffff'],
		['xpgrey','yp','grey','#ff0000','#ffffff'],
		['xpred','yp','red','#9a0000','#ffa4a4'],
		['xpgreen','yp','green','#357d19','#ffffff'],
		['xpblue','yp','blue','#0000ff','#ffffff'],
		['xpyellow','yp','yellow','#0000ff','#ffffff'],
		['bordergrey','border','default','#ff0000','#ffffff'],
		['borderred','border','default','#9a0000','#ffffff'],
		['bordergreen','border','default','#357d19','#ffa4a4'],
		['borderblue','border','default','#0000ff','#ffffff'],
		['borderyellow','border','default','#0000ff','#ffffff'],
		['blankgrey','blank','default','#ff0000','#ffffff'],
		['blankred','blank','default','#357d19','#ffa4a4'],
		['blankgreen','blank','default','#357d19','#ffffff'],
		['blankblue','blank','default','#0000ff','#ffffff'],
		['blankyellow','blank','default','#0000ff','#ffffff']
		],

	ObjStatus: {
		overlayLayer:false,
		overlayLayerFadeIn:false,
		overlayContainer:false,
		overlayContainerDrag:false,
		overlayContainerTimer:false,
		overlayContent:false
		},

	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/)
		},

//	FORCERWindow Constructor
  initialize: function() {
	  },

//	FORCERWindow OpenWindow
	OpenUrl: function(datatitle,dataurl,datacfg) {
		datacfg = this.parseDataCfg(datacfg);
		if (typeof(datatitle) != 'string')	datatitle = false;
		if (typeof(databody) != 'string')		databody = false;

		if (datacfg.fade) {this.OverlayLayerFadeIn(datacfg);}
		else {this.OverlayLayerFadeOut();}

		this.OverlayContainerInit(datacfg);
		this.OverlayLoadTemplate(datacfg);
		this.OverlaySetTitle(datatitle);
		this.OverlaySetBody('<iframe src="'+dataurl+'" name="forcerwindowoverlayiframe" width="100%" height="100%" scrolling="yes" marginheight="0" marginwidth="0" frameborder="0"></iframe>');
		this.OverlayContainerShow(datacfg);
		return;

		},


//	FORCERWindow.OpenImage(datatitle,dataurl,datadesc,datacfg)
	OpenImage: function(datatitle,dataurl,datadesc,datacfg) {
		datacfg = this.parseDataCfg(datacfg);
		if (typeof(datatitle) != 'string')	datatitle = 'Image';
		if (typeof(datadesc) != 'string')		databody = '';

		if (datacfg.fade) {this.OverlayLayerFadeIn(datacfg);}
		else {this.OverlayLayerFadeOut();}

		this.OverlayContainerInit(datacfg);
		this.OverlayLoadTemplate(datacfg);
		this.OverlaySetTitle(datatitle);
		this.OverlaySetBody('<div style=\"background:url(/imglib/loading/28.gif) center center no-repeat;width:100%;height:100%;overflow:hidden\" id=\"forcerwindowoverlayimagediv\" onClick=\"FORCERWindow.OverlayContainerHide()\"><img src=\"'+dataurl+'\" alt=\"'+datatitle+'\" id=\"forcerwindowoverlayimage\"><br>'+datadesc+'</div>');
		this.OverlayContainerShow(datacfg);
		return;
		},




//	FORCERWindow.OpenAlert(datamsg,datamodus,databt)
	OpenAlert: function(datamsg,datamodus,databt) {
		if (datamodus == 'error') {
			this.openPrompt('Error','<div class="sbox_error"><div class="sbox_t">Error</div>'+datamsg+'</div>',{'timer' : 10, 'layout' : 4, 'fade' : true, 'sizeX' : 400, 'sizeY' : 170, buttons : databt});
			}
		else if (datamodus == 'load') {
			this.openPrompt('Loading','<div class="sbox_network"><div class="sbox_t">Loading</div>'+datamsg+'</div>',{'layout' : 0, 'fade' : true, 'close' : false, 'sizeX' : 400, 'sizeY' : 170, buttons : databt});
			}
		else if (datamodus == 'upload') {
			this.openPrompt('Uploading','<div class="sbox_save"><div class="sbox_t">Uploading</div>'+datamsg+'</div>',{'layout' : 0, 'fade' : true, 'close' : false, 'sizeX' : 400, 'sizeY' : 170, buttons : databt});
			}
		else if (datamodus == 'saving') {
			this.openPrompt('Saving','<div class="sbox_save"><div class="sbox_t">Saving</div>'+datamsg+'</div>',{'layout' : 0, 'fade' : true, 'close' : false, 'sizeX' : 400, 'sizeY' : 170, buttons : databt});
			}
		else if (datamodus == 'wait') {
			this.openPrompt('Please wait','<div class="sbox_network"><div class="sbox_t">Please wait</div>'+datamsg+'</div>',{'layout' : 0, 'fade' : true, 'close' : false, 'sizeX' : 400, 'sizeY' : 170, buttons : databt});
			}
		else if (datamodus == 'success') {
			this.openPrompt('Successful','<div class="sbox_success"><div class="sbox_t">Successful</div>'+datamsg+'</div>',{'layout' : 5, 'fade' : true, 'close' : false, 'sizeX' : 400, 'sizeY' : 170, buttons : databt});
			}
		else {
			this.openPrompt('Info',datamsg,{'layout' : 0, 'fade' : true, 'sizeX' : 400, 'sizeY' : 170, buttons : databt});
			}
		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.openPrompt(datatitle,databody,datacfg)
	openPrompt: function(datatitle,databody,datacfg) {
		datacfg = this.parseDataCfg(datacfg);
		if (typeof(datatitle) != 'string')	datatitle = 'Prompt';
		if (typeof(databody) != 'string')		databody = '';
		var databuttons = '';
		if (datacfg.buttons.length > 0) {
			datacfg.buttons.each(function(item)  {
				if (item.l == 'close') {item.l = 'FORCERWindow.OverlayContainerHide()';}
				databuttons += '<input type="button" value="'+item.v+'" onClick="'+item.l+'" class="bt">&nbsp;';
				});
			}

		if (datacfg.fade) {this.OverlayLayerFadeIn(datacfg);}
		else {this.OverlayLayerFadeOut();}
		this.OverlayContainerInit(datacfg);
		this.OverlayLoadTemplate(datacfg);
		this.OverlaySetTitle(datatitle);
		this.OverlaySetBody(databody);
		this.OverlaySetButtons(databuttons);
		this.OverlayContainerShow(datacfg);
		return;
		},


//	FORCERWindow parseDataCfg
	parseDataCfg: function(datacfg) {
		if (typeof(datacfg) != 'object') datacfg = {};
		if (typeof(datacfg.layout) != 'number')				datacfg.layout = this.Config.overlayLayout;
		if (typeof(datacfg.timer) != 'number')				datacfg.timer = false;

		if (typeof(datacfg.fade) != 'boolean')				datacfg.fade = this.Config.overlayFade;
		if (typeof(datacfg.fadeColor) != 'string')		datacfg.fadeColor = this.Config.overlayFadeColor;
		if (typeof(datacfg.close) != 'boolean')				datacfg.close = true;
		if (typeof(datacfg.drag) != 'boolean')				datacfg.drag = false;
		if (typeof(datacfg.fullscreen) != 'boolean')	datacfg.fullscreen = false;
		if (typeof(datacfg.buttons) != 'object')			datacfg.buttons = [];

		if (datacfg.fullscreen)  {
			var WindowSize = this.getWindowSize();datacfg.sizeX = WindowSize[0];datacfg.sizeY = WindowSize[1];
			}
		else  {
			if (typeof(datacfg.sizeX) != 'number')	datacfg.sizeX = this.Config.overlayContentX;
			if (typeof(datacfg.sizeY) != 'number')	datacfg.sizeY = this.Config.overlayContentY;
			}


		return datacfg;
		},

//	FORCERWindow OverlayLoadTemplate
	OverlayLoadTemplate: function(datacfg) {
		this.OverlayResetTemplate();
		if (this.ObjStatus.overlayContainer) {
			this.ObjStatus.overlayContainer.innerHTML = this.OverlayGetTemplate(datacfg);
			if (datacfg.drag && !datacfg.fullscreen && this.Layout[datacfg.layout][1] == 'yp')  {
				this.ObjStatus.overlayContainerDrag = new Draggable('forcerwindowoverlaycontainer',{handle:'forcerwindowoverlaytop'});
				$('forcerwindowoverlaytop').setStyle({ cursor: 'move' });
				}
			return true;
			}
		return false;
		},

//	FORCERWindow OverlayGetLayout
	OverlayGetTemplate: function(datacfg) {
		datacfg = this.parseDataCfg(datacfg);
		var htmldata = '';
		if (this.Layout[datacfg.layout][1] == 'yp')  {
			htmldata += '<div id="forcerwindowoverlaybox" style="width:100%;height:100%;color:#000000;font-size:10pt;font-weight:normal;background:url('+this.Config.folderImages+'bottom.gif) '+this.Layout[datacfg.layout][4]+' right bottom no-repeat;border:'+this.Layout[datacfg.layout][3]+' 1px solid">';
			htmldata += '<div id="forcerwindowoverlaytop" style="width:100%;height:18px;padding-top:2px;color:#ffffff;font-size:10pt;font-weight:bold;background:url('+this.Config.folderImages+'xp_top_'+this.Layout[datacfg.layout][2]+'.gif) '+this.Layout[datacfg.layout][3]+' repeat-x">';
			if (datacfg.close)  {
				htmldata += '<img src="'+this.Config.folderImages+'icon_close.gif" style="float:right;cursor:pointer" onClick="FORCERWindow.OverlayContainerHide()">';
				}
			htmldata += '&nbsp;&bull;&nbsp;<span id ="forcerwindowoverlaytitle">Explorer Window</span></div>';
			htmldata += '<div id="forcerwindowoverlaybody" style="width:100%;height:100%;overflow:auto;text-align:center"></div></div>';
			}
		else if (this.Layout[datacfg.layout][1] == 'border')  {
			htmldata += '<div id="forcerwindowoverlaybox" style="width:100%;height:100%;color:#000000;font-size:10pt;font-weight:normal;background: '+this.Layout[datacfg.layout][4]+';border:'+this.Layout[datacfg.layout][3]+' 1px solid">';
			htmldata += '<div id="forcerwindowoverlaytitle"></div>';
			htmldata += '<div id="forcerwindowoverlaybody"></div></div>';
			}
		else  {
			htmldata += '<div id="forcerwindowoverlaybox" style="width:100%;height:100%;overflow:auto"><div id ="forcerwindowoverlaybody"></div></div>';
			}
		return htmldata;
		},

//	FORCERWindow OverlaySetContainer
	OverlaySetContainer: function(content) {
		if (this.ObjStatus.overlayContainer) {
			this.ObjStatus.overlayContainer.update(content);
			return true;
			}
		return false;
		},

//	FORCERWindow OverlaySetTitle
	OverlaySetTitle: function(content) {
		var container = $('forcerwindowoverlaytitle');
		if (container)	container.update(content);
		},

//	FORCERWindow OverlaySetBody
	OverlaySetBody: function(content) {
		var container = $('forcerwindowoverlaybody');
		if (container)	container.update(content);
		},

//	FORCERWindow OverlaySetButtons
	OverlaySetButtons: function(content) {
		var container = $('forcerwindowoverlaybody');
		if (container)	container.insert(content);
		},

//	FORCERWindow OverlayGetLayout
	OverlayResetTemplate: function() {
		if (this.ObjStatus.overlayContainerDrag) {
			this.ObjStatus.overlayContainerDrag.destroy();
			this.ObjStatus.overlayContainerDrag = false;
			}
		if (this.ObjStatus.overlayContainer) {
			this.ObjStatus.overlayContainer.update('&nbsp;');
			}
		return true;
		},

//	FORCERWindow OverlayContainerShow
	OverlayContainerShow: function(datacfg) {
		datacfg = this.parseDataCfg(datacfg);
		if (!this.ObjStatus.overlayContainer) {
			this.OverlayContainerInit(datacfg);
			}
		var currentSize = [this.ObjStatus.overlayContainer.getWidth(),this.ObjStatus.overlayContainer.getHeight()];
		if (currentSize[0] != datacfg.sizeX || currentSize[1] != datacfg.sizeY)  {
			var arrayWindowSize = this.getWindowSize();
			var arrayPagePosition = [((arrayWindowSize[0]-datacfg.sizeX)/2),((arrayWindowSize[1]-datacfg.sizeY)/2)];
			this.ObjStatus.overlayContainer.setStyle({width: datacfg.sizeX + 'px',left: arrayPagePosition[0] + 'px'});
			this.ObjStatus.overlayContainer.setStyle({height: datacfg.sizeY + 'px',top: arrayPagePosition[1] + 'px'});
			}
		this.ObjStatus.overlayContainer.show();
		if (datacfg.timer && typeof(datacfg.timer)=='number')  {
			window.setTimeout('FORCERWindow.OverlayContainerHide();',(datacfg.timer*1000));
			}
		return true;
		},

//	FORCERWindow OverlayContainerInit
	OverlayContainerInit: function(datacfg) {
		datacfg = this.parseDataCfg(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(Builder.node('div',{id:'forcerwindowoverlaycontainer',style:'position:fixed;left:'+(arrayPagePosition[0])+'px;top:'+(arrayPagePosition[1])+'px;z-index:100;width:'+datacfg.sizeX+'px;height:'+datacfg.sizeY+'px'}));
			var overlayContentContainer = 
			this.ObjStatus.overlayContainer = $('forcerwindowoverlaycontainer');
			this.ObjStatus.overlayContainer.hide();
			}
		return true;
		},

//	FORCERWindow OverlayContainerHide
	OverlayContainerHide: function() {
		if (this.ObjStatus.overlayContainer)  {
			this.ObjStatus.overlayContainer.hide();
			this.OverlayResetTemplate();
			}
		this.OverlayLayerFadeOut();
		},

//	FORCERWindow OverlayContainerHideB
	OverlayContainerHideB: false,

//	FORCERWindow OverlayLayerFadeIn
	OverlayLayerFadeIn: function(datacfg) {
		if (this.ObjStatus.overlayLayerFadeIn)  {return;}
		this.ObjStatus.overlayLayerFadeIn = true;
		datacfg = this.parseDataCfg(datacfg);
		var arrayPageSize = this.getPageSize();
		$$('select','object','embed').each(function(node){node.style.visibility='hidden'});
		if (!this.ObjStatus.overlayLayer)  {
			var objBody = $$('body')[0];
			objBody.appendChild(Builder.node('div',{id:'forcerwindowoverlay',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.OverlayContainerHideB = this.OverlayContainerHide.bind(this).bindAsEventListener();
			this.ObjStatus.overlayLayer.observe('dblclick',this.OverlayContainerHideB);
			}
		else if (this.OverlayContainerHideB) {
			this.ObjStatus.overlayLayer.stopObserving('dblclick',this.OverlayContainerHideB);
			}
		this.ObjStatus.overlayLayer.setStyle({width:arrayPageSize[0]+'px',height:arrayPageSize[1]+'px'});
		this.ObjStatus.overlayLayer.show();
		this.ObjStatus.overlayLayer.setOpacity(this.Config.overlayFadeOpacity);
		return;
		},

//	FORCERWindow.OverlayLayerFadeOut()
	OverlayLayerFadeOut: function() {
		if (!this.ObjStatus.overlayLayer || !this.ObjStatus.overlayLayerFadeIn)  {return;}
		this.ObjStatus.overlayLayerFadeIn = false;
		this.ObjStatus.overlayLayer.hide();
		$$('select','object','embed').each(function(node){node.style.visibility='visible'});
		return true;
		},

//	FORCERWindow.getScrollSize()
	getScrollSize: function() {
		var xScroll, yScroll;
		if (window.innerHeight && window.scrollMaxY) {
			xScroll = window.innerWidth + window.scrollMaxX;
			yScroll = window.innerHeight + window.scrollMaxY;
			}
		else if (document.body.scrollHeight > document.body.offsetHeight) {
			xScroll = document.body.scrollWidth;
			yScroll = document.body.scrollHeight;
			}
		else {
			xScroll = document.body.offsetWidth;
			yScroll = document.body.offsetHeight;
			}
		return [xScroll,yScroll];
		},

//	FORCERWindow.getWindowSize()
	getWindowSize: function() {
		var windowWidth, windowHeight;
		if (self.innerHeight) {
			if(document.documentElement.clientWidth) {
				windowWidth = document.documentElement.clientWidth; 
				}
			else {
				windowWidth = 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 pageWidth, pageHeight;
		var ScrollSize = this.getScrollSize();
		var WindowSize = this.getWindowSize();
		if(ScrollSize[1] < WindowSize[1]) {
			pageHeight = WindowSize[1];
			}
		else {
			pageHeight = ScrollSize[1];
			}
		if(ScrollSize[0] < WindowSize[0]) {
			pageWidth = ScrollSize[0];
			}
		else {
			pageWidth = WindowSize[0];
			}
		return [pageWidth,pageHeight];
		}
	});
var FORCERWindow = new FORCERWindowClass();










/**
	@name FORCERAjax
	@version 0.1
	@copyright 2009 EURIP.com
**/
var FORCERAjaxClass = Class.create({
	Version: '0.0.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)  {alert('datacontainer missing: ' + datacontainer);return false;}
		if (!container)  {alert('datacontainer missing: ' + datacontainer);return false;}
		datacfg = this.parseDataCfg(datacfg);
		if (infoMode == 'div')  {container.update('<div class="sbox_network"><div class="sbox_t">Loading</div>Please wait ...</div>');}
		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>Cannot load information ... please try again later ...</div>');}
				else if (infoMode == 'overlay')  {FORCERWindow.OpenAlert('Cannot load content ... please try again later ...','error');}
			  if (typeof(funcFailure)=="string")  {eval(funcFailure+'(transport)');}
			  }
			});
	  },


//	FORCERAjax.sendForm(dataform,funcSuccess,funcFailure,infoMode)
	sendForm: function(dataform,funcSuccess,funcFailure,infoMode) {
		if (infoMode == 'overlay')  {FORCERWindow.OpenAlert('Please wait while sending data ...','wait');}
		$(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.1
	@copyright 2009 EURIP.com
**/
var FORCERFormClass = Class.create({

//	FORCER Constructor
  initialize: function() {
	  },



//	FORCER setFieldError
  setFieldOk: function(fieldid) {
		if (field = $(fieldid)) {
			field.removeClassName('tf_error');
			field.addClassName('tf_ok');
			if (fieldmsg = $('msg'+fieldid)) {fieldmsg.style.display = "none";}
			}
	  },

//	FORCER setFieldError
  setFieldError: function(fieldid) {
		if (field = $(fieldid)) {
			field.removeClassName('tf_ok');
			field.addClassName('tf_error');
			if (fieldmsg = $('msg'+fieldid)) {fieldmsg.style.display = "block";}
			}
	  },

//	FORCER resetFieldStatus
  resetFieldStatus: function(fieldid) {
		if (field = $(fieldid)) {
	  	field.removeClassName('tf_ok');
			field.removeClassName('tf_error');
			if (fieldmsg = $('msg'+fieldid)) {fieldmsg.style.display = "none";}
			}
	  },


//	FORCERForm.CheckFieldEmpty()
  CheckFieldEmpty: function(fieldid) {
			try  {currfield = $F(fieldid);}
			catch(currfield)  {return false;}
		if (typeof(currfield)=='string') {
	  	if (currfield.length < 2)  {
				if (currfieldmsg = $('msg'+fieldid)) {
					FORCERWindow.OpenAlert(currfieldmsg.innerHTML,'error',[{v:'ok',l:'close'}]);
					}
				else  {
					FORCERWindow.OpenAlert('Please insert missing informations','error',[{v:'ok',l:'close'}]);
					}
				try  {$(fieldid).focus();}
				catch(e)	{}
				return true;
				}
			}
		return false;
	  },

//	FORCERForm.CheckFieldEmail()
  CheckFieldEmail: function(fieldid) {
		currfield = $F(fieldid)
		if (typeof(currfield)=='string') {
	  	if (!FORCERString.isEmail(currfield))  {
				if (currfieldmsg = $('msg'+fieldid)) {
					FORCERWindow.OpenAlert(currfieldmsg.innerHTML,'error',[{v:'ok',l:'close'}]);
					}
				else  {
					FORCERWindow.OpenAlert('Please insert correct email-address','error',[{v:'ok',l:'close'}]);
					}
				$(fieldid).focus();
				return true;
				}
			}
		return false;
	  },

//	function: 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 FORCERCSSClass
	@version 0.1
	@copyright 2009 EURIP.com
**/
var FORCERCSSClass = Class.create({

//	FORCER Constructor
  initialize: function() {
	  },














//	FORCERCSS.getStyleClass()
  getStyleClass: function(className) {
		for (var s = 0; s < document.styleSheets.length; s++) {
			if(document.styleSheets[s].rules) {
				for (var r = 0; r < document.styleSheets[s].rules.length; r++) {
					if (document.styleSheets[s].rules[r].selectorText == '.' + className) {
						return document.styleSheets[s].rules[r];
						}
					}
				}
			else if(document.styleSheets[s].cssRules) {
				for (var r = 0; r < document.styleSheets[s].cssRules.length; r++) {
					if (document.styleSheets[s].cssRules[r].selectorText == '.' + className)
						return document.styleSheets[s].cssRules[r];
					}
				}
			}
		return null;
	  }
	});
var FORCERCSS = new FORCERCSSClass();












/**
	@name FORCERStringClass
	@version 0.1
	@copyright 2009 EURIP.com
**/
var FORCERStringClass = Class.create({

//	FORCER Constructor
  initialize: function() {
	  },

//	FORCER isEmail
  isEmail: function(email) {
  	regex = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		if (regex.test(email)) {return true;}
		return false;
	  }
	});
var FORCERString = new FORCERStringClass();
