// jquery ajax setup
/*
$.ajaxSetup({
  contentType: "application/x-www-form-urlencoded; charset=utf-8"
});
*/

// config settings
rlconfig = {
	
	// onlinefilm settings
	of : {
		usestream : false
	}	
	
};


// the meat

rl = {
	
	
	contentCache : new Array(),
	tabGroups : new Array(),
	
	
	getForm : function (act, formid)
	{
		// get url
		var url = baseurl + act + formid.replace("_", "__") + "/";
		
		// add timestamp to prevent caching
		var d = new Date();
		url = url + "ts__" + d.getTime() + "/";
		
		var b = document.getElementById(formid+"_editbtn");
		var f = document.getElementById(formid+"_holder");
		
		// hide content & button
		if (b)
			b.style.display = "none";
		
		// show loader
		this.contentCache[formid] = f.innerHTML;
		this._showLoader(f);
		
		// loadform
		this._loadForm( formid, url);
		
		return false;
	},



	submitForm : function (id)
	{
		var f, form, types, action, flds, i, j, c, b, data, url, successfunc, p, nam;

		f = document.getElementById(id+"_holder");
		b = document.getElementById(id+"_editbtn");

		p = this;
		form = document.getElementById(id);
		
		if (form.action.indexOf(window.location.href) == 0)
		{
			action = form.action.substr(window.location.href.length);
		}
		else
		{
			action = form.action;
		}
		
		
		url = baseurl + action;

		// get data from form fields
		types = new Array( "input", "textarea", "select" );
		data = {};
		for (i=0;i<types.length;i++)
		{
			flds = f.getElementsByTagName(types[i]);
			for (j=0;j<flds.length;j++)
			{
				if (flds[j].type == "radio" || flds[j].type == "checkbox")
				{
					if (flds[j].checked.toString() == "true")
					{
						if (flds[j].name.indexOf("[]") > -1)
						{
							nam = flds[j].name.substr( 0, flds[j].name.lastIndexOf("[]") );
							if (!data[nam])
								data[nam] = flds[j].value;
							else
								data[nam] += "_" + flds[j].value;
						}
						else
						{
							data[flds[j].name] = flds[j].value;
						}
					}
				}
				else
				{
					data[flds[j].name] = flds[j].value;
				}
				
			}
		}
		

		// remove form
		f.innerHTML = "";
		this._showLoader(f);

		// do ajax
		successfunc = function (obj)
		{
			f.innerHTML = obj.xml.getElementsByTagName("response")[0].firstChild.nodeValue;
			p._addFormButtons(id);
		};

		//$.post( url, data, successfunc );
		
		$_().ajax({
			url : url,
			method: "POST",
			data : data,
			ondata : successfunc
		});
		
		return false;
	},
	
	
	
	cancelForm : function (id)
	{
		var f, form, types, flds, i, j, c, b, data, url, successfunc, p;

		f = document.getElementById(id+"_holder");
		b = document.getElementById(id+"_editbtn");

		f.innerHTML = this.contentCache[id];
		b.style['display'] = "block";
		
		return false;
	},
	
	
	
	_addFormButtons : function (formid)
	{
		var form = document.getElementById(formid);
		
		if (form)
		{
			var p = this;
			
			var cancel = document.createElement("a");
			cancel.href="#";
			cancel.className = "btn_cancel";
			cancel.onclick = function () { return p.cancelForm(formid); };
			cancel.appendChild( document.createTextNode("cancel") );
			
			var submit = document.createElement("a");
			submit.className = "btn_submit";
			submit.href="#";
			submit.onclick = function () { return p.submitForm(formid); };
			submit.appendChild( document.createTextNode("submit") );
			
			var div = document.createElement("div");
			div.className = "btnbar";
			
			div.appendChild( submit );
			div.appendChild( cancel );
			
			form.appendChild( div );
			
			form.onsubmit = function () { return p.submitForm(formid); };
		}
		else
		{
			// success!
			this.contentCache[formid] = document.getElementById(formid+"_holder").innerHTML;
			document.getElementById(formid+"_editbtn").style['display'] = "block";
		}
	},
	
	
	
	_loadForm : function (formid, url)
	{
		var p = this;
		
		$_().ajax({
			url : url,
			ondata : function (obj)
			{
				var e = document.getElementById(formid+"_holder");
				e.innerHTML = obj.xml.getElementsByTagName("response")[0].firstChild.nodeValue;
				p._addFormButtons(formid);
			}
		});
		
	},
	
	
	
	_showLoader : function (ele)
	{
		ele.innerHTML = '<img src="'+baseurl+'assets/img/ajax-loader.gif" width="16" height="16" />'
	},
	
	
	
	// photo form
	
	
	
	getUploadForm : function (formid,cb,id)
	{
		// hide original content
		if (formid!='projectimage' && formid!='photo')
		{
			$_(formid).hide();
			switch (formid) {
				case 'projecttrailer' : 
					$_('file').hide();
					break;
				case 'projectfile' : 
					$_('trailer').hide();
					break;
				
			}
		}
		
		// open an iframe in form_photo_holder
		document.getElementById("form_"+formid+"_holder").innerHTML = "<div class='iframe_holder'><iframe scrolling='no' scrollbars='no' frameborder='0' src='"+baseurl+"fileupload/__getform/form__"+formid+"/cb__"+cb+"/id__"+id+"/'></iframe></div>";
		return false;
	},
	
	
	
	closePhotoForm : function (file, formid)
	{
		// remove form
		document.getElementById("form_photo_holder").innerHTML = "";
		
		// show img
		if (file)
		{
			var photo = document.getElementById("userphoto");
			photo.src = photo.src.substring(0,photo.src.lastIndexOf("/")+1) + file;
		}
		
		return false;
	},
	
	
	
	closeUploadForm : function (file, formid, id)
	{
		// remove form
		if (this.isBlackout())
			this.killBlackout();
		else
			document.getElementById("form_"+formid+"_holder").innerHTML = "";
		
		// show img
		if (file)
		{
			var img = document.getElementById(formid+"_img");
			if (img)
				img.src = img.src.substring(0,img.src.lastIndexOf("/")+1) + file;
		}
		
		return false;
	},
	
	
	closeTrailerForm : function (file, formid, id)
	{
		// remove form
		this.killBlackout();
		
		// has file been uploaded
		if (file)
		{
			$_("projecttrailer").loadContent( baseurl + "project/__trailerinfo/hash__"+file+"/" );
			
			// remove edit button
			//
			$_("form_projecttrailer").hide();
		}
	},
	
	
	
	openBlackoutForm : function (formid, cb, id)
	{
		this.blackout().empty().appendElement("div", {id:"form_blackout_holder"}, "", true).appendElement("a", {className:"close", href:"#", onclick:function () { return rl.killBlackout(); } }, "[x]").appendElement("div", {id:'blackoutform'}, "form");
		document.getElementById("blackoutform").innerHTML = "<div class='iframe_holder'><iframe scrolling='no' scrollbars='no' frameborder='0' src='"+baseurl+"fileupload/__getform/form__"+formid+"/cb__"+cb+"/id__"+id+"/'></iframe></div>";
		return false;
	},
	
	
	
	closeFileForm : function (file, formid, id)
	{
		// remove form
		this.killBlackout();
		$_("projectfile").loadContent( baseurl + "project/__fileinfo/id__"+id+"/" );
		return false;
	},
	
	
	
	// tabs
	
	
	initTabs : function (tabs, acttab)
	{
		var i, tab, a, gn, content, group, p, act;
		
		p = this;
		group = new Array();
		gn = this.tabGroups.length;
		act = 0;
		
		// first item is active
		// loop through tabs, init tab buttons, hide content
		for (i=0;i<tabs.length;i++)
		{
			tab = document.getElementById("tab_"+tabs[i]);
			content = document.getElementById("content_"+tabs[i]);
			
			a = tab.getElementsByTagName("a")[0];
			a.href = "#";
			a.id = "tb"+gn+"_"+i;
			a.onclick = function () { return p.activateTab(gn,this.id.substring(this.id.lastIndexOf("_")+1)); };
			
			group[i] = {tab:tab, content:content};
			
			if (acttab == tabs[i])
				act = i;
		}
		
		this.tabGroups[gn] = group;
		
		this.activateTab( gn, act );
	},
	
	
	
	activateTab : function (gn, act)
	{
		var i, group;
		
		group = this.tabGroups[gn];
		
		for (i=0;i<group.length;i++)
		{
			if (i==act)
			{
				group[i].tab.className = "active";
				group[i].content.style['display'] = "block";
			}
			else
			{
				group[i].tab.className = "";
				group[i].content.style['display'] = "none";
			}
		}
		
		return false;
	},
	
	
	
	// show trailer
	
	
	showTrailer : function ( url, ending )
	{
		if (ending==undefined || ending=='') ending = 'flv';
		var d = new Date();
		this.showVideo( mediaurl + "projecttrailers/" + url + "." + ending );
		return false;
	},
	
	
	
	showOnlinefilm : function ( id )
	{
		// should we use the stream player or not
		var usestream = false;
		this.addTrailerHolder('onlinefilm'+id, 'onlinefilm');
		if (rlconfig.of.usestream)
			var ifr = '<iframe class="onlinefilm ofstream" src="http://stream.cb-player.de/' + id  + '"></iframe>';
		else
			var ifr = '<iframe class="onlinefilm" src="http://cb-player.de/' + id  + '"></iframe>';
		$('#onlinefilm'+id).html( ifr );
		return false;
	},
	
	
	
	showVideo : function ( url, blackout, id, autoplay )
	{
		if (blackout===undefined)
			blackout = true;
		if (id===undefined)
			id = "videoplayer";
		if (autoplay===undefined)
			autoplay = "true";
		
		if (blackout)
			this.addTrailerHolder(id, 'default');
		
		var player = 'player.swf';
		
		var so = new SWFObject( baseurl + "assets/flash/" + player, id, "480", "360", "9", "#000000");
   		//so.addParam("wmode", "transparent");
   		so.addParam("allowFullScreen", "true");
   		so.addVariable( "file", url );
   		/*
   		so.addVariable( "width", "480" );
   		so.addVariable( "height", "360" );
   		*/
   		so.addVariable( "bufferlength", 5 );
   		so.addVariable( "autostart", autoplay );
   		so.addVariable( "controlbar", "over" );
   		so.addVariable( "controlbar.hide", true );
   		so.write(id);
		return false;
	},
	
	
	addTrailerHolder : function (id, classn)
	{
		this.blackout().empty().appendElement("div", {id:"trailerholder", className:classn}, "", true).appendElement("a", {className:"close", href:"#", onclick:function () { return rl.killBlackout(); } }, "[x]").appendElement("div", {id:id}, "Adobe Flash Player 9 is required to view videos!");
	},
	
	
	
	embedPlayers : function ()
	{
		var vid = 0;
		var func = function ()
		{
			var txt = $(this).text();
			if( txt.lastIndexOf('.') == -1 )
				return;
			
			var ending = txt.substring( txt.lastIndexOf('.') );
			if ( ending!='.flv' && ending!='.f4v' )
				return;
		
			$(this).attr('id', 'rlembed'+vid);
			$(this).addClass('rlembed');
			
			var url = txt;
			if (url.substring(0,4) != 'http' )
				url = baseurl+'assets/'+url;
			
			rl.showVideo( url, false, 'rlembed'+vid, 'false' );
			vid++;
		}
		
		$('#main .pagecontent p > em').each( func );
		$('#frontpagenews ..cont p > em').each( func );
	},
	
	
	
	blackout : function ()
	{
		if (document.getElementById("blackout"))
			return document.getElementById("blackout");
		return $_("body").appendElement("div", {id:"blackout"}, "", true).style( "height", $_().utils.pageSize().pageHeight + "px" );
	},
	
	
	
	isBlackout : function ()
	{
		return (document.getElementById("blackout")) ? true : false;
	},
	
	
	
	killBlackout : function ()
	{
		$_("blackout").remove();
		return false;
	},
	
	
	// ajax content
	
	
	loadContent : function (ele, url)
	{
		$_(ele).loadContent(url);
		return false;
	}
};

