function CMS_preload(img)
{
	if (!document.images) { return; }
	if (!document.ImgArr) { document.ImgArr = new Array(); }
	
	for(i=0; i < arguments.length; i++) {
		var modstr = ( arguments[i+1] == null ) ? "1" : String(arguments[i+1]);
		document.ImgArr.push(new Image());
		document.ImgArr[document.ImgArr.length-1].src = img.src.substr(0, img.src.lastIndexOf("_")) + "_" + modstr + img.src.substr(img.src.lastIndexOf(".")); 
	}
}



function CMS_imgswap(img, mode)
{
	var modstr = ( mode == null ) ? "0" : String(mode);
	if ( !document.SwpArr ) { document.SwpArr = new Array() };
	while ( document.SwpArr.length > 0 ) 
	{ 
		var swpimg = CMS_swapone(document.SwpArr.pop(), "0");
	}
	CMS_swapone(img, modstr);	
	if ( mode > 0 ) { document.SwpArr.push(img); }
}


function CMS_swapone(img, modstr)
{
	img.src = img.src.substr(0, img.src.lastIndexOf("_")) + "_" + modstr + img.src.substr(img.src.lastIndexOf("."));
}


function CMS_openwin( url, param )
{
	param.l = (param.l) ? param.l : 100;
	param.t = (param.t) ? param.t : 100;
	param.w = (param.w) ? param.w : 800;
	param.h = (param.h) ? param.h : 600;
	
	if ( param.centered ) {
		param.l = (screen.width - param.w) / 2;
		param.t = (screen.height - param.h) / 2;
	}
	
	var winprops = "height="+param.h+",width="+param.w+",top="+param.t+",left="+param.l+"";

	winprops += ( param.scroll != true ) ? ( ",scrollbars=no" ) : ( ",scrollbars=yes" );
	winprops += ( param.status != true ) ? ( ",status=no" ): ( ",status=yes" );
	winprops += ( param.location != true ) ? ( ",location=no" ) : ( ",location=yes" );
	winprops += ( param.menubar != true ) ? ( ",menubar=no" ) : ( ",menubar=yes" );
	winprops += ( param.resizable != true ) ? ( ",resizable='no'" ) : ( ",resizable=yes" );
	
	winname = ( param.name ) ? param.name : "newwindow";	
	win = window.open( url, winname, winprops);
	
	if ( parseInt(navigator.appVersion) >= 4 ) { win.window.focus(); }
}



function CMS_assetswap( imgref, swaptarget, swapurl )
{	
	var swapimg = CMS_findObj(swaptarget);
	swapimg.src = swapurl;
}





function CMS_filitoggle( pRef, pId )
{	
	var lFGLyr = CMS_findObj("Fass_" + pId);
	
	if ( lFGLyr.className.indexOf("filiclose") != -1 ) {
		lFGLyr.className = "fgroup filiopen";
	
	} else {
		lFGLyr.className = "fgroup filiclose";
	}

}









function CMS_openasset( url, param )
{
	param.l = (param.l) ? param.l : 100;
	param.t = (param.t) ? param.t : 100;
	param.w = (param.w) ? param.w : 800;
	param.h = (param.h) ? param.h : 600;
	
	if ( param.centered != undefined ) {
		param.l = (screen.width - param.w) / 2;
		param.t = (screen.height - param.h) / 2;
	}
	
	url = ( url != undefined ) ? url : param.url;
	url = ( url.indexOf("http://") == -1 ) ? "/static/images/" + url : url; 
		
	var winprops = "height="+param.h+",width="+param.w+",top="+param.t+",left="+param.l+",resizable";
	winprops += ( param.scroll != true ) ? ( ",scrollbars=no" ) : ( ",scrollbars=yes" );
	winprops += ( param.status != true ) ? ( ",status=no" ): ( ",status=yes" );
	winprops += ( param.location != true ) ? ( ",location=no" ) : ( ",location=yes" );
	winprops += ( param.menubar != true ) ? ( ",menubar=no" ) : ( ",menubar=yes" );
	
	
	winname = ( param.name ) ? param.name : "newwindow";	
	win = window.open( url, winname, winprops);
	
	if ( parseInt(navigator.appVersion) >= 4 ) { win.window.focus(); }
}




/* * * * * * * * * * * * * * * * * * 
 * find images by name
 *
 * * * * * * * * * * * * * * * * * */
 
function CMS_lnkswap(imgname, mode)
{
	if ( (img = CMS_findObj(imgname)) != null )
	{
		CMS_imgswap(img, mode);
	}
}

function CMS_findObj(obj, scope) 
{ 
  	var p,i,x;  
  
	if (!scope){ scope=document };
	
	if ((( p = obj.indexOf("?")) > 0) && parent.frames.length ) {
		scope = parent.frames[obj.substring(p+1)].document; 
		obj=obj.substring( 0, p );
    }

	if (!(x = scope[obj]) && scope.all) { x = scope.all[obj]; }	
	for( i=0; !x && i < scope.forms.length; i++) { x = scope.forms[i][obj]; }	
	for( i=0; !x && scope.layers && i < scope.layers.length; i++) { x = CMS_findObj( obj, scope.layers[i].document); }
	if ( !x && scope.getElementById ) { x = scope.getElementById(obj); }	
	return x;
}

if(!CMS)	{
	var CMS = {
		load : false,
		
		onload : [],
		
		addOnload : function(func, args)	{
			if(this.load)	{
				this.exec([func, args]);
				return;
			}
			this.onload.push([func, args]);
		},
		
		exec : function(x)	{
			//x[0](x[1]);
			x[0].call(null, x[1]);
		},
		
		doOnload : function()	{
			while(this.onload.length > 0)	{
				this.exec(this.onload.pop());
			}
			this.load = true;
		}
		
	}
	window.onload = CMS.doOnload.bind(CMS);
}
CMS.Window = {
	open : function(url, name, param, nodefaults)	{
		var defaults = {
			status  	: 'no',
			toolbar 	: 'no',
			location 	: 'no',
			menubar 	: 'no',
			directories : 'no',
			resize 	    : 'no',
			scrollbars 	: 'no',
			height 	    : 400,
			width       : 400
		}
		if (!nodefaults) {
			var name = name || '';
			if (param) {
				for (var prop in param) {
					defaults[prop] = param[prop];
				}
			}
			var vals = defaults;
		}
		else	{
			var vals = param;
		}
		var tmp = [];
		for(var prop in vals)	{
			tmp.push(prop + '=' + vals[prop]);
		}
		window.open(url, name, tmp.join(','));
		return;
	}
}

CMS.TextResize = {
	readBookmark : function()	{
		var sizeFact = parseInt(jimAuld.utils.cookies.get('TextResize'));
		if(sizeFact == NaN)	{
			return 0;
		}
		return sizeFact;
	},
	
	writeBookmark : function(sizeFact)	{
		jimAuld.utils.cookies.set('TextResize', sizeFact);
	},
	
	increase : function()	{
		this.writeBookmark(1);
		window.location.reload();
	},
	
	decrease : function()	{
		this.writeBookmark(-1);
		window.location.reload();
	},
	
	reset : function()	{
		this.writeBookmark(0);
		window.location.reload();
	},
	
	write_css : function()	{
		var sizeFact = this.readBookmark();
		switch(sizeFact)	{
			case 1:
				document.write('<link rel="stylesheet" type="text/css" href="/static/css/gross.css">');
				return;
			case -1:
				document.write('<link rel="stylesheet" type="text/css" href="/static/css/klein.css">');
				return;
		}
	}
}
/*
CMS.Validator = {
	email : function(mail)	{
		var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		if (!filter.test(mail)) {
			return false;
		}
		return true;
	},
	
	validateForm : function(form)	{
		console.log("VALIDATE")
		return
		var pass = true;
		for(var i = 0; i < form.elements.length; i++)	{
			for(var prop in this.VALIDATE)	{
				if(form.elements[i].className.indexOf(prop) != -1)	{
					if(this.VALIDATE[prop](form.elements[i]))	{
						CMS.removeClassName(form.elements[i], 'CMS_VALIDATION_FAILED');
					}
					else	{
						pass = false;
						CMS.addClassName(form.elements[i], 'CMS_VALIDATION_FAILED');
					}
				}
			}
		}
		
		return pass;
	},
	
	VALIDATE : {
		CMS_EMAIL : function(elem)	{
			return /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(elem.value)
		},
		CMS_NOTEMPTY : function(elem)	{
			return /\S+/.test(elem.value)
		},
		CMS_INTEGER : function(elem)	{
			return /^\s*[0-9]+\s*$/.test(elem.value)
		},
		CMS_CHECKED : function(elem)	{
			return elem.checked;
		}
	}
}
*/
CMS.Advice = {
	url : location.protocol + '//' + location.hostname + '/rpc',
	
	switchWindow : function(elem)	{
		this.container = $(elem);
		if(this.container)	{
			if(this.container.style.display != 'block')	{
				this.requestForm();
				this.container.style.display = 'block';
			}
			else	{
				this.container.style.display = 'none'
				this.container.innerHTML == ''
			}
		}
	},
	doRequest : function(param, succ)	{
		new Ajax.Request(this.url,{
			method     : 'post',
			parameters : param,
			onSuccess  : succ,
			onFailure  : this.onFailure.bind(this)
		});
		
	},
	
	onFailure : function(failure)	{
		alert('failure: ' + failure.toSource());
	},
	
	requestForm : function()	{
		var param = {
			exec : 'getMailForm',
			url : document.location.href
		};
		
		var req = new Hash();
		req.set('action', 'mail');
		req.set('param', Object.toJSON(param));
		
		this.doRequest(req, this.loadForm.bind(this));
	},
	
	loadForm : function(transport)	{
		this.container.innerHTML = transport.responseText;
	},
	
	sendMail : function()	{
		var param = {
			exec : 'sendMail'
		};
		param.data = {
			fromName : $('mailform_sender_name').value,
			fromMail : $('mailform_sender_mail').value,
			toName   : $('mailform_reciever_name').value,
			toMail   : $('mailform_reciever_mail').value,
			message  : $('mailform_message').value,
			url      : $('mailform_url').value
		};
		
		var req = new Hash();
		req.set('action', 'mail');
		req.set('param', Object.toJSON(param));
		
		this.doRequest(req, this.loadForm.bind(this));
	},
	
	close : function()	{
		this.container.innerHTML == ''
		this.container.style.display = 'none'
		
	},
	
	submit : function(form)	{
		var check = true;
		
		var errormsg = 'Please complete the marked fields';
		var errormail = 'Please enter a valid e-mail address';
		
		var fields = {
			fromName : $('mailform_sender_name'),
			fromMail : $('mailform_sender_mail'),
			toName   : $('mailform_reciever_name'),
			toMail   : $('mailform_reciever_mail')
		}
		
		for(var i in fields)	{
			if(fields[i].value.blank())	{
				fields[i].style.border = '1px solid #ff0000';
				check = false;
			}
			else	{
				fields[i].style.border = '1px solid #373D41';
			}
		}
		
		if(check == false)	{
			$('mailform_errormessage').innerHTML = errormsg;
			return false;
		}
		$('mailform_message').innerHTML = "";
		
		
		if(!CMS.Validator.email(fields.fromMail.value))	{
			fields.fromMail.style.border = '1px solid #ff0000';
			check = false;
		}
		else	{
			fields.fromMail.style.border = '1px solid #373D41';
		}
		
		if(!CMS.Validator.email(fields.toMail.value))	{
			fields.toMail.style.border = '1px solid #ff0000';
			check = false;
		}
		else	{
			fields.toMail.style.border = '1px solid #373D41';
		}
		
		if(check == false)	{
			$('mailform_errormessage').innerHTML = errormail;
			return false;
		}
		
		this.sendMail();
			
		return false;
	}
}

CMS.addClassName = function(elem, className)	{
	if(elem.className.indexOf(className) == -1)	{
		elem.className = elem.className + ' ' + className;
	}
}

CMS.removeClassName = function(elem, className)	{
	while(true)	{
		if(elem.className.indexOf(className) != -1)	{
			var tmp = elem.className.gsub(className, '');
			elem.className = tmp.gsub('  ', ' ');
		}
		else	{
			break;
		}
	}
	return;
}


CMS.Tools = {
	toggleDisplay : function(arrow, id)	{
		var node = $(id);
		
		if(arrow.hasClassName('close')){
			arrow.removeClassName('close');
			arrow.addClassName('open');
			arrow.src = "/static/images/admin/arrow_open.gif";
			node.style.display = 'block';
		}
		else	{
			arrow.removeClassName('open');
			arrow.addClassName('close');
			arrow.src = "/static/images/admin/arrow_close.gif";
			node.style.display = 'none';
		}
	}
}










///// BBBB ////

function bbbbookmark(pid) {
	
	var bbbcook = jimAuld.utils.cookies.get('bbbbookmarks');
	var bbblist = [];
	if ( bbbcook != null ) {
		bbblist = String(bbbcook).split("+");
	}
	if ( bbblist.indexOf(pid) == -1 ) {
		bbblist.push(pid);
	}
	jimAuld.utils.cookies.set('bbbbookmarks', bbblist.join("+"));
	
	location.reload();
}

function bbbbookmarkclear(pid) {
	
	var bbbcook = jimAuld.utils.cookies.get('bbbbookmarks');
	var bbblist = [];
	if ( bbbcook != null ) {
		bbblist = String(bbbcook).split("+");
	}
	if ( pid == null ) {
		bbblist = [];
	} else {
		var pos = bbblist.indexOf(pid);
		if ( pid > -1 ) {
			bbblist.splice(pos,1);
		}
	}

	jimAuld.utils.cookies.set('bbbbookmarks', bbblist.join("+"));
	location.reload();
}















