/**
 * @author noahg
 */
var globalHandlers = {
	onCreate: function() {	
		$('ajax_status').style.display = '';
		//Effect.Appear('ajax_status', { duration:.5, delay:0 });
	},
	onComplete: function() {
		if(Ajax.activeRequestCount == 0) {
			$('ajax_status').style.display = 'none';
			//Effect.Fade('ajax_status', { duration:.5, delay:0 });alert('4');
		}
	}
};

Ajax.Responders.register(globalHandlers);	

function ucfirst(string) {
   return string.substr(0, 1).toUpperCase() + string.substr(1);
}

function toggleElement(div_name) 
{
	var div = $( div_name );
	
	if(div.style.display == 'none') {
		div.style.display = '';		
	} else {
		div.style.display = 'none';
	}
}

/**
 * 
 * @var $_inputElements
 */
var $_elements = new Array('select', 'input');

function show(div) {
	$(div).descendants().each(function(el){
		if($_elements.indexOf(el.nodeName.toLowerCase()) !== -1) {
			el.enable();
		}
	});
	
	$(div).show();
}

function hide(div) {
	$(div).descendants().each(function(el){
		if($_elements.indexOf(el.nodeName.toLowerCase()) !== -1) {
			el.disable();
		}
	});
		
	$(div).hide();
}

function ajaxAppend(controller, parameters, parent_id, msg_id )
{
	var parent = $(parent_id);
	
	var request = new Ajax.Request 
	(
		controller, 
		{
			method: "post",
			parameters: {params: Object.toJSON(parameters)},
			onSuccess: function(data) {
				try {
					var json = data.responseText.evalJSON();
					
					if(json.errors != null) {
						if(msg_id != null) {
							$(msg_id).update(json.errors);
							$(msg_id).show();
						}
					}
				} catch (error) {
					if(!data.responseText.include('result=false') ) {
						parent.insert(data.responseText);
						
						if(msg_id != null) {
							$(msg_id).hide();
						}
					} else {
						if(msg_id != null) {
							var params = data.responseText.toQueryParams();
							
							$(msg_id).innerHTML = params.error_msg;
							
							if($(msg_id).style.display == 'none') {
								$(msg_id).style.display = '';
							}
						}
					}					
				}
			},
			onFailure: function() {
				response = "Information Temporarily Unavailable";	
			}
		}
	);	
}

function ajaxDelete(controller, parameters, div_id, msg_id)
{
	var div = $(div_id);
	
	new Ajax.Request 
	(
		controller, 
		{
			method: "post",
			parameters: parameters,
			onSuccess: function(data) {
				var json = data.responseText.evalJSON();
				
				if(json.result == true){
					div.remove();
				} else {
					if(msg_id != null) {
						$(msg_id).innerHTML = json.error_msg;
						$(msg_id).style.display = '';
					}
				}
			},
			onFailure: function() {
				response = "Information Temporarily Unavailable";	
			}
		}
	);	
}

function ajaxModify(controller, parameters, div_id) {	
	var request = new Ajax.Updater 
	(
		div_id,
		controller, 
		{
			method: "post",
			parameters: parameters,
			evalScripts: true
		}
	);
}

function loadHero(url, height) {
		
	var flashvars = {xPath: url};
	var attributes = {};
	var params = {
		allowfullscreen: 'true',
		allowScriptAccess: 'always',
		wmode: 'transparent'
	};
	
	swfobject.embedSWF(
				'flash/multiHero.swf', 
				'hero', 
				'100%', 
				height, 
				'9', 
				false, 
				flashvars, 
				params, 
				attributes
	);
}

function checkUserName(userName) {
	new Ajax.Request('client/enroll/check-username/format/json/', {
		method: 'post',
		parameters: {username: userName},
		onSuccess: function(data) {
			var json = data.responseText.evalJSON();
			
			$('username_msg').innerHTML = json.message;
			
			if(json.result) {
				$('username_msg').addClassName('a4');
			} else {
				$('username_msg').addClassName('a2');
			}
		},
		onFailure: function() {
			response = "Information Temporarily Unavailable";			
		}
	});
}

function checkPassword(password) {
	new Ajax.Request('client/enroll/check-password/format/json', {
		method: 'post',
		parameters: {password: password},
		onSuccess: function(data) {
			var json = data.responseText.evalJSON();
			var span = $('password_msg');
						
			$w(span.className).each(function(val) {
				if(val != 'icon') {
					span.removeClassName(val);
				}
			});			
			
			switch(json.strength) {
				case 'medium':
					span.addClassName('a1');
					break;
				case 'strong':
					span.addClassName('a4');
					break;
				case 'weak':
				default:
					span.addClassName('a2');
					break;	
			}
						
			span.innerHTML = json.message;			
		},
		onFailure: function() {
			response = "Information Temporarily Unavailable";	
		}
	});
}

function enroll(accessCode, id) {
	new Ajax.Request('client/enroll/enroll/format/json', {
		method: 'post',
		parameters: {accessCode: accessCode, id: id},
		onSuccess: function(data) {
			var json = data.responseText.evalJSON();
			
			if(json.result == true) {
				$('error').addClassName('green');
			} else {
				$('error').addClassName('red');
			}
			
			$('error').style.display = '';
			$('error').innerHTML = json.errors;		
		},
		onFailure: function() {
			response = "Information Temporarily Unavailable";	
		}
	});	
}
