var guiImages = new Array();
guiImages['wait'] = 'images/wait.gif';
guiImages['check'] = 'images/check.png';
guiImages['error'] = 'images/error.png';
guiImages['loading'] = 'images/loader_light_blue.gif';
guiImages['load'] = 'images/loader_light_blue.gif';

function getImage(type, extra)
{
	var image = '';
	if(type == 'loading')
		image += '<div style="border: 1px solid #000; width: 200px; height: 50px; background: #fff; padding-top: 20px; text-align: center;">';
	image += '<img src="' + guiImages[type] + '"';

	if(extra != '')
		image += ' ' + extra;

	image += ' />';

	if(type == 'loading')
		image += '</div>';
	return image;

}

/**
 *
 * @access public
 * @return void
 **/
function ImageArchiveChange(){

	var selected = $('student_gallery_select').selectedIndex;
	for(i = 0; i < $('student_gallery_select').options.length; i++)
	{
		if(selected == i)
		{
			$('gallery_' + $('student_gallery_select').options[i].value).show();
		}
		else
		{
			$('gallery_' + $('student_gallery_select').options[i].value).hide();
		}
	}
}

function selectedValue(selBox) {
	if(selBox.options.length == 0)
		return -1;

	return selBox.options[selBox.selectedIndex].value;
}

function selectedText(selBox) {
	if(selBox.options.length == 0)
		return -1;

	return selBox.options[selBox.selectedIndex].innerHTML;
}

function SetSelectedValue(sel, val){

    for(var i=0; i < sel.options.length; i++)
    {
    	if(sel.options[i].value == val)
    	{
      		sel.options[i].selected = true;
      		break;
      	}
    }
}



/**
 *
 * @access public
 * @return void
 **/
function cancelQueue(q){
	var queue = Effect.Queues.get(q);
	queue.each(function(effect){effect.cancel();});
}





/**
 *
 * @access public
 * @return void
 **/
function isValidInput(input, minlen, maxlen, regex){
	var error = false;

	if(input.length < minlen || input.length > maxlen)
		error = true;

	if(regex.length > 0)
	{
		r = new RegExp(regex,"i");
		if(!input.search(r))


			error = true;
	}

	return !error;
}

/**
 *
 * @access public
 * @return void
 **/
function ChangePassword()
{

	var old_password = $F('student_old_password');
	var password = $F('student_password');
	var password2 = $F('student_password2');

	if(!isValidInput(password, 5, 32, '/^[A-Za-z\d]{5,32}$/'))
	{
		$('student_password').setStyle('border: 1px solid #f00;');
		return false;
	}

	if(password != password2)
	{
		$('student_password2').setStyle('border: 1px solid #f00;');
		return false;
	}

	$('user_settings_form').disable();

	$('user_error').update(getImage('wait', ''));

	new Ajax.Request('student_ajax.php', {parameters: {change_password: '1', password: password, old_password: old_password}, evalJSON: 'true', onSuccess: function(transport){
		if(transport.responseJSON != null)
		{
			if(transport.responseJSON['status'] == 'ok')
			{
				$('user_error').innerHTML = getImage('check', '');

				$('user_error').fade({delay: 1, queue: {scope: 'form'}});

			}
			else
			{
				if(transport.responseJSON['error'] != null)
					$('user_error').update(getImage('error','') + ' ' + transport.responseJSON['error']);
				else
					$('user_error').update(getImage('error','') + ' ' + transport.responseText);
			}
		}else
		{

			$('user_error').update(getImage('error','') + ' ' + transport.responseText);
		}

		$('user_settings_form').enable();

	}});

}

function ajaxfilemanager(field_name, url, type, win) {
			var ajaxfilemanagerurl = "../ajaxfilemanager/ajaxfilemanager.php";
			switch (type) {
				case "image":
					break;
				case "media":
					break;
				case "flash":
					break;
				case "file":
					break;
				default:
					return false;
			}
			var fileBrowserWindow = new Array();
			fileBrowserWindow["file"] = ajaxfilemanagerurl;
			fileBrowserWindow["title"] = "Ajax File Manager";
			fileBrowserWindow["width"] = "782";
			fileBrowserWindow["height"] = "440";
			fileBrowserWindow["close_previous"] = "no";


			tinyMCE.activeEditor.windowManager.open({
		        file : ajaxfilemanagerurl,
		        title : 'Ajax File Manager',
		        width : 782,  // Your dimensions may differ - toy around with them!
		        height : 440,
		        resizable : "yes",
		        inline : "yes",  // This parameter only has an effect if you use the inlinepopups plugin!
		        close_previous : "no"
		    }, {
		        window : win,
		        input : field_name
		    });
    		return false;

		}

/**
 *
 * @access public
 * @return void
 **/
function UploadImage(type, element, insert){

}


// Extension to Ajax allowing for classes of requests of which only one (the latest) is ever active at a time
// - stops queues of now-redundant requests building up / allows you to supercede one request with another easily.

// just pass in onlyLatestOfClass: 'classname' in the options of the request

Ajax.currentRequests = {};

Ajax.Responders.register({
	onCreate: function(request) {
		if (request.options.onlyLatestOfClass && Ajax.currentRequests[request.options.onlyLatestOfClass]) {
			// if a request of this class is already in progress, attempt to abort it before launching this new request
			try { Ajax.currentRequests[request.options.onlyLatestOfClass].transport.abort(); } catch(e) {}
		}
		// keep note of this request object so we can cancel it if superceded
		Ajax.currentRequests[request.options.onlyLatestOfClass] = request;
	},
	onComplete: function(request) {
		if (request.options.onlyLatestOfClass) {
			// remove the request from our cache once completed so it can be garbage collected
			Ajax.currentRequests[request.options.onlyLatestOfClass] = null;
		}
	}
});