/**
 * Account management functions
 * used by the GUI
 *
 * @version $Id: account_functions.js 1347 2011-07-21 19:58:36Z gab $
 * @author Constantin Iosseliani
 */


var jSSaccount = {
	

	teachingFaculty : {
			
		counter : 0,
		
		init : function() {
			
			
			$('#teaching_faculty_button').css({
				cursor	:	'pointer'
			});
			
			
			$('#teaching_faculty_button').click(function(){
				
				var value = $('#teaching_faculty').val();
				
				if (value.match(/^[a-zéèêêôûùîà0-9\-\s\']+$/i)) {
					
					jSSaccount.teachingFaculty.add(value);
					$('#teaching_faculty').val('');

				}	
				
			});
			
			// load up stuff that is already there
			var old_values = $('#user_institution').val().split(',');
			
						
			for (var i = 0; i < old_values.length; i++) {
	
				if (old_values[i] != '') {
					this.appendDiv(old_values[i]);
				}
			}			
		},
		
		
		appendDiv : function(value) {
			
			this.counter++;
			
			$('#user_institutions_div').append('<div><img id=inst_span_' + this.counter + ' src="/images/btn_remove_small.jpg" />&nbsp;'+ value + '</div>');

			
			$('#inst_span_' + this.counter).click(function(){
				jSSaccount.teachingFaculty.remove(value);
				$(this).parent().css('display', 'none');
			});
		
			$('#inst_span_' + this.counter).css({
				cursor	: 'pointer'
			});
			
	
			return true;
			
		},
		
		
		
		add : function(value) {
			
			var old_values = $('#user_institution').val().split(',');
			
			if (old_values.length > 3) {
				
				return false;
				
			}
			
			for (var i = 0; i < old_values.length; i++) {

				if (old_values[i] == value) {
					return false;
				}
			}

			$('#user_institution').val($('#user_institution').val() + ',' + value);

			if (old_values.length == 3) {

				$('#teaching_faculty_button').css({
					display	:	'none'
				});
			}

			this.appendDiv(value);
			
			return true;
			
		},
		
		remove : function(value) {
			
			var old_values = $('#user_institution').val().split(',');
			
			if (old_values.length == 0) {
				return false;	
			}
			
			var new_values = '';
			
			for (var i = 0; i < old_values.length; i++) {
					
				if (old_values[i] != value && old_values[i] != '') {
					new_values += ',' + old_values[i]
				}
			}			
			
			$('#user_institution').val(new_values);
				
			var divs = $('#user_institutions_div').find('div');
			
			for (var i = 0; i < divs.lenth; i++) {
				
				if (divs[i].html.indexOf('&nbsp;' + value) > -1) {
					divs[i].css({
						display : 'none'
					});
				}
			}
			
			$('#teaching_faculty_button').css({
				display	:	''
			});
			
			return true;	
			
		}
			
	},
		
	
	
	imageUpload : {
		
		init : function() {
			setTimeout('jSSaccount.imageUpload.monitor();', 1000);
		},
		
		
		monitor : function() {
			$.get('/webservices/monitor_uploaded_file.service.php', jSSaccount.imageUpload.callback);		
		},

		
		manualUploadUpdate : function(state) {
			
			if (state == 1) {
				$('#pzloader').css('visibility', 'visible');
				$('#pzloader').css('left', (938/2)-195);
				$('#pzloader').css('top', (window.screen.height/2)-300);
				$('#flashul_state').val('');
				
			} else if (state == 2) {
				$('#pzloader').css('visibility', 'hidden');
				jSSaccount.imageUpload.init();
			}
		},
		
		
		
		
		callback : function(data) {
			
			try {

				if (data.length) {
					eval("var result = " + data);
				}
				
				
				if (typeof result.error != 'undefined' && result.error != '') {
				
					alert('Error: ' + result.error);
					//jSSc.print_r(result);
					
					return false;
					
				} else if (typeof result.file != 'undefined' && result.file != '') {
				
					// found the file...
					$("#profile_picture").attr({
						src : "/view.php?tmp=" + result.file
					});
					
					$('#user_picture').val(result.file);
					
					return false;
				
				} else {
					//alert('Le téléchargement du fichier a échoué. SVP recommencez.');			
				}
			}
			catch (ex) {
				alert('Error: ' + ex.message);
			}
			
			//jSSaccount.imageUpload.init();
			
		}
		
	},
	

	password : {
			
		last_password : '',
		
		
		init : function() {
			
			jSSaccount.password.hideAll();
			jSSaccount.password.last_password = $('#password').val();
			jSSaccount.password.checkLoop();

		},
		
		checkLoop : function () {
			
			var password = $('#password').val();
			
			if (password != jSSaccount.password.last_password) {
				
				jSSaccount.password.last_password = password;
				jSSaccount.password.getStrength(password);
				
			}
			
			setTimeout('jSSaccount.password.checkLoop();', 2000);
			
		},
		
		
		getStrength : function(password) {
			
			var message = false;
			
			if (password.length < 6) {
				message = 0;
			} else if (password.match(/^([a-z]+|[0-9]+)$/i)) {
				
				if (password.length < 10) {
					message = 1;
				} else {
					message = 2;
				}
			} else if (password.match(/^[a-z0-9]+$/i)) {
				
				if (password.length < 10) {
					message = 2;
				} else {
					message = 3;
				}
			} else {
				message = -1;
			}
			
		
			jSSaccount.password.hideAll();

			$('#password_strength').css('display', 'block');

			if ( message == -1) {
				$('#password_strength_invalid').css('display', 'block');
			}

			if ( message == 0) {
				$('#password_strength_too_short').css('display', 'block');
			}

			if ( message == 1) {
				$('#password_strength_weak').css('display', 'block');
			}

			if ( message == 2) {
				$('#password_strength_medium').css('display', 'block');
			}

			if ( message == 3) {
				$('#password_strength_strong').css('display', 'block');
			}
		
			
		},
		
		hideAll : function() {
		
			$('#password_strength_weak').css('display', 'none');
			$('#password_strength_medium').css('display', 'none');
			$('#password_strength_strong').css('display', 'none');
			$('#password_strength_invalid').css('display', 'none');
			$('#password_strength_too_short').css('display', 'none');	
		}
		
	},
            		
	                        		
	userTypes : {
	
	
		left_list 	: 	null,
		
		right_list	: 	null,
		
		

		init : function() {
				
			this.left_list 	=	document.getElementById('all_user_types');
			this.right_list = 	document.getElementById('sel_user_types');

			var ids = new Array(
				'user_type_student',
				'user_type_parent',
				'user_type_teacher',
				'user_type_specialist'
			);


			for (var i=0; i < ids.length; i++) {

				if ($('#' + ids[i]).attr('checked') == true) {

					$('#' + ids[i]).click();
					$('#' + ids[i]).attr('checked', true);
				}
			}
			
			var old_values = $('#user_types').val().split(',');

			for (var i = 0; i < old_values.length; i++) {
				if (old_values[i] != '') {
					this.add(this.right_list, old_values[i]);
				}
			}
								
		},
		
		add : function(select_box, user_type) {

			if (typeof(user_type) != 'Object') {
				
				var option = document.createElement('OPTION');
				option.setAttribute('VALUE', user_type);
				option.innerHTML = user_type;
				
				user_type = option;
			}

			select_box.appendChild(user_type);
			
		},
	
		
		remove : function(select_box, user_type) {
			
			if (typeof(user_type) == 'Object') {
				user_type = user_type.innerHTML;
			}
			
			
	    	nodes = select_box.childNodes;
	    				
	    	for (var i in nodes) {
	    		
	    		if (typeof nodes[i] != 'undefined' && nodes[i].nodeName == 'OPTION' && nodes[i].innerHTML == user_type) {
	    			select_box.removeChild(nodes[i]);
	    		}	
	
	    	}				
		},
		
		
		moveRight : function(option_item) {
			
			if (option_item != null) {
			
				value = option_item.innerHTML;
					
				var old_values = $('#user_types').val().split(',');
				
				for (var i = 0; i < old_values.length; i++) {
	
					if (old_values[i] == value) {
						return false;
					}
				}

				$('#user_types').val($('#user_types').val() + ',' + value);

				
				this.remove(this.right_list, value);	
				this.add(this.right_list, value);	
				this.remove(this.left_list, value);
			}
			
		},
		

		
		moveLeft : function(option_item) {
			
			if (option_item != null) {
				
				value = option_item.innerHTML;

				var old_values = $('#user_types').val().split(',');
			
				if (old_values.length == 0) {
					return false;	
				}
			
				var new_values = '';
			
				for (var i = 0; i < old_values.length; i++) {
						
					if (old_values[i] != value && old_values[i] != '') {
						new_values += ',' + old_values[i]
					}
				}			
			
				$('#user_types').val(new_values);
				
				$('#user_type_add_button').css({
					display	:	''
				});
				
				
				this.remove(this.left_list, option_item.innerHTML);
				this.add(this.left_list, option_item.innerHTML);	
				this.remove(this.right_list, option_item.innerHTML);
			}
			
		},
		
		
		
		populate : function (user_type) {
			
			var left_list 	= this.left_list;
			var right_list	= this.right_list;
			
			
			if (user_type.checked) {
				
				// populate the required fields

				// handle the frenchness... :)
				var reg = new RegExp('user_type_');
				var type_to_use = user_type.id.replace(reg, '');
				
				if (typeof user_types[type_to_use] != 'undefined') {
	    					
					var old_values = $('#user_types').val().split(',');					
					
					var skip = false;
					
	    			for (var i in user_types[type_to_use]) {
	    				
	    				skip = false;
	    				
	    				if (old_values.length > 0) {
					
							for (var j = 0; j < old_values.length; j++) {
								if (old_values[j] == i) {
									skip = true;
									break;
								}
							}	
						}		
	    				
	    				if (skip == false) {
	    					jSSaccount.userTypes.add(left_list, i);	
	    				}
	    			}
	    		}
	    		
			} else {
			
				var reg = new RegExp('user_type_');
				var type_to_use = user_type.id.replace(reg, '');
				
				if (typeof user_types[type_to_use] != 'undefined') {
		
					var nodes;
					
	    			for (var i in user_types[type_to_use]) {
	    		
	    				jSSaccount.userTypes.remove(left_list, i);
	    				
	    			}
	    		}
			}
		}
	}
}
