// xAjax Stuff
function submitForm(e, additional_cf) {
	
	if (e && e.tagName == 'FORM') {
		
		if(!ValidateForm(e)) return false;
		
		var formElements = e.elements;
		var target_cf = formElements['target_cf'] ? formElements['target_cf'].value : additional_cf;
		var wait_button = formElements['wait_button'].value;
		
		if(target_cf) {
			
			var chksum = location.hostname;
			formElements['checksum'].setAttribute("value",chksum);
			
			if (xajax.$(wait_button)) {
				xajax.$(wait_button).disabled=true;
				xajax.$(wait_button).value="Even geduld aub...";
			}
			xajax.call(target_cf, new Array(xajax.getFormValues(e)), 1);
			
		} else {
			alert('submitForm: No valid arguments');
		}
	} else {
		alert('submitForm: No valid FORM object');
	}
	return false;
}


function ValidateForm(e) {
	var msg = '';
	var chk = '';
	var focusfld = '';
	var i,ii,x;
	var rclist = [];
	var val = '';
	for(i=0;i<e.length;i++) {
		if (chk = e[i].getAttribute('inpchk')) {
			e[i].className = e[i].className.replace('mandatory','');
			if ((chk == 'notempty')) {
				if (e[i].type == 'checkbox') {
					val = (e[i].checked) ? '1' : '';
				} else {
					val = e[i].value;
				}
				if (val == '') {
					if (focusfld == '') focusfld = e[i].name;
					msg += e[i].getAttribute('chkmsg')+"\n";
					e[i].className += ' mandatory';
				}
			}
			if ((chk == 'minmaxlen')) {
				var min = e[i].getAttribute('minlen');
				var max = e[i].getAttribute('maxlen');
				if (e[i].value.length < min) {
					msg += e[i].getAttribute('chkmsg')+"\n";
					if (focusfld == '') focusfld = e[i].name;
					e[i].className += ' mandatory';
				}
				if (e[i].value.length > max) {
					msg += e[i].getAttribute('maxmsg')+"\n";
					if (focusfld == '') focusfld = e[i].name;
					e[i].className += ' mandatory';
				}
			}
			if ((chk == 'radiovalue')) {
				if (rclist[e[i].name] == 1) continue;
				rclist[e[i].name] = 1;
				x = e[e[i].name];
				if (!!x[0]) {
					for(ii=0;ii<x.length;ii++) {
						x[ii].className = x[ii].className.replace('mandatory','');
					}
					val = false;
					for(ii=0;ii<x.length;ii++) {
						if (x[ii].checked) val = true;
					}
					if (!val) {
						for(ii=0;ii<x.length;ii++) {
							x[ii].className += ' mandatory';
						}
						if (focusfld == '') focusfld = i;
						msg += e[i].getAttribute('chkmsg')+"\n";
					}
				}
			}
		}
	}
	if (msg) {
		alert(msg);
		e[focusfld].scrollIntoView(false);
		e[focusfld].focus();
		return false;
	}
	return true;
}

function switchlang(lang, page) {
	xajax.call('custom_xajax#switchlang', new Array(lang,page), 1);
}


var base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split("");
var base64inv = {};
for (var i = 0; i < base64chars.length; i++)
{
  base64inv[base64chars[i]] = i;
}

function base64_decode (s)
{
  // remove/ignore any characters not in the base64 characters list
  //  or the pad character -- particularly newlines
  s = s.replace(new RegExp('[^'+base64chars.join("")+'=]', 'g'), "");

  // replace any incoming padding with a zero pad (the 'A' character is zero)
  var p = (s.charAt(s.length-1) == '=' ?
          (s.charAt(s.length-2) == '=' ? 'AA' : 'A') : "");
  var r = "";
  s = s.substr(0, s.length - p.length) + p;

  // increment over the length of this encrypted string, four characters at a time
  for (var c = 0; c < s.length; c += 4) {

    // each of these four characters represents a 6-bit index in the base64 characters list
    //  which, when concatenated, will give the 24-bit number for the original 3 characters
    var n = (base64inv[s.charAt(c)] << 18) + (base64inv[s.charAt(c+1)] << 12) +
            (base64inv[s.charAt(c+2)] << 6) + base64inv[s.charAt(c+3)];

    // split the 24-bit number into the original three 8-bit (ASCII) characters
    r += String.fromCharCode((n >>> 16) & 255, (n >>> 8) & 255, n & 255);
  }
   // remove any zero pad that was added to make this a multiple of 24 bits
  return r.substring(0, r.length - p.length);
}

function toon_video(params){
	/*
	if (typeof rx_frame_dialog != "function") {
		$.getScript("/_rxextlib/jquery/jquery-ui-1.7.2.min.js",function() {
			$.getScript("/_rxextlib/jquery/plugins/rexgard/rexgard.js",function() {rx_frame_dialog(params);});
		});
	} else {
		rx_frame_dialog(params);
	}
	*/
   $.prompt(params['url']);
}


function sticky2facebox() {
	$("img.stickybutton").each(function() {
		var sticky_id = $(this).attr("data-sticky");
		$(this).css({visibility:"hidden",width: "1px",hide: "1px"}).prev('a').attr("href","#"+sticky_id).attr("rel","facebox").facebox({
			 loadingImage : '/_rxextlib/jquery/plugins/facebox/loading.gif',
			 closeImage   : '/_rxextlib/jquery/plugins/facebox/closelabel.png'
		});
	});
}


/* voor rgd_sticky. Niet alles is nodig! */
var sticky_fade = 500;
function init_content(pref) {
	if ( pref==null ) pref='';
	$(pref+'.stikcybutton, .sticky_bar img').bind('click',function() { toggleSticky(this.id); });
	$(pref+'.resourcebutton,'+pref+'.enlarge_image').bind('click',function() { toggleResource(this.id); });
	$(pref+'.sticky').Drags({
		opacity:.8,
		handler: '.sticky_bar'
	});
	$(pref+'.attext p:last').css({'margin-bottom':0,'display':'inline'});
}
function toggleSticky(id) {
	var sid = id.split('_').slice(0,-1).join('_');
	var sjq = $('#'+sid);
	if ( sjq.css('display')=='none' ) {
		var pos =  $('#'+sid+'_button').position();
		var top = pos.top;
		if ( sjq.outerHeight()+top > $('#site_table').height() + $('#header').height()) {
			top = Math.max(
				$('#site_table').height() + $('#header').height() - sjq.outerHeight() + sjq.find('.sticky_space div').outerHeight(),
				$('#header').height()
			);
		}
		var left = pos.left;
		var offset_left = $('#site_content').offset().left;
		if ( sjq.outerWidth()+left+offset_left > $('body').width()) {
			left = Math.max(
				$('body').width() - sjq.outerWidth(),
				($('body').width() - $('#site_content').width())/2
			);
		}
		sjq.css({left: left, top: top});
		if ( sjq.outerWidth() + pos.left > $('.contents').innerWidth()) {
			sjq.width( $('.contents').innerWidth() + $('.contents').position().left - pos.left );
		}
		sjq.fadeIn(sticky_fade);
	} else {
		sjq.fadeOut(sticky_fade);
	}
}
function toggleResource(id) {
	var sid = id.split('_').slice(0,-1).join('_');
	if ( $('#resource .resource_bar').length ) {
		$('#resource').animate( { height: 0 }, 'standard', function() {
			$('#resource')
				.empty()
				.hide();					
		} );
	} else {
		$('#resource')
			.html( '<div class="resource"><div class="resource_bar"><div class="resource_close" id="'+sid+'_close"><'+'/div><'+'/div>'+$('#'+sid).html()+'<'+'/div>' )
			.show()
			.animate( { height: $('#resource .resource').outerHeight() } );
		$('.resource_close').bind('click',function() { toggleResource(this.id); });
	}
}

