diff --git a/grnet_core/grnet_core.admin.inc b/grnet_core/grnet_core.admin.inc
new file mode 100755
index 0000000..c1cc634
--- /dev/null
+++ b/grnet_core/grnet_core.admin.inc
@@ -0,0 +1,148 @@
+<?php
+
+/**
+ * @file
+ * CAS module settings UI.
+ */
+
+/**
+ * Provides settings pages.
+ */
+function grnet_core_admin_settings() {
+
+	//$ldaphost = '127.0.0.1';
+	//$ldapport = '5389';
+	//$ldapbinddn	= 'cn=admin,dc=hosp-xanthi,dc=gr';
+	//$ldappass = 'secret';
+	//$ldapbasedn = 'ou=people,dc=hosp-xanthi,dc=gr';
+
+  $form['grnet_settings'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Grnet Global Settings'),
+    '#collapsible' => TRUE,
+    '#collapsed' => FALSE,
+  );
+  
+  $form['grnet_settings']['grnet_header_sitename'] = array(
+  		'#type' => 'textfield',
+  		'#title' => t('Header Site Name'),
+  		'#default_value' => variable_get('grnet_header_sitename', ''),
+  		'#size' => 90,
+  		// Hostnames can be 255 characters long.
+  		'#maxlength' => 255,
+  		'#description' => t('Header Site Name..'),
+  );
+
+
+  $form['grnet_settings']['grnet_mail_verification_duration_in_minutes'] = array(
+  		'#type' => 'textfield',
+  		'#title' => t('Mail Verification Duration (in minutes)'),
+  		'#default_value' => variable_get('grnet_mail_verification_duration_in_minutes', '15'),
+  		'#size' => 5,
+  		'#maxlength' => 5,
+  		'#description' => t('Time in minutes between submittion and mail verification. After that the submition will be deleted!!'),
+  );
+  
+  $form['grnet_settings']['grnet_complete_submission_duration_in_days'] = array(
+  		'#type' => 'textfield',
+  		'#title' => t('Complete Submission Duration (in days)'),
+  		'#default_value' => variable_get('grnet_complete_submission_duration_in_days', '10'),
+  		'#size' => 5,
+  		'#maxlength' => 5,
+  		'#description' => t('Days until a user must visit the manager to complete his submission. After that the submition will be deleted even if it\'s in state pending!!'),
+  );
+  
+  $form['grnet_settings']['grnet_domain_suffixed_emails'] = array(
+  		'#type' => 'textfield',
+  		'#title' => t('Base Domain Name (for limit domain suffixed emails if enabled..above)'),
+  		'#default_value' => variable_get('grnet_domain_suffixed_emails', $_SERVER['SERVER_NAME']),
+  		'#size' => 30,
+  		'#maxlength' => 30,
+  		'#description' => t('The base domain name that the mails has been constructed and will be permit if above checkbox is set to checked. (Default='.$_SERVER['SERVER_NAME'].')'),
+  );
+  
+  $form['grnet_settings']['grnet_limit_domain_suffixed_emails'] = array(
+  		'#type' => 'checkbox',
+  		'#title' => t('Limit domain suffixed emails'),
+  		'#default_value' => variable_get('grnet_limit_domain_suffixed_emails', '0'),
+  		'#size' => 5,
+  		'#maxlength' => 5,
+  		'#description' => t('Only permit mails with suffixed domain. (...@domain.xx) '),
+  );
+
+  
+  
+  
+  $form['grnet_manager_settings'] = array(
+  		'#type' => 'fieldset',
+  		'#title' => t('Manager Settings'),
+  		'#collapsible' => TRUE,
+  		'#collapsed' => FALSE,
+  );  
+
+  
+  $form['grnet_manager_settings']['grnet_manager_contact_info_name_surname'] = array(
+  		'#type' => 'textfield',
+  		'#title' => t('Manager Contact Info - Name/Surname'),
+  		'#default_value' => variable_get('grnet_manager_contact_info_name_surname', ''),
+  		'#size' => 90,
+  		// Hostnames can be 255 characters long.
+  		'#maxlength' => 90,
+  		'#description' => t('Manager Contact Info - Name/Surname'),
+  );  
+  
+  $form['grnet_manager_settings']['grnet_manager_contact_info_phone'] = array(
+  		'#type' => 'textfield',
+  		'#title' => t('Manager Contact Info - Phone'),
+  		'#default_value' => variable_get('grnet_manager_contact_info_phone', ''),
+  		'#size' => 90,
+  		// Hostnames can be 255 characters long.
+  		'#maxlength' => 90,
+  		'#description' => t('Manager Contact Info - Phone'),
+  );
+
+  $form['grnet_manager_settings']['grnet_manager_contact_info_mobile'] = array(
+  		'#type' => 'textfield',
+  		'#title' => t('Manager Contact Info - Mobile'),
+  		'#default_value' => variable_get('grnet_manager_contact_info_mobile', ''),
+  		'#size' => 90,
+  		// Hostnames can be 255 characters long.
+  		'#maxlength' => 90,
+  		'#description' => t('Manager Contact Info - Mobile'),
+  );  
+
+  $form['grnet_manager_settings']['grnet_manager_contact_info_address'] = array(
+  		'#type' => 'textfield',
+  		'#title' => t('Manager Contact Info - Address'),
+  		'#default_value' => variable_get('grnet_manager_contact_info_address', ''),
+  		'#size' => 90,
+  		// Hostnames can be 255 characters long.
+  		'#maxlength' => 90,
+  		'#description' => t('Manager Contact Info - Address'),
+  );  
+
+  $form['grnet_manager_settings']['grnet_manager_contact_info_email'] = array(
+  		'#type' => 'textfield',
+  		'#title' => t('Manager Contact Info - Email'),
+  		'#default_value' => variable_get('grnet_manager_contact_info_email', variable_get('site_email')),
+  		'#size' => 90,
+  		'#required' => true,
+  		// Hostnames can be 255 characters long.
+  		'#maxlength' => 90,
+  		'#description' => t('Manager Contact Info - Email'),
+  );
+  
+  $form['grnet_manager_settings']['grnet_manager_contact_info_other'] = array(
+  		'#type' => 'textfield',
+  		'#title' => t('Manager Contact Info - Other'),
+  		'#default_value' => variable_get('grnet_manager_contact_info_other', ''),
+  		'#size' => 90,
+  		// Hostnames can be 255 characters long.
+  		'#maxlength' => 90,
+  		'#description' => t('Manager Contact Info - Other'),
+  );  
+  
+  
+  
+  return system_settings_form($form);
+}
diff --git a/grnet_core/grnet_core.info b/grnet_core/grnet_core.info
new file mode 100755
index 0000000..0413f9d
--- /dev/null
+++ b/grnet_core/grnet_core.info
@@ -0,0 +1,16 @@
+name = grnet Core
+description = grnet Core module - utility functions..
+core = "7.x"
+package = grnet
+; Information added by drupal.org packaging script on 2013-05-20
+version = "7.x-1.0"
+core = "7.x"
+project = "grnet_core"
+datestamp = "1369041918"
+scripts[] = js/info-view--hide-show-on-load.js
+scripts[] = js/info-edit--inline-errors.js
+scripts[] = js/info-edit--hide-show-per-click.js
+scripts[] = js/info-edit--hide-show-on-load.js
+scripts[] = js/info-edit--avaliable-states.js
+scripts[] = js/info-edit--double-highlight-diffs.js
+scripts[] = js/info-view--double-highlight-diffs.js
diff --git a/grnet_core/grnet_core.module b/grnet_core/grnet_core.module
new file mode 100755
index 0000000..206b4d9
--- /dev/null
+++ b/grnet_core/grnet_core.module
@@ -0,0 +1,341 @@
+<?php
+function grnet_core_menu() {
+	
+	$items['admin/config/grnet'] = array(
+			'title' => 'grnet Settings',
+			'description' => 'grnet Settings',
+			'position' => 'right',
+			'page callback' => 'system_admin_menu_block_page',
+			'access arguments' => array('access administration pages'),
+			'file' => 'system.admin.inc',
+			'file path' => drupal_get_path('module', 'system')
+	);
+		$items['admin/config/grnet/global'] = array(
+				'title' => 'grnet Global settings',
+				'description' => 'Configure grnet Global Settings',
+				'page callback' => 'drupal_get_form',
+				'page arguments' => array('grnet_core_admin_settings'),
+				'access arguments' => array('administer cas'),
+				'type' => MENU_NORMAL_ITEM,
+				'file' => 'grnet_core.admin.inc',
+		);
+		
+		$items['admin/config/grnet/global/settings'] = array(
+				'title' => 'grnet Global Settings',
+				'type' => MENU_DEFAULT_LOCAL_TASK,
+				'weight' => -10,
+		);
+	
+	return $items;
+}
+function grnet_core_convert($text, $revert=NULL){
+	
+	$text_array = array(
+			"_none" => "- Κανένα -",
+	
+			"medical" => "Ιατρικό",
+			"nursery" => "Νοσηλευτικό",
+			"administrative" => "Διοικητικό",
+				
+			"esy_doctors" => "Γιατροί ΕΣΥ",
+			"academics" => "Πανεπιστημιακοί Γιατροί",
+			"other" => "Άλλοι Επιστήμονες",
+	
+			"iatr_tmimata_monades_ana_tomea" => "Τμήματα / Μονάδες ανά Τομέα",
+			"iatr_tmimata_diatomeakou_epipedou" => "Τμήματα Διατομεακού Επιπέδου",
+			"iatr_epikourika_loipa" => "Επικουρικά / Λοιπά",
+	);
+	
+	if($revert){
+		return array_search($text, $text_array);
+	}else{
+		return $text_array[$text];
+	}
+	
+}
+function grnet_core_create_schGrAcPersonID($uid){
+	$schGrAcPersonID = strtoupper($uid);
+	while( strlen($schGrAcPersonID)<22 ){
+		$schGrAcPersonID .= '0';
+	}
+	return $schGrAcPersonID;
+}
+function grnet_core_get_term_by_rdn($rdn){
+	$temp = str_replace('uniqueIdentifier=','',$rdn);
+	$temp_array = explode(',ou' , $temp);
+	$tid=$temp_array[0];
+	if($tid>0){
+		$term = taxonomy_term_load($tid);
+	}
+	return $term;
+}
+function grnet_core_conver_dias_roles($tid){
+	$term = taxonomy_term_load($tid);
+	$result = $term->field_entitlement;
+	return $result['und']['0']['value'];
+}
+function grnet_core_conver_dias_roles_revert_to_tid($ldap_dias_roles_entitlment){
+	$tid = db_query("SELECT tid 	FROM field_data_field_entitlement as fdfe JOIN taxonomy_term_data AS ttt on ttt.tid=fdfe.entity_id where fdfe.field_entitlement_value=:entitlement",
+			array(':entitlement' => $ldap_dias_roles_entitlment))->fetchField();
+	return $tid;
+}
+
+function grnet_core_get_backend_name($tid){
+	$term_name = db_query("SELECT field_backend_name_value FROM {field_data_field_backend_name} WHERE entity_id=:entity_id",array(':entity_id' => $tid))->fetchField();
+	return $term_name;
+}
+function grnet_core_user_has_role($rolename){
+	global $user;
+	$current_user = user_load($user->uid);
+	if(array_search($rolename,$current_user->roles)){
+		return TRUE;
+	}else{
+		return FALSE;
+	}
+}
+function grnet_core_entity_has_changed($entity_loaded, $entity_presave){
+		
+		
+		
+	if($entity_loaded->field_ldapregistr_name['und'][0]['value'] <> $entity_presave->field_ldapregistr_name['und'][0]['value']){
+		return TRUE;
+	
+	}elseif($entity_loaded->field_ldapregistr_surname['und'][0]['value'] <> $entity_presave->field_ldapregistr_surname['und'][0]['value']){
+		return TRUE;
+			
+	}elseif($entity_loaded->field_ldapregistr_amka['und'][0]['value'] <> $entity_presave->field_ldapregistr_amka['und'][0]['value']){
+		return TRUE;
+	}elseif($entity_loaded->field_ldapregistr_email['und'][0]['email'] <> $entity_presave->field_ldapregistr_email['und'][0]['email']){
+		return TRUE;				
+	}elseif($entity_loaded->field_ldapregistr_phone['und'][0]['value'] <> $entity_presave->field_ldapregistr_phone['und'][0]['value']){
+		return TRUE;			
+		
+		
+	}elseif($entity_loaded->field_ldapregistr_mobile['und'][0]['value'] <> $entity_presave->field_ldapregistr_mobile['und'][0]['value']){
+		return TRUE;
+	}elseif($entity_loaded->field_ldapregistr_personel_categ['und'][0]['value'] <> $entity_presave->field_ldapregistr_personel_categ['und'][0]['value']){
+		return TRUE;		
+	}elseif($entity_loaded->field_ldapregistr_dicom['und'][0]['value'] <> $entity_presave->field_ldapregistr_dicom['und'][0]['value']){
+		return TRUE;
+	}elseif($entity_loaded->field_ldapregistr_personel_type['und'][0]['value'] <> $entity_presave->field_ldapregistr_personel_type['und'][0]['value']){
+		return TRUE;
+	}elseif($entity_loaded->field_ldapregistr_speciality['und'][0]['tid'] <> $entity_presave->field_ldapregistr_speciality['und'][0]['tid']){
+		return TRUE;
+	}elseif($entity_loaded->field_ldapregistr_iatr_top_mon['und'][0]['value'] <> $entity_presave->field_ldapregistr_iatr_top_mon['und'][0]['value']){
+		return TRUE;			
+	}elseif($entity_loaded->field_ldapregistr_tmim_mon_tomea['und'][0]['tid'] <> $entity_presave->field_ldapregistr_tmim_mon_tomea['und'][0]['tid']){
+		return TRUE;			
+	}elseif($entity_loaded->field_ldapregistr_epikour_loipa['und'][0]['tid'] <> $entity_presave->field_ldapregistr_epikour_loipa['und'][0]['tid']){
+		return TRUE;		
+	}elseif($entity_loaded->field_ldapregistr_iatr_proist['und'][0]['value'] <> $entity_presave->field_ldapregistr_iatr_proist['und'][0]['value']){
+		return TRUE;
+	}elseif($entity_loaded->field_ldapregistr_dioik_tmimgraf['und'][0]['tid'] <> $entity_presave->field_ldapregistr_dioik_tmimgraf['und'][0]['tid']){
+		return TRUE;
+	}elseif($entity_loaded->field_ldapregistr_admin_proist['und'][0]['value'] <> $entity_presave->field_ldapregistr_admin_proist['und'][0]['value']){
+		return TRUE;		
+	}elseif($entity_loaded->field_ldapregistr_dias_roles['und'][0]['tid'] <> $entity_presave->field_ldapregistr_dias_roles['und'][0]['tid']){
+			return TRUE;		
+			
+	}else{
+		return FALSE;
+	}
+		
+		
+}
+function grnet_core_entity_load($entities, $type) {
+	foreach ($entities as $entity) {
+		
+			
+		
+		if(arg(0)=='entityform' && arg(2)=='edit' && $type=='entityform'){
+			$_SESSION['grnet']['ldapregistration'][$entity->entityform_id] = $entity;
+			
+		}
+		
+		
+		
+		if($type=='entityform'){
+			
+			
+			
+			
+			
+			
+			
+		}
+		
+		
+		
+		 	 
+		
+	}
+	
+}
+function grnet_core_get_username_by_entity_id($entity_id){
+	$username = db_query("SELECT field_ldapregistr_username_value as username FROM {field_data_field_ldapregistr_username} WHERE entity_id=:entity_id",array(':entity_id' => $entity_id))->fetchField();
+	return $username;
+}
+function grnet_core_get_entity_id_by_username($username){
+	$entity_id = db_query("SELECT entity_id  FROM {field_data_field_ldapregistr_username} WHERE field_ldapregistr_username_value=:username",array(':username' => $username))->fetchField();
+	return $entity_id;
+}
+function grnet_core_get_entity_id_by_secretkey($secretkey){
+	$entity_id = db_query("SELECT entity_id  FROM {field_data_field_ldapregistr_secretkey} WHERE field_ldapregistr_secretkey_value=:secretkey",array(':secretkey' => $secretkey))->fetchField();
+	return $entity_id;
+}
+function grnet_core_get_ldapinfo_user(){
+	$default_username = 'anonymous';
+	global $user;
+	if($_SESSION['phpCAS']['user']<>''){
+		$username = $_SESSION['phpCAS']['user'];
+	}elseif(grnet_core_user_has_role('manager')){
+		 
+		if(arg(0)=='requests' && arg(1)=='view' && arg(2)>0){
+			$username = grnet_core_get_username_by_entity_id(arg(2));
+		}elseif(arg(0)=='entityform' && arg(2)=='edit' && arg(1)>0){
+			$username = grnet_core_get_username_by_entity_id(arg(1));
+		}
+	}else{
+		$username = $default_username;
+	}
+	 
+	return $username;
+}
+function grnet_core_get_ldapuser_hidden_message(){
+	if($_SESSION['phpCAS']['user']<>''){
+		$entity_id = grnet_core_get_entity_id_by_username($_SESSION['phpCAS']['user']);
+		$entity_instance = entity_load('entityform', array($entity_id));
+		$entity_instance = $entity_instance[$entity_id];
+		$hidden_message = $entity_instance->field_ldapregistr_hidden_message['und']['0']['value'];
+		if($hidden_message<>''){
+			if(strpos($hidden_message, 'απορρίφθηκε') !== false){
+				drupal_set_message($hidden_message, 'warning');
+			}else{
+				drupal_set_message($hidden_message);
+			}
+			$entity_instance->field_ldapregistr_hidden_message['und']['0']['value']= '';
+			$entity_instance->save();
+		}
+	}
+}
+function grnet_core_sync_ldapuser_submission_ownership(){
+	
+	if($_SESSION['phpCAS']['user']<>''){
+		
+		
+		
+		
+		
+		
+		global $user;
+		if($user->field_submission_ownership_sync['und']['0']['value']<>1){
+		
+			$entity_id = grnet_core_get_entity_id_by_username($_SESSION['phpCAS']['user']);
+			$entity_instance = entity_load('entityform', array($entity_id));
+			$entity_instance = $entity_instance[$entity_id];
+			
+			if($entity_id==''){
+				drupal_set_message('Δεν βρέθηκε ανώνυμη υποβολή με το username με το οποίο εισήλθατε στο σύστημα μέσω CAS!!' , 'error');
+			}else{
+			
+				$entity_instance->uid = $user->uid;
+				$entity_instance->save();
+				
+				
+				$edit = array(
+						'field_submission_ownership_sync' => array(
+								'und' => array(
+										0 => array(
+												'value' => 1,
+										),
+								),
+						),
+				);
+				user_save($account, $edit);
+				
+				
+				drupal_set_message('Η ανώνυμη υποβολή σας, συγχρονίστηκε με τον λογαριασμό σας.');
+			}
+			
+		
+		}else{
+		}
+		
+		
+	
+	}
+	
+}
+function grnet_core_get_manager_contact_info(){
+	$output = '';
+	
+	if(variable_get('grnet_manager_contact_info_name_surname')<>''){
+		$output .= variable_get('grnet_manager_contact_info_name_surname');
+		$output .= '<br>';
+	}
+	
+	if(variable_get('grnet_manager_contact_info_phone')<>''){
+		$output .= variable_get('grnet_manager_contact_info_phone');
+		$output .= '<br>';
+	}
+	
+	if(variable_get('grnet_manager_contact_info_mobile')<>''){
+		$output .= variable_get('grnet_manager_contact_info_mobile');
+		$output .= '<br>';
+	}
+	
+	if(variable_get('grnet_manager_contact_info_address')<>''){
+		$output .= variable_get('grnet_manager_contact_info_address');
+		$output .= '<br>';
+	}
+	
+	if(variable_get('grnet_manager_contact_info_email')<>''){
+		$output .= variable_get('grnet_manager_contact_info_email');
+		$output .= '<br>';
+	}
+	
+	if(variable_get('grnet_manager_contact_info_other')<>''){
+		$output .= variable_get('grnet_manager_contact_info_other');
+		$output .= '<br>';
+	}	
+	
+	return $output;
+}
+function grnet_core_isEmailValidDueToDomainSuffixedPolicy($email){
+	if(variable_get('grnet_limit_domain_suffixed_emails')==0){
+		return true;
+			
+	}else{
+		if(_endsWith($email, '@'.variable_get('grnet_domain_suffixed_emails'))){
+			return true;
+		}else{
+			return false;
+		}
+			
+	}
+}
+function _endsWith($haystack, $needle)
+{
+	$length = strlen($needle);
+	if ($length == 0) {
+		return true;
+	}
+	return (substr($haystack, -$length) === $needle);
+}
+function grnet_core_validateAMKA($amka) {
+	if(!preg_match('/^\d{11}$/' , $amka) || $amka == '000000000'){
+		return false;
+	}
+	$iSum = 0;
+	for ($i=1; $i <= strlen($amka); $i++) {
+		$iDigit = intval($amka[$i-1], 10);
+		if ($i % 2 === 0) {
+			$iDigit *= 2;
+			if ($iDigit > 9) {
+				$iDigit -= 9;
+			}
+		}
+		$iSum += $iDigit;
+	}
+	return ($iSum % 10 === 0);
+}
diff --git a/grnet_core/grnet_core.module~ b/grnet_core/grnet_core.module~
new file mode 100755
index 0000000..2bcbd32
--- /dev/null
+++ b/grnet_core/grnet_core.module~
@@ -0,0 +1,348 @@
+<?php
+function grnet_core_menu() {
+	
+	$items['admin/config/grnet'] = array(
+			'title' => 'grnet Settings',
+			'description' => 'grnet Settings',
+			'position' => 'right',
+			'page callback' => 'system_admin_menu_block_page',
+			'access arguments' => array('access administration pages'),
+			'file' => 'system.admin.inc',
+			'file path' => drupal_get_path('module', 'system')
+	);
+		$items['admin/config/grnet/global'] = array(
+				'title' => 'grnet Global settings',
+				'description' => 'Configure grnet Global Settings',
+				'page callback' => 'drupal_get_form',
+				'page arguments' => array('grnet_core_admin_settings'),
+				'access arguments' => array('administer cas'),
+				'type' => MENU_NORMAL_ITEM,
+				'file' => 'grnet_core.admin.inc',
+		);
+		
+		$items['admin/config/grnet/global/settings'] = array(
+				'title' => 'grnet Global Settings',
+				'type' => MENU_DEFAULT_LOCAL_TASK,
+				'weight' => -10,
+		);
+	
+	return $items;
+}
+function grnet_core_convert($text, $revert=NULL){
+	
+	$text_array = array(
+			"_none" => "- Κανένα -",
+	
+			"medical" => "Ιατρικό",
+			"nursery" => "Νοσηλευτικό",
+			"administrative" => "Διοικητικό",
+				
+			"esy_doctors" => "Γιατροί ΕΣΥ",
+			"academics" => "Πανεπιστημιακοί Γιατροί",
+			"other" => "Άλλοι Επιστήμονες",
+	
+			"iatr_tmimata_monades_ana_tomea" => "Τμήματα / Μονάδες ανά Τομέα",
+			"iatr_tmimata_diatomeakou_epipedou" => "Τμήματα Διατομεακού Επιπέδου",
+			"iatr_epikourika_loipa" => "Επικουρικά / Λοιπά",
+	);
+	
+	if($revert){
+		return array_search($text, $text_array);
+	}else{
+		return $text_array[$text];
+	}
+	
+}
+function grnet_core_create_schGrAcPersonID($uid){
+	$schGrAcPersonID = strtoupper($uid);
+	while( strlen($schGrAcPersonID)<22 ){
+		$schGrAcPersonID .= '0';
+	}
+	return $schGrAcPersonID;
+}
+function grnet_core_get_term_by_rdn($rdn){
+	$temp = str_replace('uniqueIdentifier=','',$rdn);
+	$temp_array = explode(',ou' , $temp);
+	$tid=$temp_array[0];
+	if($tid>0){
+		$term = taxonomy_term_load($tid);
+	}
+	return $term;
+}
+function grnet_core_conver_dias_roles($tid){
+	$term = taxonomy_term_load($tid);
+	$result = $term->field_entitlement;
+	return $result['und']['0']['value'];
+}
+function grnet_core_conver_dias_roles_revert_to_tid($ldap_dias_roles_entitlment){
+	$tid = db_query("SELECT tid 	FROM field_data_field_entitlement as fdfe JOIN taxonomy_term_data AS ttt on ttt.tid=fdfe.entity_id where fdfe.field_entitlement_value=:entitlement",
+			array(':entitlement' => $ldap_dias_roles_entitlment))->fetchField();
+	return $tid;
+}
+/*
+function grnet_core_get_topothetisi_se_monada($tid){
+	grnet_core_get_term_name_by_rdn($rdn)
+}
+*/
+function grnet_core_get_backend_name($tid){
+	$term_name = db_query("SELECT field_backend_name_value FROM {field_data_field_backend_name} WHERE entity_id=:entity_id",array(':entity_id' => $tid))->fetchField();
+	return $term_name;
+}
+function grnet_core_user_has_role($rolename){
+	global $user;
+	$current_user = user_load($user->uid);
+	if(array_search($rolename,$current_user->roles)){
+		return TRUE;
+	}else{
+		return FALSE;
+	}
+}
+function grnet_core_entity_has_changed($entity_loaded, $entity_presave){
+		
+		
+		
+	if($entity_loaded->field_ldapregistr_name['und'][0]['value'] <> $entity_presave->field_ldapregistr_name['und'][0]['value']){
+		return TRUE;
+	
+	}elseif($entity_loaded->field_ldapregistr_surname['und'][0]['value'] <> $entity_presave->field_ldapregistr_surname['und'][0]['value']){
+		return TRUE;
+			
+	}elseif($entity_loaded->field_ldapregistr_amka['und'][0]['value'] <> $entity_presave->field_ldapregistr_amka['und'][0]['value']){
+		return TRUE;
+	}elseif($entity_loaded->field_ldapregistr_email['und'][0]['email'] <> $entity_presave->field_ldapregistr_email['und'][0]['email']){
+		return TRUE;				
+	}elseif($entity_loaded->field_ldapregistr_phone['und'][0]['value'] <> $entity_presave->field_ldapregistr_phone['und'][0]['value']){
+		return TRUE;			
+		
+		
+	}elseif($entity_loaded->field_ldapregistr_mobile['und'][0]['value'] <> $entity_presave->field_ldapregistr_mobile['und'][0]['value']){
+		return TRUE;
+	}elseif($entity_loaded->field_ldapregistr_personel_categ['und'][0]['value'] <> $entity_presave->field_ldapregistr_personel_categ['und'][0]['value']){
+		return TRUE;		
+	}elseif($entity_loaded->field_ldapregistr_dicom['und'][0]['value'] <> $entity_presave->field_ldapregistr_dicom['und'][0]['value']){
+		return TRUE;
+	}elseif($entity_loaded->field_ldapregistr_personel_type['und'][0]['value'] <> $entity_presave->field_ldapregistr_personel_type['und'][0]['value']){
+		return TRUE;
+	}elseif($entity_loaded->field_ldapregistr_speciality['und'][0]['tid'] <> $entity_presave->field_ldapregistr_speciality['und'][0]['tid']){
+		return TRUE;
+	}elseif($entity_loaded->field_ldapregistr_iatr_top_mon['und'][0]['value'] <> $entity_presave->field_ldapregistr_iatr_top_mon['und'][0]['value']){
+		return TRUE;			
+	}elseif($entity_loaded->field_ldapregistr_tmim_mon_tomea['und'][0]['tid'] <> $entity_presave->field_ldapregistr_tmim_mon_tomea['und'][0]['tid']){
+		return TRUE;			
+	}elseif($entity_loaded->field_ldapregistr_epikour_loipa['und'][0]['tid'] <> $entity_presave->field_ldapregistr_epikour_loipa['und'][0]['tid']){
+		return TRUE;		
+	}elseif($entity_loaded->field_ldapregistr_iatr_proist['und'][0]['value'] <> $entity_presave->field_ldapregistr_iatr_proist['und'][0]['value']){
+		return TRUE;
+	}elseif($entity_loaded->field_ldapregistr_dioik_tmimgraf['und'][0]['tid'] <> $entity_presave->field_ldapregistr_dioik_tmimgraf['und'][0]['tid']){
+		return TRUE;
+	}elseif($entity_loaded->field_ldapregistr_admin_proist['und'][0]['value'] <> $entity_presave->field_ldapregistr_admin_proist['und'][0]['value']){
+		return TRUE;		
+	}elseif($entity_loaded->field_ldapregistr_dias_roles['und'][0]['tid'] <> $entity_presave->field_ldapregistr_dias_roles['und'][0]['tid']){
+			return TRUE;		
+			
+	}else{
+		return FALSE;
+	}
+		
+		
+}
+function grnet_core_entity_load($entities, $type) {
+	foreach ($entities as $entity) {
+		
+			
+		
+		if(arg(0)=='entityform' && arg(2)=='edit' && $type=='entityform'){
+			$_SESSION['grnet']['ldapregistration'][$entity->entityform_id] = $entity;
+			
+		}
+		
+		
+		
+		if($type=='entityform'){
+			
+			
+			
+			
+			
+			
+			
+		}
+		
+		
+		
+		 	 
+		
+	}
+	
+}
+function grnet_core_get_username_by_entity_id($entity_id){
+	$username = db_query("SELECT field_ldapregistr_username_value as username FROM {field_data_field_ldapregistr_username} WHERE entity_id=:entity_id",array(':entity_id' => $entity_id))->fetchField();
+	return $username;
+}
+function grnet_core_get_entity_id_by_username($username){
+	$entity_id = db_query("SELECT entity_id  FROM {field_data_field_ldapregistr_username} WHERE field_ldapregistr_username_value=:username",array(':username' => $username))->fetchField();
+	return $entity_id;
+}
+function grnet_core_get_entity_id_by_secretkey($secretkey){
+	$entity_id = db_query("SELECT entity_id  FROM {field_data_field_ldapregistr_secretkey} WHERE field_ldapregistr_secretkey_value=:secretkey",array(':secretkey' => $secretkey))->fetchField();
+	return $entity_id;
+}
+function grnet_core_get_ldapinfo_user(){
+	$default_username = 'anonymous';
+	global $user;
+	if($_SESSION['phpCAS']['user']<>''){
+		$username = $_SESSION['phpCAS']['user'];
+	}elseif(grnet_core_user_has_role('manager')){
+		 
+		if(arg(0)=='requests' && arg(1)=='view' && arg(2)>0){
+			$username = grnet_core_get_username_by_entity_id(arg(2));
+		}elseif(arg(0)=='entityform' && arg(2)=='edit' && arg(1)>0){
+			$username = grnet_core_get_username_by_entity_id(arg(1));
+		}
+	}else{
+		$username = $default_username;
+	}
+	 
+	return $username;
+}
+function grnet_core_get_ldapuser_hidden_message(){
+	if($_SESSION['phpCAS']['user']<>''){
+		$entity_id = grnet_core_get_entity_id_by_username($_SESSION['phpCAS']['user']);
+		$entity_instance = entity_load('entityform', array($entity_id));
+		$entity_instance = $entity_instance[$entity_id];
+		$hidden_message = $entity_instance->field_ldapregistr_hidden_message['und']['0']['value'];
+		if($hidden_message<>''){
+			if(strpos($hidden_message, 'απορρίφθηκε') !== false){
+				drupal_set_message($hidden_message, 'warning');
+			}else{
+				drupal_set_message($hidden_message);
+			}
+			$entity_instance->field_ldapregistr_hidden_message['und']['0']['value']= '';
+			$entity_instance->save();
+		}
+	}
+}
+function grnet_core_sync_ldapuser_submission_ownership(){
+	
+	if($_SESSION['phpCAS']['user']<>''){
+		
+		
+		
+		
+		
+		
+		global $user;
+		if($user->field_submission_ownership_sync['und']['0']['value']<>1){
+		
+			$entity_id = grnet_core_get_entity_id_by_username($_SESSION['phpCAS']['user']);
+			$entity_instance = entity_load('entityform', array($entity_id));
+			$entity_instance = $entity_instance[$entity_id];
+			
+			if($entity_id==''){
+				drupal_set_message('Δεν βρέθηκε ανώνυμη υποβολή με το username με το οποίο εισήλθατε στο σύστημα μέσω CAS!!' , 'error');
+			}else{
+			
+				$entity_instance->uid = $user->uid;
+				$entity_instance->save();
+				
+				
+				$edit = array(
+						'field_submission_ownership_sync' => array(
+								'und' => array(
+										0 => array(
+												'value' => 1,
+										),
+								),
+						),
+				);
+				user_save($account, $edit);
+				
+				
+				drupal_set_message('Η ανώνυμη υποβολή σας, συγχρονίστηκε με τον λογαριασμό σας.');
+			}
+			
+		
+		}else{
+		}
+		
+		
+	
+	}
+	
+}
+function grnet_core_get_manager_contact_info(){
+	$output = '';
+	
+	if(variable_get('grnet_manager_contact_info_name_surname')<>''){
+		$output .= variable_get('grnet_manager_contact_info_name_surname');
+		$output .= '<br>';
+	}
+	
+	if(variable_get('grnet_manager_contact_info_phone')<>''){
+		$output .= variable_get('grnet_manager_contact_info_phone');
+		$output .= '<br>';
+	}
+	
+	if(variable_get('grnet_manager_contact_info_mobile')<>''){
+		$output .= variable_get('grnet_manager_contact_info_mobile');
+		$output .= '<br>';
+	}
+	
+	if(variable_get('grnet_manager_contact_info_address')<>''){
+		$output .= variable_get('grnet_manager_contact_info_address');
+		$output .= '<br>';
+	}
+	
+	if(variable_get('grnet_manager_contact_info_email')<>''){
+		$output .= variable_get('grnet_manager_contact_info_email');
+		$output .= '<br>';
+	}
+	
+	if(variable_get('grnet_manager_contact_info_other')<>''){
+		$output .= variable_get('grnet_manager_contact_info_other');
+		$output .= '<br>';
+	}	
+	
+	return $output;
+}
+function grnet_core_isEmailValidDueToDomainSuffixedPolicy($email){
+/* 	drupal_set_message(variable_get('grnet_limit_domain_suffixed_emails'));
+	drupal_set_message(variable_get('grnet_domain_suffixed_emails')); */
+	
+	if(variable_get('grnet_limit_domain_suffixed_emails')==0){
+		return true;
+			
+	}else{
+		if(_endsWith($email, '@'.variable_get('grnet_domain_suffixed_emails'))){
+			return true;
+		}else{
+			return false;
+		}
+			
+	}
+}
+function _endsWith($haystack, $needle)
+{
+	$length = strlen($needle);
+	if ($length == 0) {
+		return true;
+	}
+	return (substr($haystack, -$length) === $needle);
+}
+function grnet_core_validateAMKA($amka) {
+	if(!preg_match('/^\d{11}$/' , $amka) || $amka == '000000000'){
+		return false;
+	}
+	$iSum = 0;
+	for ($i=1; $i <= strlen($amka); $i++) {
+		$iDigit = intval($amka[$i-1], 10);
+		if ($i % 2 === 0) {
+			$iDigit *= 2;
+			if ($iDigit > 9) {
+				$iDigit -= 9;
+			}
+		}
+		$iSum += $iDigit;
+	}
+	return ($iSum % 10 === 0);
+}
diff --git a/grnet_core/js/info-edit--avaliable-states.js b/grnet_core/js/info-edit--avaliable-states.js
new file mode 100644
index 0000000..da69926
--- /dev/null
+++ b/grnet_core/js/info-edit--avaliable-states.js
@@ -0,0 +1,71 @@
+(function ($) {
+
+	$(document).ready(function() {
+
+		
+		
+		if (document.getElementById("ldapregistration-entityform-edit-form")) {
+			
+		  /* Diaxeirisi Ypobolon - Diathesimes Katastaseis analoga me tin yparxoysa..  (Starts) */	
+		  if( $("#edit-field-ldapregistr-status-und").val()=="prepending" ){
+			  $("#edit-field-ldapregistr-status-und option[value='completed']").remove();
+			  $("#edit-field-ldapregistr-status-und option[value='request_for_change']").remove();
+			  $("#edit-field-ldapregistr-status-und option[value='declined']").remove();
+			  $("#edit-field-ldapregistr-status-und option[value='accepted']").remove();
+			  $("#edit-field-ldapregistr-status-und option[value='accepted_minor_fixes']").remove();
+		  }else if( $("#edit-field-ldapregistr-status-und").val()=="pending"){
+			  $("#edit-field-ldapregistr-status-und option[value='prepending']").remove();			  
+			  $("#edit-field-ldapregistr-status-und option[value='request_for_change']").remove();
+			  $("#edit-field-ldapregistr-status-und option[value='declined']").remove();
+			  $("#edit-field-ldapregistr-status-und option[value='accepted']").remove();
+			  $("#edit-field-ldapregistr-status-und option[value='accepted_minor_fixes']").remove();
+		  }else if( $("#edit-field-ldapregistr-status-und").val()=="completed"){
+			  $("#edit-field-ldapregistr-status-und option[value='prepending']").remove();	
+			  $("#edit-field-ldapregistr-status-und option[value='pending']").remove();		  
+			  $("#edit-field-ldapregistr-status-und option[value='request_for_change']").remove();
+			  $("#edit-field-ldapregistr-status-und option[value='declined']").remove();
+			  $("#edit-field-ldapregistr-status-und option[value='accepted']").remove();
+			  $("#edit-field-ldapregistr-status-und option[value='accepted_minor_fixes']").remove();
+		  }
+		  /* Diaxeirisi Ypobolon - Diathesimes Katastaseis analoga me tin yparxoysa..  (Ends) */
+		  
+		  
+		  
+		  /* Diaxeirisi Aitiseon - Diathesimes Katastaseis analoga me tin yparxoysa..  (Starts) */	
+		  if( $("#edit-field-ldapregistr-status-und").val()=="request_for_change" ){
+			  $("#edit-field-ldapregistr-status-und option[value='prepending']").remove();
+			  $("#edit-field-ldapregistr-status-und option[value='pending']").remove();
+			  $("#edit-field-ldapregistr-status-und option[value='completed']").remove();
+		  }else if( $("#edit-field-ldapregistr-status-und").val()=="declined"){
+			  $("#edit-field-ldapregistr-status-und option[value='prepending']").remove();		
+			  $("#edit-field-ldapregistr-status-und option[value='pending']").remove();	
+			  $("#edit-field-ldapregistr-status-und option[value='completed']").remove();	
+			  $("#edit-field-ldapregistr-status-und option[value='request_for_change']").remove();
+			  $("#edit-field-ldapregistr-status-und option[value='accepted']").remove();
+			  $("#edit-field-ldapregistr-status-und option[value='accepted_minor_fixes']").remove();
+		  }else if( $("#edit-field-ldapregistr-status-und").val()=="accepted"){
+			  $("#edit-field-ldapregistr-status-und option[value='prepending']").remove();		
+			  $("#edit-field-ldapregistr-status-und option[value='pending']").remove();	
+			  $("#edit-field-ldapregistr-status-und option[value='completed']").remove();
+			  $("#edit-field-ldapregistr-status-und option[value='request_for_change']").remove();			  
+			  $("#edit-field-ldapregistr-status-und option[value='declined']").remove();
+			  $("#edit-field-ldapregistr-status-und option[value='accepted_minor_fixes']").remove();
+		  }else if( $("#edit-field-ldapregistr-status-und").val()=="accepted_minor_fixes"){
+			  $("#edit-field-ldapregistr-status-und option[value='prepending']").remove();		
+			  $("#edit-field-ldapregistr-status-und option[value='pending']").remove();	
+			  $("#edit-field-ldapregistr-status-und option[value='completed']").remove();
+			  $("#edit-field-ldapregistr-status-und option[value='request_for_change']").remove();			  
+			  $("#edit-field-ldapregistr-status-und option[value='accepted']").remove();
+			  $("#edit-field-ldapregistr-status-und option[value='declined']").remove();
+		  }
+		  /* Diaxeirisi Aitiseon - Diathesimes Katastaseis analoga me tin yparxoysa..  (Ends) */		  
+		  
+		  
+		}
+		
+		
+		
+	});
+	
+})(jQuery);
+
diff --git a/grnet_core/js/info-edit--double-highlight-diffs.js b/grnet_core/js/info-edit--double-highlight-diffs.js
new file mode 100644
index 0000000..60ae2ac
--- /dev/null
+++ b/grnet_core/js/info-edit--double-highlight-diffs.js
@@ -0,0 +1,126 @@
+(function($) {
+
+	$(document).ready(function() {
+		 
+		 
+	  if(document.getElementById('ldapinfo-root') && window.location.href.indexOf("entityform") > -1 ){
+		
+			if( $( "#ldapinfo-root .grnet-field-ldapregistr-name").html() != $( "#edit-field-ldapregistr-name-und-0-value").val() ){
+				//$( "#ldapinfo-root .views-field-field-ldapregistr-name").addClass('grnet-highlight');
+				$( "#edit-field-ldapregistr-name").addClass('grnet-highlight');
+			}
+			
+			if( $( "#ldapinfo-root .grnet-field-ldapregistr-surname").html() != $( "#edit-field-ldapregistr-surname-und-0-value").val() ){
+				//$( "#ldapinfo-root .views-field-field-ldapregistr-surname").addClass('grnet-highlight');
+				$( "#edit-field-ldapregistr-surname").addClass('grnet-highlight');
+			}			
+			
+			if( $( "#ldapinfo-root .grnet-field-ldapregistr-amka").html() != $( "#edit-field-ldapregistr-amka-und-0-value").val() ){
+				//$( "#ldapinfo-root .views-field-field-ldapregistr-amka").addClass('grnet-highlight');
+				$( "#edit-field-ldapregistr-amka").addClass('grnet-highlight');
+			}		
+
+			if($( "#ldapinfo-root .grnet-field-ldapregistr-username").html() != $( "#grnet_username_show_field").html()){
+				//$( "#ldapinfo-root .views-field-field-ldapregistr-username").addClass('grnet-highlight');
+				$( "#edit-field-ldapregistr-username").addClass('grnet-highlight');
+			}
+			
+			if( $( "#ldapinfo-root .grnet-field-ldapregistr-email").html() != $( "#edit-field-ldapregistr-email-und-0-email").val() ){
+				//$( "#ldapinfo-root .views-field-field-ldapregistr-email").addClass('grnet-highlight');
+				$( "#edit-field-ldapregistr-email").addClass('grnet-highlight');
+			}		
+			
+			if( $( "#ldapinfo-root .grnet-field-ldapregistr-phone").html() != $( "#edit-field-ldapregistr-phone-und-0-value").val() ){
+				//$( "#ldapinfo-root .views-field-field-ldapregistr-phone").addClass('grnet-highlight');
+				$( "#edit-field-ldapregistr-phone").addClass('grnet-highlight');
+			}
+			
+			if( $( "#ldapinfo-root .grnet-field-ldapregistr-mobile").html() != $( "#edit-field-ldapregistr-mobile-und-0-value").val() ){
+				//$( "#ldapinfo-root .views-field-field-ldapregistr-mobile").addClass('grnet-highlight');
+				$( "#edit-field-ldapregistr-mobile").addClass('grnet-highlight');
+			}			
+			
+			
+			if( $( "#ldapinfo-root .grnet-field-ldapregistr-mobile").html() != $( "#edit-field-ldapregistr-mobile-und-0-value").val() ){
+				//$( "#ldapinfo-root .views-field-field-ldapregistr-mobile").addClass('grnet-highlight');
+				$( "#edit-field-ldapregistr-personel-mobile").addClass('grnet-highlight');
+			}				
+			
+			if( $( "#ldapinfo-root .grnet-field-ldapregistr-personel-categ").html() != $( "#edit-field-ldapregistr-personel-categ-und option:selected").text() ){
+				//$( "#ldapinfo-root .views-field-field-ldapregistr-personel-categ").addClass('grnet-highlight');
+				$( "#edit-field-ldapregistr-personel-categ").addClass('grnet-highlight');
+			}							
+			                                                                      
+			if( $( "#ldapinfo-root .grnet-field-ldapregistr-dicom").html() != $( "#edit-field-ldapregistr-dicom-und-0-value").val() ){
+				///$( "#ldapinfo-root .views-field-field-ldapregistr-dicom").addClass('grnet-highlight');
+				$( "#edit-field-ldapregistr-dicom").addClass('grnet-highlight');
+			}	
+
+			if( $( "#ldapinfo-root .grnet-field-ldapregistr-personel-type").html() != $( "#edit-field-ldapregistr-personel-type-und option:selected").text() ){
+				//$( "#ldapinfo-root .views-field-field-ldapregistr-personel-type").addClass('grnet-highlight');
+				$( "#edit-field-ldapregistr-personel-type").addClass('grnet-highlight');
+			}		
+
+			if( $( "#ldapinfo-root .grnet-field-ldapregistr-speciality").html() != $( "#edit-field-ldapregistr-speciality-und option:selected").text() ){
+				//$( "#ldapinfo-root .views-field-field-ldapregistr-speciality").addClass('grnet-highlight');
+				$( "#edit-field-ldapregistr-speciality").addClass('grnet-highlight');
+			}	
+
+			if( $( "#ldapinfo-root .grnet-field-ldapregistr-iatr-top-mon").html().trim() != $("input[name='field_ldapregistr_iatr_top_mon[und]']:checked").next('label').text().trim() ){
+				//$( "#ldapinfo-root .views-field-field-ldapregistr-iatr-top-mon").addClass('grnet-highlight');
+				$( "#edit-field-ldapregistr-iatr-top-mon").addClass('grnet-highlight');
+			}
+
+			if( $( "#ldapinfo-root .grnet-field-ldapregistr-tmim-mon-tomea").html().trim() != $("input[name='field_ldapregistr_tmim_mon_tomea[und]']:checked").next('label').text().trim() ){
+				//$( "#ldapinfo-root .views-field-field-ldapregistr-tmim-mon-tomea").addClass('grnet-highlight');
+				$( "#edit-field-ldapregistr-tmim-mon-tomea").addClass('grnet-highlight');
+			}			
+			
+			if( $( "#ldapinfo-root .grnet-field-ldapregistr-tmim-diato").html() != $( "#edit-field-ldapregistr-tmim-diato-und option:selected").text() ){
+				//$( "#ldapinfo-root .views-field-field-ldapregistr-tmim-diato").addClass('grnet-highlight');
+				$( "#edit-field-ldapregistr-tmim-diato").addClass('grnet-highlight');
+			}						
+			
+			if( $( "#ldapinfo-root .grnet-field-ldapregistr-epikour-loipa").html() != $( "#edit-field-ldapregistr-epikour-loipa-und option:selected").text() ){
+				//$( "#ldapinfo-root .views-field-field-ldapregistr-epikour-loipa").addClass('grnet-highlight');
+				$( "#edit-field-ldapregistr-epikour-loipa").addClass('grnet-highlight');
+			}				
+			
+			
+			
+			if( ( $( "#ldapinfo-root .grnet-field-ldapregistr-iatr-proist").html()=='ΝΑΙ' &&  $("#edit-field-ldapregistr-iatr-proist-und").prop( "checked")==false) ||
+			    ( $( "#ldapinfo-root .grnet-field-ldapregistr-iatr-proist").html()=='ΟΧΙ' &&  $("#edit-field-ldapregistr-iatr-proist-und").prop( "checked")==true)
+			){
+				
+				//$( "#ldapinfo-root .views-field-field-ldapregistr-iatr-proist").addClass('grnet-highlight');
+				$( "#edit-field-ldapregistr-iatr-proist").addClass('grnet-highlight');
+			}
+
+
+			if( $( "#ldapinfo-root .grnet-field-ldapregistr-dioik-tmimgraf").html().trim() != $("#edit-field-ldapregistr-dioik-tmimgraf-und input[type='radio']:checked").next('label').text().trim() ){
+				//$( "#ldapinfo-root .views-field-field-ldapregistr-dioik-tmimgraf").addClass('grnet-highlight');
+				$( "#edit-field-ldapregistr-dioik-tmimgraf").addClass('grnet-highlight');
+			}
+			
+			if( ( $( "#ldapinfo-root .grnet-field-ldapregistr-admin-proist").html()=='ΝΑΙ' &&  $("#edit-field-ldapregistr-admin-proist-und").prop( "checked")==false) ||
+				    ( $( "#ldapinfo-root .grnet-field-ldapregistr-admin-proist").html()=='ΟΧΙ' &&  $("#edit-field-ldapregistr-admin-proist-und").prop( "checked")==true)
+				){
+					
+					//$( "#ldapinfo-root .views-field-field-ldapregistr-admin-proist").addClass('grnet-highlight');
+					$( "#edit-field-ldapregistr-admin-proist").addClass('grnet-highlight');
+				}						
+						
+            
+			if( $( "#ldapinfo-root .grnet-field-ldapregistr-dias-roles").html() != $( "#edit-field-ldapregistr-dias-roles-und option:selected").text() ){
+				//$( "#ldapinfo-root .views-field-field-ldapregistr-dias-roles").addClass('grnet-highlight');
+				$( "#edit-field-ldapregistr-dias-roles").addClass('grnet-highlight');
+			}	
+						
+			//alert(  '#'+$( "#ldapinfo-root .grnet-field-ldapregistr-iatr-proist").html()+'#\n#'+$("#edit-field-ldapregistr-iatr-proist-und").prop( "checked")+'#' );
+						
+	  }			  
+	});
+
+	
+		
+})(jQuery);	
\ No newline at end of file
diff --git a/grnet_core/js/info-edit--hide-show-on-load.js b/grnet_core/js/info-edit--hide-show-on-load.js
new file mode 100644
index 0000000..a1b7c36
--- /dev/null
+++ b/grnet_core/js/info-edit--hide-show-on-load.js
@@ -0,0 +1,44 @@
+(function($) {
+
+	$(document).ready(function() {
+		
+		// Emfanisi kentrikon katigorion.. (medical/administrative/nosileytiko..(an kai ayto..den iparxei toulaxiston tora..)
+		if ($( "#edit-field-ldapregistr-personel-categ-und").val() == 'medical') {
+	    	  $(".group-ldapregistr-medical").show();
+	    	  //$(".group-ldapregistr-nursery").hide();
+	    	  $(".group-ldapregistr-administrative").hide();
+	      	  
+	    	  
+	    	  // Emfanisi i oxi tis eidikotitas (Starts)
+	    	  if($( "#edit-field-ldapregistr-personel-type-und").val() == 'esy_doctors' ||
+	    	     $( "#edit-field-ldapregistr-personel-type-und").val() == 'academics'
+	    	  ){
+	    	   $( "#edit-field-ldapregistr-speciality").show();
+	    	  }
+	    	  // Emfanisi i oxi tis eidikotitas (Ends)
+	    	  
+	    	  // Emfanisi tis katalilis monades/tmimatos ktl.. (Starts) 
+	    	  if( $("#edit-field-ldapregistr-iatr-top-mon-und input[type='radio']:checked").val() == 'iatr_tmimata_monades_ana_tomea'){
+	        	  $("#edit-field-ldapregistr-tmim-mon-tomea").show();
+	    	  }else if( $("#edit-field-ldapregistr-iatr-top-mon-und input[type='radio']:checked").val() == 'iatr_tmimata_diatomeakou_epipedou'){
+	    		  $("#edit-field-ldapregistr-tmim-diato").show();
+	    	  }else if( $("#edit-field-ldapregistr-iatr-top-mon-und input[type='radio']:checked").val() == 'iatr_epikourika_loipa'){
+	    		  $("#edit-field-ldapregistr-epikour-loipa").show();
+	    	  }
+	    	  // Emfanisi tis katalilis monades/tmimatos ktl.. (Ends)
+	    	  
+	    	  
+		}else if ($( "#edit-field-ldapregistr-personel-categ-und").val() == 'administrative') {
+	      	  $(".group-ldapregistr-medical").hide();
+	      	  //$(".group-ldapregistr-nursery").hide();
+	    	  $(".group-ldapregistr-administrative").show();
+		}
+				
+	});
+
+	
+	
+  
+  
+		
+})(jQuery);	
\ No newline at end of file
diff --git a/grnet_core/js/info-edit--hide-show-per-click.js b/grnet_core/js/info-edit--hide-show-per-click.js
new file mode 100644
index 0000000..915d6e4
--- /dev/null
+++ b/grnet_core/js/info-edit--hide-show-per-click.js
@@ -0,0 +1,245 @@
+(function ($) {
+
+	$(".group-ldapregistr-medical").hide();
+	
+	
+    $("#edit-field-ldapregistr-personel-categ-und").live("change", function () {
+    	
+    	if(this.value=='medical'){
+    	  $(".group-ldapregistr-medical").show();
+    	  //$(".group-ldapregistr-nursery").hide();
+    	  $(".group-ldapregistr-administrative").hide();
+    	  $("html, body").animate({ scrollTop: $(document).height() }, 1000);
+    	  
+    	  $("#edit-field-ldapregistr-dioik-tmimgraf-und-").prop( "checked", true );
+
+    	  $('#edit-field-ldapregistr-admin-proist-und').prop('checked', false);
+    	  
+ 	      
+    	  // Hide dioik errors.. (Starts)
+		  $( "#field-ldapregistr-dioik-tmimgraf_error" ).remove();
+          $( "#edit-field-ldapregistr-dioik-tmimgraf-und").css("border-color", "#cccccc");	 	
+          // Hide dioik errors.. (Starts)
+          
+    	}else if(this.value=='nursery'){
+      	  $(".group-ldapregistr-medical").hide();
+      	  //$(".group-ldapregistr-nursery").show();
+      	  $(".group-ldapregistr-administrative").hide();
+    	  //$("html, body").animate({ scrollTop: $(document).height() }, 1000);
+    	  
+
+      	  $('#edit-field-ldapregistr-dicom-und-0-value').val('');
+      	  
+      	  $('#edit-field-ldapregistr-personel-type-und').val('_none');
+      	  
+          $('#edit-field-ldapregistr-speciality-und').val('_none');
+		  $(".field-name-field-ldapregistr-speciality").hide();
+		  
+		  $('#edit-field-ldapregistr-iatr-top-mon-und input:radio').filter('[value=_none]').attr('checked', true);
+		  
+		  $('#edit-field-ldapregistr-iatr-proist-und').removeAttr('checked');
+		  
+		  $("#edit-field-ldapregistr-dioik-tmimgraf-und-").prop( "checked", true );
+		  
+		  $('#edit-field-ldapregistr-admin-proist-und').prop('checked', false);
+    	  
+    	  
+		  $('#edit-field-ldapregistr-tmim-mon-tomea-und-').prop( "checked", true );
+		  $("#edit-field-ldapregistr-tmim-mon-tomea").hide();
+		  
+		  $('#edit-field-ldapregistr-tmim-diato-und').val('_none');
+		  $("#edit-field-ldapregistr-tmim-diato").hide();
+		  
+		  $('#edit-field-ldapregistr-epikour-loipa-und').val('_none');
+		  $("#edit-field-ldapregistr-epikour-loipa").hide();		  
+    	  
+		  
+    	  
+    	  // Hide iatr errors.. (Starts)
+ 		  $( "#field-ldapregistr-personel-type_error" ).remove();
+ 	      $( "#edit-field-ldapregistr-personel-type-und").css("border-color", "#cccccc");	
+ 	      
+		  $( "#field-ldapregistr-iatr-top-mon_error" ).remove();
+          $( "#edit-field-ldapregistr-iatr-top-mon-und").css("border-color", "#cccccc");	 
+   	      // Hide iatr errors.. (Ends)
+ 	      
+ 	      
+    	  // Hide dioik errors.. (Starts)
+		  $( "#field-ldapregistr-dioik-tmimgraf_error" ).remove();
+          $( "#edit-field-ldapregistr-dioik-tmimgraf-und").css("border-color", "#cccccc");	 	
+          // Hide dioik errors.. (Starts)
+		  
+    	}else if(this.value=='administrative'){
+    		
+      	  $(".group-ldapregistr-medical").hide();
+      	  //$(".group-ldapregistr-nursery").hide();
+    	  $(".group-ldapregistr-administrative").show();
+    	  $("html, body").animate({ scrollTop: $(document).height() }, 1000);
+    	  
+    	  
+    	  $('#edit-field-ldapregistr-dicom-und-0-value').val('');
+    	  
+    	  $('#edit-field-ldapregistr-personel-type-und').val('_none');
+    	  
+          $('#edit-field-ldapregistr-speciality-und').val('_none');
+		  $(".field-name-field-ldapregistr-speciality").hide();
+
+    	  
+		  $('#edit-field-ldapregistr-iatr-top-mon-und input:radio').filter('[value=_none]').attr('checked', true);
+		  
+		  $('#edit-field-ldapregistr-iatr-proist-und').removeAttr('checked');    	  
+    	  
+
+		  $('#edit-field-ldapregistr-tmim-mon-tomea-und-').prop( "checked", true );
+		  $("#edit-field-ldapregistr-tmim-mon-tomea").hide();
+		  
+		  $('#edit-field-ldapregistr-tmim-diato-und').val('_none');
+		  $("#edit-field-ldapregistr-tmim-diato").hide();
+		  
+		  $('#edit-field-ldapregistr-epikour-loipa-und').val('_none');
+		  $("#edit-field-ldapregistr-epikour-loipa").hide();	  
+    	  
+    	  
+    	  // Hide iatr errors.. (Starts)
+ 		  $( "#field-ldapregistr-personel-type_error" ).remove();
+ 	      $( "#edit-field-ldapregistr-personel-type-und").css("border-color", "#cccccc");	
+ 	      
+		  $( "#field-ldapregistr-iatr-top-mon_error" ).remove();
+          $( "#edit-field-ldapregistr-iatr-top-mon-und").css("border-color", "#cccccc");	 
+   	      // Hide iatr errors.. (Ends)
+ 	      
+    	}else{
+      	  $(".group-ldapregistr-medical").hide();
+      	  //$(".group-ldapregistr-nursery").hide();
+    	  $(".group-ldapregistr-administrative").hide();    
+    	  //$("html, body").animate({ scrollTop: $(document).height() }, 1000);
+    	  
+    	  
+    	  $('#edit-field-ldapregistr-dicom-und-0-value').val('');
+    	  
+    	  $('#edit-field-ldapregistr-personel-type-und').val('_none');
+    	  
+          $('#edit-field-ldapregistr-speciality-und').val('_none');
+		  $(".field-name-field-ldapregistr-speciality").hide();
+		  
+		  $('#edit-field-ldapregistr-iatr-top-mon-und input:radio').filter('[value=_none]').attr('checked', true);
+		  
+		  $('#edit-field-ldapregistr-iatr-proist-und').removeAttr('checked');	
+		  
+		  $("#edit-field-ldapregistr-dioik-tmimgraf-und-").prop( "checked", true );
+		  
+		  $('#edit-field-ldapregistr-admin-proist-und').prop('checked', false);
+    	  
+		  
+		  $('#edit-field-ldapregistr-tmim-mon-tomea-und-').prop( "checked", true );
+		  $("#edit-field-ldapregistr-tmim-mon-tomea").hide();
+		  
+		  $('#edit-field-ldapregistr-tmim-diato-und').val('_none');
+		  $("#edit-field-ldapregistr-tmim-diato").hide();
+		  
+		  $('#edit-field-ldapregistr-epikour-loipa-und').val('_none');
+		  $("#edit-field-ldapregistr-epikour-loipa").hide();
+
+		  
+    	  
+    	  // Hide iatr errors.. (Starts)
+ 		  $( "#field-ldapregistr-personel-type_error" ).remove();
+ 	      $( "#edit-field-ldapregistr-personel-type-und").css("border-color", "#cccccc");
+ 	      
+		  $( "#field-ldapregistr-iatr-top-mon_error" ).remove();
+          $( "#edit-field-ldapregistr-iatr-top-mon-und").css("border-color", "#cccccc");	 
+   	      // Hide iatr errors.. (Ends)
+		  
+ 	      
+    	  // Hide dioik errors.. (Starts)
+		  $( "#field-ldapregistr-dioik-tmimgraf_error" ).remove();
+          $( "#edit-field-ldapregistr-dioik-tmimgraf-und").css("border-color", "#cccccc");	 	
+          // Hide dioik errors.. (Starts)
+          
+          
+    	}
+    	
+
+   });
+	
+    
+    $("#edit-field-ldapregistr-personel-type-und").live("change", function () {
+    	
+    	if(this.value=='esy_doctors'){
+    	  $(".field-name-field-ldapregistr-speciality").show();
+    	  $("html, body").animate({ scrollTop: $(document).height() }, 1000);
+    	  
+    	}else if(this.value=='academics'){
+      	  $(".field-name-field-ldapregistr-speciality").show();
+    	  $("html, body").animate({ scrollTop: $(document).height() }, 1000);
+    	  
+    	}else{
+    		$('#edit-field-ldapregistr-speciality-und').val('_none');
+    		$(".field-name-field-ldapregistr-speciality").hide();
+    	}
+    	
+    	
+  	    // Hide iatr errors.. (Starts)
+		$( "#field-ldapregistr-speciality_error" ).remove();
+	    $( "#edit-field-ldapregistr-speciality-und").css("border-color", "#cccccc");	
+	    // Hide iatr errors.. (Ends)
+    	
+
+   });    
+    
+
+    
+    $("#edit-field-ldapregistr-iatr-top-mon-und input:radio").live("change", function () {
+    	
+    	if(this.value=='iatr_tmimata_monades_ana_tomea'){
+    	  $("#edit-field-ldapregistr-tmim-mon-tomea").show();
+    	  
+    	  $('#edit-field-ldapregistr-tmim-diato-und').val('_none');
+    	  $("#edit-field-ldapregistr-tmim-diato").hide();
+    	  
+    	  $('#edit-field-ldapregistr-epikour-loipa-und').val('_none');
+    	  $("#edit-field-ldapregistr-epikour-loipa").hide();
+    	  
+    	  $("html, body").animate({ scrollTop: $(document).height() }, 1000);
+    	  
+    	}else if(this.value=='iatr_tmimata_diatomeakou_epipedou'){
+      	  $("#edit-field-ldapregistr-tmim-diato").show();
+      	  
+      	  $('#edit-field-ldapregistr-tmim-mon-tomea-und-').prop( "checked", true );
+      	  $("#edit-field-ldapregistr-tmim-mon-tomea").hide();
+      	  
+      	  $('#edit-field-ldapregistr-epikour-loipa-und').val('_none');
+      	  $("#edit-field-ldapregistr-epikour-loipa").hide();
+      	  
+    	  $("html, body").animate({ scrollTop: $(document).height() }, 1000);
+    	  
+    	}else if(this.value=='iatr_epikourika_loipa'){
+    	  $("#edit-field-ldapregistr-epikour-loipa").show();
+    	  
+    	  $('#edit-field-ldapregistr-tmim-mon-tomea-und-').prop( "checked", true );
+    	  $("#edit-field-ldapregistr-tmim-mon-tomea").hide();
+    	  
+    	  $('#edit-field-ldapregistr-tmim-diato-und').val('_none');    	  
+    	  $("#edit-field-ldapregistr-tmim-diato").hide();
+
+    	  $("html, body").animate({ scrollTop: $(document).height() }, 1000);
+    		
+    	}
+    	
+    	// Hide iatr errors.. (Starts)
+		$( "#field-ldapregistr-tmim-mon-tomea_error" ).remove();
+ 	    $( "#edit-field-ldapregistr-tmim-mon-tomea-und").css("border-color", "#cccccc");	
+ 	    
+	 	$( "#field-ldapregistr-tmim-diato_error" ).remove();
+ 	 	$( "#edit-field-ldapregistr-tmim-diato-und").css("border-color", "#cccccc");
+ 	 	
+	  	$( "#field-ldapregistr-epikour-loipa_error" ).remove();
+ 	  	$( "#edit-field-ldapregistr-epikour-loipa-und").css("border-color", "#cccccc");	 		
+ 	    // Hide iatr errors.. (Ends)
+
+   });    
+    
+
+    
+})(jQuery);
+
diff --git a/grnet_core/js/info-edit--inline-errors.js b/grnet_core/js/info-edit--inline-errors.js
new file mode 100644
index 0000000..362844a
--- /dev/null
+++ b/grnet_core/js/info-edit--inline-errors.js
@@ -0,0 +1,804 @@
+
+(function($) {
+	$(document).ready(function() {
+		
+		
+		
+      // FORM ON SUBMIT CHECK (Starts)	
+  
+       // Elegxos formas sto submit (apenergopoieite..i drupal form..an eiani false..)	
+       $("#ldapregistration-entityform-edit-form").live("submit", function () {  
+	     return checkform();
+       })
+  
+      // FORM ON SUBMIT CHECK (Ends)
+		
+	
+
+  
+      // FORM REALTIME CHECK (Starts)
+  
+	  
+	    // Έλεγχος Όνομα (Starts)	 
+	    $("#edit-field-ldapregistr-name-und-0-value").live("focusout", function () {  
+		  check_name_field();
+	    })	  
+	    // Έλεγχος Όνομα (Ends)
+	    
+	    
+	    // Έλεγχος Επώνυμο (Starts)	 
+	    $("#edit-field-ldapregistr-surname-und-0-value").live("focusout", function () {  
+	      check_surname_field();
+	    })	  
+	    // Έλεγχος Επώνυμο (Ends)
+	    
+	    
+	    
+	    // Έλεγχος AMKA (Starts)	 
+	    $("#edit-field-ldapregistr-amka-und-0-value").live("focusout", function () {  
+		  check_amka_field();
+	    })	  
+	    // Έλεγχος AMKA (Ends)
+	
+	  
+	    // Έλεγχος Email (Starts)	
+	    $("#edit-field-ldapregistr-email-und-0-email").live("focusout", function () {  
+		  check_email_field();
+	    })	
+	    // Έλεγχος Email (Ends)
+	  
+	  
+	    // Έλεγχος Κατηγορίας Προσωπικού (Starts)	
+	    $("#edit-field-ldapregistr-personel-categ-und").live("change", function () {
+		  check_personel_categ_field();
+	    })	  
+	    // Έλεγχος Κατηγορίας Προσωπικού (Ends)  
+
+	    
+
+	    // Iatriko (Starts)
+	    
+	    // Έλεγχος Είδος Προσωπικού (Starts)
+	    $("#edit-field-ldapregistr-personel-type-und").live("change", function () {
+	    	check_personel_type_field();
+	    })	  
+	    // Έλεγχος Είδος Προσωπικού (Ends)
+	    
+	    
+	    // Έλεγχος Ειδικότητα (Starts)
+	    $("#edit-field-ldapregistr-speciality-und").live("change", function () {
+	    	check_speciality_field();
+	    })	  
+	    // Έλεγχος Ειδικότητα (Ends)
+	   
+	    
+	    
+	    // Τοποθέτηση σε μόναδα (Starts)
+	    $("#edit-field-ldapregistr-iatr-top-mon-und input[type='radio']").live("change", function () {
+	    	check_iatr_top_mon_field();
+	    })	  
+	    // Τοποθέτηση σε μόναδα (Ends)
+	   
+	    
+	    
+	    
+		// Τμήματα/Μονάδες ανά τομέα (Starts)
+	    $("#edit-field-ldapregistr-tmim-mon-tomea-und input[type='radio']").live("change", function () {
+	    	check_tmim_mon_tomea_field();
+	    })	  
+	    // Τμήματα/Μονάδες ανά τομέα (Ends)
+	    
+	    
+		// Τμήματα Διατομεακού Επιπέδου (Starts)
+	    $("#edit-field-ldapregistr-tmim-diato-und").live("change", function () {
+	    	check_tmim_diato_field();
+	    })	  
+	    // Τμήματα Διατομεακού Επιπέδου (Ends)
+	    
+	    
+		// Επικουρικά / Λοιπά (Starts)
+	    $("#edit-field-ldapregistr-epikour-loipa-und").live("change", function () {
+	    	check_epikour_loipa_field();
+	    })	  
+	    // Επικουρικά / Λοιπά (Ends)
+	    
+	    
+	    
+	    // Iatriko (Ends)
+	    
+	    
+	    
+	    // Dioikitiko (Starts)
+	    
+		// Έλεγχος Τοποθέτηση σε Τμήμα / Γραφείο (Starts)
+	    $("#edit-field-ldapregistr-dioik-tmimgraf-und input[type='radio']").live("change", function () {
+	    	check_dioik_tmimgraf_field();
+	    })	  
+	    // Έλεγχος Τοποθέτηση σε Τμήμα / Γραφείο (Ends)
+       
+        // Dioikitiko (Ends)
+
+
+	    
+	    // Έλεχγος "Έχω αποθηκεύσει τον κωδικό μου σε ασφαλές μέρος" (Starts)
+	    $("#edit-field-ldapregistr-saved-und").live("change", function () {
+		  check_saved_field();
+	    })	  
+	    // Έλεχγος "Έχω αποθηκεύσει τον κωδικό μου σε ασφαλές μέρος" (Ends)
+	
+	  
+	    // Έλεγχος "Συμφωνώ να...user opt in" (Starts)
+	    $("#edit-field-ldapregistr-opt-in-und").live("change", function () {
+		  check_opt_in_field();
+	    })	  
+	    // Έλεγχος "Συμφωνώ να...user opt in" (Ends)
+	  
+  
+      // FORM REALTIME CHECK (Ends)  
+  
+  
+	    
+	    
+	    
+          
+	  // FUNCTIONS (Starts)
+			  
+			
+		// Έλεγχος Στοιχείων Φόρμας (για το submit..)
+		function checkform() {
+
+    	  var returncode = true;
+	 	  var firstErrorField = '';
+	 	  
+	 	  // Έλεγχος Όνομα
+	 	  if(!check_name_field()){
+		 	if(firstErrorField == ''){firstErrorField = 'edit-field-ldapregistr-name-und-0-value';}	 		  
+	 		returncode = false;
+	 	  }
+	 	  
+	 	  
+	 	  // Έλεγχος Επώνυμο
+	 	  if(!check_surname_field()){
+		 	if(firstErrorField == ''){firstErrorField = 'edit-field-ldapregistr-surname-und-0-value';}	 		  
+	 		returncode = false;
+	 	  }
+	 	  
+	 	  
+	 	  // Έλεγχος ΑΦΜ
+//	 	  if(!check_afm_field()){
+//		 	if(firstErrorField == ''){firstErrorField = 'edit-field-ldapregistr-afm-und-0-value';}	 		  
+//	 		returncode = false;
+//	 	  }
+	 	  
+	 	  // Έλεγχος AMKA
+	 	  if(!check_amka_field()){
+		 	if(firstErrorField == ''){firstErrorField = 'edit-field-ldapregistr-amka-und-0-value';}	 		  
+	 		returncode = false;
+	 	  }
+	 	 
+	 	  // Έλεγχος username (Starts)
+	 	  if( $('#edit-field-ldapregistr-username-und-0-value').length ){
+		 	  if(!check_username()){
+		 		if(firstErrorField == ''){firstErrorField = 'edit-field-ldapregistr-username-und-0-value';}	 	
+		 		returncode = false;
+		 	  }
+	 	  }
+	 	  // Έλεγχος username (Ends)
+							
+		
+	 	  // Έλεγχος password (Starts)
+	 	  if( $('#edit-field-ldapregistr-pwd-und-0-password-field').length ){
+	 		  if(!check_password()){
+	 			  if(firstErrorField == ''){firstErrorField = 'edit-field-ldapregistr-pwd-und-0-password-field';}
+	 			  returncode = false;
+	 		  }
+	 	  }	 	  
+	 	  // Έλεγχος password (Ends)
+	 	  
+	 	  
+	 	  // Έλεγχος password confirm (Starts)
+	 	  if( $('#edit-field-ldapregistr-confirmpwd-und-0-password-field').length ){
+		 	  if(!check_password_confirm()){
+		 		if(firstErrorField == ''){firstErrorField = 'edit-field-ldapregistr-confirmpwd-und-0-password-field';}
+			 	returncode = false;
+			  }
+	 	  }
+	 	  // Έλεγχος password confirm (Ends)
+	 	  
+		    
+	 	  // Έλεγχος Email
+	 	  if(!check_email_field()){
+	 		if(firstErrorField == ''){firstErrorField = 'edit-field-ldapregistr-email-und-0-email';}	
+	 		returncode = false;
+		  }
+						
+	 	  
+	 	  
+							
+	 	  // Έλεγχος Κατηγορίας Προσωπικού
+	 	  if(!check_personel_categ_field()){
+	 		if(firstErrorField == ''){firstErrorField = 'edit-field-ldapregistr-personel-categ-und';}
+	 		returncode = false;
+		  }	 	  
+			
+	 	  
+	 	  // Iatriko (Starts)
+	 	  
+	 	  // Είδος προσωπικού (Starts)
+	 	  if($("#edit-field-ldapregistr-personel-categ-und").val()=='medical'){
+		 	if(!check_personel_type_field()){
+		 	  if(firstErrorField == ''){firstErrorField = "edit-field-ldapregistr-personel-type-und";}
+		 	  returncode = false;	 		 
+		 	}	  
+		  }	 	  
+	 	  // Είδος προσωπικού (Ends)
+	 	  
+	 	  
+	 	  // Ειδικότητες (Starts)
+	 	  if($("#edit-field-ldapregistr-personel-type-und").val()=='esy_doctors' || 
+	 		 $("#edit-field-ldapregistr-personel-type-und").val()=='academics'){
+	 		  
+		 	if(!check_speciality_field()){
+		 	  if(firstErrorField == ''){firstErrorField = "edit-field-ldapregistr-speciality-und";}
+		 	  returncode = false;	 		 
+		 	}
+		 	
+		  }	 	  
+	 	  // Ειδικότητες (Ends)
+	 	  
+          	 	  
+	 	  // Τοποθέτηση σε μόναδα (Starts)
+	 	  if($("#edit-field-ldapregistr-personel-categ-und").val()=='medical'){
+		 	if(!check_iatr_top_mon_field()){
+		 	  if(firstErrorField == ''){firstErrorField = "edit-field-ldapregistr-iatr-top-mon-und";}
+		 	  returncode = false;	 		 
+		 	}	  
+		  }
+	 	  // Τοποθέτηση σε μόναδα (Ends)
+          	
+	 	  
+	 	  
+		  // Τμήματα/Μονάδες ανά τομέα (Starts)
+	 	  if($("#edit-field-ldapregistr-iatr-top-mon-und input[type='radio']:checked").val()=='iatr_tmimata_monades_ana_tomea'){
+	 		if(!check_tmim_mon_tomea_field()){
+			  if(firstErrorField == ''){firstErrorField = "edit-field-ldapregistr-tmim-mon-tomea-und";}
+			  returncode = false;	 		 
+			}	
+	 	  }
+  
+		  // Τμήματα/Μονάδες ανά τομέα (Ends)
+		    
+		    
+		  // Τμήματα Διατομεακού Επιπέδου (Starts)
+	 	  
+	 	  if($("#edit-field-ldapregistr-iatr-top-mon-und input[type='radio']:checked").val()=='iatr_tmimata_diatomeakou_epipedou'){
+		    if(!check_tmim_diato_field()){
+			  if(firstErrorField == ''){firstErrorField = "edit-field-ldapregistr-tmim-diato-und";}
+			  returncode = false;	 		 
+			}	
+	 	  }
+	 	  
+		  // Τμήματα Διατομεακού Επιπέδου (Ends)
+		    
+		    
+	 	  
+		  // Επικουρικά / Λοιπά (Starts)
+	 	  if($("#edit-field-ldapregistr-iatr-top-mon-und input[type='radio']:checked").val()=='iatr_epikourika_loipa'){
+		    if(!check_epikour_loipa_field()){
+			  if(firstErrorField == ''){firstErrorField = "edit-field-ldapregistr-epikour-loipa-und";}
+			  returncode = false;	 		 
+			}	
+	 	  }	 	  
+		  // Επικουρικά / Λοιπά (Ends)
+		    
+		    
+	 	  
+		    
+  	 	  // Iatriko (Ends)
+	 	  
+	 	  
+
+		  // Dioikitiko (Starts)
+		    
+	 	  
+		  // Έλεγχος Τοποθέτηση σε Τμήμα / Γραφείο (Starts)
+	 	  if($("#edit-field-ldapregistr-personel-categ-und").val()=='administrative'){
+	 		 if(!check_dioik_tmimgraf_field()){
+	 		   if(firstErrorField == ''){firstErrorField = "edit-field-ldapregistr-dioik-tmimgraf-und";}
+	 	 	   returncode = false;	 		 
+	 		 }	  
+	 	  }
+	 	  // Έλεγχος Τοποθέτηση σε Τμήμα / Γραφείο (Ends)
+	 	
+	 	  
+	 	  // Dioikitiko (Ends)
+	 	  
+	 	  
+	 	  
+	 	  // Έλεχγος "Έχω αποθηκεύσει τον κωδικό μου σε ασφαλές μέρος"
+	 	  if(!check_saved_field()){
+	 		if(firstErrorField == ''){firstErrorField = 'edit-field-ldapregistr-saved-und';}
+	 		returncode = false;
+		  }	 	  	 	  
+
+					
+	 	  // Έλεγχος "Συμφωνώ να...user opt in"
+	 	  if(!check_opt_in_field()){
+	 		if(firstErrorField == ''){firstErrorField = 'edit-field-ldapregistr-opt-in-und';}
+		 	returncode = false;
+		  }	 		 	  
+	 	
+	 	  
+	 	 // An briskomaste sto diaxeirstiko tou manager..i tou ldapuser...iparxei i top menu bar i opoia..kribei to 1o pedio..
+	 	 // pou brisketai..xoris timi...i mpara ayti einai 30 px sinepos..prepei na kanoume scroll alla -30..px gia na fanei..to errorous field sta diaxeristika
+	 	 // ayto simbaieni mono stin epexergasia..kai sinepos..opou to url pattern einai /entitiform/%/edit..sinepos opou iparxei to..entitiform sto url..
+	 	  if(window.location.href.indexOf("entityform") > -1 ){
+	 		menuheight = 40;
+	 	 }else{
+	 		menuheight = 10; 
+	 	 }
+	 	 
+	 	 // Scroll to firstErrorField
+	 	 $('html,body').animate({
+	         scrollTop: $("#"+firstErrorField).offset().top-menuheight},
+	         'slow');
+	 	 
+	 	 
+	 	  return returncode;
+
+       }
+			  
+			  
+			
+       
+       
+       
+      // Functions - Fields Checks (Starts)
+       
+      // Έλεγχος Όνομα 
+ 	  function check_name_field(){
+ 		if ($( "#edit-field-ldapregistr-name-und-0-value").val() == '') {
+ 		  $( "#field-ldapregistr-name_error" ).remove();
+ 		  $( "#edit-field-ldapregistr-name-und-0-value" ).after( "<span id=\"field-ldapregistr-name_error\" class=\"errorfield\">Παρακαλώ, συμπληρώστε το πεδίο 'Όνομα'</span>" );
+ 		  $( "#edit-field-ldapregistr-name-und-0-value").css("border-color", "#ff0000");
+ 		  return false;
+ 		}else{
+ 		  $( "#field-ldapregistr-name_error" ).remove();
+ 		  $( "#edit-field-ldapregistr-name-und-0-value").css("border-color", "#cccccc");
+ 		  return true;
+ 		}
+ 	  }  
+ 	  
+ 	  
+      // Έλεγχος Επώνυμο
+	  function check_surname_field(){
+		if ($( "#edit-field-ldapregistr-surname-und-0-value").val() == '') {
+		  $( "#field-ldapregistr-surname_error" ).remove();
+		  $( "#edit-field-ldapregistr-surname-und-0-value" ).after( "<span id=\"field-ldapregistr-surname_error\" class=\"errorfield\">Παρακαλώ, συμπληρώστε το πεδίο 'Επώνυμο'</span>" );
+		  $( "#edit-field-ldapregistr-surname-und-0-value").css("border-color", "#ff0000");
+		  return false;
+		}else{
+		  $( "#field-ldapregistr-surname_error" ).remove();
+		  $( "#edit-field-ldapregistr-surname-und-0-value").css("border-color", "#cccccc");
+		  return true;
+		}
+	  }  
+	  
+	  
+      // Έλεγχος ΑΦΜ 
+//	  function check_afm_field(){
+//		if (checkAFM($( "#edit-field-ldapregistr-afm-und-0-value").val()) == false) {
+//		  $( "#field-ldapregistr-afm_error" ).remove();
+//		  $( "#edit-field-ldapregistr-afm-und-0-value" ).after( "<span id=\"field-ldapregistr-afm_error\" class=\"errorfield\">Παρακαλώ, εισάγεται ένα έγκυρο ΑΦΜ</span>" );
+//		  $( "#edit-field-ldapregistr-afm-und-0-value").css("border-color", "#ff0000");
+//		  return false;
+//		}else{
+//		  $( "#field-ldapregistr-afm_error" ).remove();
+//		  $( "#edit-field-ldapregistr-afm-und-0-value").css("border-color", "#cccccc");
+//		  return true;
+//		}
+//	  }  
+
+
+      // Έλεγχος ΑΜΚΑ 
+	  function check_amka_field(){
+		  
+		amka = $("#edit-field-ldapregistr-amka-und-0-value").val();		  
+		  
+		if (validateAMKA(amka) == false) {
+		  $( "#field-ldapregistr-amka_error" ).remove();
+		  $( "#edit-field-ldapregistr-amka-und-0-value" ).after( "<span id=\"field-ldapregistr-amka_error\" class=\"errorfield\">Παρακαλώ, εισάγεται ένα έγκυρο ΑΜΚΑ</span>" );
+		  $( "#edit-field-ldapregistr-amka-und-0-value").css("border-color", "#ff0000");
+		  amkaValid = false;
+		}else{
+			
+			  $.ajax({
+		  			url:'/registration/amkainuse/'+amka,
+		  			async: false,
+				    success:function(data) {
+				    	if($.trim(data) != '0') {
+							$( "#field-ldapregistr-amka_error" ).remove();
+							$( "#edit-field-ldapregistr-amka-und-0-value" ).after( "<span id=\"field-ldapregistr-amka_error\" class=\"errorfield\">Το ΑΜΚΑ χρησιμοποιείται ήδη!!</span>" );
+							$( "#edit-field-ldapregistr-amka-und-0-value").css("border-color", "#ff0000");
+							amkaValid= false;
+				     		//scontinue = false;
+				     		//returncode = 0;
+				    	} else {
+							$( "#field-ldapregistr-amka_error" ).remove();
+							$( "#edit-field-ldapregistr-amka-und-0-value").css("border-color", "#cccccc");
+							amkaValid= true;
+				     		//scontinue = true;
+				     		//returncode = 1;
+						}
+			
+				    },
+				    error:function(){
+				    	//alert('username ajax error');
+						$( "#field-ldapregistr-amka_error" ).remove();
+						$( "#edit-field-ldapregistr-amka-und-0-value" ).after( "<span id=\"field-ldapregistr-amka_error\" class=\"errorfield\">Δεν μπόρεσε να γίνει επιβεβαίωση εγκυρότητας</span>" );
+						$( "#edit-field-ldapregistr-amka-und-0-value").css("border-color", "#ff0000");
+						amkaValid= false;
+					}
+				    
+				    
+			  });
+			  
+			  
+		}
+		
+		
+		
+		return amkaValid;
+	  }  
+	  
+	  
+
+	    //Έλεγχος Email
+		function check_email_field(){
+
+			//emailValid = true;
+			
+			email = $("#edit-field-ldapregistr-email-und-0-email").val();
+			
+			//scontinue = false;
+	
+		//	alert('#'+$( "#edit-field-ldapregistr-email-und-0-email").val())+'#');
+	
+			if (IsEmail(email) == false) {
+			  $( "#field-ldapregistr-email_error" ).remove();
+			  $( "#edit-field-ldapregistr-email-und-0-email" ).after( "<span id=\"field-ldapregistr-email_error\" class=\"errorfield\">Παρακαλώ, εισάγεται ένα έγκυρο email</span>" );
+			  $( "#edit-field-ldapregistr-email-und-0-email").css("border-color", "#ff0000");
+			  emailValid= false;
+			
+			}else if (IsEmailInDomain(email) == false) {
+			  $( "#field-ldapregistr-email_error" ).remove();
+			  $( "#edit-field-ldapregistr-email-und-0-email" ).after( "<span id=\"field-ldapregistr-email_error\" class=\"errorfield\">Παρακαλώ, εισάγεται email που να ανοίκει στο domain του νοσοκομείου.</span>" );
+			  $( "#edit-field-ldapregistr-email-und-0-email").css("border-color", "#ff0000");
+			  emailValid= false;		  
+			  
+			}else{
+
+				  $.ajax({
+			  			url:'/registration/emailinuse/'+email,
+			  			async: false,
+					    success:function(data) {
+					    	if($.trim(data) != '0') {
+								$( "#field-ldapregistr-email_error" ).remove();
+								$( "#edit-field-ldapregistr-email-und-0-email" ).after( "<span id=\"field-ldapregistr-email_error\" class=\"errorfield\">Το email χρησιμοποιείται ήδη!!</span>" );
+								$( "#edit-field-ldapregistr-email-und-0-email").css("border-color", "#ff0000");
+								emailValid= false;
+					     		//scontinue = false;
+					     		//returncode = 0;
+					    	} else {
+								$( "#field-ldapregistr-email_error" ).remove();
+								$( "#edit-field-ldapregistr-email-und-0-email").css("border-color", "#cccccc");
+								emailValid= true;
+					     		//scontinue = true;
+					     		//returncode = 1;
+							}
+				
+					    },
+					    error:function(){
+					    	//alert('username ajax error');
+							$( "#field-ldapregistr-email_error" ).remove();
+							$( "#edit-field-ldapregistr-email-und-0-email" ).after( "<span id=\"field-ldapregistr-email_error\" class=\"errorfield\">Δεν μπόρεσε να γίνει επιβεβαίωση εγκυρότητας</span>" );
+							$( "#edit-field-ldapregistr-email-und-0-email").css("border-color", "#ff0000");
+							emailValid= false;
+						}
+					    
+					    
+				  });
+	        		
+			}
+			
+
+			return emailValid;
+			
+	    }
+		
+		
+		
+	  
+	  
+	  //Έλεγχος Κατηγορίας Προσωπικού
+	  function check_personel_categ_field(){
+		if ($( "#edit-field-ldapregistr-personel-categ-und").val() == '_none') {
+		  $( "#field-ldapregistr-personel-categ_error" ).remove();
+		  $( "#edit-field-ldapregistr-personel-categ-und" ).after( "<span id=\"field-ldapregistr-personel-categ_error\" class=\"errorfield\">Παρακαλώ, επιλέξτε μια τιμή στο πεδίο \"Κατηγορία Προσωπικού\"</span>" );
+		  $( "#edit-field-ldapregistr-personel-categ-und").css("border-color", "#ff0000");
+		  return false;
+		}else{
+		  $( "#field-ldapregistr-personel-categ_error" ).remove();
+          $( "#edit-field-ldapregistr-personel-categ-und").css("border-color", "#cccccc");		
+          return true;
+		}
+	  }  
+
+      	  
+	  
+	  
+	  // Iatriko (Starts)
+	  
+	  // Είδος Προσωπικού (Starts)
+ 	  function check_personel_type_field(){
+ 		if($("#edit-field-ldapregistr-personel-type-und").val() == '_none') {
+ 		  $( "#field-ldapregistr-personel-type_error" ).remove();
+ 		  $( "#edit-field-ldapregistr-personel-type-und" ).after( "<span id=\"field-ldapregistr-personel-type_error\" class=\"errorfield\">Παρακαλώ, επιλέξτε μια τιμή στο πεδίο \"Είδος Προσωπικού\"</span>" );
+ 		  $( "#edit-field-ldapregistr-personel-type-und").css("border-color", "#ff0000");
+ 		  return false;
+ 		}else{
+ 		  $( "#field-ldapregistr-personel-type_error" ).remove();
+ 	      $( "#edit-field-ldapregistr-personel-type-und").css("border-color", "#cccccc");	 		
+ 		  return true;
+ 		}
+ 	  }	  	  
+ 	  // Είδος Προσωπικού (Ends)
+ 	  
+ 	  
+ 	  
+ 	  // Ειδικότητα (Starts)
+ 	  function check_speciality_field(){
+ 		if($("#edit-field-ldapregistr-speciality-und").val() == '_none') {
+ 		  $( "#field-ldapregistr-speciality_error" ).remove();
+ 		  $( "#edit-field-ldapregistr-speciality-und" ).after( "<span id=\"field-ldapregistr-speciality_error\" class=\"errorfield\">Παρακαλώ, επιλέξτε μια τιμή στο πεδίο \"Είδος Προσωπικού\"</span>" );
+ 		  $( "#edit-field-ldapregistr-speciality-und").css("border-color", "#ff0000");
+ 		  return false;
+ 		}else{
+ 		  $( "#field-ldapregistr-speciality_error" ).remove();
+ 	      $( "#edit-field-ldapregistr-speciality-und").css("border-color", "#cccccc");	 		
+ 		  return true;
+ 		}
+ 	  }	  	  	  
+ 	  // Ειδικότητα (Starts)
+ 	  
+ 	
+	 	  
+ 	
+ 	  // Τοποθέτηση σε μόναδα (Starts)
+ 	  function check_iatr_top_mon_field(){
+ 		 
+	 	if(!$("#edit-field-ldapregistr-iatr-top-mon-und input[type='radio']:checked").size()>0 ||
+	 	   $("#edit-field-ldapregistr-iatr-top-mon-und input[type='radio']:checked").val()=='_none'	){
+	 	  $( "#field-ldapregistr-iatr-top-mon_error" ).remove();
+	 	  $( "#edit-field-ldapregistr-iatr-top-mon-und" ).after( "<span id=\"field-ldapregistr-iatr-top-mon_error\" class=\"errorfield\">Παρακαλώ, επιλέξτε μια τιμή στο πεδίο \"Τοποθέτηση σε Τμήμα / Γραφείο\"</span>" );
+	 	  $( "#edit-field-ldapregistr-iatr-top-mon-und").css("border-color", "#ff0000");
+	 	  return false;
+	 	}else{
+		  $( "#field-ldapregistr-iatr-top-mon_error" ).remove();
+          $( "#edit-field-ldapregistr-iatr-top-mon-und").css("border-color", "#cccccc");	 		
+	 	  return true;
+	 	}
+	  }	  
+ 	  // Τοποθέτηση σε μόναδα (Starts) (Ends)
+ 	  
+ 	  
+ 	 
+ 	  
+ 	  
+ 	  
+ 	  
+ 	  
+ 	  
+	  // Τμήματα/Μονάδες ανά τομέα (Starts)
+ 	  function check_tmim_mon_tomea_field(){
+  		 
+ 	 	if($("#edit-field-ldapregistr-tmim-mon-tomea-und input[type='radio']:checked").val()==''){
+ 	 	  $( "#field-ldapregistr-tmim-mon-tomea_error" ).remove();
+ 		  $( "#edit-field-ldapregistr-tmim-mon-tomea-und" ).after( "<span id=\"field-ldapregistr-tmim-mon-tomea_error\" class=\"errorfield\">Παρακαλώ, επιλέξτε μια τιμή στο πεδίο \"Τμήματα/Μονάδες ανά τομέα\"</span>" );
+ 		  $( "#edit-field-ldapregistr-tmim-mon-tomea-und").css("border-color", "#ff0000");
+ 		  return false;
+ 		}else{
+ 		  $( "#field-ldapregistr-tmim-mon-tomea_error" ).remove();
+ 	      $( "#edit-field-ldapregistr-tmim-mon-tomea-und").css("border-color", "#cccccc");	 		
+ 		  return true;
+ 		}
+ 		
+ 	  }	  
+	  // Τμήματα/Μονάδες ανά τομέα (Ends)
+	    
+	    
+ 	  
+ 	  
+	  // Τμήματα Διατομεακού Επιπέδου (Starts)
+ 	  function check_tmim_diato_field(){
+   		 
+ 	  	if($("#edit-field-ldapregistr-tmim-diato-und").val() == '_none') {
+ 	 	  $( "#field-ldapregistr-tmim-diato_error" ).remove();
+ 	 	  $( "#edit-field-ldapregistr-tmim-diato-und" ).after( "<span id=\"field-ldapregistr-tmim-diato_error\" class=\"errorfield\">Παρακαλώ, επιλέξτε μια τιμή στο πεδίο \"Τμήματα Διατομεακού Επιπέδου\"</span>" );
+ 	 	  $( "#edit-field-ldapregistr-tmim-diato-und").css("border-color", "#ff0000");
+ 	 	  return false;
+ 	 	}else{
+ 	 	  $( "#field-ldapregistr-tmim-diato_error" ).remove();
+ 	 	  $( "#edit-field-ldapregistr-tmim-diato-und").css("border-color", "#cccccc");	 		
+ 	 	  return true;
+ 	 	}
+ 	 		
+ 	  }	  
+	  // Τμήματα Διατομεακού Επιπέδου (Ends)
+	    
+	    
+ 	  
+	  // Επικουρικά / Λοιπά (Starts)
+ 	  function check_epikour_loipa_field(){
+    		 
+ 	   	if($("#edit-field-ldapregistr-epikour-loipa-und").val() == '_none') {
+ 	  	  $( "#field-ldapregistr-epikour-loipa_error" ).remove();
+ 	  	  $( "#edit-field-ldapregistr-epikour-loipa-und" ).after( "<span id=\"field-ldapregistr-epikour-loipa_error\" class=\"errorfield\">Παρακαλώ, επιλέξτε μια τιμή στο πεδίο \"Επικουρικά / Λοιπά\"</span>" );
+ 	  	  $( "#edit-field-ldapregistr-epikour-loipa-und").css("border-color", "#ff0000");
+ 	  	  return false;
+ 	  	}else{
+ 	  	  $( "#field-ldapregistr-epikour-loipa_error" ).remove();
+ 	  	  $( "#edit-field-ldapregistr-epikour-loipa-und").css("border-color", "#cccccc");	 		
+ 	  	  return true;
+ 	  	}
+ 	 	 		
+ 	  }	 
+	  // Επικουρικά / Λοιπά (Ends)
+ 	  
+ 	  
+ 	  
+ 	  
+ 	  
+ 	  
+ 	  // Iatriko (Ends)
+ 	  
+ 	  
+	  
+	  
+	  // Dioikitiko (Starts)
+	  
+	  // Έλεγχος Τοποθέτηση σε Τμήμα / Γραφείο (Starts)
+ 	  function check_dioik_tmimgraf_field(){
+	 	if($("#edit-field-ldapregistr-dioik-tmimgraf-und input[type='radio']:checked").val()==''){
+	 	  $( "#field-ldapregistr-dioik-tmimgraf_error" ).remove();
+	 	  $( "#edit-field-ldapregistr-dioik-tmimgraf-und" ).after( "<span id=\"field-ldapregistr-dioik-tmimgraf_error\" class=\"errorfield\">Παρακαλώ, επιλέξτε μια τιμή στο πεδίο \"Τοποθέτηση σε Τμήμα / Γραφείο\"</span>" );
+	 	  $( "#edit-field-ldapregistr-dioik-tmimgraf-und").css("border-color", "#ff0000");
+	 	  return false;
+	 	}else{
+		  $( "#field-ldapregistr-dioik-tmimgraf_error" ).remove();
+          $( "#edit-field-ldapregistr-dioik-tmimgraf-und").css("border-color", "#cccccc");	 		
+	 	  return true;
+	 	}
+	  }	  
+   	  // Έλεγχος Τοποθέτηση σε Τμήμα / Γραφείο (Ends)
+       	  
+ 	  // Dioikitiko (Ends)
+ 	  
+
+ 	  
+	  //Έλεχγος "Έχω αποθηκεύσει τον κωδικό μου σε ασφαλές μέρος"
+	  function check_saved_field(){
+		if ($( "#edit-field-ldapregistr-saved-und").prop( "checked") == false) {
+		  $( "#field-ldapregistr-saved_error" ).remove();
+		  $( "#edit-field-ldapregistr-saved-und" ).after( "<span id=\"field-ldapregistr-saved_error\" class=\"errorcheckbox\">Παρακαλώ, επιλέξτε το πεδίο \"Έχω αποθηκεύσει τον κωδικό μου σε ασφαλές μέρος\"</span>" );
+		  $( "#edit-field-ldapregistr-saved-und").css("border-color", "#ff0000");
+		  return false;
+		}else{
+		  $( "#field-ldapregistr-saved_error" ).remove();
+		  $( "#edit-field-ldapregistr-saved-und").css("border-color", "#cccccc");
+		  return true;
+		}
+	  }    
+			  
+			  
+	  //Έλεχγος Έλεγχος "Συμφωνώ να...user opt in"
+	  function check_opt_in_field(){
+		if ($( "#edit-field-ldapregistr-opt-in-und").prop( "checked")== false) {
+		  $( "#field-ldapregistr-opt-in_error" ).remove();
+		  $( "#edit-field-ldapregistr-opt-in-und" ).after( "<span id=\"field-ldapregistr-opt-in_error\" class=\"errorcheckbox\">Παρακαλώ, επιλέξτε το πεδίο:\n\"Αποδέχομαι τους όρους χρήσης \"</span>" );
+		  $( "#edit-field-ldapregistr-opt-in-und").css("border-color", "#ff0000");
+		  return false;
+		}else{
+		  $( "#field-ldapregistr-opt-in_error" ).remove();
+		  $( "#edit-field-ldapregistr-opt-in-und").css("border-color", "#cccccc");
+		  return true;
+		}
+	  }  
+			  
+	  
+	  // Functions - Fields Checks (Ends)
+	  
+	  
+			  
+	  // Mixanismos elegxou AFM
+	  function checkAFM(afm) {
+		if (!afm.match(/^\d{9}$/) || afm == '000000000')
+		  return false;
+
+		var m = 1, sum = 0;
+		for (var i = 7; i >= 0; i--) {
+		  m *= 2;
+		  sum += afm.charAt(i) * m;
+		}
+
+		return sum % 11 % 10 == afm.charAt(8);
+	  }
+				  
+
+	  // Mixanismos elegxou Email Syntax
+	  function IsEmail(email) {
+		var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
+		return regex.test(email);
+	  }
+
+	  
+	  
+	  // Mixanismos elegxou gia to kata poso to email anoikei sto domain pou trexei to webapp
+	  function IsEmailInDomain(email) {
+
+		var limitDomainSuffixedEmails = Drupal.settings.grnet_registration_form.grnet_limit_domain_suffixed_emails;		  
+		
+		// An prepei na elegxthei...to mail gia to an anoikei sto domain..
+		if(limitDomainSuffixedEmails==1){
+			var domainName = Drupal.settings.grnet_registration_form.grnet_domain_suffixed_emails;
+			
+		    if(email.indexOf(domainName) > 0)
+	            if((email.indexOf(domainName) + domainName.length) == email.length){
+	              //do regex checking if any
+	              return true;
+	            }
+	        	
+		    	return false;
+			
+		    	
+		// An den exei tsekaristei apo to diaxeiristiko..tote..min to elegxeis..kai epestrepse..true..    	
+		}else{
+			return true;
+		}
+			    	
+	    	
+	  }	  
+	  
+	  
+	  
+	  // Greek Social Security Number Validation (AMKA)
+	  // Αλγόριθμος ορθότητας ΑΜΚΑ
+	  function validateAMKA(amka) {
+		    if (!amka.match(/^\d{11}$/) || amka == '00000000000')
+		        return false;
+		 
+		    var iSum = 0;
+		    for (var i = 1; i <= amka.length; i++) {
+		        var iDigit = parseInt(amka.charAt(i - 1), 10);
+		        if (i % 2 === 0) {
+		            iDigit *= 2;
+		            if (iDigit > 9) {
+		                iDigit -= 9;
+		            }
+		        }
+		        iSum += iDigit;
+		    }
+		    return (iSum % 10 === 0);
+		}	  
+		  
+
+      // FUNCTIONS (Ends)  	    
+	    
+	    
+	    
+	});
+})(jQuery);
+	
+	
+	
+
diff --git a/grnet_core/js/info-view--double-highlight-diffs.js b/grnet_core/js/info-view--double-highlight-diffs.js
new file mode 100644
index 0000000..eb7e73f
--- /dev/null
+++ b/grnet_core/js/info-view--double-highlight-diffs.js
@@ -0,0 +1,115 @@
+(function($) {
+
+	$(document).ready(function() {
+		
+	  if(window.location.href.indexOf("requests/view/") > -1 ){
+		  
+		if( $( "#ldapinfo-root .grnet-field-ldapregistr-name").html() != $( ".grnet-info-view .grnet-field-ldapregistr-name").html() ){
+			//$( "#ldapinfo-root .views-field-field-ldapregistr-name").addClass('grnet-highlight');
+			$( ".grnet-info-view .views-field-field-ldapregistr-name").addClass('grnet-highlight');
+		}
+		
+		if( $( "#ldapinfo-root .grnet-field-ldapregistr-surname").html() != $( ".grnet-info-view .grnet-field-ldapregistr-surname").html() ){
+			//$( "#ldapinfo-root .views-field-field-ldapregistr-surname").addClass('grnet-highlight');
+			$( ".grnet-info-view .views-field-field-ldapregistr-surname").addClass('grnet-highlight');
+		}
+
+		if( $( "#ldapinfo-root .grnet-field-ldapregistr-amka").html() != $( ".grnet-info-view .grnet-field-ldapregistr-amka").html() ){
+			//$( "#ldapinfo-root .views-field-field-ldapregistr-amka").addClass('grnet-highlight');
+			$( ".grnet-info-view .views-field-field-ldapregistr-amka").addClass('grnet-highlight');
+		}
+
+		if( $( "#ldapinfo-root .grnet-field-ldapregistr-username").html() != $( ".grnet-info-view .grnet-field-ldapregistr-username").html() ){
+			//$( "#ldapinfo-root .views-field-field-ldapregistr-username").addClass('grnet-highlight');
+			$( ".grnet-info-view .views-field-field-ldapregistr-username").addClass('grnet-highlight');
+		}		
+
+		if( $( "#ldapinfo-root .grnet-field-ldapregistr-email").html() != $( ".grnet-info-view .grnet-field-ldapregistr-email").html() ){
+			//$( "#ldapinfo-root .views-field-field-ldapregistr-email").addClass('grnet-highlight');
+			$( ".grnet-info-view .views-field-field-ldapregistr-email").addClass('grnet-highlight');
+		}			
+
+		if( $( "#ldapinfo-root .grnet-field-ldapregistr-phone").html() != $( ".grnet-info-view .grnet-field-ldapregistr-phone").html() ){
+			//$( "#ldapinfo-root .views-field-field-ldapregistr-phone").addClass('grnet-highlight');
+			$( ".grnet-info-view .views-field-field-ldapregistr-phone").addClass('grnet-highlight');
+		}			
+
+		if( $( "#ldapinfo-root .grnet-field-ldapregistr-mobile").html() != $( ".grnet-info-view .grnet-field-ldapregistr-mobile").html() ){
+			//$( "#ldapinfo-root .views-field-field-ldapregistr-mobile").addClass('grnet-highlight');
+			$( ".grnet-info-view .views-field-field-ldapregistr-mobile").addClass('grnet-highlight');
+		}					
+
+		if( $( "#ldapinfo-root .grnet-field-ldapregistr-personel-categ").html() != $( ".grnet-info-view .grnet-field-ldapregistr-personel-categ").html() ){
+			//$( "#ldapinfo-root .views-field-field-ldapregistr-personel-categ").addClass('grnet-highlight');
+			$( ".grnet-info-view .views-field-field-ldapregistr-personel-categ").addClass('grnet-highlight');
+		}						
+
+		if( $( "#ldapinfo-root .grnet-field-ldapregistr-dicom").html() != $( ".grnet-info-view .grnet-field-ldapregistr-dicom").html() ){
+			//$( "#ldapinfo-root .views-field-field-ldapregistr-dicom").addClass('grnet-highlight');
+			$( ".grnet-info-view .views-field-field-ldapregistr-dicom").addClass('grnet-highlight');
+		}			
+
+		if( $( "#ldapinfo-root .grnet-field-ldapregistr-personel-type").html() != $( ".grnet-info-view .grnet-field-ldapregistr-personel-type").html() ){
+			//$( "#ldapinfo-root .views-field-field-ldapregistr-personel-type").addClass('grnet-highlight');
+			$( ".grnet-info-view .views-field-field-ldapregistr-personel-type").addClass('grnet-highlight');
+		}		
+
+		if( $( "#ldapinfo-root .grnet-field-ldapregistr-personel-type").html() != $( ".grnet-info-view .grnet-field-ldapregistr-personel-type").html() ){
+			//$( "#ldapinfo-root .views-field-field-ldapregistr-personel-type").addClass('grnet-highlight');
+			$( ".grnet-info-view .views-field-field-ldapregistr-personel-type").addClass('grnet-highlight');
+		}	
+
+        // * //
+		if( $( "#ldapinfo-root .grnet-field-ldapregistr-speciality").html() != $( ".grnet-info-view .grnet-field-ldapregistr-speciality").html() ){
+			//$( "#ldapinfo-root .views-field-field-ldapregistr-speciality").addClass('grnet-highlight');
+			$( ".grnet-info-view .views-field-field-ldapregistr-speciality").addClass('grnet-highlight');
+		}		
+
+		if( $( "#ldapinfo-root .grnet-field-ldapregistr-iatr-top-mon").html() != $( ".grnet-info-view .grnet-field-ldapregistr-iatr-top-mon").html() ){
+			//$( "#ldapinfo-root .views-field-field-ldapregistr-iatr-top-mon").addClass('grnet-highlight');
+			$( ".grnet-info-view .views-field-field-ldapregistr-iatr-top-mon").addClass('grnet-highlight');
+		}		
+
+		if( $( "#ldapinfo-root .grnet-field-ldapregistr-tmim-mon-tomea").html() != $( ".grnet-info-view .grnet-field-ldapregistr-tmim-mon-tomea").html() ){
+			//$( "#ldapinfo-root .views-field-field-ldapregistr-tmim-mon-tomea").addClass('grnet-highlight');
+			$( ".grnet-info-view .views-field-field-ldapregistr-tmim-mon-tomea").addClass('grnet-highlight');
+		}			
+
+		if( $( "#ldapinfo-root .grnet-field-ldapregistr-tmim-diato").html() != $( ".grnet-info-view .grnet-field-ldapregistr-tmim-diato").html() ){
+			//$( "#ldapinfo-root .views-field-field-ldapregistr-tmim-diato").addClass('grnet-highlight');
+			$( ".grnet-info-view .views-field-field-ldapregistr-tmim-diato").addClass('grnet-highlight');
+		}	
+
+		if( $( "#ldapinfo-root .grnet-field-ldapregistr-epikour-loipa").html() != $( ".grnet-info-view .grnet-field-ldapregistr-epikour-loipa").html() ){
+			//$( "#ldapinfo-root .views-field-field-ldapregistr-epikour-loipa").addClass('grnet-highlight');
+			$( ".grnet-info-view .views-field-field-ldapregistr-epikour-loipa").addClass('grnet-highlight');
+		}
+
+		if( $( "#ldapinfo-root .grnet-field-ldapregistr-iatr-proist").html() != $( ".grnet-info-view .grnet-field-ldapregistr-iatr-proist").html() ){
+			//$( "#ldapinfo-root .views-field-field-ldapregistr-iatr-proist").addClass('grnet-highlight');
+			$( ".grnet-info-view .views-field-field-ldapregistr-iatr-proist").addClass('grnet-highlight');
+		}	
+
+		if( $( "#ldapinfo-root .grnet-field-ldapregistr-dioik-tmimgraf").html() != $( ".grnet-info-view .grnet-field-ldapregistr-dioik-tmimgraf").html() ){
+			//$( "#ldapinfo-root .views-field-field-ldapregistr-dioik-tmimgraf").addClass('grnet-highlight');
+			$( ".grnet-info-view .views-field-field-ldapregistr-dioik-tmimgraf").addClass('grnet-highlight');
+		}		
+
+		if( $( "#ldapinfo-root .grnet-field-ldapregistr-admin-proist").html() != $( ".grnet-info-view .grnet-field-ldapregistr-admin-proist").html() ){
+			//$( "#ldapinfo-root .views-field-field-ldapregistr-admin-proist").addClass('grnet-highlight');
+			$( ".grnet-info-view .views-field-field-ldapregistr-admin-proist").addClass('grnet-highlight');
+		}	
+		                        
+		if( $( "#ldapinfo-root .grnet-field-ldapregistr-dias-roles").html() != $( ".grnet-info-view .grnet-field-ldapregistr-dias-roles").html() ){
+			//$( "#ldapinfo-root .views-field-field-ldapregistr-dias-roles").addClass('grnet-highlight');
+			$( ".grnet-info-view .views-field-field-ldapregistr-dias-roles").addClass('grnet-highlight');
+		}				
+		
+		//alert($( "#ldapinfo-root .views-field-field-ldapregistr-speciality").attr("style") );
+	  }
+	  
+	  
+	});
+  
+		
+})(jQuery);	
\ No newline at end of file
diff --git a/grnet_core/js/info-view--hide-show-on-load.js b/grnet_core/js/info-view--hide-show-on-load.js
new file mode 100644
index 0000000..83cf453
--- /dev/null
+++ b/grnet_core/js/info-view--hide-show-on-load.js
@@ -0,0 +1,144 @@
+(function($) {
+
+	$(document).ready(function() {
+		
+		
+		// #########  Apokripsi stoixeion kartelas (Starts) #########
+
+		// @@@@@ -views- (Starts) @@@@@
+		if($(".grnet-info-view .grnet-field-ldapregistr-personel-categ").html()=='Ιατρικό'){
+		  $(".grnet-info-view .views-field-field-ldapregistr-dioik-tmimgraf").hide();
+		  $(".grnet-info-view .views-field-field-ldapregistr-admin-proist").hide();
+					  
+		  // Emfanisi i oxi tis eidikotitas (Starts)
+		  if( $(".grnet-info-view .grnet-field-ldapregistr-personel-type").html()=='Γιατροί ΕΣΥ' ||
+			$(".grnet-info-view .grnet-field-ldapregistr-personel-type").html()=='Πανεπιστημιακοί Γιατροί'
+		  ){
+			$(".grnet-info-view .views-field-field-ldapregistr-speciality").show();
+		  }else{
+			$(".grnet-info-view .views-field-field-ldapregistr-speciality").hide();
+		  }
+		  // Emfanisi i oxi tis eidikotitas (Ends)
+					  
+		  // Emfanisi tis katalilis monades/tmimatos ktl.. (Starts)
+		  if( $(".grnet-info-view .grnet-field-ldapregistr-iatr-top-mon").html()=='Τμήματα / Μονάδες ανά Τομέα'){
+			$(".grnet-info-view .views-field-field-ldapregistr-tmim-mon-tomea").show();
+			$(".grnet-info-view .views-field-field-ldapregistr-tmim-diato").hide();
+			$(".grnet-info-view .views-field-field-ldapregistr-epikour-loipa").hide();
+		  }else if( $(".grnet-info-view .grnet-field-ldapregistr-iatr-top-mon").html()=='Τμήματα Διατομεακού Επιπέδου'){
+			$(".grnet-info-view .views-field-field-ldapregistr-tmim-mon-tomea").hide();
+			$(".grnet-info-view .views-field-field-ldapregistr-tmim-diato").show();
+			$(".grnet-info-view .views-field-field-ldapregistr-epikour-loipa").hide();
+		  }else if( $(".grnet-info-view .grnet-field-ldapregistr-iatr-top-mon").html()=='Επικουρικά / Λοιπά'){
+			$(".grnet-info-view .views-field-field-ldapregistr-tmim-mon-tomea").hide();
+			$(".grnet-info-view .views-field-field-ldapregistr-tmim-diato").hide();
+			$(".grnet-info-view .views-field-field-ldapregistr-epikour-loipa").show();		    	
+		  }else{
+			$(".grnet-info-view .views-field-field-ldapregistr-tmim-mon-tomea").hide();
+			$(".grnet-info-view .views-field-field-ldapregistr-tmim-diato").hide();
+			$(".grnet-info-view .views-field-field-ldapregistr-epikour-loipa").hide();		  
+		  }			  
+		  // Emfanisi tis katalilis monades/tmimatos ktl.. (Ends)
+
+		  
+		}else if($(".grnet-info-view .grnet-field-ldapregistr-personel-categ").html()=='Νοσηλευτικό'){
+		  $(".grnet-info-view .views-field-field-ldapregistr-dicom").hide();
+		  $(".grnet-info-view .views-field-field-ldapregistr-personel-type").hide();
+		  $(".grnet-info-view .views-field-field-ldapregistr-speciality").hide();
+		  $(".grnet-info-view .views-field-field-ldapregistr-iatr-top-mon").hide();
+		  $(".grnet-info-view .views-field-field-ldapregistr-tmim-mon-tomea").hide();
+		  $(".grnet-info-view .views-field-field-ldapregistr-tmim-diato").hide();
+		  $(".grnet-info-view .views-field-field-ldapregistr-epikour-loipa").hide();
+		  $(".grnet-info-view .views-field-field-ldapregistr-iatr-proist").hide();
+					  
+		  $(".grnet-info-view .views-field-field-ldapregistr-dioik-tmimgraf").hide();
+		  $(".grnet-info-view .views-field-field-ldapregistr-admin-proist").hide();
+		
+		  
+		}else if($(".grnet-info-view .grnet-field-ldapregistr-personel-categ").html()=='Διοικητικό'){
+		  $(".grnet-info-view .views-field-field-ldapregistr-dicom").hide();
+		  $(".grnet-info-view .views-field-field-ldapregistr-personel-type").hide();
+		  $(".grnet-info-view .views-field-field-ldapregistr-speciality").hide();
+		  $(".grnet-info-view .views-field-field-ldapregistr-iatr-top-mon").hide();
+		  $(".grnet-info-view .views-field-field-ldapregistr-tmim-mon-tomea").hide();
+		  $(".grnet-info-view .views-field-field-ldapregistr-tmim-diato").hide();
+		  $(".grnet-info-view .views-field-field-ldapregistr-epikour-loipa").hide();
+		  $(".grnet-info-view .views-field-field-ldapregistr-iatr-proist").hide();
+	    }
+
+		// @@@@@ -views- (Ends) @@@@@
+		
+		
+		
+		
+		// @@@@@ -ldapinfo- (Starts) @@@@@
+        if($("#ldapinfo-root .grnet-field-ldapregistr-personel-categ").html()=='Ιατρικό'){
+		  $("#ldapinfo-root .views-field-field-ldapregistr-dioik-tmimgraf").hide();
+		  $("#ldapinfo-root .views-field-field-ldapregistr-admin-proist").hide();
+					  
+		  // Emfanisi i oxi tis eidikotitas (Starts)
+		  if( $("#ldapinfo-root .grnet-field-ldapregistr-personel-type").html()=='Γιατροί ΕΣΥ' ||
+		    $("#ldapinfo-root .grnet-field-ldapregistr-personel-type").html()=='Πανεπιστημιακοί Γιατροί'
+		  ){
+			$("#ldapinfo-root .views-field-field-ldapregistr-speciality").show();
+		  }else{
+			$("#ldapinfo-root .views-field-field-ldapregistr-speciality").hide();
+		  }
+		  // Emfanisi i oxi tis eidikotitas (Ends)
+					  
+		  // Emfanisi tis katalilis monades/tmimatos ktl.. (Starts)
+		  if( $("#ldapinfo-root .grnet-field-ldapregistr-iatr-top-mon").html()=='Τμήματα / Μονάδες ανά Τομέα'){
+			$("#ldapinfo-root .views-field-field-ldapregistr-tmim-mon-tomea").show();
+			$("#ldapinfo-root .views-field-field-ldapregistr-tmim-diato").hide();
+			$("#ldapinfo-root .views-field-field-ldapregistr-epikour-loipa").hide();
+		  }else if( $("#ldapinfo-root .grnet-field-ldapregistr-iatr-top-mon").html()=='Τμήματα Διατομεακού Επιπέδου'){
+			$("#ldapinfo-root .views-field-field-ldapregistr-tmim-mon-tomea").hide();
+			$("#ldapinfo-root .views-field-field-ldapregistr-tmim-diato").show();
+			$("#ldapinfo-root .views-field-field-ldapregistr-epikour-loipa").hide();
+		  }else if( $("#ldapinfo-root .grnet-field-ldapregistr-iatr-top-mon").html()=='Επικουρικά / Λοιπά'){
+			$("#ldapinfo-root .views-field-field-ldapregistr-tmim-mon-tomea").hide();
+			$("#ldapinfo-root .views-field-field-ldapregistr-tmim-diato").hide();
+			$("#ldapinfo-root .views-field-field-ldapregistr-epikour-loipa").show();		    	
+		  }else{
+			$("#ldapinfo-root .views-field-field-ldapregistr-tmim-mon-tomea").hide();
+			$("#ldapinfo-root .views-field-field-ldapregistr-tmim-diato").hide();
+			$("#ldapinfo-root .views-field-field-ldapregistr-epikour-loipa").hide();	
+		  }			  
+		  // Emfanisi tis katalilis monades/tmimatos ktl.. (Ends)
+					  
+        }else if($("#ldapinfo-root .grnet-field-ldapregistr-personel-categ").html()=='Νοσηλευτικό'){
+		  $("#ldapinfo-root .views-field-field-ldapregistr-dicom").hide();
+		  $("#ldapinfo-root .views-field-field-ldapregistr-personel-type").hide();
+	      $("#ldapinfo-root .views-field-field-ldapregistr-speciality").hide();
+		  $("#ldapinfo-root .views-field-field-ldapregistr-iatr-top-mon").hide();
+	      $("#ldapinfo-root .views-field-field-ldapregistr-tmim-mon-tomea").hide();
+		  $("#ldapinfo-root .views-field-field-ldapregistr-tmim-diato").hide();
+		  $("#ldapinfo-root .views-field-field-ldapregistr-epikour-loipa").hide();
+		  $("#ldapinfo-root .views-field-field-ldapregistr-iatr-proist").hide();
+					  
+		  $("#ldapinfo-root .views-field-field-ldapregistr-dioik-tmimgraf").hide();
+		  $("#ldapinfo-root .views-field-field-ldapregistr-admin-proist").hide();
+					  
+		}else if($("#ldapinfo-root .grnet-field-ldapregistr-personel-categ").html()=='Διοικητικό'){
+		  $("#ldapinfo-root .views-field-field-ldapregistr-dicom").hide();
+		  $("#ldapinfo-root .views-field-field-ldapregistr-personel-type").hide();
+		  $("#ldapinfo-root .views-field-field-ldapregistr-speciality").hide();
+		  $("#ldapinfo-root .views-field-field-ldapregistr-iatr-top-mon").hide();
+		  $("#ldapinfo-root .views-field-field-ldapregistr-tmim-mon-tomea").hide();
+		  $("#ldapinfo-root .views-field-field-ldapregistr-tmim-diato").hide();
+		  $("#ldapinfo-root .views-field-field-ldapregistr-epikour-loipa").hide();
+		  $("#ldapinfo-root .views-field-field-ldapregistr-iatr-proist").hide();
+		}
+        // @@@@@ -ldapinfo- (Ends) @@@@@
+        
+        // #########  Apokripsi stoixeion kartelas (Ends) #########
+		
+       
+	});
+
+	
+	
+  
+  
+		
+})(jQuery);	
\ No newline at end of file
diff --git a/grnet_ldap_interconnection/grnet_ldap_interconnection.admin.inc b/grnet_ldap_interconnection/grnet_ldap_interconnection.admin.inc
new file mode 100755
index 0000000..1fe1b87
--- /dev/null
+++ b/grnet_ldap_interconnection/grnet_ldap_interconnection.admin.inc
@@ -0,0 +1,89 @@
+<?php
+
+/**
+ * @file
+ * CAS module settings UI.
+ */
+
+/**
+ * Provides settings pages.
+ */
+function grnet_ldap_interconnection_admin_settings() {
+
+	//$ldaphost = '127.0.0.1';
+	//$ldapport = '5389';
+	//$ldapbinddn	= 'cn=admin,dc=hosp-xanthi,dc=gr';
+	//$ldappass = 'secret';
+	//$ldapbasedn = 'ou=people,dc=hosp-xanthi,dc=gr';
+
+  $form['server'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Grnet Ldap Server'),
+    '#collapsible' => TRUE,
+    '#collapsed' => FALSE,
+  );
+
+  $form['server']['grnet_ldaphost'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Ldap Host'),
+    '#default_value' => variable_get('grnet_ldaphost', ''),
+    '#size' => 30,
+    // Hostnames can be 255 characters long.
+    '#maxlength' => 255,
+    '#description' => t('Hostname or IP Address of the Grnet Ldap server.'),
+  );
+
+  $form['server']['grnet_ldapport'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Ldap Port'),
+    '#default_value' => variable_get('grnet_ldapport', '389'),
+    '#size' => 5,
+    // The maximum port number is 65536, 5 digits.
+    '#maxlength' => 5,
+    '#description' => t('389 is the standard ldap port'),
+  );
+
+  $form['server']['grnet_ldapbinddn'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Ldap Bind DN'),
+    '#default_value' => variable_get('grnet_ldapbinddn', ''),
+    '#size' => 30,
+    '#description' => t('The Ldap Bind DN...'),
+  );
+
+  $form['server']['grnet_ldappass'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Ldap Password'),
+    '#default_value' => variable_get('grnet_ldappass', ''),
+    '#maxlength' => 255,
+    '#description' => t('The Ldap password required to connect...'),
+  );
+  
+  $form['server']['grnet_ldapbasedn'] = array(
+  		'#type' => 'textfield',
+  		'#title' => t('Ldap Base DN'),
+  		'#default_value' => variable_get('grnet_ldapbasedn', 'dc=domain,dc=gr'),
+  		'#maxlength' => 255,
+  		'#description' => t('The Ldap Base DN'),
+  );
+    
+  $form['server']['grnet_ldapbasedn_people'] = array(
+  		'#type' => 'textfield',
+  		'#title' => t('Ldap Base DN (people)'),
+  		'#default_value' => variable_get('grnet_ldapbasedn_people', 'ou=people'),
+  		'#maxlength' => 255,
+  		'#description' => t('Current value : ').variable_get('grnet_ldapbasedn_people').','.variable_get('grnet_ldapbasedn')
+  );
+
+
+  $form['server']['grnet_ldapbasedn_units'] = array(
+  		'#type' => 'textfield',
+  		'#title' => t('Ldap Base DN (units)'),
+  		'#default_value' => variable_get('grnet_ldapbasedn_units', 'ou=units'),
+  		'#maxlength' => 255,
+  		'#description' => t('Current value : ').variable_get('grnet_ldapbasedn_units').','.variable_get('grnet_ldapbasedn')
+  );  
+  
+  
+  return system_settings_form($form);
+}
diff --git a/grnet_ldap_interconnection/grnet_ldap_interconnection.info b/grnet_ldap_interconnection/grnet_ldap_interconnection.info
new file mode 100644
index 0000000..6c05953
--- /dev/null
+++ b/grnet_ldap_interconnection/grnet_ldap_interconnection.info
@@ -0,0 +1,10 @@
+name = grnet Ldap Interconnection
+description = Grnet Ldap Interconnection (Ldap Create / Update)
+configure = admin/config/system/grnet/ldap
+core = "7.x"
+package = grnet
+; Information added by drupal.org packaging script on 2013-05-20
+version = "7.x-1.0"
+core = "7.x"
+project = "grnet_core"
+datestamp = "1369041918"
diff --git a/grnet_ldap_interconnection/grnet_ldap_interconnection.info~ b/grnet_ldap_interconnection/grnet_ldap_interconnection.info~
new file mode 100644
index 0000000..785a7df
--- /dev/null
+++ b/grnet_ldap_interconnection/grnet_ldap_interconnection.info~
@@ -0,0 +1,10 @@
+name = grnet Ldap Interconnection
+description = Ggrnet Ldap Interconnection (Ldap Create / Update)
+configure = admin/config/system/grnet/ldap
+core = "7.x"
+package = grnet
+; Information added by drupal.org packaging script on 2013-05-20
+version = "7.x-1.0"
+core = "7.x"
+project = "grnet_core"
+datestamp = "1369041918"
diff --git a/grnet_ldap_interconnection/grnet_ldap_interconnection.module b/grnet_ldap_interconnection/grnet_ldap_interconnection.module
new file mode 100644
index 0000000..b1b1792
--- /dev/null
+++ b/grnet_ldap_interconnection/grnet_ldap_interconnection.module
@@ -0,0 +1,1020 @@
+<?php
+function grnet_ldap_interconnection_menu() {
+	
+	$items = array();
+	
+	$items['admin/config/grnet/ldap'] = array(
+			'title' => 'grnet Ldap settings',
+			'description' => 'Configure grnet Ldap Settings',
+			'page callback' => 'drupal_get_form',
+			'page arguments' => array('grnet_ldap_interconnection_admin_settings'),
+			'access arguments' => array('administer cas'),
+			'type' => MENU_NORMAL_ITEM,
+			'file' => 'grnet_ldap_interconnection.admin.inc',
+	);
+	
+	$items['admin/config/grnet/ldap/settings'] = array(
+			'title' => 'grnet Ldap',
+			'type' => MENU_DEFAULT_LOCAL_TASK,
+			'weight' => -10,
+	);
+	
+	$items['request/alterinfo/delete/%'] = array(
+			'title' => 'Request Request for Change Delete',
+			'page callback' => '_request_alter_info_delete',
+			'page arguments' => array(3),
+			/*'access callback' => 'user_access',*/
+			'access arguments' => array('access content'),
+			'type' => MENU_CALLBACK,
+	);
+	return $items;
+}
+function _request_alter_info_delete($secretkey){
+	if($secretkey<>''){
+		$entity_id = grnet_core_get_entity_id_by_secretkey($secretkey);
+	}
+	
+	
+	if($entity_id>0){
+		$entity_instance = entity_load('entityform', array($entity_id));
+		$entity_instance = $entity_instance[$entity_id];
+		$entity_instance = _ldap_user_rollback_wrapper($entity_instance,'');
+		
+		watchdog('grnet ldap interconnection', 'Ldap user record rolled back succesfully<br>
+																								  <b>Name/Surname :</b> '.$entity_instance->field_ldapregistr_name['und']['0']['value'].' '.$entity_instance->field_ldapregistr_surname['und']['0']['value'], NULL , WATCHDOG_INFO);
+		$entity_instance->save();
+	}
+	
+	drupal_goto("/request/alterinfo");
+	
+}
+function grnet_ldap_interconnection_entity_presave($entity, $type) {
+	
+	
+	if(grnet_core_user_has_role('ldapuser') && $entity->type=='ldapregistration'){
+		
+		if($_SESSION['grnet']['ldapregistration'][$entity->entityform_id]->field_ldapregistr_status['und']['0']['value']=='completed' ||
+			 $_SESSION['grnet']['ldapregistration'][$entity->entityform_id]->field_ldapregistr_status['und']['0']['value']=='declined' ||
+			 $_SESSION['grnet']['ldapregistration'][$entity->entityform_id]->field_ldapregistr_status['und']['0']['value']=='accepted' ||
+			 $_SESSION['grnet']['ldapregistration'][$entity->entityform_id]->field_ldapregistr_status['und']['0']['value']=='accepted_minor_fixes'
+		){
+			
+			$entity_loaded = $_SESSION['grnet']['ldapregistration'][$entity->entityform_id];
+			$entity_presave = $entity;
+			
+			
+			
+			if(grnet_core_entity_has_changed($entity_loaded, $entity_presave)){
+				$entity->field_ldapregistr_status['und']['0']['value']='request_for_change';
+			}else{
+			}
+		}
+		
+		
+	}
+	
+	
+	
+	
+	
+	if( (grnet_core_user_has_role('manager') || grnet_core_user_has_role('administrator')) &&
+			$entity->type=='ldapregistration'
+	){
+		
+		if($_SESSION['grnet']['ldapregistration'][$entity->entityform_id]->field_ldapregistr_status['und']['0']['value']=='request_for_change' &&
+			 $entity->field_ldapregistr_status['und']['0']['value']=='declined'
+			){
+						
+					unset($_SESSION['grnet']['ldapregistration'][$entity->entityform_id]);
+					if($entity->field_ldapregistr_hidden_message['und']['0']['value']<>''){
+						$manager_comments = '| Σχόλια Διαχειριστή : '.$entity->field_ldapregistr_hidden_message['und']['0']['value'];
+					}
+					$entity->field_ldapregistr_hidden_message['und']['0']['value'] = 'Η αίτηση σας απορρίφθηκε.'.$manager_comments;
+					
+					_ldap_user_rollback_wrapper($entity,$type);
+		}
+		
+		
+		if($_SESSION['grnet']['ldapregistration'][$entity->entityform_id]->field_ldapregistr_status['und']['0']['value']=='request_for_change' &&
+				$entity->field_ldapregistr_status['und']['0']['value']=='accepted'
+		){
+			if($entity->field_ldapregistr_hidden_message['und']['0']['value']<>''){
+				$manager_comments = '| Σχόλια Διαχειριστή : '.$entity->field_ldapregistr_hidden_message['und']['0']['value'];
+			}
+			$entity->field_ldapregistr_hidden_message['und']['0']['value'] = 'Η αίτηση σας ενεκρίθη.'.$manager_comments;
+				
+		}
+		if($_SESSION['grnet']['ldapregistration'][$entity->entityform_id]->field_ldapregistr_status['und']['0']['value']=='request_for_change' &&
+				$entity->field_ldapregistr_status['und']['0']['value']=='accepted_minor_fixes'
+		){
+			if($entity->field_ldapregistr_hidden_message['und']['0']['value']<>''){
+				$manager_comments = '| Σχόλια Διαχειριστή : '.$entity->field_ldapregistr_hidden_message['und']['0']['value'];
+			}
+			$entity->field_ldapregistr_hidden_message['und']['0']['value'] = 'Η αίτηση σας ενεκρίθη με μικρές αλλαγές.'.$manager_comments;
+			
+		}
+		
+		
+		
+		
+		
+	}
+	
+	
+	
+	
+}
+function grnet_ldap_interconnection_entity_insert($entity, $type) {
+	
+	if(grnet_core_user_has_role('administrator') && 
+		 $type=='taxonomy_term' && 
+		 ($entity->vocabulary_machine_name='iatr_tmimata_monades_ana_tomea' ||
+		  $entity->vocabulary_machine_name='iatr_tmimata_diatomeakou_epipedou' ||
+		  $entity->vocabulary_machine_name='iatr_epikourika_loipa' ||
+		  $entity->vocabulary_machine_name='dioik_tmimata_grafeia' ||
+		  $entity->vocabulary_machine_name='specialities'
+		 )
+	){
+		_ldap_unit_create_wrapper($entity,$type);
+	}
+		
+}
+function grnet_ldap_interconnection_entity_update($entity, $type) {
+	
+	if( (grnet_core_user_has_role('manager') || grnet_core_user_has_role('administrator')) &&	
+			 $entity->type=='ldapregistration' &&
+			 ( ($_SESSION['grnet']['ldapregistration'][$entity->entityform_id]->field_ldapregistr_status['und']['0']['value']=='prepending' ||
+			    $_SESSION['grnet']['ldapregistration'][$entity->entityform_id]->field_ldapregistr_status['und']['0']['value']=='pending'
+			   ) &&
+			 	 $entity->field_ldapregistr_status['und']['0']['value']=='completed'
+			 )
+	){
+		unset($_SESSION['grnet']['ldapregistration'][$entity->entityform_id]);
+		_ldap_user_create_wrapper($entity,$type);
+	}
+	
+	if( (grnet_core_user_has_role('manager') || grnet_core_user_has_role('administrator')) &&	
+			 $entity->type=='ldapregistration' &&
+			 ($_SESSION['grnet']['ldapregistration'][$entity->entityform_id]->field_ldapregistr_status['und']['0']['value']=='request_for_change' &&
+		 	  ($entity->field_ldapregistr_status['und']['0']['value']=='accepted' || 
+		 	   $entity->field_ldapregistr_status['und']['0']['value']=='accepted_minor_fixes'
+		 	  )		
+			 )
+	){
+		unset($_SESSION['grnet']['ldapregistration'][$entity->entityform_id]);
+		_ldap_user_update_wrapper($entity,$type);
+	}
+	
+	
+	if( (grnet_core_user_has_role('manager') || grnet_core_user_has_role('administrator')) &&
+			$type=='taxonomy_term' &&
+			($entity->vocabulary_machine_name='iatr_tmimata_monades_ana_tomea' ||
+		  $entity->vocabulary_machine_name='iatr_tmimata_diatomeakou_epipedou' ||
+		  $entity->vocabulary_machine_name='iatr_epikourika_loipa' ||
+		  $entity->vocabulary_machine_name='dioik_tmimata_grafeia' ||
+		  $entity->vocabulary_machine_name='specialities')
+	){
+		_ldap_unit_update_wrapper($entity,$type);
+	}	
+	
+}
+function grnet_ldap_interconnection_entity_delete($entity_type, $id) {
+	
+	if(grnet_core_user_has_role('administrator') && $id=='entityform' && 
+		 $entity_type->type='ldapregistration' &&  $entity_type->field_ldapregistr_username['und'][0]['value']<>''){
+		_ldap_user_delete_wrapper($entity_type);
+	}
+	
+	if(grnet_core_user_has_role('administrator') &&
+		 $id=='taxonomy_term'
+	){
+		_ldap_unit_delete_wrapper($entity_type);
+	}	
+}
+function _ldap_user_create_wrapper($entity, $type){
+	
+	
+	$ldapbasedn = variable_get('grnet_ldapbasedn');
+          	$distinguishedName = '';
+ $dicomReferringPhysiciansName = '';
+	                $description = '';
+          	          $seealso = '';
+	               $proistamenos = '';
+         $eduPersonEntitlement = '';
+	
+	
+	if($entity->field_ldapregistr_personel_categ['und']['0']['value']=='medical'){
+	
+		if($entity->field_ldapregistr_speciality['und']['0']['tid']>0){
+			$distinguishedName = 'uniqueIdentifier='.$entity->field_ldapregistr_speciality['und']['0']['tid'].',ou=Units,'.$ldapbasedn;
+		}
+			
+		if($entity->field_ldapregistr_dicom['und']['0']['value']<>''){
+			$dicomReferringPhysiciansName = $entity->field_ldapregistr_dicom['und']['0']['value'];
+		}
+	
+		
+		
+		$description = grnet_core_convert($entity->field_ldapregistr_personel_type['und']['0']['value']);
+		
+		
+		
+		if($entity->field_ldapregistr_iatr_top_mon['und']['0']['value']=='iatr_tmimata_monades_ana_tomea'){
+			$seealso = 'uniqueIdentifier='.$entity->field_ldapregistr_tmim_mon_tomea['und']['0']['tid'].',ou=Units,'.$ldapbasedn;
+	
+		}elseif($entity->field_ldapregistr_iatr_top_mon['und']['0']['value']=='iatr_tmimata_diatomeakou_epipedou'){
+			$seealso = 'uniqueIdentifier='.$entity->field_ldapregistr_tmim_diato['und']['0']['tid'].',ou=Units,'.$ldapbasedn;
+	
+		}elseif($entity->field_ldapregistr_iatr_top_mon['und']['0']['value']=='iatr_epikourika_loipa'){
+			$seealso = 'uniqueIdentifier='.$entity->field_ldapregistr_epikour_loipa['und']['0']['tid'].',ou=Units,'.$ldapbasedn;
+	
+		}
+			
+		
+		if($entity->field_ldapregistr_iatr_proist['und']['0']['value']=='1'){
+			$proistamenos = 'manager';
+		}
+			
+	
+	}elseif($entity->field_ldapregistr_personel_categ['und']['0']['value']=='administrative'){
+			
+		$seealso = 'uniqueIdentifier='.$entity->field_ldapregistr_dioik_tmimgraf['und']['0']['tid'].',ou=Units,'.$ldapbasedn;
+			
+		
+		if($entity->field_ldapregistr_admin_proist['und']['0']['value']=='1'){
+			$proistamenos = 'manager';
+		}
+			
+			
+	}elseif($entity->field_ldapregistr_personel_categ['und']['0']['value']=='nursery'){
+	}
+	
+	
+		try{
+	
+			$userinfo = array('objectClass' => array(	'top',
+																								'extensibleObject',
+																								'extendedAuthentication',
+																								'grHealthPerson',
+																								'inetOrgPerson'),
+					              
+												'cn'=>$entity->field_ldapregistr_name['und']['0']['value'].' '.$entity->field_ldapregistr_surname['und']['0']['value'],
+												'sn' => $entity->field_ldapregistr_surname['und']['0']['value'],
+												'schacPersonalUniqueID'=>$entity->field_ldapregistr_amka['und']['0']['value'],
+												'employeetype'=>grnet_core_convert($entity->field_ldapregistr_personel_categ['und']['0']['value']),
+												'givenName'=> $entity->field_ldapregistr_name['und']['0']['value'],
+												'mail'=>$entity->field_ldapregistr_email['und']['0']['email'],
+												'uid'=>$entity->field_ldapregistr_username['und']['0']['value']
+			                 );
+	
+			
+			
+			if($entity->field_ldapregistr_mobile['und']['0']['value']<>''){
+				$userinfo['mobile'] = $entity->field_ldapregistr_mobile['und']['0']['value'];
+			}
+			
+			if($entity->field_ldapregistr_phone['und']['0']['value']<>''){
+				$userinfo['telephoneNumber'] = $entity->field_ldapregistr_phone['und']['0']['value'];
+			}
+			
+			if($entity->field_ldapregistr_dias_roles['und']['0']['tid']>0){
+				$userinfo['eduPersonEntitlement'] = grnet_core_conver_dias_roles($entity->field_ldapregistr_dias_roles['und']['0']['tid']);
+			}
+									
+			
+	    
+			if($entity->field_ldapregistr_personel_categ['und']['0']['value']=='medical'){
+	
+				if($distinguishedName<>''){
+					$userinfo['distinguishedName'] = $distinguishedName;
+				}
+	
+				if($dicomReferringPhysiciansName<>''){
+					$userinfo['dicomReferringPhysiciansName'] = $dicomReferringPhysiciansName;
+				}
+	
+				if($proistamenos<>''){
+					$userinfo = array_merge($userinfo ,  array(	'title'=>$proistamenos));
+				}
+								
+				$userinfo = array_merge($userinfo ,  array(	'description'=>	$description,
+																								 	 	'seealso'=>$seealso
+				                                          )
+                        			 );
+	
+			}elseif($entity->field_ldapregistr_personel_categ['und']['0']['value']=='administrative'){
+	
+				if($proistamenos<>''){
+					$userinfo = array_merge($userinfo ,  array( 'title'=>$proistamenos));
+				}				
+				
+				$userinfo = array_merge($userinfo ,  array( 'seealso'=>$seealso));
+	
+			}
+				
+				
+			
+			if(!_ldap_user_exists(array("uid" => $entity->field_ldapregistr_username['und']['0']['value']))){
+				$output =  _ldap_user_create($userinfo,$entity->field_ldapregistr_pwd['und']['0']['password_field']['password_field']);
+				if($output==1){
+					watchdog('grnet ldap interconnection', 'Ldap user record created succesfully<br>
+																								  <b>Name/Surname :</b> '.$entity->field_ldapregistr_name['und']['0']['value'].' '.$entity->field_ldapregistr_surname['und']['0']['value'], NULL , WATCHDOG_INFO);
+					drupal_set_message(t('Ldap user record created succesfully!!'));
+ 				}
+			}else{
+			}
+	
+	
+	
+	
+		}catch (exception $e){
+			var_dump($e);
+		}
+	
+	
+	
+	
+	
+}  
+function grnet_ldap_interconnection_unit_read_wrapper($username , $attributes_array){
+	return _ldap_user_read_wrapper($username , $attributes_array);
+}
+function _ldap_user_read_wrapper($username , $attributes_array=null){
+	$ldapbasedn = variable_get('grnet_ldapbasedn');
+		try{
+			return _ldap_user_read($username , $attributes_array);
+		}catch (exception $e){
+			var_dump($e);
+		}
+}
+	
+function _ldap_user_update_wrapper($entity, $type){
+	$ldapbasedn = variable_get('grnet_ldapbasedn');
+	
+	
+		$mobile = array();
+	  $telephoneNumber = array();
+	             $distinguishedName = array();
+		$dicomReferringPhysiciansName = array();
+		                 $description = array();
+		                     $seealso = array();
+		                $proistamenos = array();
+		        $eduPersonEntitlement = array();
+		
+		if($entity->field_ldapregistr_mobile['und']['0']['value']<>''){
+			$mobile = $entity->field_ldapregistr_mobile['und']['0']['value'];
+		}
+		
+		if($entity->field_ldapregistr_phone['und']['0']['value']<>''){
+			$telephoneNumber = $entity->field_ldapregistr_phone['und']['0']['value'];
+		}
+		
+		if($entity->field_ldapregistr_dias_roles['und']['0']['tid']>0){
+			$eduPersonEntitlement = grnet_core_conver_dias_roles($entity->field_ldapregistr_dias_roles['und']['0']['tid']);
+		}		
+			
+		
+		if($entity->field_ldapregistr_personel_categ['und']['0']['value']=='medical'){
+			if($entity->field_ldapregistr_speciality['und']['0']['tid']>0){
+				$distinguishedName = 'uniqueIdentifier='.$entity->field_ldapregistr_speciality['und']['0']['tid'].',ou=Units,'.$ldapbasedn;
+			}
+			
+			if($entity->field_ldapregistr_dicom['und']['0']['value']<>''){
+				$dicomReferringPhysiciansName = $entity->field_ldapregistr_dicom['und']['0']['value'];
+			}			
+			$description = grnet_core_convert($entity->field_ldapregistr_personel_type['und']['0']['value']);
+				
+			if($entity->field_ldapregistr_iatr_top_mon['und']['0']['value']=='iatr_tmimata_monades_ana_tomea'){
+				$seealso = 'uniqueIdentifier='.$entity->field_ldapregistr_tmim_mon_tomea['und']['0']['tid'].',ou=Units,'.$ldapbasedn;
+			}elseif($entity->field_ldapregistr_iatr_top_mon['und']['0']['value']=='iatr_tmimata_diatomeakou_epipedou'){
+				$seealso = 'uniqueIdentifier='.$entity->field_ldapregistr_tmim_diato['und']['0']['tid'].',ou=Units,'.$ldapbasedn;
+			}elseif($entity->field_ldapregistr_iatr_top_mon['und']['0']['value']=='iatr_epikourika_loipa'){
+				$seealso = 'uniqueIdentifier='.$entity->field_ldapregistr_epikour_loipa['und']['0']['tid'].',ou=Units,'.$ldapbasedn;
+			}
+			
+			
+			if($entity->field_ldapregistr_iatr_proist['und']['0']['value']=='1'){
+				$proistamenos = 'manager';
+			}
+			
+		}elseif($entity->field_ldapregistr_personel_categ['und']['0']['value']=='administrative'){
+			
+			$seealso = 'uniqueIdentifier='.$entity->field_ldapregistr_dioik_tmimgraf['und']['0']['tid'].',ou=Units,'.$ldapbasedn;
+			
+			if($entity->field_ldapregistr_admin_proist['und']['0']['value']=='1'){
+				$proistamenos = 'manager';
+			}
+			
+			
+		}elseif($entity->field_ldapregistr_personel_categ['und']['0']['value']=='nursery'){
+		}
+		
+		
+		try{
+			
+			
+			$userinfo = array(
+												'cn'=>$entity->field_ldapregistr_name['und']['0']['value'].' '.$entity->field_ldapregistr_surname['und']['0']['value'],
+												'sn' => $entity->field_ldapregistr_surname['und']['0']['value'],
+												'schacPersonalUniqueID'=>$entity->field_ldapregistr_amka['und']['0']['value'],					
+												'employeetype'=>grnet_core_convert($entity->field_ldapregistr_personel_categ['und']['0']['value']),
+												'givenName'=> $entity->field_ldapregistr_name['und']['0']['value'],
+												'mail'=>$entity->field_ldapregistr_email['und']['0']['email'],
+												'mobile'=>$mobile,
+												'telephoneNumber'=>$telephoneNumber,
+												'eduPersonEntitlement'=>grnet_core_conver_dias_roles($entity->field_ldapregistr_dias_roles['und']['0']['tid']),
+												'uid'=>$entity->field_ldapregistr_username['und']['0']['value'],
+												
+												'eduPersonEntitlement'=>$eduPersonEntitlement,
+												'dicomReferringPhysiciansName'=>$dicomReferringPhysiciansName,
+												'description'=> $description,
+												'distinguishedName'=>$distinguishedName,
+												'seealso'=>$seealso
+										);
+			
+			if($proistamenos<>''){
+				$userinfo = array_merge($userinfo ,  array(	'title'=>$proistamenos));
+			}
+			
+			if(_ldap_user_exists(array("uid" => $entity->field_ldapregistr_username['und']['0']['value']))){
+				$output =  _ldap_user_update($userinfo);
+				if($output==1){
+					watchdog('grnet ldap interconnection', 'Ldap user record updated succesfully<br>
+																								  <b>Name/Surname :</b> '.$entity->field_ldapregistr_name['und']['0']['value'].' '.$entity->field_ldapregistr_surname['und']['0']['value'], NULL , WATCHDOG_INFO);
+					drupal_set_message(t('Ldap user record updated succesfully!!'));
+				}
+			}else{
+			}
+		}catch (exception $e){
+			var_dump($e);
+		}
+}
+function _ldap_user_delete_wrapper($entity_type){
+	
+	
+	if(grnet_core_user_has_role('administrator')){
+	
+		try{
+			if(_ldap_user_exists(array("uid" => $entity_type->field_ldapregistr_username['und']['0']['value']))){
+				$output =  _ldap_user_delete($entity_type->field_ldapregistr_username['und']['0']['value']);
+				if($output==1){
+					watchdog('grnet ldap interconnection', 'Ldap user record deleted succesfully<br>
+																								  <b>username :</b> '.$entity_type->field_ldapregistr_username['und']['0']['value'], NULL , WATCHDOG_INFO);
+ 					drupal_set_message(t("Ldap User record deleted succesfully!!"));
+				}
+			}else{
+			}
+		}catch (exception $e){
+			var_dump($e);
+		}
+	}else{
+	}
+	
+}
+  /**
+  * Method to rollback changes from a "request for change" an ldapuser ask for
+  * and a manager declined
+  * Technically..drupal database will be updated from the values that are stored in ldap 
+  * (in a accepted or accepted with minor changes...sittuation...we have the oposite... The ldap is getting update from the values that are stored in drupal database)
+  *
+  * @access private
+  * @param object $entity
+  * @param string $type
+  * @return void
+  */
+  function _ldap_user_rollback_wrapper($entity, $type){
+  	
+  	$entity->field_ldapregistr_status['und']['0']['value']='declined';
+  	
+  	
+  	$entity->field_ldapregistr_iatr_top_mon['und'] = array();
+  	$entity->field_ldapregistr_dicom['und'] = array();
+  	$entity->field_ldapregistr_personel_type['und'] = array();
+  		
+  	$entity->field_ldapregistr_admin_proist['und']['0']['value']='0';
+  	$entity->field_ldapregistr_iatr_proist['und']['0']['value']='0';
+  	
+  	
+  	$entity->field_ldapregistr_speciality['und'] = array();
+  	$entity->field_ldapregistr_tmim_mon_tomea = array();
+  	$entity->field_ldapregistr_tmim_diato['und'] = array();
+  	$entity->field_ldapregistr_epikour_loipa['und'] = array();
+  	$entity->field_ldapregistr_dioik_tmimgraf = array();
+  	$entity->field_ldapregistr_dias_roles['und'] = array();
+  	
+  	
+		$username = grnet_core_get_ldapinfo_user();
+		$ldapinfo_user = grnet_ldap_interconnection_unit_read_wrapper($username);
+		
+		
+		      $entity->field_ldapregistr_name['und']['0']['value'] = $ldapinfo_user["givenname"][0];
+		   $entity->field_ldapregistr_surname['und']['0']['value'] = $ldapinfo_user["sn"][0];
+		      $entity->field_ldapregistr_amka['und']['0']['value'] = $ldapinfo_user["schacpersonaluniqueid"][0];
+		     $entity->field_ldapregistr_email['und']['0']['email'] = $ldapinfo_user["mail"][0];
+		     $entity->field_ldapregistr_phone['und']['0']['value'] = $ldapinfo_user["telephonenumber"][0];	
+ 	      $entity->field_ldapregistr_mobile['und']['0']['value'] = $ldapinfo_user["mobile"][0];
+$entity->field_ldapregistr_personel_categ['und']['0']['value'] = grnet_core_convert($ldapinfo_user["employeetype"][0],TRUE);
+      if($ldapinfo_user["edupersonentitlement"][0] <> ''){
+      	$entity->field_ldapregistr_dias_roles['und']['0']['tid'] = grnet_core_conver_dias_roles_revert_to_tid($ldapinfo_user["edupersonentitlement"][0]); 
+      }
+      	
+      	
+        if(grnet_core_convert($ldapinfo_user["employeetype"][0],TRUE)=='medical'){
+        	      		
+      	if($ldapinfo_user["seealso"][0]<>''){
+      		$entity->field_ldapregistr_iatr_top_mon['und']['0']['value'] = taxonomy_vocabulary_load(grnet_core_get_term_by_rdn($ldapinfo_user["seealso"][0])->vid)->machine_name;
+      	}
+      	
+      	if($ldapinfo_user["distinguishedname"][0]<>''){
+      		$entity->field_ldapregistr_speciality['und']['0']['tid'] = grnet_core_get_term_by_rdn($ldapinfo_user["distinguishedname"][0])->tid;
+      	}
+      		
+      	if($ldapinfo_user["dicomreferringphysiciansname"][0]<>''){
+      		$entity->field_ldapregistr_dicom['und']['0']['value'] = $ldapinfo_user["dicomreferringphysiciansname"][0];
+      	}
+      	
+      	
+      	if($ldapinfo_user["title"][0]=='manager'){
+      		$entity->field_ldapregistr_iatr_proist['und']['0']['value']='1';
+      	}else{
+      		$entity->field_ldapregistr_iatr_proist['und']['0']['value']='0';
+      	}
+      	
+      	
+      	$entity->field_ldapregistr_personel_type['und']['0']['value'] = grnet_core_convert($ldapinfo_user["description"][0],TRUE);
+  
+      	
+      	switch (grnet_core_get_term_by_rdn($ldapinfo_user["seealso"][0])->vid){
+      		 
+      		case 2:
+      			$entity->field_ldapregistr_tmim_mon_tomea['und']['0']['tid'] = grnet_core_get_term_by_rdn($ldapinfo_user["seealso"][0])->tid;
+      			break;
+      	
+      		case 4:
+      			$entity->field_ldapregistr_tmim_diato['und']['0']['tid'] = grnet_core_get_term_by_rdn($ldapinfo_user["seealso"][0])->tid;
+      			break;
+      	
+      		case 5:
+      			$entity->field_ldapregistr_epikour_loipa['und']['0']['tid'] = grnet_core_get_term_by_rdn($ldapinfo_user["seealso"][0])->tid;
+      			break;
+      	}
+      	      	
+      	
+      }elseif(grnet_core_convert($ldapinfo_user["employeetype"][0],TRUE)=='administrative'){
+      	if($ldapinfo_user["title"][0]=='manager'){
+      		$entity->field_ldapregistr_admin_proist['und']['0']['value']='1';
+      	}else{
+      		$entity->field_ldapregistr_admin_proist['und']['0']['value']='0';
+      	}
+      	
+      	$entity->field_ldapregistr_dioik_tmimgraf['und']['0']['tid'] = grnet_core_get_term_by_rdn($ldapinfo_user["seealso"][0])->tid;
+	
+      }
+      
+      
+ 		 return $entity;
+  
+}
+function grnet_ldap_interconnection_ldap_user_exists_wrapper($attributes){
+	return _ldap_user_exists($attributes);
+}
+	function _ldap_user_create($user,$password) {
+		
+		$ldaphost = variable_get('grnet_ldaphost');
+		$ldapport = variable_get('grnet_ldapport');
+		$ldapbinddn = variable_get('grnet_ldapbinddn');
+		$ldappass = variable_get('grnet_ldappass');
+		$ldapbasedn = variable_get('grnet_ldapbasedn_people').','.variable_get('grnet_ldapbasedn');
+			
+	
+		$res=false;
+	
+		try{
+			$conn = ldap_connect($ldaphost,$ldapport) or die("Could not connect to server");
+			ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);
+			ldap_set_option($conn, LDAP_OPT_REFERRALS, 0);
+			$r = ldap_bind($conn,$ldapbinddn,$ldappass) or die("Could not bind to server");
+	
+			$rdn = "uid=".$user['uid'].",$ldapbasedn";
+			
+			
+			
+			
+			
+			
+			module_load_include('module', 'password_field', 'password_field');
+			
+			
+			$user['userpassword']="{SHA}" . base64_encode( pack( "H*", sha1( password_field_decrypt($password) ) ) );
+	
+			$res=ldap_add($conn, $rdn, $user);
+			ldap_close($conn);
+			return $res;
+	
+		} catch(exception $e) {
+			var_dump($e);
+		}
+	
+	
+	}
+	
+	function _ldap_user_read($username ,  $attributes_array=null){
+	
+	
+		$ldaphost = variable_get('grnet_ldaphost');
+		$ldapport = variable_get('grnet_ldapport');
+		$ldapbinddn = variable_get('grnet_ldapbinddn');
+		$ldappass = variable_get('grnet_ldappass');
+		$ldapbasedn = variable_get('grnet_ldapbasedn_people').','.variable_get('grnet_ldapbasedn');
+			
+	
+		$filter = "(uid=$username)";
+	
+		try{
+			ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);
+			ldap_set_option($conn, LDAP_OPT_REFERRALS, 0);
+			if(count($attributes_array) > 0){
+			}else{
+			}
+			
+			
+			$info = ldap_get_entries($conn, $SearchResult);
+			
+			if($info['count']>0) {
+				return $info[0];
+			}else{
+				return NULL;
+			}
+	
+		}catch(Exception $e)
+		{
+			$log->error($e->getMessage());
+			return false;
+		}
+	
+	
+	}
+	
+		
+	
+	function _ldap_user_update($userinfo) {
+		
+		
+		$ldaphost = variable_get('grnet_ldaphost');
+		$ldapport = variable_get('grnet_ldapport');
+		$ldapbinddn = variable_get('grnet_ldapbinddn');
+		$ldappass = variable_get('grnet_ldappass');
+		$ldapbasedn = variable_get('grnet_ldapbasedn_people').','.variable_get('grnet_ldapbasedn');
+			
+		
+		
+		try{
+			ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);
+			ldap_set_option($conn, LDAP_OPT_REFERRALS, 0);
+				
+			$rdn = "uid=".$userinfo['uid'].",$ldapbasedn";
+			
+			ldap_close($conn);
+			return $ldap_modify_message;
+	
+		} catch(exception $e) {
+			var_dump($e);
+		}
+	
+	
+	}
+	
+	
+	
+	function _ldap_user_delete($username) {
+		$ldaphost = variable_get('grnet_ldaphost');
+		$ldapport = variable_get('grnet_ldapport');
+		$ldapbinddn = variable_get('grnet_ldapbinddn');
+		$ldappass = variable_get('grnet_ldappass');
+		$ldapbasedn = variable_get('grnet_ldapbasedn_people').','.variable_get('grnet_ldapbasedn');
+			
+	
+		$res=false;
+	
+		try{
+			$conn = ldap_connect($ldaphost,$ldapport) or die("Could not connect to server");
+			ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);
+			ldap_set_option($conn, LDAP_OPT_REFERRALS, 0);
+			$r = ldap_bind($conn,$ldapbinddn,$ldappass) or die("Could not bind to server");
+	
+			$rdn = "uid=".$username.",$ldapbasedn";
+			$res=ldap_delete($conn,$rdn);
+			ldap_close($conn);
+			return $res;
+	
+		} catch(exception $e) {
+			var_dump($e);
+		}
+	
+	
+	}
+	function _ldap_user_exists($attributes){
+	
+	
+		$ldaphost = variable_get('grnet_ldaphost');
+		$ldapport = variable_get('grnet_ldapport');
+		$ldapbinddn = variable_get('grnet_ldapbinddn');
+		$ldappass = variable_get('grnet_ldappass');
+		$ldapbasedn = variable_get('grnet_ldapbasedn_people').','.variable_get('grnet_ldapbasedn');
+			
+		
+		$filter = grnet_ldap_interconnection_construct_filter($attributes);
+		
+		
+		$returnAttributes = array("uid");
+	
+		try{
+			ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);
+			ldap_set_option($conn, LDAP_OPT_REFERRALS, 0);
+			$info = ldap_get_entries($conn, $SearchResult);
+	
+			if($info['count']>0) {
+				return true;
+			}else{
+				return false;
+			}
+	
+		}catch(Exception $e)
+		{
+			$log->error($e->getMessage());
+			return false;
+		}
+	
+	
+	}
+		
+	
+	
+	
+	
+	
+	
+	function grnet_ldap_interconnection_unit_create_wrapper($entity){
+		 return _ldap_unit_create_wrapper($entity);
+	}
+	
+	function _ldap_unit_create_wrapper($entity, $type=NULL){
+			
+		$ldapbasedn = variable_get('grnet_ldapbasedn_people').','.variable_get('grnet_ldapbasedn');
+		
+		
+		
+		
+		
+		try{
+			$unit = array('objectClass' => array(	'top',
+																						'extensibleObject',
+																						'organization',
+																						'organizationalUnit',
+																						'pilotOrganization'),
+	
+				                      'o' => $entity->name,
+					                   'ou' => $entity->field_backend_name['und']['0']['value'],
+					     'businessCategory' => taxonomy_vocabulary_load($entity->vid)->description,
+					     'uniqueIdentifier' => $entity->tid
+			);
+			
+			if(reset($entity->parent)>0) {
+				$unit['seeAlso'] = "uniqueIdentifier=".reset($entity->parent).",ou=Units,".$ldapbasedn;
+			}
+			
+			if( !_ldap_unit_exists($entity->tid)){
+				$output =  _ldap_unit_create($unit);
+				if($output==1){
+					drupal_set_message(t("Ldap unit record created succesfully!!"));
+					return $output;
+				}				
+			}else{
+				drupal_set_message(t("PROBLEM!! Ldap Unit record couldn't be inserted!!"), 'error');
+			}
+	
+	
+	
+	
+		}catch (exception $e){
+			var_dump($e);
+		}
+	
+	
+	}
+	
+	
+	
+	function _ldap_unit_update_wrapper($entity, $type){
+		
+		
+		$unit_values = array();
+		$unit_values['tid']           = $entity->tid;
+		$unit_values['name']          = $entity->name;
+		$unit_values['backend_name']  = $entity->field_backend_name['und']['0']['value'];
+		$unit_values['parent']        = reset($entity->parent);
+		
+		
+		try{
+		  $_SESSION['flafla'] = $type;
+		  
+			if(_ldap_unit_exists($entity->tid)){
+				$output =  _ldap_unit_update($entity);
+				if($output==1){
+					drupal_set_message(t("Ldap unit record updated succesfully!!"));
+				}
+			}else{
+				drupal_set_message(t("PROBLEM!! Ldap Unit record couldn't be updated as it couldn't be found!!"), 'error');
+				drupal_set_message('output = '.$output);
+			}
+		
+		
+		}catch (exception $e){
+			var_dump($e);
+		}		
+		
+		
+	}
+	
+	
+	function _ldap_unit_delete_wrapper($entity_type){
+	
+		try{
+				
+			if(_ldap_unit_exists($entity_type->tid)){
+				$output =  _ldap_unit_delete($entity_type->tid);
+				if($output==1){
+					drupal_set_message(t("Ldap Unit record deleted succesfully!!"));
+				}				
+			}else{
+				drupal_set_message(t("PROBLEM!! Ldap Unit record couldn't be deleted as it couldn't be found!!"), 'error');
+				drupal_set_message('output = '.$output);
+			}
+	
+	
+	
+	
+		}catch (exception $e){
+			var_dump($e);
+		}
+	
+	
+	}
+	
+	
+	
+	function _ldap_unit_create($unit) {
+		
+		
+		$ldaphost = variable_get('grnet_ldaphost');
+		$ldapport = variable_get('grnet_ldapport');
+		$ldapbinddn = variable_get('grnet_ldapbinddn');
+		$ldappass = variable_get('grnet_ldappass');
+		$ldapbasedn = variable_get('grnet_ldapbasedn_units').','.variable_get('grnet_ldapbasedn');
+		$res=false;
+		
+	
+		try{
+			$conn = ldap_connect($ldaphost,$ldapport) or die("Could not connect to server");
+			ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);
+			ldap_set_option($conn, LDAP_OPT_REFERRALS, 0);
+			$r = ldap_bind($conn,$ldapbinddn,$ldappass) or die("Could not bind to server");
+	
+			$rdn = "uniqueIdentifier=".$unit['uniqueIdentifier'].",$ldapbasedn";
+	
+			$res=ldap_add($conn, $rdn, $unit);
+			ldap_close($conn);
+			return $res;
+	
+		} catch(exception $e) {
+			var_dump($e);
+		}
+	
+	
+	}
+	
+	function _ldap_unit_exists($tid){
+		
+		
+		$ldaphost = variable_get('grnet_ldaphost');
+		$ldapport = variable_get('grnet_ldapport');
+		$ldapbinddn = variable_get('grnet_ldapbinddn');
+		$ldappass = variable_get('grnet_ldappass');
+		$ldapbasedn = variable_get('grnet_ldapbasedn_units').','.variable_get('grnet_ldapbasedn');
+	
+	
+	
+		$filter = "(uniqueIdentifier=$tid)";
+		$attributes = array("uniqueIdentifier");
+	
+		try{
+			ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);
+			ldap_set_option($conn, LDAP_OPT_REFERRALS, 0);
+			$info = ldap_get_entries($conn, $SearchResult);
+	
+			if($info['count']>0) {
+				return true;
+			}else{
+				return false;
+			}
+	
+		}catch(Exception $e)
+		{
+			$log->error($e->getMessage());
+			return false;
+		}
+	
+	
+	}
+	
+	function _ldap_unit_update($unit) {
+
+		$ldaphost = variable_get('grnet_ldaphost');
+		$ldapport = variable_get('grnet_ldapport');
+		$ldapbinddn = variable_get('grnet_ldapbinddn');
+		$ldappass = variable_get('grnet_ldappass');
+		$ldapbasedn = variable_get('grnet_ldapbasedn_units').','.variable_get('grnet_ldapbasedn');
+	
+		
+		$info = array(                "o" => $unit->name,
+				                         "ou" => $unit->field_backend_name['und']['0']['value'],
+				           "businessCategory" => taxonomy_vocabulary_load($unit->vid)->description
+		             );
+		
+		$_SESSION['kko'] = reset($unit->parent);
+		if(reset($unit->parent)<>'0'){
+			$info['seeAlso'] = 'uniqueIdentifier='.reset($unit->parent).",$ldapbasedn";
+		}
+	
+		try{
+			ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);
+			ldap_set_option($conn, LDAP_OPT_REFERRALS, 0);
+			
+			$rdn = "uniqueIdentifier=".$unit->tid.",$ldapbasedn";
+			$_SESSION['unit_values'] = $info;
+			
+			ldap_close($conn);
+			return $ldap_modify_message;
+	
+		} catch(exception $e) {
+			var_dump($e);
+		}
+	
+	
+	}
+	
+	function _ldap_unit_delete($tid) {
+		
+		$ldaphost = variable_get('grnet_ldaphost');
+		$ldapport = variable_get('grnet_ldapport');
+		$ldapbinddn = variable_get('grnet_ldapbinddn');
+		$ldappass = variable_get('grnet_ldappass');
+		$ldapbasedn = variable_get('grnet_ldapbasedn_units').','.variable_get('grnet_ldapbasedn');
+			
+	
+		$res=false;
+	
+		try{
+			$conn = ldap_connect($ldaphost,$ldapport) or die("Could not connect to server");
+			ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);
+			ldap_set_option($conn, LDAP_OPT_REFERRALS, 0);
+			$r = ldap_bind($conn,$ldapbinddn,$ldappass) or die("Could not bind to server");
+	
+			$rdn = "uniqueIdentifier=".$tid.",$ldapbasedn";
+	
+			$res=ldap_delete($conn, $rdn);
+			ldap_close($conn);
+			return $res;
+	
+		} catch(exception $e) {
+			var_dump($e);
+		}
+	
+	
+	}	
+	
+
+	function grnet_ldap_interconnection_construct_filter($attributes){
+		$counter=0;
+		$filterTemp ='';
+		$filter='';
+		foreach($attributes as $key => $value){
+				
+			$filterTemp .= "($key=$value)";
+			$counter++;
+		}
+				
+			if($counter>1){
+			$filter = "(&";
+			}
+				
+			$filter .=$filterTemp;
+				
+			if($counter>1){
+			$filter .= ")";
+			}
+				
+			return $filter;
+	}
+	
+?>
diff --git a/grnet_ldap_interconnection/grnet_ldap_interconnection.module~ b/grnet_ldap_interconnection/grnet_ldap_interconnection.module~
new file mode 100644
index 0000000..aae94ee
--- /dev/null
+++ b/grnet_ldap_interconnection/grnet_ldap_interconnection.module~
@@ -0,0 +1,1050 @@
+<?php
+function grnet_ldap_interconnection_menu() {
+	
+	$items = array();
+	
+	$items['admin/config/grnet/ldap'] = array(
+			'title' => 'grnet Ldap settings',
+			'description' => 'Configure grnet Ldap Settings',
+			'page callback' => 'drupal_get_form',
+			'page arguments' => array('grnet_ldap_interconnection_admin_settings'),
+			'access arguments' => array('administer cas'),
+			'type' => MENU_NORMAL_ITEM,
+			'file' => 'grnet_ldap_interconnection.admin.inc',
+	);
+	
+	$items['admin/config/grnet/ldap/settings'] = array(
+			'title' => 'grnet Ldap',
+			'type' => MENU_DEFAULT_LOCAL_TASK,
+			'weight' => -10,
+	);
+	
+	$items['request/alterinfo/delete/%'] = array(
+			'title' => 'Request Request for Change Delete',
+			'page callback' => '_request_alter_info_delete',
+			'page arguments' => array(3),
+			/*'access callback' => 'user_access',*/
+			'access arguments' => array('access content'),
+			'type' => MENU_CALLBACK,
+	);
+	return $items;
+}
+function _request_alter_info_delete($secretkey){
+	if($secretkey<>''){
+		$entity_id = grnet_core_get_entity_id_by_secretkey($secretkey);
+	}
+	
+	
+	if($entity_id>0){
+		$entity_instance = entity_load('entityform', array($entity_id));
+		$entity_instance = $entity_instance[$entity_id];
+		$entity_instance = _ldap_user_rollback_wrapper($entity_instance,'');
+		
+		watchdog('grnet ldap interconnection', 'Ldap user record rolled back succesfully<br>
+																								  <b>Name/Surname :</b> '.$entity_instance->field_ldapregistr_name['und']['0']['value'].' '.$entity_instance->field_ldapregistr_surname['und']['0']['value'], NULL , WATCHDOG_INFO);
+		$entity_instance->save();
+	}
+	
+	drupal_goto("/request/alterinfo");
+	
+}
+function grnet_ldap_interconnection_entity_presave($entity, $type) {
+	
+	
+	if(grnet_core_user_has_role('ldapuser') && $entity->type=='ldapregistration'){
+		
+		if($_SESSION['grnet']['ldapregistration'][$entity->entityform_id]->field_ldapregistr_status['und']['0']['value']=='completed' ||
+			 $_SESSION['grnet']['ldapregistration'][$entity->entityform_id]->field_ldapregistr_status['und']['0']['value']=='declined' ||
+			 $_SESSION['grnet']['ldapregistration'][$entity->entityform_id]->field_ldapregistr_status['und']['0']['value']=='accepted' ||
+			 $_SESSION['grnet']['ldapregistration'][$entity->entityform_id]->field_ldapregistr_status['und']['0']['value']=='accepted_minor_fixes'
+		){
+			
+			$entity_loaded = $_SESSION['grnet']['ldapregistration'][$entity->entityform_id];
+			$entity_presave = $entity;
+			
+			
+			
+			if(grnet_core_entity_has_changed($entity_loaded, $entity_presave)){
+				$entity->field_ldapregistr_status['und']['0']['value']='request_for_change';
+			}else{
+			}
+			
+			/*
+			drupal_set_message('elegxos entities diff');
+				
+			$_SESSION['prin'] = $_SESSION['grnet']['ldapregistration'][$entity->entityform_id];
+			$_SESSION['meta'] = $entity;
+			
+			drupal_set_message('
+			drupal_set_message('@@'.$entity->field_ldapregistr_name['und'][0]['value'].'@@');
+				*/		
+	
+			
+			
+		}
+		
+		
+	}
+	
+	
+	
+	
+	
+	if( (grnet_core_user_has_role('manager') || grnet_core_user_has_role('administrator')) &&
+			$entity->type=='ldapregistration'
+	){
+		
+		if($_SESSION['grnet']['ldapregistration'][$entity->entityform_id]->field_ldapregistr_status['und']['0']['value']=='request_for_change' &&
+			 $entity->field_ldapregistr_status['und']['0']['value']=='declined'
+			){
+						
+					unset($_SESSION['grnet']['ldapregistration'][$entity->entityform_id]);
+					if($entity->field_ldapregistr_hidden_message['und']['0']['value']<>''){
+						$manager_comments = '| Σχόλια Διαχειριστή : '.$entity->field_ldapregistr_hidden_message['und']['0']['value'];
+					}
+					$entity->field_ldapregistr_hidden_message['und']['0']['value'] = 'Η αίτηση σας απορρίφθηκε.'.$manager_comments;
+					
+					_ldap_user_rollback_wrapper($entity,$type);
+		}
+		
+		
+		if($_SESSION['grnet']['ldapregistration'][$entity->entityform_id]->field_ldapregistr_status['und']['0']['value']=='request_for_change' &&
+				$entity->field_ldapregistr_status['und']['0']['value']=='accepted'
+		){
+			if($entity->field_ldapregistr_hidden_message['und']['0']['value']<>''){
+				$manager_comments = '| Σχόλια Διαχειριστή : '.$entity->field_ldapregistr_hidden_message['und']['0']['value'];
+			}
+			$entity->field_ldapregistr_hidden_message['und']['0']['value'] = 'Η αίτηση σας ενεκρίθη.'.$manager_comments;
+				
+		}
+		if($_SESSION['grnet']['ldapregistration'][$entity->entityform_id]->field_ldapregistr_status['und']['0']['value']=='request_for_change' &&
+				$entity->field_ldapregistr_status['und']['0']['value']=='accepted_minor_fixes'
+		){
+			if($entity->field_ldapregistr_hidden_message['und']['0']['value']<>''){
+				$manager_comments = '| Σχόλια Διαχειριστή : '.$entity->field_ldapregistr_hidden_message['und']['0']['value'];
+			}
+			$entity->field_ldapregistr_hidden_message['und']['0']['value'] = 'Η αίτηση σας ενεκρίθη με μικρές αλλαγές.'.$manager_comments;
+			
+		}
+		
+		
+		
+		
+		
+	}
+	
+	
+	
+	
+}
+function grnet_ldap_interconnection_entity_insert($entity, $type) {
+	
+	if(grnet_core_user_has_role('administrator') && 
+		 $type=='taxonomy_term' && 
+		 ($entity->vocabulary_machine_name='iatr_tmimata_monades_ana_tomea' ||
+		  $entity->vocabulary_machine_name='iatr_tmimata_diatomeakou_epipedou' ||
+		  $entity->vocabulary_machine_name='iatr_epikourika_loipa' ||
+		  $entity->vocabulary_machine_name='dioik_tmimata_grafeia' ||
+		  $entity->vocabulary_machine_name='specialities'
+		 )
+	){
+		_ldap_unit_create_wrapper($entity,$type);
+	}
+		
+}
+function grnet_ldap_interconnection_entity_update($entity, $type) {
+	
+	if( (grnet_core_user_has_role('manager') || grnet_core_user_has_role('administrator')) &&	
+			 $entity->type=='ldapregistration' &&
+			 ( ($_SESSION['grnet']['ldapregistration'][$entity->entityform_id]->field_ldapregistr_status['und']['0']['value']=='prepending' ||
+			    $_SESSION['grnet']['ldapregistration'][$entity->entityform_id]->field_ldapregistr_status['und']['0']['value']=='pending'
+			   ) &&
+			 	 $entity->field_ldapregistr_status['und']['0']['value']=='completed'
+			 )
+	){
+		unset($_SESSION['grnet']['ldapregistration'][$entity->entityform_id]);
+		_ldap_user_create_wrapper($entity,$type);
+	}
+	
+	if( (grnet_core_user_has_role('manager') || grnet_core_user_has_role('administrator')) &&	
+			 $entity->type=='ldapregistration' &&
+			 ($_SESSION['grnet']['ldapregistration'][$entity->entityform_id]->field_ldapregistr_status['und']['0']['value']=='request_for_change' &&
+		 	  ($entity->field_ldapregistr_status['und']['0']['value']=='accepted' || 
+		 	   $entity->field_ldapregistr_status['und']['0']['value']=='accepted_minor_fixes'
+		 	  )		
+			 )
+	){
+		unset($_SESSION['grnet']['ldapregistration'][$entity->entityform_id]);
+		_ldap_user_update_wrapper($entity,$type);
+	}
+	
+	
+	if( (grnet_core_user_has_role('manager') || grnet_core_user_has_role('administrator')) &&
+			$type=='taxonomy_term' &&
+			($entity->vocabulary_machine_name='iatr_tmimata_monades_ana_tomea' ||
+		  $entity->vocabulary_machine_name='iatr_tmimata_diatomeakou_epipedou' ||
+		  $entity->vocabulary_machine_name='iatr_epikourika_loipa' ||
+		  $entity->vocabulary_machine_name='dioik_tmimata_grafeia' ||
+		  $entity->vocabulary_machine_name='specialities')
+	){
+		_ldap_unit_update_wrapper($entity,$type);
+	}	
+	
+}
+function grnet_ldap_interconnection_entity_delete($entity_type, $id) {
+	
+	if(grnet_core_user_has_role('administrator') && $id=='entityform' && 
+		 $entity_type->type='ldapregistration' &&  $entity_type->field_ldapregistr_username['und'][0]['value']<>''){
+		_ldap_user_delete_wrapper($entity_type);
+	}
+	
+	if(grnet_core_user_has_role('administrator') &&
+		 $id=='taxonomy_term'
+	){
+		_ldap_unit_delete_wrapper($entity_type);
+	}	
+}
+function _ldap_user_create_wrapper($entity, $type){
+	
+	
+	$ldapbasedn = variable_get('grnet_ldapbasedn');
+          	$distinguishedName = '';
+ $dicomReferringPhysiciansName = '';
+	                $description = '';
+          	          $seealso = '';
+	               $proistamenos = '';
+         $eduPersonEntitlement = '';
+	
+	
+	if($entity->field_ldapregistr_personel_categ['und']['0']['value']=='medical'){
+	
+		if($entity->field_ldapregistr_speciality['und']['0']['tid']>0){
+			$distinguishedName = 'uniqueIdentifier='.$entity->field_ldapregistr_speciality['und']['0']['tid'].',ou=Units,'.$ldapbasedn;
+		}
+			
+		if($entity->field_ldapregistr_dicom['und']['0']['value']<>''){
+			$dicomReferringPhysiciansName = $entity->field_ldapregistr_dicom['und']['0']['value'];
+		}
+	
+		
+		
+		$description = grnet_core_convert($entity->field_ldapregistr_personel_type['und']['0']['value']);
+		
+		
+		
+		if($entity->field_ldapregistr_iatr_top_mon['und']['0']['value']=='iatr_tmimata_monades_ana_tomea'){
+			$seealso = 'uniqueIdentifier='.$entity->field_ldapregistr_tmim_mon_tomea['und']['0']['tid'].',ou=Units,'.$ldapbasedn;
+	
+		}elseif($entity->field_ldapregistr_iatr_top_mon['und']['0']['value']=='iatr_tmimata_diatomeakou_epipedou'){
+			$seealso = 'uniqueIdentifier='.$entity->field_ldapregistr_tmim_diato['und']['0']['tid'].',ou=Units,'.$ldapbasedn;
+	
+		}elseif($entity->field_ldapregistr_iatr_top_mon['und']['0']['value']=='iatr_epikourika_loipa'){
+			$seealso = 'uniqueIdentifier='.$entity->field_ldapregistr_epikour_loipa['und']['0']['tid'].',ou=Units,'.$ldapbasedn;
+	
+		}
+			
+		
+		if($entity->field_ldapregistr_iatr_proist['und']['0']['value']=='1'){
+			$proistamenos = 'manager';
+		}
+			
+	
+	}elseif($entity->field_ldapregistr_personel_categ['und']['0']['value']=='administrative'){
+			
+		$seealso = 'uniqueIdentifier='.$entity->field_ldapregistr_dioik_tmimgraf['und']['0']['tid'].',ou=Units,'.$ldapbasedn;
+			
+		
+		if($entity->field_ldapregistr_admin_proist['und']['0']['value']=='1'){
+			$proistamenos = 'manager';
+		}
+			
+			
+	}elseif($entity->field_ldapregistr_personel_categ['und']['0']['value']=='nursery'){
+	}
+	
+	
+		try{
+	
+			$userinfo = array('objectClass' => array(	'top',
+																								'extensibleObject',
+																								'extendedAuthentication',
+																								'grHealthPerson',
+																								'inetOrgPerson'),
+					              
+												'cn'=>$entity->field_ldapregistr_name['und']['0']['value'].' '.$entity->field_ldapregistr_surname['und']['0']['value'],
+												'sn' => $entity->field_ldapregistr_surname['und']['0']['value'],
+												'schacPersonalUniqueID'=>$entity->field_ldapregistr_amka['und']['0']['value'],
+												'employeetype'=>grnet_core_convert($entity->field_ldapregistr_personel_categ['und']['0']['value']),
+												'givenName'=> $entity->field_ldapregistr_name['und']['0']['value'],
+												'mail'=>$entity->field_ldapregistr_email['und']['0']['email'],
+												'uid'=>$entity->field_ldapregistr_username['und']['0']['value']
+			                 );
+	
+			
+			
+			if($entity->field_ldapregistr_mobile['und']['0']['value']<>''){
+				$userinfo['mobile'] = $entity->field_ldapregistr_mobile['und']['0']['value'];
+			}
+			
+			if($entity->field_ldapregistr_phone['und']['0']['value']<>''){
+				$userinfo['telephoneNumber'] = $entity->field_ldapregistr_phone['und']['0']['value'];
+			}
+			
+			if($entity->field_ldapregistr_dias_roles['und']['0']['tid']>0){
+				$userinfo['eduPersonEntitlement'] = grnet_core_conver_dias_roles($entity->field_ldapregistr_dias_roles['und']['0']['tid']);
+			}
+									
+			
+	    
+			if($entity->field_ldapregistr_personel_categ['und']['0']['value']=='medical'){
+	
+				if($distinguishedName<>''){
+					$userinfo['distinguishedName'] = $distinguishedName;
+				}
+	
+				if($dicomReferringPhysiciansName<>''){
+					$userinfo['dicomReferringPhysiciansName'] = $dicomReferringPhysiciansName;
+				}
+	
+				if($proistamenos<>''){
+					$userinfo = array_merge($userinfo ,  array(	'title'=>$proistamenos));
+				}
+								
+				$userinfo = array_merge($userinfo ,  array(	'description'=>	$description,
+																								 	 	'seealso'=>$seealso
+				                                          )
+                        			 );
+	
+			}elseif($entity->field_ldapregistr_personel_categ['und']['0']['value']=='administrative'){
+	
+				if($proistamenos<>''){
+					$userinfo = array_merge($userinfo ,  array( 'title'=>$proistamenos));
+				}				
+				
+				$userinfo = array_merge($userinfo ,  array( 'seealso'=>$seealso));
+	
+			}
+				
+				
+			
+			if(!_ldap_user_exists(array("uid" => $entity->field_ldapregistr_username['und']['0']['value']))){
+				$output =  _ldap_user_create($userinfo,$entity->field_ldapregistr_pwd['und']['0']['password_field']['password_field']);
+				if($output==1){
+					watchdog('grnet ldap interconnection', 'Ldap user record created succesfully<br>
+																								  <b>Name/Surname :</b> '.$entity->field_ldapregistr_name['und']['0']['value'].' '.$entity->field_ldapregistr_surname['und']['0']['value'], NULL , WATCHDOG_INFO);
+					drupal_set_message(t('Ldap user record created succesfully!!'));
+ 				}
+			}else{
+			}
+	
+	
+	
+	
+		}catch (exception $e){
+			var_dump($e);
+		}
+	
+	
+	
+	
+	
+}  
+function grnet_ldap_interconnection_unit_read_wrapper($username , $attributes_array){
+	return _ldap_user_read_wrapper($username , $attributes_array);
+}
+function _ldap_user_read_wrapper($username , $attributes_array=null){
+	$ldapbasedn = variable_get('grnet_ldapbasedn');
+		try{
+			return _ldap_user_read($username , $attributes_array);
+		}catch (exception $e){
+			var_dump($e);
+		}
+}
+	
+function _ldap_user_update_wrapper($entity, $type){
+	$ldapbasedn = variable_get('grnet_ldapbasedn');
+	
+	
+		$mobile = array();
+	  $telephoneNumber = array();
+	             $distinguishedName = array();
+		$dicomReferringPhysiciansName = array();
+		                 $description = array();
+		                     $seealso = array();
+		                $proistamenos = array();
+		        $eduPersonEntitlement = array();
+		
+		if($entity->field_ldapregistr_mobile['und']['0']['value']<>''){
+			$mobile = $entity->field_ldapregistr_mobile['und']['0']['value'];
+		}
+		
+		if($entity->field_ldapregistr_phone['und']['0']['value']<>''){
+			$telephoneNumber = $entity->field_ldapregistr_phone['und']['0']['value'];
+		}
+		
+		if($entity->field_ldapregistr_dias_roles['und']['0']['tid']>0){
+			$eduPersonEntitlement = grnet_core_conver_dias_roles($entity->field_ldapregistr_dias_roles['und']['0']['tid']);
+		}		
+			
+		
+		if($entity->field_ldapregistr_personel_categ['und']['0']['value']=='medical'){
+			if($entity->field_ldapregistr_speciality['und']['0']['tid']>0){
+				$distinguishedName = 'uniqueIdentifier='.$entity->field_ldapregistr_speciality['und']['0']['tid'].',ou=Units,'.$ldapbasedn;
+			}
+			
+			if($entity->field_ldapregistr_dicom['und']['0']['value']<>''){
+				$dicomReferringPhysiciansName = $entity->field_ldapregistr_dicom['und']['0']['value'];
+			}			
+			$description = grnet_core_convert($entity->field_ldapregistr_personel_type['und']['0']['value']);
+				
+			if($entity->field_ldapregistr_iatr_top_mon['und']['0']['value']=='iatr_tmimata_monades_ana_tomea'){
+				$seealso = 'uniqueIdentifier='.$entity->field_ldapregistr_tmim_mon_tomea['und']['0']['tid'].',ou=Units,'.$ldapbasedn;
+			}elseif($entity->field_ldapregistr_iatr_top_mon['und']['0']['value']=='iatr_tmimata_diatomeakou_epipedou'){
+				$seealso = 'uniqueIdentifier='.$entity->field_ldapregistr_tmim_diato['und']['0']['tid'].',ou=Units,'.$ldapbasedn;
+			}elseif($entity->field_ldapregistr_iatr_top_mon['und']['0']['value']=='iatr_epikourika_loipa'){
+				$seealso = 'uniqueIdentifier='.$entity->field_ldapregistr_epikour_loipa['und']['0']['tid'].',ou=Units,'.$ldapbasedn;
+			}
+			
+			
+			if($entity->field_ldapregistr_iatr_proist['und']['0']['value']=='1'){
+				$proistamenos = 'manager';
+			}
+			
+		}elseif($entity->field_ldapregistr_personel_categ['und']['0']['value']=='administrative'){
+			
+			$seealso = 'uniqueIdentifier='.$entity->field_ldapregistr_dioik_tmimgraf['und']['0']['tid'].',ou=Units,'.$ldapbasedn;
+			
+			if($entity->field_ldapregistr_admin_proist['und']['0']['value']=='1'){
+				$proistamenos = 'manager';
+			}
+			
+			
+		}elseif($entity->field_ldapregistr_personel_categ['und']['0']['value']=='nursery'){
+		}
+		
+		
+		try{
+			
+			
+			$userinfo = array(
+												'cn'=>$entity->field_ldapregistr_name['und']['0']['value'].' '.$entity->field_ldapregistr_surname['und']['0']['value'],
+												'sn' => $entity->field_ldapregistr_surname['und']['0']['value'],
+												'schacPersonalUniqueID'=>$entity->field_ldapregistr_amka['und']['0']['value'],					
+												'employeetype'=>grnet_core_convert($entity->field_ldapregistr_personel_categ['und']['0']['value']),
+												'givenName'=> $entity->field_ldapregistr_name['und']['0']['value'],
+												'mail'=>$entity->field_ldapregistr_email['und']['0']['email'],
+												'mobile'=>$mobile,
+												'telephoneNumber'=>$telephoneNumber,
+												'eduPersonEntitlement'=>grnet_core_conver_dias_roles($entity->field_ldapregistr_dias_roles['und']['0']['tid']),
+												'uid'=>$entity->field_ldapregistr_username['und']['0']['value'],
+												
+												'eduPersonEntitlement'=>$eduPersonEntitlement,
+												'dicomReferringPhysiciansName'=>$dicomReferringPhysiciansName,
+												'description'=> $description,
+												'distinguishedName'=>$distinguishedName,
+												'seealso'=>$seealso
+										);
+			
+			if($proistamenos<>''){
+				$userinfo = array_merge($userinfo ,  array(	'title'=>$proistamenos));
+			}
+			
+			if(_ldap_user_exists(array("uid" => $entity->field_ldapregistr_username['und']['0']['value']))){
+				$output =  _ldap_user_update($userinfo);
+				if($output==1){
+					watchdog('grnet ldap interconnection', 'Ldap user record updated succesfully<br>
+																								  <b>Name/Surname :</b> '.$entity->field_ldapregistr_name['und']['0']['value'].' '.$entity->field_ldapregistr_surname['und']['0']['value'], NULL , WATCHDOG_INFO);
+					drupal_set_message(t('Ldap user record updated succesfully!!'));
+				}
+			}else{
+			}
+		}catch (exception $e){
+			var_dump($e);
+		}
+}
+function _ldap_user_delete_wrapper($entity_type){
+	
+	
+	if(grnet_core_user_has_role('administrator')){
+	
+		try{
+			if(_ldap_user_exists(array("uid" => $entity_type->field_ldapregistr_username['und']['0']['value']))){
+				$output =  _ldap_user_delete($entity_type->field_ldapregistr_username['und']['0']['value']);
+				if($output==1){
+					watchdog('grnet ldap interconnection', 'Ldap user record deleted succesfully<br>
+																								  <b>username :</b> '.$entity_type->field_ldapregistr_username['und']['0']['value'], NULL , WATCHDOG_INFO);
+ 					drupal_set_message(t("Ldap User record deleted succesfully!!"));
+				}
+			}else{
+			}
+		}catch (exception $e){
+			var_dump($e);
+		}
+	}else{
+	}
+	
+}
+  /**
+  * Method to rollback changes from a "request for change" an ldapuser ask for
+  * and a manager declined
+  * Technically..drupal database will be updated from the values that are stored in ldap 
+  * (in a accepted or accepted with minor changes...sittuation...we have the oposite... The ldap is getting update from the values that are stored in drupal database)
+  *
+  * @access private
+  * @param object $entity
+  * @param string $type
+  * @return void
+  */
+  function _ldap_user_rollback_wrapper($entity, $type){
+  	
+  	$entity->field_ldapregistr_status['und']['0']['value']='declined';
+  	
+  	
+  	$entity->field_ldapregistr_iatr_top_mon['und'] = array();
+  	$entity->field_ldapregistr_dicom['und'] = array();
+  	$entity->field_ldapregistr_personel_type['und'] = array();
+  		
+  	$entity->field_ldapregistr_admin_proist['und']['0']['value']='0';
+  	$entity->field_ldapregistr_iatr_proist['und']['0']['value']='0';
+  	
+  	
+  	$entity->field_ldapregistr_speciality['und'] = array();
+  	$entity->field_ldapregistr_tmim_mon_tomea = array();
+  	$entity->field_ldapregistr_tmim_diato['und'] = array();
+  	$entity->field_ldapregistr_epikour_loipa['und'] = array();
+  	$entity->field_ldapregistr_dioik_tmimgraf = array();
+  	$entity->field_ldapregistr_dias_roles['und'] = array();
+  	
+  	
+		$username = grnet_core_get_ldapinfo_user();
+		$ldapinfo_user = grnet_ldap_interconnection_unit_read_wrapper($username);
+		
+		
+		      $entity->field_ldapregistr_name['und']['0']['value'] = $ldapinfo_user["givenname"][0];
+		   $entity->field_ldapregistr_surname['und']['0']['value'] = $ldapinfo_user["sn"][0];
+		      $entity->field_ldapregistr_amka['und']['0']['value'] = $ldapinfo_user["schacpersonaluniqueid"][0];
+		     $entity->field_ldapregistr_email['und']['0']['email'] = $ldapinfo_user["mail"][0];
+		     $entity->field_ldapregistr_phone['und']['0']['value'] = $ldapinfo_user["telephonenumber"][0];	
+ 	      $entity->field_ldapregistr_mobile['und']['0']['value'] = $ldapinfo_user["mobile"][0];
+$entity->field_ldapregistr_personel_categ['und']['0']['value'] = grnet_core_convert($ldapinfo_user["employeetype"][0],TRUE);
+      if($ldapinfo_user["edupersonentitlement"][0] <> ''){
+      	$entity->field_ldapregistr_dias_roles['und']['0']['tid'] = grnet_core_conver_dias_roles_revert_to_tid($ldapinfo_user["edupersonentitlement"][0]); 
+      }
+      	
+      	
+        if(grnet_core_convert($ldapinfo_user["employeetype"][0],TRUE)=='medical'){
+        	      		
+      	if($ldapinfo_user["seealso"][0]<>''){
+      		$entity->field_ldapregistr_iatr_top_mon['und']['0']['value'] = taxonomy_vocabulary_load(grnet_core_get_term_by_rdn($ldapinfo_user["seealso"][0])->vid)->machine_name;
+      	}
+      	
+      	if($ldapinfo_user["distinguishedname"][0]<>''){
+      		$entity->field_ldapregistr_speciality['und']['0']['tid'] = grnet_core_get_term_by_rdn($ldapinfo_user["distinguishedname"][0])->tid;
+      	}
+      		
+      	if($ldapinfo_user["dicomreferringphysiciansname"][0]<>''){
+      		$entity->field_ldapregistr_dicom['und']['0']['value'] = $ldapinfo_user["dicomreferringphysiciansname"][0];
+      	}
+      	
+      	
+      	if($ldapinfo_user["title"][0]=='manager'){
+      		$entity->field_ldapregistr_iatr_proist['und']['0']['value']='1';
+      	}else{
+      		$entity->field_ldapregistr_iatr_proist['und']['0']['value']='0';
+      	}
+      	
+      	
+      	$entity->field_ldapregistr_personel_type['und']['0']['value'] = grnet_core_convert($ldapinfo_user["description"][0],TRUE);
+  
+      	
+      	switch (grnet_core_get_term_by_rdn($ldapinfo_user["seealso"][0])->vid){
+      		 
+      		case 2:
+      			$entity->field_ldapregistr_tmim_mon_tomea['und']['0']['tid'] = grnet_core_get_term_by_rdn($ldapinfo_user["seealso"][0])->tid;
+      			break;
+      	
+      		case 4:
+      			$entity->field_ldapregistr_tmim_diato['und']['0']['tid'] = grnet_core_get_term_by_rdn($ldapinfo_user["seealso"][0])->tid;
+      			break;
+      	
+      		case 5:
+      			$entity->field_ldapregistr_epikour_loipa['und']['0']['tid'] = grnet_core_get_term_by_rdn($ldapinfo_user["seealso"][0])->tid;
+      			break;
+      	}
+      	      	
+      	
+      }elseif(grnet_core_convert($ldapinfo_user["employeetype"][0],TRUE)=='administrative'){
+      	if($ldapinfo_user["title"][0]=='manager'){
+      		$entity->field_ldapregistr_admin_proist['und']['0']['value']='1';
+      	}else{
+      		$entity->field_ldapregistr_admin_proist['und']['0']['value']='0';
+      	}
+      	
+      	$entity->field_ldapregistr_dioik_tmimgraf['und']['0']['tid'] = grnet_core_get_term_by_rdn($ldapinfo_user["seealso"][0])->tid;
+	
+      }
+      
+      
+ 		 return $entity;
+  
+}
+function grnet_ldap_interconnection_ldap_user_exists_wrapper($attributes){
+	return _ldap_user_exists($attributes);
+}
+	function _ldap_user_create($user,$password) {
+		
+		$ldaphost = variable_get('grnet_ldaphost');
+		$ldapport = variable_get('grnet_ldapport');
+		$ldapbinddn = variable_get('grnet_ldapbinddn');
+		$ldappass = variable_get('grnet_ldappass');
+		$ldapbasedn = variable_get('grnet_ldapbasedn_people').','.variable_get('grnet_ldapbasedn');
+			
+	
+		$res=false;
+	
+		try{
+			$conn = ldap_connect($ldaphost,$ldapport) or die("Could not connect to server");
+			ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);
+			ldap_set_option($conn, LDAP_OPT_REFERRALS, 0);
+			$r = ldap_bind($conn,$ldapbinddn,$ldappass) or die("Could not bind to server");
+	
+			$rdn = "uid=".$user['uid'].",$ldapbasedn";
+			
+			
+			
+			
+			
+			
+			module_load_include('module', 'password_field', 'password_field');
+			
+			
+			$user['userpassword']="{SHA}" . base64_encode( pack( "H*", sha1( password_field_decrypt($password) ) ) );
+	
+			$res=ldap_add($conn, $rdn, $user);
+			ldap_close($conn);
+			return $res;
+	
+		} catch(exception $e) {
+			var_dump($e);
+		}
+	
+	
+	}
+	
+	function _ldap_user_read($username ,  $attributes_array=null){
+	
+	
+		$ldaphost = variable_get('grnet_ldaphost');
+		$ldapport = variable_get('grnet_ldapport');
+		$ldapbinddn = variable_get('grnet_ldapbinddn');
+		$ldappass = variable_get('grnet_ldappass');
+		$ldapbasedn = variable_get('grnet_ldapbasedn_people').','.variable_get('grnet_ldapbasedn');
+			
+	
+		$filter = "(uid=$username)";
+	
+		try{
+			ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);
+			ldap_set_option($conn, LDAP_OPT_REFERRALS, 0);
+			if(count($attributes_array) > 0){
+			}else{
+			}
+			
+			
+			$info = ldap_get_entries($conn, $SearchResult);
+			
+			if($info['count']>0) {
+				return $info[0];
+			}else{
+				return NULL;
+			}
+	
+		}catch(Exception $e)
+		{
+			$log->error($e->getMessage());
+			return false;
+		}
+	
+	
+	}
+	
+		
+	
+	function _ldap_user_update($userinfo) {
+		
+		
+		$ldaphost = variable_get('grnet_ldaphost');
+		$ldapport = variable_get('grnet_ldapport');
+		$ldapbinddn = variable_get('grnet_ldapbinddn');
+		$ldappass = variable_get('grnet_ldappass');
+		$ldapbasedn = variable_get('grnet_ldapbasedn_people').','.variable_get('grnet_ldapbasedn');
+			
+		
+		
+		try{
+			ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);
+			ldap_set_option($conn, LDAP_OPT_REFERRALS, 0);
+				
+			$rdn = "uid=".$userinfo['uid'].",$ldapbasedn";
+			
+			ldap_close($conn);
+			return $ldap_modify_message;
+	
+		} catch(exception $e) {
+			var_dump($e);
+		}
+	
+	
+	}
+	
+	
+	
+	function _ldap_user_delete($username) {
+		$ldaphost = variable_get('grnet_ldaphost');
+		$ldapport = variable_get('grnet_ldapport');
+		$ldapbinddn = variable_get('grnet_ldapbinddn');
+		$ldappass = variable_get('grnet_ldappass');
+		$ldapbasedn = variable_get('grnet_ldapbasedn_people').','.variable_get('grnet_ldapbasedn');
+			
+	
+		$res=false;
+	
+		try{
+			$conn = ldap_connect($ldaphost,$ldapport) or die("Could not connect to server");
+			ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);
+			ldap_set_option($conn, LDAP_OPT_REFERRALS, 0);
+			$r = ldap_bind($conn,$ldapbinddn,$ldappass) or die("Could not bind to server");
+	
+			$rdn = "uid=".$username.",$ldapbasedn";
+			$res=ldap_delete($conn,$rdn);
+			ldap_close($conn);
+			return $res;
+	
+		} catch(exception $e) {
+			var_dump($e);
+		}
+	
+	
+	}
+	function _ldap_user_exists($attributes){
+	
+	
+		$ldaphost = variable_get('grnet_ldaphost');
+		$ldapport = variable_get('grnet_ldapport');
+		$ldapbinddn = variable_get('grnet_ldapbinddn');
+		$ldappass = variable_get('grnet_ldappass');
+		$ldapbasedn = variable_get('grnet_ldapbasedn_people').','.variable_get('grnet_ldapbasedn');
+			
+		
+		$filter = grnet_ldap_interconnection_construct_filter($attributes);
+		
+		
+		$returnAttributes = array("uid");
+	
+		try{
+			ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);
+			ldap_set_option($conn, LDAP_OPT_REFERRALS, 0);
+			$info = ldap_get_entries($conn, $SearchResult);
+	
+			if($info['count']>0) {
+				return true;
+			}else{
+				return false;
+			}
+	
+		}catch(Exception $e)
+		{
+			$log->error($e->getMessage());
+			return false;
+		}
+	
+	
+	}
+		
+	
+	
+	
+	
+	
+	
+	function grnet_ldap_interconnection_unit_create_wrapper($entity){
+		 return _ldap_unit_create_wrapper($entity);
+	}
+	
+	function _ldap_unit_create_wrapper($entity, $type=NULL){
+			
+		$ldapbasedn = variable_get('grnet_ldapbasedn_people').','.variable_get('grnet_ldapbasedn');
+		
+		
+		
+		
+		
+		try{
+			$unit = array('objectClass' => array(	'top',
+																						'extensibleObject',
+																						'organization',
+																						'organizationalUnit',
+																						'pilotOrganization'),
+	
+				                      'o' => $entity->name,
+					                   'ou' => $entity->field_backend_name['und']['0']['value'],
+					     'businessCategory' => taxonomy_vocabulary_load($entity->vid)->description,
+					     'uniqueIdentifier' => $entity->tid
+			);
+			
+			if(reset($entity->parent)>0) {
+				$unit['seeAlso'] = "uniqueIdentifier=".reset($entity->parent).",ou=Units,".$ldapbasedn;
+			}
+			
+			if( !_ldap_unit_exists($entity->tid)){
+				$output =  _ldap_unit_create($unit);
+				if($output==1){
+					drupal_set_message(t("Ldap unit record created succesfully!!"));
+					return $output;
+				}				
+			}else{
+				drupal_set_message(t("PROBLEM!! Ldap Unit record couldn't be inserted!!"), 'error');
+			}
+	
+	
+	
+	
+		}catch (exception $e){
+			var_dump($e);
+		}
+	
+	
+	}
+	
+	
+	
+	function _ldap_unit_update_wrapper($entity, $type){
+		
+		
+		$unit_values = array();
+		$unit_values['tid']           = $entity->tid;
+		$unit_values['name']          = $entity->name;
+		$unit_values['backend_name']  = $entity->field_backend_name['und']['0']['value'];
+		$unit_values['parent']        = reset($entity->parent);
+		
+		
+		try{
+		  $_SESSION['flafla'] = $type;
+		  
+			if(_ldap_unit_exists($entity->tid)){
+				$output =  _ldap_unit_update($entity);
+				if($output==1){
+					drupal_set_message(t("Ldap unit record updated succesfully!!"));
+				}
+			}else{
+				drupal_set_message(t("PROBLEM!! Ldap Unit record couldn't be updated as it couldn't be found!!"), 'error');
+				drupal_set_message('output = '.$output);
+			}
+		
+		
+		}catch (exception $e){
+			var_dump($e);
+		}		
+		
+		
+	}
+	
+	
+	function _ldap_unit_delete_wrapper($entity_type){
+	
+		try{
+				
+			if(_ldap_unit_exists($entity_type->tid)){
+				$output =  _ldap_unit_delete($entity_type->tid);
+				if($output==1){
+					drupal_set_message(t("Ldap Unit record deleted succesfully!!"));
+				}				
+			}else{
+				drupal_set_message(t("PROBLEM!! Ldap Unit record couldn't be deleted as it couldn't be found!!"), 'error');
+				drupal_set_message('output = '.$output);
+			}
+	
+	
+	
+	
+		}catch (exception $e){
+			var_dump($e);
+		}
+	
+	
+	}
+	
+	
+	
+	function _ldap_unit_create($unit) {
+		
+		
+		$ldaphost = variable_get('grnet_ldaphost');
+		$ldapport = variable_get('grnet_ldapport');
+		$ldapbinddn = variable_get('grnet_ldapbinddn');
+		$ldappass = variable_get('grnet_ldappass');
+		$ldapbasedn = variable_get('grnet_ldapbasedn_units').','.variable_get('grnet_ldapbasedn');
+		$res=false;
+		
+	
+		try{
+			$conn = ldap_connect($ldaphost,$ldapport) or die("Could not connect to server");
+			ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);
+			ldap_set_option($conn, LDAP_OPT_REFERRALS, 0);
+			$r = ldap_bind($conn,$ldapbinddn,$ldappass) or die("Could not bind to server");
+	
+			$rdn = "uniqueIdentifier=".$unit['uniqueIdentifier'].",$ldapbasedn";
+	
+			$res=ldap_add($conn, $rdn, $unit);
+			ldap_close($conn);
+			return $res;
+	
+		} catch(exception $e) {
+			var_dump($e);
+		}
+	
+	
+	}
+	
+	function _ldap_unit_exists($tid){
+		
+		
+		$ldaphost = variable_get('grnet_ldaphost');
+		$ldapport = variable_get('grnet_ldapport');
+		$ldapbinddn = variable_get('grnet_ldapbinddn');
+		$ldappass = variable_get('grnet_ldappass');
+		$ldapbasedn = variable_get('grnet_ldapbasedn_units').','.variable_get('grnet_ldapbasedn');
+	
+	
+	
+		$filter = "(uniqueIdentifier=$tid)";
+		$attributes = array("uniqueIdentifier");
+	
+		try{
+			ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);
+			ldap_set_option($conn, LDAP_OPT_REFERRALS, 0);
+			$info = ldap_get_entries($conn, $SearchResult);
+	
+			if($info['count']>0) {
+				return true;
+			}else{
+				return false;
+			}
+	
+		}catch(Exception $e)
+		{
+			$log->error($e->getMessage());
+			return false;
+		}
+	
+	
+	}
+	
+	function _ldap_unit_update($unit) {
+		
+		/*
+		$unit_values = array();
+		$unit_values['tid']           = $entity->tid;
+		$unit_values['name']          = $entity->name;
+		$unit_values['backend_name']  = $entity->field_backend_name['und']['0']['value'];
+		$unit_values['parent']        = reset($entity->parent);
+		*/
+		
+		$ldaphost = variable_get('grnet_ldaphost');
+		$ldapport = variable_get('grnet_ldapport');
+		$ldapbinddn = variable_get('grnet_ldapbinddn');
+		$ldappass = variable_get('grnet_ldappass');
+		$ldapbasedn = variable_get('grnet_ldapbasedn_units').','.variable_get('grnet_ldapbasedn');
+	
+		
+		$info = array(                "o" => $unit->name,
+				                         "ou" => $unit->field_backend_name['und']['0']['value'],
+				           "businessCategory" => taxonomy_vocabulary_load($unit->vid)->description
+		             );
+		
+		$_SESSION['kko'] = reset($unit->parent);
+		if(reset($unit->parent)<>'0'){
+			$info['seeAlso'] = 'uniqueIdentifier='.reset($unit->parent).",$ldapbasedn";
+		}
+	
+		try{
+			ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);
+			ldap_set_option($conn, LDAP_OPT_REFERRALS, 0);
+			
+			$rdn = "uniqueIdentifier=".$unit->tid.",$ldapbasedn";
+			$_SESSION['unit_values'] = $info;
+			
+			ldap_close($conn);
+			return $ldap_modify_message;
+	
+		} catch(exception $e) {
+			var_dump($e);
+		}
+	
+	
+	}
+	
+	function _ldap_unit_delete($tid) {
+		
+		$ldaphost = variable_get('grnet_ldaphost');
+		$ldapport = variable_get('grnet_ldapport');
+		$ldapbinddn = variable_get('grnet_ldapbinddn');
+		$ldappass = variable_get('grnet_ldappass');
+		$ldapbasedn = variable_get('grnet_ldapbasedn_units').','.variable_get('grnet_ldapbasedn');
+			
+	
+		$res=false;
+	
+		try{
+			$conn = ldap_connect($ldaphost,$ldapport) or die("Could not connect to server");
+			ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);
+			ldap_set_option($conn, LDAP_OPT_REFERRALS, 0);
+			$r = ldap_bind($conn,$ldapbinddn,$ldappass) or die("Could not bind to server");
+	
+			$rdn = "uniqueIdentifier=".$tid.",$ldapbasedn";
+	
+			$res=ldap_delete($conn, $rdn);
+			ldap_close($conn);
+			return $res;
+	
+		} catch(exception $e) {
+			var_dump($e);
+		}
+	
+	
+	}	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	function grnet_ldap_interconnection_construct_filter($attributes){
+		$counter=0;
+		$filterTemp ='';
+		$filter='';
+		foreach($attributes as $key => $value){
+				
+			$filterTemp .= "($key=$value)";
+			$counter++;
+		}
+				
+			if($counter>1){
+			$filter = "(&";
+			}
+				
+			$filter .=$filterTemp;
+				
+			if($counter>1){
+			$filter .= ")";
+			}
+				
+			return $filter;
+	}
+	
+?>
diff --git a/grnet_ldap_interconnection_sync/grnet_ldap_interconnection_sync.info b/grnet_ldap_interconnection_sync/grnet_ldap_interconnection_sync.info
new file mode 100644
index 0000000..971807e
--- /dev/null
+++ b/grnet_ldap_interconnection_sync/grnet_ldap_interconnection_sync.info
@@ -0,0 +1,11 @@
+name = Grnet Ldap Interconnection Sync
+description = GGrnet Ldap Interconnection Sync (Ldap Create / Update)
+core = "7.x"
+package = Grnet
+
+; Information added by drupal.org packaging script on 2013-05-20
+version = "7.x-1.0"
+core = "7.x"
+project = "grnet_core"
+datestamp = "1369041918"
+
diff --git a/grnet_ldap_interconnection_sync/grnet_ldap_interconnection_sync.module b/grnet_ldap_interconnection_sync/grnet_ldap_interconnection_sync.module
new file mode 100644
index 0000000..c61f00f
--- /dev/null
+++ b/grnet_ldap_interconnection_sync/grnet_ldap_interconnection_sync.module
@@ -0,0 +1,100 @@
+<?php
+	function grnet_ldap_interconnection_sync_menu() {
+	
+		$items['grnet_ldap_sync/%/%'] = array(
+				'title' => 'Ldap Sync',
+				'page callback' => '_ldap_sync',
+				'page arguments' => array(1,2),
+				'access arguments' => array('access content'),
+				'type' => MENU_CALLBACK,
+		);
+	
+		return $items;
+	}
+	
+	
+	function _ldap_sync($type,$vocabulary){
+		if($type=='units'){
+			if($vocabulary=='all'){
+				return _get_units('all');
+			}else{
+				return _get_units($vocabulary);
+			}
+			
+		}
+		
+		
+	}
+	
+	function _get_units($vid=NULL){
+		$output  = 'Ξεκινάει ο Συγχρονισμός..';
+		$output .= '<br><br><br><br>';
+		
+		
+		
+		
+		if($vid=='all'){
+			$sql = "SELECT * FROM {taxonomy_vocabulary} WHERE vid IN (2,3,4,5,6) ";
+			
+		}else{
+			$sql = db_query("SELECT * FROM {taxonomy_vocabulary} WHERE vid=:vid",array(':vid' => $vid)  );
+		}
+		
+		
+		$result=db_query($sql);
+		
+		foreach ($result as $rec) {
+			$output .= '<b>ΤΑΞΙΝΟΜΗΣΗ : '.$rec->description.'</b><br><br><br>';
+      
+      $terms_array = taxonomy_get_tree($rec->vid, $parent = 0, $max_depth = NULL, TRUE);
+      foreach ($terms_array as $term) {
+      	$output .= 'tid : '.$term->tid.'<br>';
+      	$output .= 'name : '.$term->name.'<br>';
+      	$output .= 'backend_name : '.$term->field_backend_name['und']['0']['value'].'<br>';
+      	if(reset($term->parents) > 0){
+      		$output .= 'parent : '.reset($term->parents).'<br>';
+      	}
+      	
+      	
+      	
+      	
+      	$entity = new stdClass();
+      	$entity->name   = $term->name;
+      	$entity->field_backend_name  = $term->field_backend_name;
+      	$entity->vid = $term->vid;
+      	$entity->tid = $term->tid;
+      	if(reset($term->parents) > 0){
+      		$entity->parent = $term->parents;
+      	}      	
+      	$res = grnet_ldap_interconnection_unit_create_wrapper($entity);
+      	
+      	$output .= '<br>Ldap Status : ';
+      	if($res==1){
+      		$output .= '[OK]';
+      	}else{
+      		$output .= ' - ';
+      	}
+      	$output .= '<br><br>';
+      	
+      	
+      	
+      	
+      	$output .= '------------------------------------<br><br>';
+      	
+      }
+        
+      
+      $output .= '
+      
+		}
+		
+		
+		
+		
+		$output .= '<br><br><br><br>';
+		$output .= 'Ο συγχρονισμός ολοκληρώθηκε!!';
+		
+		return $output;
+		
+	}
+?>
diff --git a/grnet_ldap_interconnection_sync/grnet_ldap_interconnection_sync.module~ b/grnet_ldap_interconnection_sync/grnet_ldap_interconnection_sync.module~
new file mode 100644
index 0000000..b3f47a5
--- /dev/null
+++ b/grnet_ldap_interconnection_sync/grnet_ldap_interconnection_sync.module~
@@ -0,0 +1,101 @@
+<?php
+	function grnet_ldap_interconnection_sync_menu() {
+	
+		$items['grnet_ldap_sync/%/%'] = array(
+				'title' => 'Ldap Sync',
+				'page callback' => '_ldap_sync',
+				'page arguments' => array(1,2),
+				/*'access callback' => 'user_access',*/
+				'access arguments' => array('access content'),
+				'type' => MENU_CALLBACK,
+		);
+	
+		return $items;
+	}
+	
+	
+	function _ldap_sync($type,$vocabulary){
+		if($type=='units'){
+			if($vocabulary=='all'){
+				return _get_units('all');
+			}else{
+				return _get_units($vocabulary);
+			}
+			
+		}
+		
+		
+	}
+	
+	function _get_units($vid=NULL){
+		$output  = 'Ξεκινάει ο Συγχρονισμός..';
+		$output .= '<br><br><br><br>';
+		
+		
+		
+		
+		if($vid=='all'){
+			$sql = "SELECT * FROM {taxonomy_vocabulary} WHERE vid IN (2,3,4,5,6) ";
+			
+		}else{
+			$sql = db_query("SELECT * FROM {taxonomy_vocabulary} WHERE vid=:vid",array(':vid' => $vid)  );
+		}
+		
+		
+		$result=db_query($sql);
+		
+		foreach ($result as $rec) {
+			$output .= '<b>ΤΑΞΙΝΟΜΗΣΗ : '.$rec->description.'</b><br><br><br>';
+      
+      $terms_array = taxonomy_get_tree($rec->vid, $parent = 0, $max_depth = NULL, TRUE);
+      foreach ($terms_array as $term) {
+      	$output .= 'tid : '.$term->tid.'<br>';
+      	$output .= 'name : '.$term->name.'<br>';
+      	$output .= 'backend_name : '.$term->field_backend_name['und']['0']['value'].'<br>';
+      	if(reset($term->parents) > 0){
+      		$output .= 'parent : '.reset($term->parents).'<br>';
+      	}
+      	
+      	
+      	
+      	
+      	$entity = new stdClass();
+      	$entity->name   = $term->name;
+      	$entity->field_backend_name  = $term->field_backend_name;
+      	$entity->vid = $term->vid;
+      	$entity->tid = $term->tid;
+      	if(reset($term->parents) > 0){
+      		$entity->parent = $term->parents;
+      	}      	
+      	$res = grnet_ldap_interconnection_unit_create_wrapper($entity);
+      	
+      	$output .= '<br>Ldap Status : ';
+      	if($res==1){
+      		$output .= '[OK]';
+      	}else{
+      		$output .= ' - ';
+      	}
+      	$output .= '<br><br>';
+      	
+      	
+      	
+      	
+      	$output .= '------------------------------------<br><br>';
+      	
+      }
+        
+      
+      $output .= '
+      
+		}
+		
+		
+		
+		
+		$output .= '<br><br><br><br>';
+		$output .= 'Ο συγχρονισμός ολοκληρώθηκε!!';
+		
+		return $output;
+		
+	}
+?>
diff --git a/grnet_ldapinfo/css/ldapinfo.css b/grnet_ldapinfo/css/ldapinfo.css
new file mode 100644
index 0000000..83583d9
--- /dev/null
+++ b/grnet_ldapinfo/css/ldapinfo.css
@@ -0,0 +1,27 @@
+/*-------- Ta stoixeia mou start ------*/
+#ldapinfo .fieldset-legend {
+	color:#9cb2c0;
+	font-weight:600;
+	margin: 1.2em 0;
+}
+
+fieldset {
+	margin:0;
+}
+
+#ldapinfo .fieldset-wrapper {
+	padding: 0  10px 10px;
+	border-bottom: 1px solid #EEEEEE;
+}
+#ldapinfo .fieldset-wrapper:last-child {
+	border-bottom:none;
+}
+.fleft {
+	float:left;
+}
+
+.mgrow {
+	margin: 0.8em 0!important;
+}
+
+/*-------- Ta stoixeia mou end------*/
diff --git a/grnet_ldapinfo/css/ldapinfo.css~ b/grnet_ldapinfo/css/ldapinfo.css~
new file mode 100644
index 0000000..6c7ed43
--- /dev/null
+++ b/grnet_ldapinfo/css/ldapinfo.css~
@@ -0,0 +1,24 @@
+/*-------- Ta stoixeia mou start ------*/
+	color:
+	font-weight:600;
+	margin: 1.2em 0;
+}
+
+fieldset {
+	margin:0;
+}
+
+	padding: 0  10px 10px;
+	border-bottom: 1px solid 
+}
+	border-bottom:none;
+}
+.fleft {
+	float:left;
+}
+
+.mgrow {
+	margin: 0.8em 0!important;
+}
+
+/*-------- Ta stoixeia mou end------*/
diff --git a/grnet_ldapinfo/grnet_ldapinfo.info b/grnet_ldapinfo/grnet_ldapinfo.info
new file mode 100755
index 0000000..784d13b
--- /dev/null
+++ b/grnet_ldapinfo/grnet_ldapinfo.info
@@ -0,0 +1,10 @@
+name = grnet Ldap Info
+description = grnet Ldap Info module - Casified personal info through ldap
+core = "7.x"
+package = grnet
+; Information added by drupal.org packaging script on 2013-05-20
+version = "7.x-1.0"
+core = "7.x"
+project = "grnet_core"
+datestamp = "1369041918"
+stylesheets[all][] = css/ldapinfo.css
diff --git a/grnet_ldapinfo/grnet_ldapinfo.module b/grnet_ldapinfo/grnet_ldapinfo.module
new file mode 100755
index 0000000..6832198
--- /dev/null
+++ b/grnet_ldapinfo/grnet_ldapinfo.module
@@ -0,0 +1,343 @@
+<?php
+function grnet_ldapinfo_user_login(&$edit, $account) {
+	
+	grnet_core_sync_ldapuser_submission_ownership();
+	
+	grnet_core_get_ldapuser_hidden_message();
+	
+	
+}
+function grnet_ldapinfo_menu() {
+  $items['ldapinfo'] = array(
+    'title' => 'My personal Info',
+    'page callback' => 'ldapinfo',
+    /*'page arguments' => array(1),*/
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+  
+  return $items;
+}
+function ldapinfo(){
+	
+  $html = '	<h4 class="my-info">Τα στοιχεία μου</h4>  
+  			<div class="confirmation-container">
+			 <div class="confirmation-text"> 
+			   Αν επιθυμείτε να επεξεργαστείτε τα στοιχεία σας πραγματοποιήστε 
+			   <a href="request/alterinfo">Αίτημα Μεταβολής Στοιχείων</a>
+			  
+			  
+			 </div>';
+			 
+  $html .= grnet_ldapinfo_get_user_info();
+  
+  $html .=  '</div>';
+    return $html;
+}
+	
+function grnet_ldapinfo_get_user_info(){
+	
+	$username = grnet_core_get_ldapinfo_user();
+	$ldapinfo_user = grnet_ldap_interconnection_unit_read_wrapper($username);
+	
+	if($ldapinfo_user["edupersonentitlement"][0]<>''){
+		$dias_roles = taxonomy_term_load(grnet_core_conver_dias_roles_revert_to_tid($ldapinfo_user["edupersonentitlement"][0]))->name;
+	}else{
+		$dias_roles = '- Κανένα -';		 
+	}
+	
+	
+	if($ldapinfo_user["employeetype"][0]=='Ιατρικό'){
+	
+		switch (grnet_core_get_term_by_rdn($ldapinfo_user["seealso"][0])->vid){
+				
+			case 2:
+				$field_ldapregistr_tmim_mon_tomea = grnet_core_get_term_by_rdn($ldapinfo_user["seealso"][0])->name;
+				$field_ldapregistr_tmim_diato ='';
+				$field_ldapregistr_epikour_loipa ='';
+				break;
+		
+			case 4:
+				$field_ldapregistr_tmim_mon_tomea = '';
+				$field_ldapregistr_tmim_diato =grnet_core_get_term_by_rdn($ldapinfo_user["seealso"][0])->name;
+				$field_ldapregistr_epikour_loipa ='';
+				break;
+		
+			case 5:
+				$field_ldapregistr_tmim_mon_tomea = '';
+				$field_ldapregistr_tmim_diato = '';
+				$field_ldapregistr_epikour_loipa = grnet_core_get_term_by_rdn($ldapinfo_user["seealso"][0])->name;
+				break;
+		}
+		
+		if($ldapinfo_user["title"][0]=='manager'){
+			$field_ldapregistr_iatr_proist = 'ΝΑΙ';
+		}else{
+			$field_ldapregistr_iatr_proist = 'ΟΧΙ';
+		}
+		
+		
+	}elseif($ldapinfo_user["employeetype"][0]=='Διοικητικό'){
+	
+		$field_ldapregistr_dioik_tmimgraf = grnet_core_get_term_by_rdn($ldapinfo_user["seealso"][0])->name;
+		
+		if($ldapinfo_user["title"][0]=='manager'){
+			$field_ldapregistr_admin_proist = 'ΝΑΙ';
+		}else{
+			$field_ldapregistr_admin_proist = 'ΟΧΙ';
+		}		
+	
+	}
+	
+	
+	
+	
+	
+	
+	
+	$output ='
+	<div id="ldapinfo-root" 
+		class="view view-manage-requests view-id-manage_requests view-display-id-page_5 view-dom-id-14623e828c752f1ce575d71a86cea03b jquery-once-1-processed">
+		<div class="view-content">
+			<div id="view-request-manager">
+				<table class="views-view-grid cols-4">
+					<tbody>
+						<tr class="row-1 row-first row-last">
+							<td class="col-1 col-first grnet-view-form-wrapper">
+								<fieldset class="grnet-fieldset views-fieldset" data-module="views_fieldsets" id="grnet-fieldset-personal-data">
+									<legend>
+										<span class="fieldset-legend">Προσωπικά Στοιχεία</span>
+									</legend>
+									<div class="fieldset-wrapper">
+										<div class="views-field views-field-field-ldapregistr-name">
+											<span class="views-label views-label-field-ldapregistr-name">Όνομα</span>
+											<div class="field-content grnet-field-ldapregistr-name">'.$ldapinfo_user["givenname"][0].'</div>
+										</div>
+										<div class="views-field views-field-field-ldapregistr-surname">
+											<span class="views-label views-label-field-ldapregistr-surname">Επώνυμο</span>
+											<div class="field-content grnet-field-ldapregistr-surname">'.$ldapinfo_user["sn"][0].'</div>
+										</div>
+										<div class="views-field views-field-field-ldapregistr-amka">
+											<span class="views-label views-label-field-ldapregistr-amka">ΑΜΚΑ</span>
+											<div class="field-content grnet-field-ldapregistr-amka">'.$ldapinfo_user["schacpersonaluniqueid"][0].'</div>
+										</div>
+									</div>
+								</fieldset>
+								<fieldset class="grnet-fieldset views-fieldset" data-module="views_fieldsets" id="grnet-fieldset-credentials">
+									<legend>
+										<span class="fieldset-legend">Όνομα χρήστη και κωδικός πρόσβασης</span>
+									</legend>
+									<div class="fieldset-wrapper">
+										<div class="views-field views-field-field-ldapregistr-username">
+											<span class="views-label views-label-field-ldapregistr-username">Όνομα Χρήστη</span>
+											<div class="field-content grnet-field-ldapregistr-username">'.$ldapinfo_user["uid"][0].'</div>
+										</div>
+										<div class="views-field views-field-nothing-5">
+											<span class="views-label views-label-nothing-5">Κωδικός πρόσβασης</span>
+											<div class="field-content grnet-field-ldapregistr-pwd-asterisks">';
+		
+		if(arg(0)=='ldapinfo'){
+			$output .= '<a href="/manage_password" >Διαχείριση κωδικού</a>';
+		}elseif(arg(0)=='requests' || arg(0)=='entityform'){
+			$output .= '**********';
+		}
+		
+		$output .='
+				              </div>
+										</div>
+									</div>
+								</fieldset>
+								<fieldset class="grnet-fieldset views-fieldset" data-module="views_fieldsets" id="grnet-fieldset-contact-data">
+									<legend>
+										<span class="fieldset-legend">Στοιχεία Επικοινωνίας</span>
+									</legend>
+									<div class="fieldset-wrapper">
+										<div class="views-field views-field-field-ldapregistr-email">
+											<span class="views-label views-label-field-ldapregistr-email">email</span>
+											<div class="field-content grnet-field-ldapregistr-email">'.$ldapinfo_user["mail"][0].'</div>
+										</div>
+										<div class="views-field views-field-field-ldapregistr-phone">
+											<span class="views-label views-label-field-ldapregistr-phone">Τηλέφωνο</span>
+											<div class="field-content grnet-field-ldapregistr-phone">'.$ldapinfo_user["telephonenumber"][0].'</div>
+										</div>
+										<div class="views-field views-field-field-ldapregistr-mobile">
+											<span class="views-label views-label-field-ldapregistr-mobile">Κινητό</span>
+											<div class="field-content grnet-field-ldapregistr-mobile">'.$ldapinfo_user["mobile"][0].'</div>
+										</div>
+									</div>
+								</fieldset>
+								<fieldset class="grnet-fieldset views-fieldset" data-module="views_fieldsets" id="grnet-fieldset-personel">
+									<legend>
+										<span class="fieldset-legend">Προσωπικό</span>
+									</legend>
+									<div class="fieldset-wrapper">
+										<div class="views-field views-field-field-ldapregistr-personel-categ">
+											<span class="views-label views-label-field-ldapregistr-personel-categ">Κατηγορία Προσωπικού</span>
+											<div class="field-content grnet-field-ldapregistr-personel-categ">'.$ldapinfo_user["employeetype"][0].'</div>
+										</div>';
+		
+		
+			$output .='		
+										<div class="views-field views-field-field-ldapregistr-dicom">
+											<span class="views-label views-label-field-ldapregistr-dicom">DICOM - Όνομα</span>
+											<div class="field-content grnet-field-ldapregistr-dicom">'.$ldapinfo_user["dicomreferringphysiciansname"][0].'</div>
+										</div>
+										<div class="views-field views-field-field-ldapregistr-personel-type">
+											<span class="views-label views-label-field-ldapregistr-personel-type">Είδος Προσωπικού</span>
+											<div class="field-content grnet-field-ldapregistr-personel-type">'.$ldapinfo_user["description"][0].'</div>
+										</div>
+										<div class="views-field views-field-field-ldapregistr-speciality">
+											<span class="views-label views-label-field-ldapregistr-speciality">Ειδικότητα</span>
+											<div class="field-content grnet-field-ldapregistr-speciality">'.grnet_core_get_term_by_rdn($ldapinfo_user["distinguishedname"][0])->name.'</div>
+										</div>
+										<div class="views-field views-field-field-ldapregistr-iatr-top-mon">
+											<span class="views-label views-label-field-ldapregistr-iatr-top-mon">Τοποθέτηση σε μόναδα</span>
+											<div class="field-content grnet-field-ldapregistr-iatr-top-mon">'.taxonomy_vocabulary_load(grnet_core_get_term_by_rdn($ldapinfo_user["seealso"][0])->vid)->description.'</div>
+										</div>';
+			
+			$output .='
+										<div class="views-field views-field-field-ldapregistr-tmim-mon-tomea">
+											<span class="views-label views-label-field-ldapregistr-tmim-mon-tomea">Τμήματα/Μονάδες ανά τομέα</span>
+											<div class="field-content grnet-field-ldapregistr-tmim-mon-tomea">'.$field_ldapregistr_tmim_mon_tomea.'</div>
+										</div>';
+			
+			
+			$output .='
+										<div class="views-field views-field-field-ldapregistr-tmim-diato">
+											<span class="views-label views-label-field-ldapregistr-tmim-diato">Τμήματα Διατομεακού Επιπέδου</span>
+											<div class="field-content grnet-field-ldapregistr-tmim-diato">'.$field_ldapregistr_tmim_diato.'</div>
+										</div>';			
+			
+			
+			$output .='
+										<div class="views-field views-field-field-ldapregistr-epikour-loipa">
+											<span class="views-label views-label-field-ldapregistr-epikour-loipa">Επικουρικά / Λοιπά</span>
+											<div class="field-content grnet-field-ldapregistr-epikour-loipa">'.$field_ldapregistr_epikour_loipa.'</div>
+										</div>';
+			
+			
+			$output .='		
+										<div class="views-field views-field-field-ldapregistr-iatr-proist">
+											<span class="views-label views-label-field-ldapregistr-iatr-proist">Προϊστάμενος τμήματος / μονάδας</span>
+											<div class="field-content grnet-field-ldapregistr-iatr-proist">'.$field_ldapregistr_iatr_proist.'</div>
+										</div>';
+			
+			
+			$output .='			
+										<div class="views-field views-field-field-ldapregistr-dioik-tmimgraf">
+											<span class="views-label views-label-field-ldapregistr-dioik-tmimgraf">Τοποθέτηση σε Τμήμα / Γραφείο</span>
+											<div class="field-content grnet-field-ldapregistr-dioik-tmimgraf">'.$field_ldapregistr_dioik_tmimgraf.'</div>
+										</div>';
+			
+			
+						
+			$output .='
+										<div class="views-field views-field-field-ldapregistr-admin-proist">
+											<span class="views-label views-label-field-ldapregistr-admin-proist">Προϊστάμενος τμήματος / μονάδας</span>
+											<div class="field-content grnet-field-ldapregistr-admin-proist">'.$field_ldapregistr_admin_proist.'</div>
+										</div>
+									</div>
+								</fieldset>
+								<fieldset class="grnet-fieldset views-fieldset" data-module="views_fieldsets" id="grnet-fieldset-dias-roles">
+									<legend>
+								  	<span class="fieldset-legend">Σύστημα ΔΙΑΣ</span>
+								  </legend>
+								  <div class="fieldset-wrapper">
+						      	<div class="views-field views-field-field-ldapregistr-dias-roles">
+											<span class="views-label views-label-field-ldapregistr-dias-roles">Ρόλος (ΔΙΑΣ)</span>
+											<div class="field-content grnet-field-ldapregistr-dias-roles">'.$dias_roles.'</div>
+										</div>  
+								  </div>  
+								</fieldset>
+													
+							</td>
+						</tr>
+					</tbody>
+				</table>
+			</div>
+		</div>
+	</div>
+		';
+			 
+	if(arg(0)=='requests'){
+	  $output .= '<div class="back"><a href="/requests/all">Επιστροφή</a></div>';
+	}
+				 
+  return $output;
+}
+	
+function grnet_ldapinfo_getUserSid() {
+  $sid = db_query("SELECT entity_id as sid 
+					 FROM field_data_field_ldapregistr_username
+					 WHERE field_ldapregistr_username_value= :username",array(':username' => $_SESSION['phpCAS']['user'])
+				 )->fetchField();
+  return $sid;
+}	
+function grnet_ldapinfo_show_both() {
+  return TRUE;
+}
+function grnet_ldapinfo_block_info() {
+  $blocks = array();
+  $blocks['my_block'] = array(
+    'info' => t('Ldap User Info '),
+  );
+  /*
+  $blocks['my_block2'] = array(
+    'info' => t('Ldap User Info2 '),
+  );
+  */
+    
+  return $blocks;
+}
+/**
+ * Implements hook_block_configure().
+ */
+function grnet_ldapinfo_block_configure($delta='') {
+  $form = array();
+  
+  switch($delta) {
+
+  }
+  return $form;
+}
+/**
+ * Implements hook_block_save().
+ */
+function grnet_ldapinfo_block_save($delta = '', $edit = array()) {
+  switch($delta) {
+
+  }
+}
+/**
+ * Implements hook_block_view().
+ */
+function grnet_ldapinfo_block_view($delta='') {
+  $block = array();
+  
+  switch($delta) {
+    case 'my_block' :
+      $block['content'] = my_block_view();
+      break;
+  }
+  
+  return $block;
+}
+/**
+ * Custom function to assemble renderable array for block content.
+ * Returns a renderable array with the block content.
+ * @return
+ *   returns a renderable array of block content.
+ */
+function my_block_view() {
+  $block = array();
+
+  $block = array(
+ 
+    'message' => array(
+      '
+      '
+      '
+    ),
+  );
+  return $block;
+}
diff --git a/grnet_ldapinfo/grnet_ldapinfo.module~ b/grnet_ldapinfo/grnet_ldapinfo.module~
new file mode 100755
index 0000000..1d0de1f
--- /dev/null
+++ b/grnet_ldapinfo/grnet_ldapinfo.module~
@@ -0,0 +1,440 @@
+<?php
+function grnet_ldapinfo_user_login(&$edit, $account) {
+	
+	grnet_core_sync_ldapuser_submission_ownership();
+	
+	grnet_core_get_ldapuser_hidden_message();
+	
+	
+}
+function grnet_ldapinfo_menu() {
+  $items['ldapinfo'] = array(
+    'title' => 'My personal Info',
+    'page callback' => 'ldapinfo',
+    /*'page arguments' => array(1),*/
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+  
+  return $items;
+}
+function ldapinfo(){
+	
+  $html = '	<h4 class="my-info">Τα στοιχεία μου</h4>  
+  			<div class="confirmation-container">
+			 <div class="confirmation-text"> 
+			   Αν επιθυμείτε να επεξεργαστείτε τα στοιχεία σας πραγματοποιήστε 
+			   <a href="request/alterinfo">Αίτημα Μεταβολής Στοιχείων</a>
+			  
+			  
+			 </div>';
+			 
+  $html .= grnet_ldapinfo_get_user_info();
+  
+  $html .=  '</div>';
+    return $html;
+}
+	
+function grnet_ldapinfo_get_user_info(){
+	
+	$username = grnet_core_get_ldapinfo_user();
+	$ldapinfo_user = grnet_ldap_interconnection_unit_read_wrapper($username);
+	
+	if($ldapinfo_user["edupersonentitlement"][0]<>''){
+		$dias_roles = taxonomy_term_load(grnet_core_conver_dias_roles_revert_to_tid($ldapinfo_user["edupersonentitlement"][0]))->name;
+	}else{
+		$dias_roles = '- Κανένα -';		 
+	}
+	
+	
+	if($ldapinfo_user["employeetype"][0]=='Ιατρικό'){
+	
+		switch (grnet_core_get_term_by_rdn($ldapinfo_user["seealso"][0])->vid){
+				
+			case 2:
+				$field_ldapregistr_tmim_mon_tomea = grnet_core_get_term_by_rdn($ldapinfo_user["seealso"][0])->name;
+				$field_ldapregistr_tmim_diato ='';
+				$field_ldapregistr_epikour_loipa ='';
+				break;
+		
+			case 4:
+				$field_ldapregistr_tmim_mon_tomea = '';
+				$field_ldapregistr_tmim_diato =grnet_core_get_term_by_rdn($ldapinfo_user["seealso"][0])->name;
+				$field_ldapregistr_epikour_loipa ='';
+				break;
+		
+			case 5:
+				$field_ldapregistr_tmim_mon_tomea = '';
+				$field_ldapregistr_tmim_diato = '';
+				$field_ldapregistr_epikour_loipa = grnet_core_get_term_by_rdn($ldapinfo_user["seealso"][0])->name;
+				break;
+		}
+		
+		if($ldapinfo_user["title"][0]=='manager'){
+			$field_ldapregistr_iatr_proist = 'ΝΑΙ';
+		}else{
+			$field_ldapregistr_iatr_proist = 'ΟΧΙ';
+		}
+		
+		
+	}elseif($ldapinfo_user["employeetype"][0]=='Διοικητικό'){
+	
+		$field_ldapregistr_dioik_tmimgraf = grnet_core_get_term_by_rdn($ldapinfo_user["seealso"][0])->name;
+		
+		if($ldapinfo_user["title"][0]=='manager'){
+			$field_ldapregistr_admin_proist = 'ΝΑΙ';
+		}else{
+			$field_ldapregistr_admin_proist = 'ΟΧΙ';
+		}		
+	
+	}
+	
+	
+	
+	
+	
+	
+	
+	$output ='
+	<div id="ldapinfo-root" 
+		class="view view-manage-requests view-id-manage_requests view-display-id-page_5 view-dom-id-14623e828c752f1ce575d71a86cea03b jquery-once-1-processed">
+		<div class="view-content">
+			<div id="view-request-manager">
+				<table class="views-view-grid cols-4">
+					<tbody>
+						<tr class="row-1 row-first row-last">
+							<td class="col-1 col-first grnet-view-form-wrapper">
+								<fieldset class="grnet-fieldset views-fieldset" data-module="views_fieldsets" id="grnet-fieldset-personal-data">
+									<legend>
+										<span class="fieldset-legend">Προσωπικά Στοιχεία</span>
+									</legend>
+									<div class="fieldset-wrapper">
+										<div class="views-field views-field-field-ldapregistr-name">
+											<span class="views-label views-label-field-ldapregistr-name">Όνομα</span>
+											<div class="field-content grnet-field-ldapregistr-name">'.$ldapinfo_user["givenname"][0].'</div>
+										</div>
+										<div class="views-field views-field-field-ldapregistr-surname">
+											<span class="views-label views-label-field-ldapregistr-surname">Επώνυμο</span>
+											<div class="field-content grnet-field-ldapregistr-surname">'.$ldapinfo_user["sn"][0].'</div>
+										</div>
+										<div class="views-field views-field-field-ldapregistr-amka">
+											<span class="views-label views-label-field-ldapregistr-amka">ΑΜΚΑ</span>
+											<div class="field-content grnet-field-ldapregistr-amka">'.$ldapinfo_user["schacpersonaluniqueid"][0].'</div>
+										</div>
+									</div>
+								</fieldset>
+								<fieldset class="grnet-fieldset views-fieldset" data-module="views_fieldsets" id="grnet-fieldset-credentials">
+									<legend>
+										<span class="fieldset-legend">Όνομα χρήστη και κωδικός πρόσβασης</span>
+									</legend>
+									<div class="fieldset-wrapper">
+										<div class="views-field views-field-field-ldapregistr-username">
+											<span class="views-label views-label-field-ldapregistr-username">Όνομα Χρήστη</span>
+											<div class="field-content grnet-field-ldapregistr-username">'.$ldapinfo_user["uid"][0].'</div>
+										</div>
+										<div class="views-field views-field-nothing-5">
+											<span class="views-label views-label-nothing-5">Κωδικός πρόσβασης</span>
+											<div class="field-content grnet-field-ldapregistr-pwd-asterisks">';
+		
+		if(arg(0)=='ldapinfo'){
+			$output .= '<a href="/manage_password" >Διαχείριση κωδικού</a>';
+		}elseif(arg(0)=='requests' || arg(0)=='entityform'){
+			$output .= '**********';
+		}
+		
+		$output .='
+				              </div>
+										</div>
+									</div>
+								</fieldset>
+								<fieldset class="grnet-fieldset views-fieldset" data-module="views_fieldsets" id="grnet-fieldset-contact-data">
+									<legend>
+										<span class="fieldset-legend">Στοιχεία Επικοινωνίας</span>
+									</legend>
+									<div class="fieldset-wrapper">
+										<div class="views-field views-field-field-ldapregistr-email">
+											<span class="views-label views-label-field-ldapregistr-email">email</span>
+											<div class="field-content grnet-field-ldapregistr-email">'.$ldapinfo_user["mail"][0].'</div>
+										</div>
+										<div class="views-field views-field-field-ldapregistr-phone">
+											<span class="views-label views-label-field-ldapregistr-phone">Τηλέφωνο</span>
+											<div class="field-content grnet-field-ldapregistr-phone">'.$ldapinfo_user["telephonenumber"][0].'</div>
+										</div>
+										<div class="views-field views-field-field-ldapregistr-mobile">
+											<span class="views-label views-label-field-ldapregistr-mobile">Κινητό</span>
+											<div class="field-content grnet-field-ldapregistr-mobile">'.$ldapinfo_user["mobile"][0].'</div>
+										</div>
+									</div>
+								</fieldset>
+								<fieldset class="grnet-fieldset views-fieldset" data-module="views_fieldsets" id="grnet-fieldset-personel">
+									<legend>
+										<span class="fieldset-legend">Προσωπικό</span>
+									</legend>
+									<div class="fieldset-wrapper">
+										<div class="views-field views-field-field-ldapregistr-personel-categ">
+											<span class="views-label views-label-field-ldapregistr-personel-categ">Κατηγορία Προσωπικού</span>
+											<div class="field-content grnet-field-ldapregistr-personel-categ">'.$ldapinfo_user["employeetype"][0].'</div>
+										</div>';
+		
+		
+			$output .='		
+										<div class="views-field views-field-field-ldapregistr-dicom">
+											<span class="views-label views-label-field-ldapregistr-dicom">DICOM - Όνομα</span>
+											<div class="field-content grnet-field-ldapregistr-dicom">'.$ldapinfo_user["dicomreferringphysiciansname"][0].'</div>
+										</div>
+										<div class="views-field views-field-field-ldapregistr-personel-type">
+											<span class="views-label views-label-field-ldapregistr-personel-type">Είδος Προσωπικού</span>
+											<div class="field-content grnet-field-ldapregistr-personel-type">'.$ldapinfo_user["description"][0].'</div>
+										</div>
+										<div class="views-field views-field-field-ldapregistr-speciality">
+											<span class="views-label views-label-field-ldapregistr-speciality">Ειδικότητα</span>
+											<div class="field-content grnet-field-ldapregistr-speciality">'.grnet_core_get_term_by_rdn($ldapinfo_user["distinguishedname"][0])->name.'</div>
+										</div>
+										<div class="views-field views-field-field-ldapregistr-iatr-top-mon">
+											<span class="views-label views-label-field-ldapregistr-iatr-top-mon">Τοποθέτηση σε μόναδα</span>
+											<div class="field-content grnet-field-ldapregistr-iatr-top-mon">'.taxonomy_vocabulary_load(grnet_core_get_term_by_rdn($ldapinfo_user["seealso"][0])->vid)->description.'</div>
+										</div>';
+			
+			$output .='
+										<div class="views-field views-field-field-ldapregistr-tmim-mon-tomea">
+											<span class="views-label views-label-field-ldapregistr-tmim-mon-tomea">Τμήματα/Μονάδες ανά τομέα</span>
+											<div class="field-content grnet-field-ldapregistr-tmim-mon-tomea">'.$field_ldapregistr_tmim_mon_tomea.'</div>
+										</div>';
+			
+			
+			$output .='
+										<div class="views-field views-field-field-ldapregistr-tmim-diato">
+											<span class="views-label views-label-field-ldapregistr-tmim-diato">Τμήματα Διατομεακού Επιπέδου</span>
+											<div class="field-content grnet-field-ldapregistr-tmim-diato">'.$field_ldapregistr_tmim_diato.'</div>
+										</div>';			
+			
+			
+			$output .='
+										<div class="views-field views-field-field-ldapregistr-epikour-loipa">
+											<span class="views-label views-label-field-ldapregistr-epikour-loipa">Επικουρικά / Λοιπά</span>
+											<div class="field-content grnet-field-ldapregistr-epikour-loipa">'.$field_ldapregistr_epikour_loipa.'</div>
+										</div>';
+			
+			
+			$output .='		
+										<div class="views-field views-field-field-ldapregistr-iatr-proist">
+											<span class="views-label views-label-field-ldapregistr-iatr-proist">Προϊστάμενος τμήματος / μονάδας</span>
+											<div class="field-content grnet-field-ldapregistr-iatr-proist">'.$field_ldapregistr_iatr_proist.'</div>
+										</div>';
+			
+			
+			$output .='			
+										<div class="views-field views-field-field-ldapregistr-dioik-tmimgraf">
+											<span class="views-label views-label-field-ldapregistr-dioik-tmimgraf">Τοποθέτηση σε Τμήμα / Γραφείο</span>
+											<div class="field-content grnet-field-ldapregistr-dioik-tmimgraf">'.$field_ldapregistr_dioik_tmimgraf.'</div>
+										</div>';
+			
+			
+						
+			$output .='
+										<div class="views-field views-field-field-ldapregistr-admin-proist">
+											<span class="views-label views-label-field-ldapregistr-admin-proist">Προϊστάμενος τμήματος / μονάδας</span>
+											<div class="field-content grnet-field-ldapregistr-admin-proist">'.$field_ldapregistr_admin_proist.'</div>
+										</div>
+									</div>
+								</fieldset>
+								<fieldset class="grnet-fieldset views-fieldset" data-module="views_fieldsets" id="grnet-fieldset-dias-roles">
+									<legend>
+								  	<span class="fieldset-legend">Σύστημα ΔΙΑΣ</span>
+								  </legend>
+								  <div class="fieldset-wrapper">
+						      	<div class="views-field views-field-field-ldapregistr-dias-roles">
+											<span class="views-label views-label-field-ldapregistr-dias-roles">Ρόλος (ΔΙΑΣ)</span>
+											<div class="field-content grnet-field-ldapregistr-dias-roles">'.$dias_roles.'</div>
+										</div>  
+								  </div>  
+								</fieldset>
+													
+							</td>
+						</tr>
+					</tbody>
+				</table>
+			</div>
+		</div>
+	</div>
+		';
+			 
+	if(arg(0)=='requests'){
+	  $output .= '<div class="back"><a href="/requests/all">Επιστροφή</a></div>';
+	}
+				 
+  return $output;
+}
+	
+function grnet_ldapinfo_getUserSid() {
+  $sid = db_query("SELECT entity_id as sid 
+					 FROM field_data_field_ldapregistr_username
+					 WHERE field_ldapregistr_username_value= :username",array(':username' => $_SESSION['phpCAS']['user'])
+				 )->fetchField();
+  return $sid;
+}	
+function grnet_ldapinfo_show_both() {
+  return TRUE;
+}
+function grnet_ldapinfo_block_info() {
+  $blocks = array();
+  $blocks['my_block'] = array(
+    'info' => t('Ldap User Info '),
+  );
+  /*
+  $blocks['my_block2'] = array(
+    'info' => t('Ldap User Info2 '),
+  );
+  */
+    
+  return $blocks;
+}
+/**
+ * Implements hook_block_configure().
+ */
+function grnet_ldapinfo_block_configure($delta='') {
+  $form = array();
+  
+  switch($delta) {
+	/*
+    case 'my_block' :
+      $form['text_body'] = array(
+        '
+        '
+        '
+      );
+      $form['file'] = array(
+        '
+        '
+        '
+        '
+        '
+        '
+        '
+          'file_validate_extensions' => array('gif png jpg jpeg'),
+        ),
+      );
+      break;
+      
+      
+    /*  
+    case 'my_block2' :
+      $form['file'] = array(
+        '
+        '
+        '
+        '
+        '
+        '
+        '
+          'file_validate_extensions' => array('gif png jpg jpeg'),
+        ),
+      );
+      
+      
+      $form['text_body'] = array(
+        '
+        '
+        '
+      );
+      break;
+    */
+      
+            
+  }
+  return $form;
+}
+/**
+ * Implements hook_block_save().
+ */
+function grnet_ldapinfo_block_save($delta = '', $edit = array()) {
+  switch($delta) {
+    
+    /*
+    case 'my_block' :
+      variable_set('text_variable', $edit['text_body']['value']);
+      $file = file_load($edit['file']);
+      $file->status = FILE_STATUS_PERMANENT;
+      file_save($file);
+      $block = block_load('custom_block', $delta);
+      file_usage_add($file, 'custom_block', 'block', $block->bid);
+      variable_set('block_image_fid', $file->fid);
+      break;
+    */
+      
+    /*
+    case 'my_block2' :
+      variable_set('text_variable', $edit['text_body']['value']);
+      $file = file_load($edit['file']);
+      $file->status = FILE_STATUS_PERMANENT;
+      file_save($file);
+      $block = block_load('custom_block', $delta);
+      file_usage_add($file, 'custom_block', 'block', $block->bid);
+      variable_set('block_image_fid', $file->fid);
+      break;
+    */
+      
+  }
+}
+/**
+ * Implements hook_block_view().
+ */
+function grnet_ldapinfo_block_view($delta='') {
+  $block = array();
+  
+  switch($delta) {
+    case 'my_block' :
+      $block['content'] = my_block_view();
+      break;
+     
+    /*  
+    case 'my_block2' :
+      $block['content'] = my_block_view2();
+      break;
+    */
+            
+  }
+  
+  return $block;
+}
+/**
+ * Custom function to assemble renderable array for block content.
+ * Returns a renderable array with the block content.
+ * @return
+ *   returns a renderable array of block content.
+ */
+function my_block_view() {
+  $block = array();
+  /*
+  $image_file = file_load(variable_get('block_image_fid', ''));
+  $image_path = '';
+  if (isset($image_file->uri)) {
+    $image_path = $image_file->uri;
+  }
+  $image = theme_image(array(
+    'path' => ($image_path),
+    'alt' => t('Image description here.'),
+    'title' => t('This is our block image.'),
+    'attributes' => array('class' => 'class_name'),
+  ));
+  $text = variable_get('text_variable', '');
+  */
+  
+  $block = array(
+  
+    /*
+    'image' => array(
+      '
+      '
+      '
+    ),
+    */
+    
+    'message' => array(
+      '
+      '
+      '
+    ),
+  );
+  return $block;
+}
\ No newline at end of file
diff --git a/grnet_password_generator/grnet_password_generator.admin.inc b/grnet_password_generator/grnet_password_generator.admin.inc
new file mode 100755
index 0000000..724d37c
--- /dev/null
+++ b/grnet_password_generator/grnet_password_generator.admin.inc
@@ -0,0 +1,91 @@
+<?php
+
+/**
+ * @file
+ * CAS module settings UI.
+ */
+
+/**
+ * Provides settings pages.
+ */
+function grnet_password_generator_admin_settings() {
+
+	
+	$form['passwordStrength'] = array(
+			'#type' => 'fieldset',
+			'#title' => t('Password Strength'),
+			'#collapsible' => TRUE
+	);
+	
+
+  $form['passwordStrength']['passwordStrength_minLen'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Minimum Length'),
+    '#default_value' => variable_get('passwordStrength_minLen', '6'),
+    '#size' => 2,
+    '#maxlength' => 2,
+    '#description' => t('Minimum Length of password.'),
+  );
+
+  $form['passwordStrength']['passwordStrength_minUniq'] = array(
+  		'#type' => 'textfield',
+  		'#title' => t('Minimum Unique'),
+  		'#default_value' => variable_get('passwordStrength_minUniq', '5'),
+  		'#size' => 2,
+  		'#maxlength' => 2,
+  		'#description' => t('Password minimum unique different characters.'),
+  );  
+  
+
+  $form['passwordStrength']['passwordStrength_nonAlpha'] = array(
+  		'#type' => 'textfield',
+  		'#title' => t('Non Alpha'),
+  		'#default_value' => variable_get('passwordStrength_nonAlpha', '2'),
+  		'#size' => 2,
+  		'#maxlength' => 2,
+  		'#description' => t('How many non alpharithmetic characters a password must contains at least.'),
+  );
+
+
+  $form['passwordStrength']['passwordStrength_minCons'] = array(
+  		'#type' => 'textfield',
+  		'#title' => t('Minimum Consecutive Numbers'),
+  		'#default_value' => variable_get('passwordStrength_minCons', '3'),
+  		'#size' => 2,
+  		'#maxlength' => 2,
+  		'#description' => t('How many non sequencial numbers (in any order)..a password must not contain the most.'),
+  );    
+  
+
+  $form['passwordStrength']['passwordStrength_minCons'] = array(
+  		'#type' => 'textfield',
+  		'#title' => t('minCons'),
+  		'#default_value' => variable_get('passwordStrength_minCons', ''),
+  		'#size' => 2,
+  		'#maxlength' => 2,
+  		'#description' => t('How many non sequencial numbers (in any order)..a password must not contain the most.'),
+  );
+    
+  
+  $form['passwordStrength']['passwordStrength_levenshtein'] = array(
+  		'#type' => 'textfield',
+  		'#title' => t('Levenshtein'),
+  		'#default_value' => variable_get('passwordStrength_levenshtein', '2'),
+  		'#size' => 2,
+  		'#maxlength' => 2,
+  		'#description' => t('levenshtein...'),
+  );
+  
+  
+  $form['passwordStrength']['passwordStrength_minLcs'] = array(
+  		'#type' => 'textfield',
+  		'#title' => t('minLcs'),
+  		'#default_value' => variable_get('passwordStrength_minLcs', '40'),
+  		'#size' => 3,
+  		'#maxlength' => 3,
+  		'#description' => t('minLCS..'),
+  );
+
+  
+  return system_settings_form($form);
+}
diff --git a/grnet_password_generator/grnet_password_generator.info b/grnet_password_generator/grnet_password_generator.info
new file mode 100755
index 0000000..2e65720
--- /dev/null
+++ b/grnet_password_generator/grnet_password_generator.info
@@ -0,0 +1,10 @@
+name = grnet Password Generator
+description = grnet Password Generator module
+core = "7.x"
+package = grnet
+; Information added by drupal.org packaging script on 2013-05-20
+version = "7.x-1.0"
+core = "7.x"
+project = "grnet_core"
+datestamp = "1369041918"
+scripts[] = js/script.js
\ No newline at end of file
diff --git a/grnet_password_generator/grnet_password_generator.module b/grnet_password_generator/grnet_password_generator.module
new file mode 100755
index 0000000..4a50a3a
--- /dev/null
+++ b/grnet_password_generator/grnet_password_generator.module
@@ -0,0 +1,45 @@
+<?php
+  
+function grnet_password_generator_menu() {
+  
+	$items['admin/config/grnet/password_strength'] = array(
+				'title' => 'grnet Password Strength',
+				'description' => 'Configure grnet Password Strength Settings',
+				'page callback' => 'drupal_get_form',
+				'page arguments' => array('grnet_password_generator_admin_settings'),
+				'access arguments' => array('administer cas'),
+				'type' => MENU_NORMAL_ITEM,
+				'file' => 'grnet_password_generator.admin.inc',
+	);
+	
+	$items['admin/config/grnet/password_strength/settings'] = array(
+				'title' => 'grnet Password Strength',
+				'type' => MENU_DEFAULT_LOCAL_TASK,
+				'weight' => -10,
+	);
+	
+	
+	
+  $items['grnet/password_generator/check_strength'] = array(
+  		'title' => 'Check Password Strength',
+  		'page callback' => 'grnet_password_generator_check_password_strength',
+  		'access arguments' => array('access content'),
+  		'type' => MENU_CALLBACK
+  );  
+  
+  return $items;
+}
+function grnet_password_generator_generate_passes() {
+	include_once(DRUPAL_ROOT.'/'.drupal_get_path('module', 'grnet_password_generator').'/lib/grnet_password_generator_library.inc');
+	
+	$passes = array();
+	for($i = 1; $i <= 8; $i++) {
+		$passes[] = trim(grnet_password_generator_uoa_generate_password());
+	}
+	return $passes;
+}
+function grnet_password_generator_check_password_strength($password = null,$hide = null){
+	
+	include_once(DRUPAL_ROOT.'/'.drupal_get_path('module', 'grnet_password_generator').'/lib/grnet_password_generator_check_strength.inc');
+	return $internal_output;
+}
diff --git a/grnet_password_generator/js/script.js b/grnet_password_generator/js/script.js
new file mode 100644
index 0000000..b187141
--- /dev/null
+++ b/grnet_password_generator/js/script.js
@@ -0,0 +1,22 @@
+(function ($) {
+	
+	$(document).ready(function() {
+
+	  $('#generate_password').click(function() { 
+		    $.ajax({url: "http://hidm.collab/password_generator", success: function(result){
+		        $("#passwords").html(result);
+		    }});
+		    
+	  });
+	  
+	  
+	  $('#passwords').click(function() { 
+		   $("#edit-field-ldapregistr-username-und-0-value").val($('#passwords').html());
+		    
+	  });
+	  
+	  
+
+	});
+
+})(jQuery);
\ No newline at end of file
diff --git a/grnet_password_generator/lib/grnet_password_generator_check_strength.inc b/grnet_password_generator/lib/grnet_password_generator_check_strength.inc
new file mode 100644
index 0000000..7c31a26
--- /dev/null
+++ b/grnet_password_generator/lib/grnet_password_generator_check_strength.inc
@@ -0,0 +1,97 @@
+<?php
+	
+	
+	include_once(DRUPAL_ROOT.'/'.drupal_get_path('module', 'grnet_password_generator').'/lib/password_strength_check/functions.inc.php');
+	include_once(DRUPAL_ROOT.'/'.drupal_get_path('module', 'grnet_password_generator').'/lib/password_strength_check/password_strength_check_collection.class.php');
+	include_once(DRUPAL_ROOT.'/'.drupal_get_path('module', 'grnet_password_generator').'/lib/password_strength_check/password_strength_check.class.php');
+	
+	
+	$language = "el_GR";
+	
+	putenv("LANG=$language");
+	putenv("LANGUAGE=$language");
+	putenv("LC_ALL=$language");
+	putenv("LC_MESSAGES=$language");
+	setlocale(LC_ALL, $language.'.UTF-8');
+	setlocale(LC_MESSAGES, $language.'.UTF-8');
+	
+	
+	$domain = "password_strength_check";
+	bindtextdomain($domain, "../locale");
+	bind_textdomain_codeset($domain, 'UTF-8');
+	
+	textdomain($domain);
+	
+	
+	 
+	$username = $_POST['username'];
+	if($_POST['pwd']<>''){
+		$password = $_POST['pwd'];
+	}
+		
+
+	
+	$all_messages = array(
+			'consecutivenumbersTest'=>'valid',
+			'similarityTest'=>'valid',
+			'regexpTest'=>'valid',
+			'lengthTest'=>'valid',
+			'uniqueTest'=>'valid',
+	);
+	
+
+	
+	$password_strength_policy = array(
+			'PW_CHECK_LEVENSHTEIN' => variable_get('passwordStrength_levenshtein', '2'),
+			'PW_CHECK_MIN_LEN' => variable_get('passwordStrength_minLen', '6'),
+			'PW_CHECK_MIN_UNIQ' => variable_get('passwordStrength_minUniq', '5'),
+			'PW_CHECK_MIN_LCS' => variable_get('passwordStrength_minLcs', '40'),
+			'PW_CHECK_MIN_NON_ALPHA' => variable_get('passwordStrength_nonAlpha', '2'),
+			'PW_MIN_CONSECUTIVE_NUMBERS' => variable_get('passwordStrength_minCons', '3'),
+	);
+
+
+	$check = new passwordStrengthCheck($password_strength_policy);
+
+
+	$tests  = array('regexpTest', 'consecutivenumbersTest', 'lengthTest', 'similarityTest', 'uniqueTest');
+
+	//run tests
+	$check->runTests(array($username, $password), $tests);
+
+	$successful_tests_count = $check->successfulTestsCount();
+	$enabled_tests_count = $check->enabledTestsCount();
+  
+  if($successful_tests_count == $enabled_tests_count) {
+
+  	if($hide){
+  		$internal_output =  true;
+  	}else{
+  		echo '0';
+  	}
+    
+    
+  } else{
+	  
+		$failedtests = $check->retrieveFailedTests();
+
+		foreach($failedtests as $ftest){
+		  $all_messages[$ftest] = 'not_valid';
+		}
+
+	  $actual_result = array();
+	  foreach($all_messages as $key=>$message){
+		  $actual_result[] = array('tname'=>$key, 'tstatus'=>$message);
+	  }
+
+	  if($hide){
+			$internal_output =  false;
+	  }else{
+	  	echo json_encode($actual_result);
+	  }
+
+  }
+
+
+
+?>
diff --git a/grnet_password_generator/lib/grnet_password_generator_check_strength.inc~ b/grnet_password_generator/lib/grnet_password_generator_check_strength.inc~
new file mode 100644
index 0000000..20a1aec
--- /dev/null
+++ b/grnet_password_generator/lib/grnet_password_generator_check_strength.inc~
@@ -0,0 +1,112 @@
+<?php
+	
+	//require '../vendor/autoload.php';
+	
+	include_once(DRUPAL_ROOT.'/'.drupal_get_path('module', 'grnet_password_generator').'/lib/password_strength_check/functions.inc.php');
+	include_once(DRUPAL_ROOT.'/'.drupal_get_path('module', 'grnet_password_generator').'/lib/password_strength_check/password_strength_check_collection.class.php');
+	include_once(DRUPAL_ROOT.'/'.drupal_get_path('module', 'grnet_password_generator').'/lib/password_strength_check/password_strength_check.class.php');
+	
+	
+	$language = "el_GR";
+	
+	putenv("LANG=$language");
+	putenv("LANGUAGE=$language");
+	putenv("LC_ALL=$language");
+	putenv("LC_MESSAGES=$language");
+	setlocale(LC_ALL, $language.'.UTF-8');
+	setlocale(LC_MESSAGES, $language.'.UTF-8');
+	
+	
+	$domain = "password_strength_check";
+	bindtextdomain($domain, "../locale");
+	bind_textdomain_codeset($domain, 'UTF-8');
+	
+	textdomain($domain);
+	
+	
+	 
+	$username = $_POST['username'];
+	if($_POST['pwd']<>''){
+		$password = $_POST['pwd'];
+	}
+		
+	
+	
+	//$ins = Flight::get('ins');
+	//$username = 'mitsos';
+	//$password  = 'alek'; 
+	
+	$all_messages = array(
+			'consecutivenumbersTest'=>'valid',
+			'similarityTest'=>'valid',
+			'regexpTest'=>'valid',
+			'lengthTest'=>'valid',
+			'uniqueTest'=>'valid',
+	);
+	
+	/*
+	$conf= new Zend\Config\Config(include '../config/config.php');
+	//get policy and test from config
+	$password_strength_policy = $conf->institution[$ins]->password_strength_policy->toArray();
+	*/
+	
+	
+	$password_strength_policy = array(
+			'PW_CHECK_LEVENSHTEIN' => variable_get('passwordStrength_levenshtein', '2'),
+			'PW_CHECK_MIN_LEN' => variable_get('passwordStrength_minLen', '6'),
+			'PW_CHECK_MIN_UNIQ' => variable_get('passwordStrength_minUniq', '5'),
+			'PW_CHECK_MIN_LCS' => variable_get('passwordStrength_minLcs', '40'),
+			'PW_CHECK_MIN_NON_ALPHA' => variable_get('passwordStrength_nonAlpha', '2'),
+			'PW_MIN_CONSECUTIVE_NUMBERS' => variable_get('passwordStrength_minCons', '3'),
+	);
+
+
+	$check = new passwordStrengthCheck($password_strength_policy);
+	//$tests  = $conf->institution[$ins]->password_strength_tests->toArray();
+
+	$tests  = array('regexpTest', 'consecutivenumbersTest', 'lengthTest', 'similarityTest', 'uniqueTest');
+
+	//run tests
+	$check->runTests(array($username, $password), $tests);
+
+	$successful_tests_count = $check->successfulTestsCount();
+	$enabled_tests_count = $check->enabledTestsCount();
+  
+  if($successful_tests_count == $enabled_tests_count) {
+  	// An i klisi einai server side..min epistrepseis..tipota..
+  	if($hide){
+  		$internal_output =  true;
+  	}else{
+  		echo '0';
+  	}
+    
+    
+  } else{
+	  
+		$failedtests = $check->retrieveFailedTests();
+	    //var_dump($failedtests); 
+		foreach($failedtests as $ftest){
+		  $all_messages[$ftest] = 'not_valid';
+		}
+
+	  $actual_result = array();
+	  foreach($all_messages as $key=>$message){
+		  $actual_result[] = array('tname'=>$key, 'tstatus'=>$message);
+	  }
+  
+	  //var_dump($actual_result);
+	  
+	  // An i klisi einai server side..min epistrepseis..tipota..
+	  if($hide){
+			$internal_output =  false;
+	  }else{
+	  	echo json_encode($actual_result);
+	  }
+    //$failed_tests_msgs = $check->retrieveFailedTestsMessages();
+    //$message  = implode( "</br>", $failed_tests_msgs);
+    //echo $message;
+  }
+
+
+
+?>
diff --git a/grnet_password_generator/lib/grnet_password_generator_library.inc b/grnet_password_generator/lib/grnet_password_generator_library.inc
new file mode 100644
index 0000000..df28396
--- /dev/null
+++ b/grnet_password_generator/lib/grnet_password_generator_library.inc
@@ -0,0 +1,132 @@
+<?php
+
+
+function grnet_password_generator_uoa_generate_password() {
+    
+    $easy = _password_generate_really_easy_to_say();
+
+    $hard_len = rand(2,3);
+    $hard = _password_generate_random($hard_len, false, true, false);
+   
+    if($flag = rand(0,1)) {
+        return $easy.$hard;
+    } else {
+        return $hard.$easy;
+    }
+}
+
+/**
+ * Nice function that generates an easy-to-pronounce string.
+ * @author stef
+ */
+function _password_generate_really_easy_to_say() {
+    $makepass="";
+    $syllables="er,in,tia,wol,fe,pre,vet,jo,nes,al,len,son,cha,ir,ler,bo,ok,tio,nar,sim,ple,bla,ten,toe,cho,co,lat,spe,ak,er,po,c
+o,lor,pen,cil,li,ght,wh,at,the,he,ck,is,mam,bo,no,fi,ve,any,way,pol,iti,cs,ra,dio,sou,rce,sea,rch,pa,per,com,bo,sp,eak,st,fi,rst,
+gr,oup,boy,ea,gle,tr,ail,bi,ble,brb,pri,dee,kay,en,be,se";
+    $syllable_array=explode(",", $syllables);
+    srand((double)microtime()*1000000);
+    while(strlen($makepass)<8) {
+        if (rand()%10 == 1) {
+            $makepass .= sprintf("%0.0f",(rand()%50)+1);
+        } else {
+            $makepass .= sprintf("%s",$syllable_array[rand()%62]);
+        }
+    }
+    return(substr(str_replace("\n", '', $makepass),0,8));
+}
+
+function _password_generate_easy_to_say($p="", $l=8, $f=4) {
+  $d=array('a'=>'ntrsldicmzp','b'=>'euloayribsj','c'=>'oheaktirulc',
+       'd'=>'eiorasydlun','e'=>'nrdsaltevcm','f'=>'ioreafltuyc',
+       'g'=>'aeohrilunsg','h'=>'eiaotruykms','i'=>'ntscmledorg',
+       'j'=>'ueoairhjklm','k'=>'eiyonashlus','l'=>'eoiyaldsfut',
+       'm'=>'eaoipsuybmn','n'=>'goeditscayl','o'=>'fnrzmwtovls',
+       'p'=>'earolipuths','q'=>'uuuuaecdfok','r'=>'eoiastydgnm',
+       's'=>'eothisakpuc','t'=>'hoeiarzsuly','u'=>'trsnlpgecim',
+       'v'=>'eiaosnykrlu','w'=>'aiheonrsldw','x'=>'ptciaeuohnq',
+       'y'=>'oesitabpmwc','z'=>'eaiozlryhmt');
+  $a=range('a','z');
+  $l%=50; $f%=11;
+  $p=strtolower(ereg_replace("[^a-zA-Z]","",substr($p,0,$l-1))) or
+  $p=$a[rand(0,sizeof($a)-1)];
+  while(strlen($p)<$l) {
+    $ff = $f;
+    while(substr_count($p,substr($p,strlen($p)-1,1).
+      ($k=substr($d[substr($p,strlen($p)-1,1)],rand(0,$ff%11),1))))
+    if(++$ff>10) break;
+    $p.=$k;
+  }
+  return $p;
+}
+
+function _password_generate_random($length = 8, $use_mix = false, $use_num = true, $use_let = true)    {
+    $allowable_characters = "ABCDEFGHJKLMNPQRSTUVWXYZabcdefghjklmnpqrstuvwxyz23456789";
+   
+    if ($use_mix && $use_num && $use_let)  {
+      $ps_st = 0;
+      $ps_len = strlen($allowable_characters);
+    }
+     
+    if (!$use_mix && $use_num && $use_let)  {
+      $ps_st = 24;
+      $ps_len = strlen($allowable_characters);
+    }
+ 
+    if ($use_mix && !$use_num && $use_let)  {
+      $ps_st = 0;
+      $ps_len = 47;
+    }
+ 
+    if ($use_mix && $use_num && !$use_let)  {
+      $ps_st = 48;
+      $ps_len = strlen($allowable_characters);
+    }
+ 
+    if (!$use_mix && !$use_num && $use_let)  {
+      $ps_st = 24;
+      $ps_len = 47;
+    }
+ 
+    if (!$use_mix && $use_num && !$use_let)  {
+      $ps_st = 48;
+      $ps_len = strlen($allowable_characters);
+    }
+ 
+    if ($use_mix && !$use_num && !$use_let)  {
+      $ps_st = 0;
+      $ps_len = 1;
+    }
+    
+    if (!$use_mix && !$use_num && !$use_let)  {
+      $ps_st = 0;
+      $ps_len = 1;
+    }
+    
+    mt_srand((double)microtime()*1000000);
+ 
+    $pass = "";
+ 
+    for($i = 0; $i < $length; $i++) {
+        $pass .= $allowable_characters[mt_rand($ps_st, $ps_len - 1)];
+    }
+    
+    return $pass;
+}
+
+function _password_generate_totally_random($length=16){
+    mt_srand((double)microtime()*1000000);
+    $newstring="";
+
+    if($length>0){
+        while(strlen($newstring)<$length){
+            switch(mt_rand(1,3)){
+                case 1: $newstring.=chr(mt_rand(48,57)); break;  // 0-9
+                case 2: $newstring.=chr(mt_rand(65,90)); break;  // A-Z
+                case 3: $newstring.=chr(mt_rand(97,122)); break; // a-z
+            }
+        }
+    }
+    return $newstring;
+}
+
diff --git a/grnet_password_generator/lib/grnet_password_generator_library.inc~ b/grnet_password_generator/lib/grnet_password_generator_library.inc~
new file mode 100644
index 0000000..7fc0e0b
--- /dev/null
+++ b/grnet_password_generator/lib/grnet_password_generator_library.inc~
@@ -0,0 +1,173 @@
+<?php
+/**
+ * Password Generator.
+ *
+ * This file includes various password generation algorithms.
+ *
+ * @author Alexandros Vellis <avel@noc.uoa.gr>
+ * @author Stefanos Stamatis <stef@noc.uoa.gr>
+ * @package components
+ * @subpackage password_generator
+ * @version $Id: password_generator.inc.php 2627 2008-06-05 08:01:34Z avel $
+ */
+
+/**
+ * Katsika Generate Password wrapper.
+ * This will reflect the current generator that is in use, or combine different
+ * generators.
+ *
+ * @return string
+ */
+
+
+function grnet_password_generator_uoa_generate_password() {
+    // 1) generate an easy-to-say string
+    $easy = _password_generate_really_easy_to_say();
+    // 2) generate a totally random part
+    $hard_len = rand(2,3);
+    $hard = _password_generate_random($hard_len, false, true, false);
+    // 3) Concatenate them
+    if($flag = rand(0,1)) {
+        return $easy.$hard;
+    } else {
+        return $hard.$easy;
+    }
+}
+
+/**
+ * Nice function that generates an easy-to-pronounce string.
+ * @author stef
+ */
+function _password_generate_really_easy_to_say() {
+    $makepass="";
+    $syllables="er,in,tia,wol,fe,pre,vet,jo,nes,al,len,son,cha,ir,ler,bo,ok,tio,nar,sim,ple,bla,ten,toe,cho,co,lat,spe,ak,er,po,c
+o,lor,pen,cil,li,ght,wh,at,the,he,ck,is,mam,bo,no,fi,ve,any,way,pol,iti,cs,ra,dio,sou,rce,sea,rch,pa,per,com,bo,sp,eak,st,fi,rst,
+gr,oup,boy,ea,gle,tr,ail,bi,ble,brb,pri,dee,kay,en,be,se";
+    $syllable_array=explode(",", $syllables);
+    srand((double)microtime()*1000000);
+    while(strlen($makepass)<8) {
+        if (rand()%10 == 1) {
+            $makepass .= sprintf("%0.0f",(rand()%50)+1);
+        } else {
+            $makepass .= sprintf("%s",$syllable_array[rand()%62]);
+        }
+    }
+    return(substr(str_replace("\n", '', $makepass),0,8));
+}
+
+/**
+ * Gen_Password -- Easy-to-Say passwords generator
+ *
+ * @param $p string Predefined part of password ("" upto 10 chars but less than $l)
+ * @param $l int - password length (1-49, def: 8)
+ * @param $f int Fuzzy (0-10, def: 3)
+ * @return string
+ * @author Ell Gree <ellgree@gmx.net>
+ */
+function _password_generate_easy_to_say($p="", $l=8, $f=4) {
+  $d=array('a'=>'ntrsldicmzp','b'=>'euloayribsj','c'=>'oheaktirulc',
+       'd'=>'eiorasydlun','e'=>'nrdsaltevcm','f'=>'ioreafltuyc',
+       'g'=>'aeohrilunsg','h'=>'eiaotruykms','i'=>'ntscmledorg',
+       'j'=>'ueoairhjklm','k'=>'eiyonashlus','l'=>'eoiyaldsfut',
+       'm'=>'eaoipsuybmn','n'=>'goeditscayl','o'=>'fnrzmwtovls',
+       'p'=>'earolipuths','q'=>'uuuuaecdfok','r'=>'eoiastydgnm',
+       's'=>'eothisakpuc','t'=>'hoeiarzsuly','u'=>'trsnlpgecim',
+       'v'=>'eiaosnykrlu','w'=>'aiheonrsldw','x'=>'ptciaeuohnq',
+       'y'=>'oesitabpmwc','z'=>'eaiozlryhmt');
+  $a=range('a','z');
+  $l%=50; $f%=11;
+  $p=strtolower(ereg_replace("[^a-zA-Z]","",substr($p,0,$l-1))) or
+  $p=$a[rand(0,sizeof($a)-1)];
+  while(strlen($p)<$l) {
+    $ff = $f;
+    while(substr_count($p,substr($p,strlen($p)-1,1).
+      ($k=substr($d[substr($p,strlen($p)-1,1)],rand(0,$ff%11),1))))
+    if(++$ff>10) break;
+    $p.=$k;
+  }
+  return $p;
+}
+
+
+/**
+ * Generate password based on given params.
+ *
+ * Originally written by:
+ * hitech-password.php - a PHP Message board script
+ * (c) Hitech Scripts 2003
+ * For more information, visit http://www.hitech-scripts.com
+ * @return string
+ */
+function _password_generate_random($length = 8, $use_mix = false, $use_num = true, $use_let = true)    {
+    $allowable_characters = "ABCDEFGHJKLMNPQRSTUVWXYZabcdefghjklmnpqrstuvwxyz23456789";
+   
+    if ($use_mix && $use_num && $use_let)  {
+      $ps_st = 0;
+      $ps_len = strlen($allowable_characters);
+    }
+     
+    if (!$use_mix && $use_num && $use_let)  {
+      $ps_st = 24;
+      $ps_len = strlen($allowable_characters);
+    }
+ 
+    if ($use_mix && !$use_num && $use_let)  {
+      $ps_st = 0;
+      $ps_len = 47;
+    }
+ 
+    if ($use_mix && $use_num && !$use_let)  {
+      $ps_st = 48;
+      $ps_len = strlen($allowable_characters);
+    }
+ 
+    if (!$use_mix && !$use_num && $use_let)  {
+      $ps_st = 24;
+      $ps_len = 47;
+    }
+ 
+    if (!$use_mix && $use_num && !$use_let)  {
+      $ps_st = 48;
+      $ps_len = strlen($allowable_characters);
+    }
+ 
+    if ($use_mix && !$use_num && !$use_let)  {
+      $ps_st = 0;
+      $ps_len = 1;
+    }
+    
+    if (!$use_mix && !$use_num && !$use_let)  {
+      $ps_st = 0;
+      $ps_len = 1;
+    }
+    
+    mt_srand((double)microtime()*1000000);
+ 
+    $pass = "";
+ 
+    for($i = 0; $i < $length; $i++) {
+        $pass .= $allowable_characters[mt_rand($ps_st, $ps_len - 1)];
+    }
+    
+    return $pass;
+}
+
+/**
+ * Totally random string or something. (probably useless and obsolete).
+ */
+function _password_generate_totally_random($length=16){
+    mt_srand((double)microtime()*1000000);
+    $newstring="";
+
+    if($length>0){
+        while(strlen($newstring)<$length){
+            switch(mt_rand(1,3)){
+                case 1: $newstring.=chr(mt_rand(48,57)); break;  // 0-9
+                case 2: $newstring.=chr(mt_rand(65,90)); break;  // A-Z
+                case 3: $newstring.=chr(mt_rand(97,122)); break; // a-z
+            }
+        }
+    }
+    return $newstring;
+}
+
diff --git a/grnet_password_generator/lib/password_strength_check/functions.inc.php b/grnet_password_generator/lib/password_strength_check/functions.inc.php
new file mode 100644
index 0000000..fe4299b
--- /dev/null
+++ b/grnet_password_generator/lib/password_strength_check/functions.inc.php
@@ -0,0 +1,58 @@
+<?php
+/**
+ * Support functions for password strength checking.
+ *
+ * @package components
+ * @subpackage password_strength_check
+ * @version $Id: functions.inc.php 5593 2012-03-13 12:42:25Z avel $
+ */
+/**
+ * LCS functions ripped from the php manual.
+ *
+ * @author georgesk at hotmail dot com
+ */
+function LCS_Length($s1, $s2)
+{
+  $m = strlen($s1);
+  $n = strlen($s2);
+  $LCS_Length_Table = array(array(128),array(128)); 
+  
+  for($i=1; $i <= $m; $i++) $LCS_Length_Table[$i][0]=0;
+  for($j=0; $j <= $n; $j++) $LCS_Length_Table[0][$j]=0;
+  for ($i=1; $i <= $m; $i++) {
+   for ($j=1; $j <= $n; $j++) {
+     if ($s1[$i-1]==$s2[$j-1])
+       $LCS_Length_Table[$i][$j] = $LCS_Length_Table[$i-1][$j-1] + 1;
+     else if ($LCS_Length_Table[$i-1][$j] >= $LCS_Length_Table[$i][$j-1])
+       $LCS_Length_Table[$i][$j] = $LCS_Length_Table[$i-1][$j];
+     else
+       $LCS_Length_Table[$i][$j] = $LCS_Length_Table[$i][$j-1];
+   }
+  }
+  return $LCS_Length_Table[$m][$n];
+}
+/**
+ * LCS functions ripped from the php manual.
+ */
+function str_lcsfix($s)
+{
+  $s = str_replace(" ","",$s);
+  $s = preg_replace("/[éèêëËÊÉÈ]/","e", $s);
+  $s = preg_replace("/[àáâãäåÄÅÃÂÁÀ]/","a", $s);
+  $s = preg_replace("/[ìíîïÏÎÍÌ]/","i", $s);
+  $s = preg_replace("/[òóôõöÖÕÔÓ]/","o", $s);
+  $s = preg_replace("/[ÜÛÚÙùúûü]/","u", $s);
+  $s = preg_replace("/[Ç]/","c", $s);
+  return $s;
+}
+  
+/**
+ * LCS functions ripped from the php manual.
+ */
+function get_lcs($s1, $s2)
+{
+  $s1 = strtolower(str_lcsfix($s1));
+  $s2 = strtolower(str_lcsfix($s2));
+  $ms = (strlen($s1) + strlen($s2)) / 2;
+  return (($lcs*100)/$ms);
+}
diff --git a/grnet_password_generator/lib/password_strength_check/password_strength_check.class.php b/grnet_password_generator/lib/password_strength_check/password_strength_check.class.php
new file mode 100644
index 0000000..3eff279
--- /dev/null
+++ b/grnet_password_generator/lib/password_strength_check/password_strength_check.class.php
@@ -0,0 +1,152 @@
+<?php
+
+class passwordStrengthCheck extends passwordStrengthCheckCollection
+{
+   
+    private $_pwd_regexps = array(); 
+    private $_pwd_regexps_counts = array(); 
+  
+    private $_uid_regexps = array();
+    
+    private $_messages = array();
+    private $PW_CHECK_LEVENSHTEIN = 2;
+    private $PW_CHECK_MIN_LEN = 6;
+    private $PW_CHECK_MIN_UNIQ = 5;
+    private $PW_CHECK_MIN_LCS = 40;
+    private $PW_CHECK_MIN_NON_ALPHA = 2;
+    private $PW_MIN_CONSECUTIVE_NUMBERS = 3;
+  
+    function __construct($config)
+    {
+        $prev_text_domain = textdomain(null);
+        textdomain('password_strength_check');
+        
+        $arr = array('PW_CHECK_LEVENSHTEIN','PW_CHECK_MIN_LEN','PW_CHECK_MIN_UNIQ','PW_CHECK_MIN_LCS', 'PW_CHECK_MIN_NON_ALPHA');
+        foreach($arr as $a) {
+            if(isset($config[$a])) {
+                $this->$a = $config[$a];
+            } else {
+                $this->$a = false;
+            }
+        }
+        $this->_pwd_regexps['/[^0-9]/'] = dgettext('password_strength_check', "The password must not consist only of numbers");
+        if($this->PW_CHECK_MIN_NON_ALPHA > 1) {
+            
+            $this->_pwd_regexps_counts['/[^A-z]/'] = sprintf(
+                dgettext('password_strength_check', "At least %s non-alpha characters (numbers or symbols), must appear in password"),
+                $this->PW_CHECK_MIN_NON_ALPHA
+            );
+        } elseif($this->PW_CHECK_MIN_NON_ALPHA == 1){
+            $this->_pwd_regexps['/[^A-z]/'] = dgettext('password_strength_check', "At least one non-alpha character, i.e. number or symbol, must appear in password");
+            
+        }
+        if($this->PW_CHECK_MIN_NON_ALPHA > 1) {
+            $this->_messages['regexp'] = array(
+                sprintf( _("At least %s non-alpha characters (numbers or symbols), must appear in password"), $this->PW_CHECK_MIN_NON_ALPHA),
+                sprintf( _("At least %s non-alpha characters (numbers or symbols), must appear in password"), $this->PW_CHECK_MIN_NON_ALPHA)
+            );
+        } elseif($this->PW_CHECK_MIN_NON_ALPHA == 1){
+            $this->_messages['regexp'] = array(
+                _("Password must contain a number or symbol."),
+                ''
+            );
+        }
+        $this->_messages['length'] = array(
+            sprintf( _("Password must be at least %s characters long."), $this->PW_CHECK_MIN_LEN) ,
+            sprintf( _("Password must be at least %s characters long."), $this->PW_CHECK_MIN_LEN)
+        );
+        $this->_messages['unique'] = array(
+            sprintf( _("Password must have at least %s different characters."), $this->PW_CHECK_MIN_UNIQ) ,
+            sprintf( _("Password must have at least %s different characters."), $this->PW_CHECK_MIN_UNIQ)
+        );
+        $this->_messages['similarity'] = array(
+            _("Password should not be very similar to the username."),
+            ''
+        );
+        $this->_messages['consecutivenumbers'] = array(
+            _("Password should not contain more than 3 ascending or descending numbers in succession") ,
+            _("Password should not contain more than 3 ascending or descending numbers in succession")
+        );
+        
+        if($prev_text_domain) textdomain($prev_text_domain);
+    }
+  
+    function regexpTest($data) {
+        foreach ($this->_pwd_regexps as $exp => $msg) {
+            if( preg_match ($exp, $data[1]) == FALSE)
+                return $msg;
+        }
+        foreach ($this->_pwd_regexps_counts as $exp => $msg) {
+            $ret = preg_match_all($exp, $data[1]);
+            if($ret < $this->PW_CHECK_MIN_NON_ALPHA) {
+                return $msg;
+            }
+        }
+        foreach ($this->_uid_regexps as $exp => $msg) {
+            if( preg_match ($exp, $data[0]) == FALSE) 
+                return $msg;
+        }
+    }
+   
+    function lengthTest($data) {
+        if ($this->PW_CHECK_MIN_LEN and strlen($data[1]) < $this->PW_CHECK_MIN_LEN) {
+            return $this->_messages['length'][1];
+        }
+    }
+
+    function uniqueTest($data) {
+        if ($this->PW_CHECK_MIN_UNIQ and strlen (count_chars ($data[1], 3)) < $this->PW_CHECK_MIN_UNIQ) {
+            return $this->_messages['unique'][1];
+        }
+    }
+  
+    function similarityTest($data) {
+        if ($this->PW_CHECK_LEVENSHTEIN and levenshtein($data[0], $data[1]) < $this->PW_CHECK_LEVENSHTEIN) {
+            return dgettext('password_strength_check', "Password should not be too much like the username.");
+        }
+        if ($this->PW_CHECK_MIN_LCS and get_lcs($data[0], $data[1]) >= $this->PW_CHECK_MIN_LCS) {
+            return sprintf( dgettext('password_strength_check', "Password should not contain more than %s percent of Username."),
+                $this->PW_CHECK_MIN_LCS);
+        }
+    }
+  
+    function consecutivenumbersTest($data)
+    {
+        if(!$this->PW_MIN_CONSECUTIVE_NUMBERS) {
+            return;
+        }
+        $flag = 0;
+        $prev = false;
+        $sign = 0;
+        
+        for($i=0; $i<strlen((string)($data[1])); $i++) {
+            $cur = $i;
+            if(is_numeric($data[1][$i])) {
+                if($flag && $prev !== false) {
+                    if(!$sign) {
+                        if(abs((int)$data[1][$i] - (int)$prev) == 1 ){
+                            $sign = (int)$data[1][$i] - (int)$prev;
+                        }
+                    }
+                    if($sign && ((int)$data[1][$i] - (int)$prev == $sign)) {
+                        $flag++;
+                        if($flag >= $this->PW_MIN_CONSECUTIVE_NUMBERS) {
+                            return sprintf($this->_messages['consecutivenumbers'][1], $flag);
+                        }
+                    } else {
+                        $flag = 0;
+                        $sign = 0;
+                        $i--;
+                    }
+                } else {
+                    $flag++;
+                }
+                $prev = $data[1][$cur];
+            } else {
+                $flag = 0;
+                $sign = 0;
+                $prev = false;
+            }
+        }
+    }
+}
diff --git a/grnet_password_generator/lib/password_strength_check/password_strength_check.class.php~ b/grnet_password_generator/lib/password_strength_check/password_strength_check.class.php~
new file mode 100644
index 0000000..150f67e
--- /dev/null
+++ b/grnet_password_generator/lib/password_strength_check/password_strength_check.class.php~
@@ -0,0 +1,202 @@
+<?php
+/**
+ * Class for checking the strength of a password.
+ *
+ * @package components
+ * @subpackage password_strength_check
+ * @version $Id: password_strength_check.class.php 5892 2012-10-31 11:05:29Z avel $
+ * @author Kostas Koukopoulos <kouk@noc.uoa.gr>
+ * @author Alexandros Vellis <avel@noc.uoa.gr>
+ */
+/**
+ * The checkpassword class performs a series of strength checks on a password
+ * string.
+ */
+class passwordStrengthCheck extends passwordStrengthCheckCollection
+{
+    /**
+     * @var array Active regural expression checks for passwords.
+     */
+    private $_pwd_regexps = array(); 
+    private $_pwd_regexps_counts = array(); 
+    /**
+     * @var array Active regural expression checks for username.
+     */
+    private $_uid_regexps = array();
+    
+    private $_messages = array();
+    private $PW_CHECK_LEVENSHTEIN = 2;
+    private $PW_CHECK_MIN_LEN = 6;
+    private $PW_CHECK_MIN_UNIQ = 5;
+    private $PW_CHECK_MIN_LCS = 40;
+    private $PW_CHECK_MIN_NON_ALPHA = 2;
+    private $PW_MIN_CONSECUTIVE_NUMBERS = 3;
+    /**
+     * Constructor function that initializes the environment & arguments for the tests.
+     * @param $config array Injected configuration
+     */
+    function __construct($config)
+    {
+        $prev_text_domain = textdomain(null);
+        textdomain('password_strength_check');
+        
+        $arr = array('PW_CHECK_LEVENSHTEIN','PW_CHECK_MIN_LEN','PW_CHECK_MIN_UNIQ','PW_CHECK_MIN_LCS', 'PW_CHECK_MIN_NON_ALPHA');
+        foreach($arr as $a) {
+            if(isset($config[$a])) {
+                $this->$a = $config[$a];
+            } else {
+                $this->$a = false;
+            }
+        }
+        $this->_pwd_regexps['/[^0-9]/'] = dgettext('password_strength_check', "The password must not consist only of numbers");
+        if($this->PW_CHECK_MIN_NON_ALPHA > 1) {
+            
+            $this->_pwd_regexps_counts['/[^A-z]/'] = sprintf(
+                dgettext('password_strength_check', "At least %s non-alpha characters (numbers or symbols), must appear in password"),
+                $this->PW_CHECK_MIN_NON_ALPHA
+            );
+        } elseif($this->PW_CHECK_MIN_NON_ALPHA == 1){
+            $this->_pwd_regexps['/[^A-z]/'] = dgettext('password_strength_check', "At least one non-alpha character, i.e. number or symbol, must appear in password");
+            
+        }
+        if($this->PW_CHECK_MIN_NON_ALPHA > 1) {
+            $this->_messages['regexp'] = array(
+                sprintf( _("At least %s non-alpha characters (numbers or symbols), must appear in password"), $this->PW_CHECK_MIN_NON_ALPHA),
+                sprintf( _("At least %s non-alpha characters (numbers or symbols), must appear in password"), $this->PW_CHECK_MIN_NON_ALPHA)
+            );
+        } elseif($this->PW_CHECK_MIN_NON_ALPHA == 1){
+            $this->_messages['regexp'] = array(
+                _("Password must contain a number or symbol."),
+                ''
+            );
+        }
+        $this->_messages['length'] = array(
+            sprintf( _("Password must be at least %s characters long."), $this->PW_CHECK_MIN_LEN) ,
+            sprintf( _("Password must be at least %s characters long."), $this->PW_CHECK_MIN_LEN)
+        );
+        $this->_messages['unique'] = array(
+            sprintf( _("Password must have at least %s different characters."), $this->PW_CHECK_MIN_UNIQ) ,
+            sprintf( _("Password must have at least %s different characters."), $this->PW_CHECK_MIN_UNIQ)
+        );
+        $this->_messages['similarity'] = array(
+            _("Password should not be very similar to the username."),
+            ''
+        );
+        $this->_messages['consecutivenumbers'] = array(
+            _("Password should not contain more than 3 ascending or descending numbers in succession") ,
+            _("Password should not contain more than 3 ascending or descending numbers in succession")
+        );
+        
+        if($prev_text_domain) textdomain($prev_text_domain);
+    }
+    /**
+     * Regexp Check.
+     *
+     * @param array $data
+     * @return mixed An error message if there was a failure, or void on
+     * success.
+     */
+    function regexpTest($data) {
+        foreach ($this->_pwd_regexps as $exp => $msg) {
+            if( preg_match ($exp, $data[1]) == FALSE)
+                return $msg;
+        }
+        foreach ($this->_pwd_regexps_counts as $exp => $msg) {
+            $ret = preg_match_all($exp, $data[1]);
+            if($ret < $this->PW_CHECK_MIN_NON_ALPHA) {
+                return $msg;
+            }
+        }
+        foreach ($this->_uid_regexps as $exp => $msg) {
+            if( preg_match ($exp, $data[0]) == FALSE) 
+                return $msg;
+        }
+    }
+    /**
+     * Length Test
+     *
+     * @param array $data
+     * @return mixed An error message if there was a failure, or void on
+     * success.
+     */
+    function lengthTest($data) {
+        if ($this->PW_CHECK_MIN_LEN and strlen($data[1]) < $this->PW_CHECK_MIN_LEN) {
+            return $this->_messages['length'][1];
+        }
+    }
+    /**
+     * Uniqueness test. Password should have at least some different
+     * characters.
+     *
+     * @param array $data
+     * @return mixed An error message if there was a failure, or void on
+     * success.
+     */
+    function uniqueTest($data) {
+        if ($this->PW_CHECK_MIN_UNIQ and strlen (count_chars ($data[1], 3)) < $this->PW_CHECK_MIN_UNIQ) {
+            return $this->_messages['unique'][1];
+        }
+    }
+    /**
+     * Similarity with username.
+     *
+     * @param array $data
+     * @return mixed An error message if there was a failure, or void on
+     * success.
+     */
+    function similarityTest($data) {
+        if ($this->PW_CHECK_LEVENSHTEIN and levenshtein($data[0], $data[1]) < $this->PW_CHECK_LEVENSHTEIN) {
+            return dgettext('password_strength_check', "Password should not be too much like the username.");
+        }
+        if ($this->PW_CHECK_MIN_LCS and get_lcs($data[0], $data[1]) >= $this->PW_CHECK_MIN_LCS) {
+            return sprintf( dgettext('password_strength_check', "Password should not contain more than %s percent of Username."),
+                $this->PW_CHECK_MIN_LCS);
+        }
+    }
+    /**
+     * Check if password has n consecutive numbers that are ascending or descending.
+     *
+     * @param array $data
+     * @return mixed An error message if there was a failure, or void on
+     * success.
+     */
+    function consecutivenumbersTest($data)
+    {
+        if(!$this->PW_MIN_CONSECUTIVE_NUMBERS) {
+            return;
+        }
+        $flag = 0;
+        $prev = false;
+        $sign = 0;
+        
+        for($i=0; $i<strlen((string)($data[1])); $i++) {
+            $cur = $i;
+            if(is_numeric($data[1][$i])) {
+                if($flag && $prev !== false) {
+                    if(!$sign) {
+                        if(abs((int)$data[1][$i] - (int)$prev) == 1 ){
+                            $sign = (int)$data[1][$i] - (int)$prev;
+                        }
+                    }
+                    if($sign && ((int)$data[1][$i] - (int)$prev == $sign)) {
+                        $flag++;
+                        if($flag >= $this->PW_MIN_CONSECUTIVE_NUMBERS) {
+                            return sprintf($this->_messages['consecutivenumbers'][1], $flag);
+                        }
+                    } else {
+                        $flag = 0;
+                        $sign = 0;
+                        $i--;
+                    }
+                } else {
+                    $flag++;
+                }
+                $prev = $data[1][$cur];
+            } else {
+                $flag = 0;
+                $sign = 0;
+                $prev = false;
+            }
+        }
+    }
+}
diff --git a/grnet_password_generator/lib/password_strength_check/password_strength_check_collection.class.php b/grnet_password_generator/lib/password_strength_check/password_strength_check_collection.class.php
new file mode 100644
index 0000000..3f49cfc
--- /dev/null
+++ b/grnet_password_generator/lib/password_strength_check/password_strength_check_collection.class.php
@@ -0,0 +1,80 @@
+<?php
+
+ */
+class passwordStrengthCheckCollection
+{
+    protected $_enabled_tests = array();
+    protected $_failed_tests = array();
+    protected $_failed_tests_msgs = array();
+    protected $_successful_tests = array();
+    
+    public function runTests($data, $desired_tests = true) {
+        $results = array();
+		if($desired_tests===true)
+			$this->_enabled_tests = $this->enabledTests($desired_tests);
+       else
+			$this->_enabled_tests = $desired_tests;
+        foreach($this->_enabled_tests as $test) {
+			
+            $tmp = $this->$test($data);
+            $results[$test] = $tmp;
+            if($tmp) {
+                $this->_failed_tests[] = $test;
+                $this->_failed_tests_msgs[] = $tmp;
+            } else {
+                $this->_successful_tests[] = $test;
+            }
+        }
+    }
+   
+    public function enabledTests($desired_tests) {
+        foreach(get_class_methods($this) as $test) {
+            if (strcasecmp(substr($test,-4), 'test') == 0 &&
+             ($desired_tests === true || in_array(strtolower($test),$desired_tests))) {
+                $_enabled_tests[] = $test;
+            }
+        }
+        return $_enabled_tests;
+    }
+    
+    public function allTestMessages($desired_tests = true) {
+        $all_messages = array();
+        $_enabled_tests = $this->enabledTests($desired_tests);
+        foreach($_enabled_tests as $test) {
+            $t = substr($test, 0, -4);
+            if(isset($this->messages[$t]) && !empty($this->messages[$t][0])) {
+                $all_messages[$test] = $this->messages[$t][0]; 
+            }
+        }
+        return $all_messages;
+    }
+    
+    public function retrieveEnabledTests() {
+        return $this->_enabled_tests;
+    }
+    
+    public function retrieveFailedTests() {
+        return $this->_failed_tests;
+    }
+   
+    public function retrieveFailedTestsMessages() {
+        return $this->_failed_tests_msgs;
+    }
+    
+   
+    public function retrieveSuccessfulTests() {
+        return $this->_successful_tests;
+    }
+   
+    public function enabledTestsCount() {
+        return count($this->_enabled_tests);
+    }
+   
+    public function failedTestsCount() {
+        return count($this->_failed_tests);
+    }
+   
+    public function successfulTestsCount() {
+        return count($this->_successful_tests);
+    }
+}
diff --git a/grnet_password_generator/lib/password_strength_check/password_strength_check_collection.class.php~ b/grnet_password_generator/lib/password_strength_check/password_strength_check_collection.class.php~
new file mode 100644
index 0000000..5755c3a
--- /dev/null
+++ b/grnet_password_generator/lib/password_strength_check/password_strength_check_collection.class.php~
@@ -0,0 +1,134 @@
+<?php
+/**
+ * Base class for running multiple tests with the same data.
+ *
+ * @package components
+ * @subpackage password_strength_check
+ * @version $Id: password_strength_check_collection.class.php 5593 2012-03-13 12:42:25Z avel $
+ * @author Kostas Koukopoulos <kouk@noc.uoa.gr>
+ * @author Alexandros Vellis <avel@noc.uoa.gr>
+ * @todo reinstate some OO private/public declarations after complete switch to PHP5... (see r2641)
+ */
+/**
+ * Base class for running multiple tests with the same data.
+ *
+ * Child classses must define functions that accept some form
+ * of test data and return NULL on success or an explanation of
+ * the error.
+ *
+ */
+class passwordStrengthCheckCollection
+{
+    protected $_enabled_tests = array();
+    protected $_failed_tests = array();
+    protected $_failed_tests_msgs = array();
+    protected $_successful_tests = array();
+    /**
+     * Function that runs all test methods with specified data.
+     * @param mixed $data
+     * @param mixed $desired_tests  Tests to enable. If true, all tests will be
+     *        on. Otherwise it will be an array of the test names to enable.
+     *        E.g. array('retypetest', 'lcstest')
+     *
+     * @return array An array of the tests that failed.
+     */
+    public function runTests($data, $desired_tests = true) {
+        $results = array();
+		if($desired_tests===true)
+			$this->_enabled_tests = $this->enabledTests($desired_tests);
+       else
+			$this->_enabled_tests = $desired_tests;
+        foreach($this->_enabled_tests as $test) {
+			
+            $tmp = $this->$test($data);
+            $results[$test] = $tmp;
+            if($tmp) {
+                $this->_failed_tests[] = $test;
+                $this->_failed_tests_msgs[] = $tmp;
+            } else {
+                $this->_successful_tests[] = $test;
+            }
+        }
+    }
+    /**
+     * Which tests are enabled?
+     * @return array
+     */
+    public function enabledTests($desired_tests) {
+        foreach(get_class_methods($this) as $test) {
+            if (strcasecmp(substr($test,-4), 'test') == 0 &&
+             ($desired_tests === true || in_array(strtolower($test),$desired_tests))) {
+                $_enabled_tests[] = $test;
+            }
+        }
+        return $_enabled_tests;
+    }
+    /**
+     * Retrieve All Messages (Information messages)
+     *
+     * @param mixed $desired_tests Tests to get messages for, or boolean true to get
+     *    all messages
+     * @return array Associative array, key: name of test, value: message
+     */
+    public function allTestMessages($desired_tests = true) {
+        $all_messages = array();
+        $_enabled_tests = $this->enabledTests($desired_tests);
+        foreach($_enabled_tests as $test) {
+            $t = substr($test, 0, -4);
+            if(isset($this->messages[$t]) && !empty($this->messages[$t][0])) {
+                $all_messages[$test] = $this->messages[$t][0]; 
+            }
+        }
+        return $all_messages;
+    }
+    /**
+     * Getter: enabled tests
+     * @return array
+     */
+    public function retrieveEnabledTests() {
+        return $this->_enabled_tests;
+    }
+    /**
+     * Getter: failed tests
+     * @return array
+     */
+    public function retrieveFailedTests() {
+        return $this->_failed_tests;
+    }
+    /**
+     * Getter: failed tests with error messages
+     * @return array
+     */
+    public function retrieveFailedTestsMessages() {
+        return $this->_failed_tests_msgs;
+    }
+    
+    /**
+     * Getter: tests that succeeded
+     * @return array
+     */
+    public function retrieveSuccessfulTests() {
+        return $this->_successful_tests;
+    }
+    /**
+     * Getter: number of enabled tests
+     * @return int
+     */
+    public function enabledTestsCount() {
+        return count($this->_enabled_tests);
+    }
+    /**
+     * Getter: number of failed tests
+     * @return int
+     */
+    public function failedTestsCount() {
+        return count($this->_failed_tests);
+    }
+    /**
+     * Getter: number of successful tests
+     * @return int
+     */
+    public function successfulTestsCount() {
+        return count($this->_successful_tests);
+    }
+}
diff --git a/grnet_registration/grnet_registration.info b/grnet_registration/grnet_registration.info
new file mode 100755
index 0000000..476a38e
--- /dev/null
+++ b/grnet_registration/grnet_registration.info
@@ -0,0 +1,12 @@
+name = Grnet Registration
+description = Grnet Registration
+core = "7.x"
+package = Grnet
+
+; Information added by drupal.org packaging script on 2013-05-20
+version = "7.x-1.0"
+core = "7.x"
+project = "grnet_core"
+datestamp = "1369041918"
+
+scripts[] = js/main.js
\ No newline at end of file
diff --git a/grnet_registration/grnet_registration.module b/grnet_registration/grnet_registration.module
new file mode 100755
index 0000000..af65140
--- /dev/null
+++ b/grnet_registration/grnet_registration.module
@@ -0,0 +1,609 @@
+<?php
+function grnet_registration_menu() {
+	  $items['registration/confirm_email/%'] = array(
+    'title' => 'Confirm Email',
+    'page callback' => '_confirm_email',
+    'page arguments' => array(2),
+    /*'access callback' => 'user_access',*/
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,  
+  );
+	  
+	$items['registration/emailinuse/%'] = array(
+		'title' => 'Email in Use',
+	  'page callback' => '_emailInUse',
+	  'page arguments' => array(2),
+	  /*'access callback' => 'user_access',*/
+	  'access arguments' => array('access content'),
+	  'type' => MENU_CALLBACK,
+	);	  
+	
+	$items['registration/amkainuse/%'] = array(
+			'title' => 'ΑΜΚΑ in Use',
+			'page callback' => '_amkaInUse',
+			'page arguments' => array(2),
+			/*'access callback' => 'user_access',*/
+			'access arguments' => array('access content'),
+			'type' => MENU_CALLBACK,
+	);	
+  
+  $items['registration/check_username/%'] = array(
+  		'title' => 'Check Username',
+  		'page callback' => '_check_username',
+  		'page arguments' => array(2), 
+  		/*'access callback' => 'user_access',*/
+  		'access arguments' => array('access content'),
+  		'type' => MENU_CALLBACK,
+  );  
+  return $items;
+}
+function _emailInUse($email){
+	
+	$default_email = '';
+	
+	
+	global $user;
+	
+	
+	if($_SESSION['phpCAS']['user']<>''){
+		$username = $_SESSION['phpCAS']['user'];
+		$entity_id = grnet_core_get_entity_id_by_username($username);
+		$entity_username = $_SESSION['phpCAS']['user'];
+		$entity_email = grnet_registration_get_email($entity_id);
+		
+		
+	}elseif(grnet_core_user_has_role('manager')){
+	
+	
+		$temp = explode("/entityform/", $_SERVER["HTTP_REFERER"]);
+		$temp = explode("/edit/", $temp[1]);
+		$entity_id = $temp[0];
+		$entity_username = grnet_registration_get_username($entity_id);
+		$entity_email = grnet_registration_get_email($entity_id);
+		
+		
+	}else{
+		$entity_email = $default_email;
+	}
+	
+	
+	
+	
+	
+	
+	if($entity_email ==''){
+		$result = db_query("SELECT count(*) FROM {field_data_field_ldapregistr_email} WHERE (field_ldapregistr_email_email=:email)",array(':email' => $email) )->fetchField();		
+	
+		if($result==0){
+			if(grnet_ldap_interconnection_ldap_user_exists_wrapper(array("mail" => $email))){
+				$result = $result+100;
+			}
+		}
+		
+		
+	}else{
+		$result = db_query("SELECT count(*) FROM {field_data_field_ldapregistr_email} WHERE (field_ldapregistr_email_email<>:entity_email AND field_ldapregistr_email_email=:email)",array(':entity_email' => $entity_email , ':email' => $email) )->fetchField();
+	
+		if($result==0){
+			
+			if(!grnet_ldap_interconnection_ldap_user_exists_wrapper(array("uid" => $entity_username , "mail" => $email))){
+				
+				if(grnet_ldap_interconnection_ldap_user_exists_wrapper(array("mail" => $email))){
+					$result = $result+100;
+				}
+				
+				
+			}
+			
+		}
+		
+		
+	}
+	
+	echo $result;
+	
+}
+function _amkaInUse($amka){
+	$default_amka = '';
+	global $user;
+	if($_SESSION['phpCAS']['user']<>''){
+		$username = $_SESSION['phpCAS']['user'];
+		$entity_id = grnet_core_get_entity_id_by_username($username);
+		$entity_username = $_SESSION['phpCAS']['user'];
+		$entity_amka = grnet_registration_get_amka($entity_id);
+	}elseif(grnet_core_user_has_role('manager')){
+		$temp = explode("/entityform/", $_SERVER["HTTP_REFERER"]);
+		$temp = explode("/edit/", $temp[1]);
+		$entity_id = $temp[0];
+		$entity_username = grnet_registration_get_username($entity_id);
+		$entity_amka = grnet_registration_get_amka($entity_id);
+	}else{
+		$entity_amka = $default_amka;
+	}
+	if($entity_amka ==''){
+		$result = db_query("SELECT count(*) FROM {field_data_field_ldapregistr_amka} WHERE (field_ldapregistr_amka_value=:amka)",array(':amka' => $amka) )->fetchField();
+		
+		if($result==0){
+			if(grnet_ldap_interconnection_ldap_user_exists_wrapper(array("schacPersonalUniqueID" => $amka))){
+				$result = $result+100;
+			}
+		}
+	}else{
+		$result = db_query("SELECT count(*) FROM {field_data_field_ldapregistr_amka} WHERE (field_ldapregistr_amka_value<>:entity_amka AND field_ldapregistr_amka_value=:amka)",array(':entity_amka' => $entity_amka , ':amka' => $amka) )->fetchField();
+		if($result==0){
+				
+			if(!grnet_ldap_interconnection_ldap_user_exists_wrapper(array("uid" => $entity_username , "schacPersonalUniqueID" => $amka))){
+				if(grnet_ldap_interconnection_ldap_user_exists_wrapper(array("schacPersonalUniqueID" => $amka))){
+					$result = $result+100;
+				}
+			}
+				
+		}
+	}
+	echo $result;
+}
+function grnet_registration_check_name($name){
+	$result = true;
+	include_once(DRUPAL_ROOT.'/'.drupal_get_path('module', 'grnet_registration').'/includes/policy/name.inc');
+	if(!$result_policy){
+		$result=false;
+	}
+	return $result;
+}
+function grnet_registration_check_surname($surname){
+	$result = true;
+	include_once(DRUPAL_ROOT.'/'.drupal_get_path('module', 'grnet_registration').'/includes/policy/surname.inc');
+	if(!$result_policy){
+		$result=false;
+	}
+	return $result;
+}
+function grnet_registration_check_username($username){
+	$result = _check_username($username,true);
+	if($result=='0'){
+		return true;
+	}else{
+		return false;
+	}
+	
+}
+function _check_username($username,$hide=null){
+	$return_message = 'Το όνομα '.$username. ' δεν είναι διαθέσιμο';
+	$result = true;
+	include_once(DRUPAL_ROOT.'/'.drupal_get_path('module', 'grnet_registration').'/includes/policy/username.inc');
+  if(!$result_policy){
+  	$result=false;
+  }
+  
+	if(grnet_ldap_interconnection_ldap_user_exists_wrapper(array("uid" => $username)))
+		$result=false;
+	if(grnet_core_get_entity_id_by_username($username)>0){
+		$result=false;
+	}
+	
+	if($result == true ){
+		$final_return_message = '0';
+	}else{
+		$final_return_message = $return_message;
+	}
+	
+	if($hide){
+		return $final_return_message;
+	}else{
+		echo $final_return_message;
+	}
+	
+	
+	
+}
+function _confirm_email($secretkey){
+  $entity_id = grnet_registration_get_entity_id($secretkey);
+  
+  if($entity_id>0){
+    $status = grnet_registration_get_submission_status($entity_id);
+    if($status=='prepending'){
+      _set_submission_status($entity_id,'pending');
+      $status_changed_to_pending = 1;
+      $status = 'pending';
+    }else{
+      $status_changed_to_pending = 0;
+    }
+    if ($status=='completed'){
+      drupal_set_message("Η εγγραφή σας ολοκληρώθηκε επιτυχώς (Κατάσταση : ".t('completed').")");
+    }
+    return _display_message($status, $status_changed_to_pending, $entity_id);
+    
+  }else{
+    drupal_set_message("Η σελίδα που προσπαθείτε να προσπελάσεται δεν αναγνωρίζεται!!","error");
+    return '';
+  }    
+}
+function grnet_registration_get_entity_id($secretkey){
+  $entity_id = db_query("SELECT {entity_id} FROM {field_data_field_ldapregistr_secretkey} WHERE (field_ldapregistr_secretkey_value=:secretkey)",array(':secretkey' => $secretkey) )->fetchField();
+  return $entity_id;
+}
+function grnet_registration_get_submission_status($entity_id){
+   if($entity_id>0){
+	   $status = db_query("SELECT {field_ldapregistr_status_value} FROM {field_data_field_ldapregistr_status} WHERE (entity_id=:entity_id)",array(':entity_id' => $entity_id) )->fetchField();
+	   return $status;
+   }else{
+     return '';
+   }
+}
+function _get_username($entity_id){
+   $username = db_query("SELECT {field_ldapregistr_username_value} FROM {field_data_field_ldapregistr_username} WHERE (entity_id=:entity_id)",array(':entity_id' => $entity_id) )->fetchField();
+   return $username;
+}
+function _set_submission_status($entity_id,$new_status){
+  	  db_query("update {field_data_field_ldapregistr_status}     SET field_ldapregistr_status_value=:status WHERE (entity_id=:entity_id)",array(':status' => $new_status, ':entity_id' => $entity_id ) );
+	  db_query("update {field_revision_field_ldapregistr_status} SET field_ldapregistr_status_value=:status WHERE (entity_id=:entity_id)",array(':status' => $new_status, ':entity_id' => $entity_id ) );  
+    
+      $email = db_query("SELECT {field_ldapregistr_email_email} FROM {field_data_field_ldapregistr_email} WHERE (entity_id=:entity_id)",array(':entity_id' => $entity_id) )->fetchField();
+      drupal_flush_all_caches();
+}
+function grnet_registration_get_username($entity_id){
+	$username = db_query("SELECT {field_ldapregistr_username_value} FROM {field_data_field_ldapregistr_username} WHERE (entity_id=:entity_id)",array(':entity_id' => $entity_id) )->fetchField();
+	return $username;
+}
+function grnet_registration_get_email($entity_id){
+   $email = db_query("SELECT {field_ldapregistr_email_email} FROM {field_data_field_ldapregistr_email} WHERE (entity_id=:entity_id)",array(':entity_id' => $entity_id) )->fetchField();
+   return $email;
+}
+function grnet_registration_get_amka($entity_id){
+	$amka = db_query("SELECT {field_ldapregistr_amka_value} FROM {field_data_field_ldapregistr_amka} WHERE (entity_id=:entity_id)",array(':entity_id' => $entity_id) )->fetchField();
+	return $amka;
+}
+function grnet_registration_get_submission_create_timestamp($entity_id){
+   $create_date = db_query("SELECT {created} FROM {entityform} WHERE (entityform_id=:entity_id)",array(':entity_id' => $entity_id) )->fetchField();
+   return $create_date;
+}
+function grnet_registration_get_expiration_date($entity_id,$duration_in_seconds){
+  $expiration_timestamp = grnet_registration_get_submission_create_timestamp($entity_id)+$duration_in_seconds;
+  return $expiration_timestamp;
+}
+function _display_message($status,$status_changed_to_pending,$entity_id){
+  $html = '<div class="confirmation-container">
+			 <div class="confirmation-text">'; 
+  
+  if($status_changed_to_pending==1){
+  	$html .=  '<div class="reg-page-title">
+				 Απαιτείται ενεργοποίηση του λογαριασμού σας από το διαχειριστή
+			   </div>';
+  }
+  if ($status=='prepending' || $status=='pending'){
+    $html .= '   <div class="step-info">
+  					Η αίτηση εγγραφής υποβλήθηκε επιτυχώς! Για την ενεργοποίηση του λογαριασμού σας επισκεφθείτε τον διαχειριστή. </br>
+               </div>';
+  }
+  $html .= ' <div id"status-info" class="step-info">
+	               	Κατάσταση αίτησης:<i> '.t($status).'</i>
+	            </div>
+	           
+               <div class="step-info">
+	               <b>Όνομα χρήστη (username):</b> '._get_username($entity_id).'</br>
+	  			   <b>Αριθμός αίτησης:</b> '.$entity_id.'
+  			   </div> </br>
+  			   ';
+			   
+  			 if ($status=='prepending' || $status=='pending'){
+			     $html .='<div id="attention-text">
+			     <div class="messages warning">
+				            
+				            ΠΡΟΣΟΧΗ:<br>Για να ενεργοποιηθεί ο λογαριασμός σας, θα πρέπει να επισκεφθείτε 
+				            τον διαχειριστή του συστήματος <u>το αργότερο μέχρι τις '.date("d/n/Y" , grnet_registration_get_expiration_date($entity_id,variable_get('grnet_complete_submission_duration_in_days')*86400)).'.</u>
+				            
+					            <div class="save-print-text">
+					            Παρακαλούμε εκτυπώστε ή αποθηκεύστε τα παραπάνω στοιχεία.
+					            </div>
+				            </div>
+				            </div>
+				            
+				            <div class="admin-contact">
+				            <u>Στοιχεία Διαχειριστή</u><br>
+				            '.grnet_core_get_manager_contact_info().'
+				            <br><br>
+			              </div>
+			 			  <button class="print-btn"> <i class="fi-print size-18"></i><a href="
+			             ';
+			   }
+			   
+  $html .= ' 
+			 </div>
+           </div>';
+           
+  return $html;           
+}
+	
+	
+/**
+ * Implementation of hook_form_alter().
+ */
+function grnet_registration_form_alter(&$form, $form_state, $form_id) {
+	
+	drupal_add_js(array('grnet_registration_form' => array('grnet_domain_suffixed_emails' => variable_get('grnet_domain_suffixed_emails'))), array('type' => 'setting'));
+	drupal_add_js(array('grnet_registration_form' => array('grnet_limit_domain_suffixed_emails' => variable_get('grnet_limit_domain_suffixed_emails'))), array('type' => 'setting'));
+	
+	if($form_id=='ldapregistration_entityform_edit_form'){
+		
+			include_once('includes/html/wrapper/prefix_html.php');
+		
+			include_once('includes/html/field_ldapregistr_username/prefix_html.php');
+			include_once('includes/html/field_ldapregistr_username/suffix_html.php');
+			include_once('includes/html/field_ldapregistr_pwd/prefix_html.php');
+			include_once('includes/html/field_ldapregistr_pwd/suffix_html.php');
+			include_once('includes/html/field_ldapregistr_confirmpwd/prefix_html.php');
+			include_once('includes/html/field_ldapregistr_confirmpwd/suffix_html.php');
+		
+			include_once('includes/html/wrapper/suffix_html.php');
+			$_SESSION['grnet_my_temp_loaded_entity'][arg(1)] = entity_load('entityform', array(arg(1)));
+			 
+			if(arg(0)=='eform'){
+				 
+				$form['field_ldapregistr_username']['
+				$form['field_ldapregistr_username']['
+				 
+				$form['field_ldapregistr_pwd']['
+				$form['field_ldapregistr_pwd']['
+				$form['field_ldapregistr_confirmpwd']['
+				$form['field_ldapregistr_confirmpwd']['
+				$form['
+			}elseif(!$_SESSION['cas_name']){
+				if(arg(0)=='entityform'){
+					$form['required-fields group-ldapregistr-personaldata field-group-fieldset form-wrapper']['
+	      		<fieldset class="required-fields group-ldapregistr-credentials field-group-fieldset form-wrapper">
+	      		  <legend><span class="fieldset-legend">Όνομα χρήστη και κωδικός πρόσβασης</span></legend>
+	      		  <div class="fieldset-wrapper">
+	      		    <div class="field-type-text field-name-field-ldapregistr-username field-widget-text-textfield form-wrapper" id="edit-field-ldapregistr-username">
+	      		      <div id="field-ldapregistr-username-add-more-wrapper">
+	      		        <div class="form-item form-type-textfield form-item-field-ldapregistr-username-und-0-value">
+	      		          <label for="edit-field-ldapregistr-username-und-0-value">Όνομα Χρήστη <span class="form-required" title="Το πεδίο είναι απαραίτητο.">*</span></label>
+	      		          <span class="field-content" id="grnet_username_show_field">'.grnet_core_get_username_by_entity_id(arg(1)).'</span>
+	      		        </div>
+	      		      </div>
+	      		    </div>
+	      		    <div class="form-item form-type-textfield form-item-field-ldapregistr-username-und-0-value">
+	      		      <label>Κωδικός πρόσβασης</label>
+	      		      <div style="margin-top:10px;"><span class="field-content">**********</span></div>
+	      		    </div>
+	      		  </div>
+	      		</fieldset>';
+					$form['field_ldapregistr_username']['
+				}
+				 
+				 
+				 
+				$form['field_ldapregistr_username']['
+		      <div class="form-item form-type-textfield form-item-field-ldapregistr-username-und-0-value">
+					  <label>Κωδικός πρόσβασης</label>
+            <div style="margin-top:10px;"><span class="field-content">**********</span></div>
+          </div>';
+				$form['field_ldapregistr_pwd']['
+				$form['field_ldapregistr_confirmpwd']['
+				 
+				$form['
+				 
+			}else{
+				 
+				 
+				$form['required-fields group-ldapregistr-personaldata field-group-fieldset form-wrapper']['
+	      		<fieldset class="required-fields group-ldapregistr-credentials field-group-fieldset form-wrapper">
+	      		  <legend><span class="fieldset-legend">Όνομα χρήστη και κωδικός πρόσβασης</span></legend>
+	      		  <div class="fieldset-wrapper">
+	      		    <div class="field-type-text field-name-field-ldapregistr-username field-widget-text-textfield form-wrapper" id="edit-field-ldapregistr-username">
+	      		      <div id="field-ldapregistr-username-add-more-wrapper">
+	      		        <div class="form-item form-type-textfield form-item-field-ldapregistr-username-und-0-value">
+	      		          <label for="edit-field-ldapregistr-username-und-0-value">Όνομα Χρήστη <span class="form-required" title="Το πεδίο είναι απαραίτητο.">*</span></label>
+	      		          <span class="field-content" id="grnet_username_show_field">'.grnet_core_get_username_by_entity_id(arg(1)).'</span>
+	      		        </div>
+	      		      </div>
+	      		    </div>
+					      <div class="form-item form-type-textfield form-item-field-ldapregistr-username-und-0-value">
+								  <label>Κωδικός Πρόσβασης</label>
+			            <div style="margin-top:10px;"><a href="/manage_password">Διαχείριση κωδικού</a></div>
+			          </div>
+	      		  </div>
+	      		</fieldset>';
+				 
+				 
+				$form['field_ldapregistr_username']['
+				$form['field_ldapregistr_pwd']['
+				$form['field_ldapregistr_confirmpwd']['
+				
+				$form['
+				
+			}
+		
+	}
+}
+function _ldapregistration_validation_anonymous($form, &$form_state) {
+	$name = $form['field_ldapregistr_name'][und][0]['value']['
+	if(!grnet_registration_check_name($name)){
+		form_set_error('field_ldapregistr_name', 'Στο Όνομα επιτρέπονται μόνο αλφαβητικοί χαρακτήρες από 1 έως 50 χαρακτήρες!!');
+	}
+	
+	
+	$surname = $form['field_ldapregistr_surname'][und][0]['value']['
+	if(!grnet_registration_check_surname($surname)){
+		form_set_error('field_ldapregistr_surname', 'Στο Επώνυμο επιτρέπονται μόνο αλφαβητικοί χαρακτήρες από 1 έως 50 χαρακτήρες!!');
+	}
+	
+	$amka = $form['field_ldapregistr_amka'][und][0]['value']['
+	if(!grnet_core_validateAMKA($amka)){
+		form_set_error('field_ldapregistr_amka', 'Εισάγεται ένα έγκυρο ΑΜΚΑ.');
+	}
+	
+	
+	$email = $form['field_ldapregistr_email'][und][0]['email']['
+	if(!grnet_core_isEmailValidDueToDomainSuffixedPolicy($email)){
+		form_set_error('field_ldapregistr_email', 'Το email σας πρέπει να έχει κατάληξη ίδια με το domain του νοσοκομείου. (@'.variable_get('grnet_domain_suffixed_emails').')');
+	}
+	
+	
+  $username = $form['field_ldapregistr_username'][und][0]['value']['
+	if(!grnet_registration_check_username($username)){
+		form_set_error('field_ldapregistr_pwd', 'Το όνομα χρήστη δεν πληρεί της πολιτικές ασφαλείας.');
+	}
+	
+	$password = $form['field_ldapregistr_pwd'][und][0][password_field]['
+	$confirmation_password = $form['field_ldapregistr_confirmpwd'][und][0][password_field]['
+	
+ 	if(!grnet_password_generator_check_password_strength($password,true)){
+		form_set_error('field_ldapregistr_pwd', 'Ο κωδικός πρόσβασης δεν πληρεί της πολιτικές ασφαλείας.');
+	}else{
+		if($password<>$confirmation_password){
+			form_set_error('field_ldapregistr_pwd', '');
+			form_set_error('field_ldapregistr_confirmpwd', 'Οι κωδικοί δεν είναι ίδιοι!!');
+		}
+	} 
+	return false;
+}
+function _ldapregistration_validation_ldapuser($form, &$form_state) {
+	$name = $form['field_ldapregistr_name'][und][0]['value']['
+	if(!grnet_registration_check_name($name)){
+		form_set_error('field_ldapregistr_name', 'Στο Όνομα επιτρέπονται μόνο αλφαβητικοί χαρακτήρες από 1 έως 50 χαρακτήρες!!');
+	}
+	$surname = $form['field_ldapregistr_surname'][und][0]['value']['
+	if(!grnet_registration_check_surname($surname)){
+		form_set_error('field_ldapregistr_surname', 'Στο Επώνυμο επιτρέπονται μόνο αλφαβητικοί χαρακτήρες από 1 έως 50 χαρακτήρες!!');
+	}
+	$amka = $form['field_ldapregistr_amka'][und][0]['value']['
+	if(!grnet_core_validateAMKA($amka)){
+		form_set_error('field_ldapregistr_amka', 'Εισάγεται ένα έγκυρο ΑΜΚΑ.');
+	}
+	$email = $form['field_ldapregistr_email'][und][0]['email']['
+	if(!grnet_core_isEmailValidDueToDomainSuffixedPolicy($email)){
+		form_set_error('field_ldapregistr_email', 'Το email σας πρέπει να έχει κατάληξη ίδια με το domain του νοσοκομείου. (@'.variable_get('grnet_domain_suffixed_emails').')');
+	}
+	return false;
+}
+function _ldapregistration_validation_manager($form, &$form_state) {
+	if( grnet_core_user_has_role('manager') &&
+			($form["field_ldapregistr_status"]['und']['
+			$form["field_ldapregistr_status"]['und']['
+			$form["field_ldapregistr_status"]['und']['
+			$form["field_ldapregistr_status"]['und']['
+	    )
+	){
+		 
+		form_set_error('field_ldapregistr_status', 'Η κατάσταση της αίτησης τροποποιήθηκε ή δεν επιτρέπεται η αποθήκευση από αυτή την κατάσταση!! Πατήστε <a href="/requests/all">εδώ</a> για επιστροφή στα αιτήματα μεταβολής.');
+	}
+	
+	$name = $form['field_ldapregistr_name'][und][0]['value']['
+	if(!grnet_registration_check_name($name)){
+		form_set_error('field_ldapregistr_name', 'Στο Όνομα επιτρέπονται μόνο αλφαβητικοί χαρακτήρες από 1 έως 50 χαρακτήρες!!');
+	}
+	
+	
+	$surname = $form['field_ldapregistr_surname'][und][0]['value']['
+	if(!grnet_registration_check_surname($surname)){
+		form_set_error('field_ldapregistr_surname', 'Στο Επώνυμο επιτρέπονται μόνο αλφαβητικοί χαρακτήρες από 1 έως 50 χαρακτήρες!!');
+	}
+	
+	
+	$amka = $form['field_ldapregistr_amka'][und][0]['value']['
+	if(!grnet_core_validateAMKA($amka)){
+		form_set_error('field_ldapregistr_amka', 'Εισάγεται ένα έγκυρο ΑΜΚΑ.');
+	}
+	
+	
+	$email = $form['field_ldapregistr_email'][und][0]['email']['
+	
+	if(!grnet_core_isEmailValidDueToDomainSuffixedPolicy($email)){
+		form_set_error('field_ldapregistr_email', 'Το email σας πρέπει να έχει κατάληξη ίδια με το domain του νοσοκομείου. (@'.variable_get('grnet_domain_suffixed_emails').')');
+	}
+	
+	return false;
+}
+function grnet_registration_cron(){
+
+	
+	
+	
+	$period_in_seconds = variable_get('grnet_mail_verification_duration_in_minutes')*60;
+	$timestamp_barrier = time()-$period_in_seconds;
+	
+	
+	
+		$result = db_query("SELECT entfrm.entityform_id as ent_id
+				                FROM {entityform} AS entfrm
+				                  JOIN {field_data_field_ldapregistr_status} as entfrm_st 
+				                  	ON (entfrm.entityform_id = entfrm_st.entity_id)
+				                WHERE
+												  entfrm_st.field_ldapregistr_status_value = 'prepending' AND 
+											    entfrm.created < :timestamp_barrier",array(':timestamp_barrier' => $timestamp_barrier));
+				
+		
+		
+		foreach ($result as $rec) {
+			
+				$entity_instance = entity_load('entityform', array($rec->ent_id));
+				$entity_instance = $entity_instance[$rec->ent_id];
+				
+				     $ent_id = $rec->ent_id;
+				   $ent_name = $entity_instance->field_ldapregistr_name['und'][0]['value'];
+				$ent_surname = $entity_instance->field_ldapregistr_surname['und'][0]['value'];
+				  $ent_email = $entity_instance->field_ldapregistr_email['und'][0]['email'];								
+			     $ent_amka = $entity_instance->field_ldapregistr_amka['und'][0]['value'];
+				
+				
+			
+				watchdog('grnet registration prepending', '<b><u>Submission Cron Deleted</u></b>  <br> 
+						                                  <b>id :</b> '.$ent_id.'          <br> 
+						                               <b>Όνομα :</b> '.$ent_name.'        <br> 
+						                             <b>Επώνυμο :</b> '.$ent_surname.'     <br> 
+						                               <b>Email :</b> '.$ent_email.'       <br> 
+						                                <b>ΑΜΚΑ :</b> '.$ent_amka, NULL , WATCHDOG_WARNING);
+				
+				entity_delete('entityform', $ent_id);
+				
+		}
+			
+		
+		
+		
+		
+		
+		
+		$period_in_seconds = variable_get('grnet_complete_submission_duration_in_days')*86400;
+		$timestamp_barrier = time()-$period_in_seconds;
+		
+		
+		
+		$result = db_query("SELECT entfrm.entityform_id as ent_id
+				                FROM {entityform} AS entfrm
+				                  JOIN {field_data_field_ldapregistr_status} as entfrm_st
+				                  	ON (entfrm.entityform_id = entfrm_st.entity_id)
+				                WHERE
+												  entfrm_st.field_ldapregistr_status_value = 'pending' AND
+											    entfrm.created < :timestamp_barrier",array(':timestamp_barrier' => $timestamp_barrier));
+		
+		
+		
+		foreach ($result as $rec) {
+				
+			$entity_instance = entity_load('entityform', array($rec->ent_id));
+			$entity_instance = $entity_instance[$rec->ent_id];
+		
+			$ent_id = $rec->ent_id;
+			$ent_name = $entity_instance->field_ldapregistr_name['und'][0]['value'];
+			$ent_surname = $entity_instance->field_ldapregistr_surname['und'][0]['value'];
+			$ent_email = $entity_instance->field_ldapregistr_email['und'][0]['email'];
+			$ent_amka = $entity_instance->field_ldapregistr_amka['und'][0]['value'];
+		
+		
+				
+			watchdog('grnet registration pending', '<b><u>Submission Cron Deleted</u></b>  <br>
+						                                  <b>id :</b> '.$ent_id.'          <br>
+						                               <b>Όνομα :</b> '.$ent_name.'        <br>
+						                             <b>Επώνυμο :</b> '.$ent_surname.'     <br>
+						                               <b>Email :</b> '.$ent_email.'       <br>
+						                                <b>ΑΜΚΑ :</b> '.$ent_amka, NULL , WATCHDOG_WARNING);
+		
+			entity_delete('entityform', $ent_id);
+		
+		}
+			
+		
+		
+	
+}
diff --git a/grnet_registration/grnet_registration.module~ b/grnet_registration/grnet_registration.module~
new file mode 100755
index 0000000..21b54d4
--- /dev/null
+++ b/grnet_registration/grnet_registration.module~
@@ -0,0 +1,622 @@
+<?php
+function grnet_registration_menu() {
+	  $items['registration/confirm_email/%'] = array(
+    'title' => 'Confirm Email',
+    'page callback' => '_confirm_email',
+    'page arguments' => array(2),
+    /*'access callback' => 'user_access',*/
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,  
+  );
+	  
+	$items['registration/emailinuse/%'] = array(
+		'title' => 'Email in Use',
+	  'page callback' => '_emailInUse',
+	  'page arguments' => array(2),
+	  /*'access callback' => 'user_access',*/
+	  'access arguments' => array('access content'),
+	  'type' => MENU_CALLBACK,
+	);	  
+	
+	$items['registration/amkainuse/%'] = array(
+			'title' => 'ΑΜΚΑ in Use',
+			'page callback' => '_amkaInUse',
+			'page arguments' => array(2),
+			/*'access callback' => 'user_access',*/
+			'access arguments' => array('access content'),
+			'type' => MENU_CALLBACK,
+	);	
+  
+  $items['registration/check_username/%'] = array(
+  		'title' => 'Check Username',
+  		'page callback' => '_check_username',
+  		'page arguments' => array(2), 
+  		/*'access callback' => 'user_access',*/
+  		'access arguments' => array('access content'),
+  		'type' => MENU_CALLBACK,
+  );  
+  return $items;
+}
+function _emailInUse($email){
+	
+	$default_email = '';
+	
+	
+	global $user;
+	
+	
+	if($_SESSION['phpCAS']['user']<>''){
+		$username = $_SESSION['phpCAS']['user'];
+		$entity_id = grnet_core_get_entity_id_by_username($username);
+		$entity_username = $_SESSION['phpCAS']['user'];
+		$entity_email = grnet_registration_get_email($entity_id);
+		
+		
+	}elseif(grnet_core_user_has_role('manager')){
+	
+	
+		$temp = explode("/entityform/", $_SERVER["HTTP_REFERER"]);
+		$temp = explode("/edit/", $temp[1]);
+		$entity_id = $temp[0];
+		$entity_username = grnet_registration_get_username($entity_id);
+		$entity_email = grnet_registration_get_email($entity_id);
+		
+		
+	}else{
+		$entity_email = $default_email;
+	}
+	
+	
+	
+	
+	
+	
+	if($entity_email ==''){
+		$result = db_query("SELECT count(*) FROM {field_data_field_ldapregistr_email} WHERE (field_ldapregistr_email_email=:email)",array(':email' => $email) )->fetchField();		
+	
+		if($result==0){
+			if(grnet_ldap_interconnection_ldap_user_exists_wrapper(array("mail" => $email))){
+				$result = $result+100;
+			}
+		}
+		
+		
+	}else{
+		$result = db_query("SELECT count(*) FROM {field_data_field_ldapregistr_email} WHERE (field_ldapregistr_email_email<>:entity_email AND field_ldapregistr_email_email=:email)",array(':entity_email' => $entity_email , ':email' => $email) )->fetchField();
+	
+		if($result==0){
+			
+			if(!grnet_ldap_interconnection_ldap_user_exists_wrapper(array("uid" => $entity_username , "mail" => $email))){
+				
+				if(grnet_ldap_interconnection_ldap_user_exists_wrapper(array("mail" => $email))){
+					$result = $result+100;
+				}
+				
+				
+			}
+			
+		}
+		
+		
+	}
+	
+	echo $result;
+	
+}
+function _amkaInUse($amka){
+	$default_amka = '';
+	global $user;
+	if($_SESSION['phpCAS']['user']<>''){
+		$username = $_SESSION['phpCAS']['user'];
+		$entity_id = grnet_core_get_entity_id_by_username($username);
+		$entity_username = $_SESSION['phpCAS']['user'];
+		$entity_amka = grnet_registration_get_amka($entity_id);
+	}elseif(grnet_core_user_has_role('manager')){
+		$temp = explode("/entityform/", $_SERVER["HTTP_REFERER"]);
+		$temp = explode("/edit/", $temp[1]);
+		$entity_id = $temp[0];
+		$entity_username = grnet_registration_get_username($entity_id);
+		$entity_amka = grnet_registration_get_amka($entity_id);
+	}else{
+		$entity_amka = $default_amka;
+	}
+	if($entity_amka ==''){
+		$result = db_query("SELECT count(*) FROM {field_data_field_ldapregistr_amka} WHERE (field_ldapregistr_amka_value=:amka)",array(':amka' => $amka) )->fetchField();
+		
+		if($result==0){
+			if(grnet_ldap_interconnection_ldap_user_exists_wrapper(array("schacPersonalUniqueID" => $amka))){
+				$result = $result+100;
+			}
+		}
+	}else{
+		$result = db_query("SELECT count(*) FROM {field_data_field_ldapregistr_amka} WHERE (field_ldapregistr_amka_value<>:entity_amka AND field_ldapregistr_amka_value=:amka)",array(':entity_amka' => $entity_amka , ':amka' => $amka) )->fetchField();
+		if($result==0){
+				
+			if(!grnet_ldap_interconnection_ldap_user_exists_wrapper(array("uid" => $entity_username , "schacPersonalUniqueID" => $amka))){
+				if(grnet_ldap_interconnection_ldap_user_exists_wrapper(array("schacPersonalUniqueID" => $amka))){
+					$result = $result+100;
+				}
+			}
+				
+		}
+	}
+	echo $result;
+}
+function grnet_registration_check_name($name){
+	$result = true;
+	include_once(DRUPAL_ROOT.'/'.drupal_get_path('module', 'grnet_registration').'/includes/policy/name.inc');
+	if(!$result_policy){
+		$result=false;
+	}
+	return $result;
+}
+function grnet_registration_check_surname($surname){
+	$result = true;
+	include_once(DRUPAL_ROOT.'/'.drupal_get_path('module', 'grnet_registration').'/includes/policy/surname.inc');
+	if(!$result_policy){
+		$result=false;
+	}
+	return $result;
+}
+function grnet_registration_check_username($username){
+	$result = _check_username($username,true);
+	if($result=='0'){
+		return true;
+	}else{
+		return false;
+	}
+	
+}
+function _check_username($username,$hide=null){
+	$return_message = 'Το όνομα '.$username. ' δεν είναι διαθέσιμο';
+	$result = true;
+	include_once(DRUPAL_ROOT.'/'.drupal_get_path('module', 'grnet_registration').'/includes/policy/username.inc');
+  if(!$result_policy){
+  	$result=false;
+  }
+  
+	if(grnet_ldap_interconnection_ldap_user_exists_wrapper(array("uid" => $username)))
+		$result=false;
+	if(grnet_core_get_entity_id_by_username($username)>0){
+		$result=false;
+	}
+	
+	if($result == true ){
+		$final_return_message = '0';
+	}else{
+		$final_return_message = $return_message;
+	}
+	
+	if($hide){
+		return $final_return_message;
+	}else{
+		echo $final_return_message;
+	}
+	
+	
+	
+}
+function _confirm_email($secretkey){
+  $entity_id = grnet_registration_get_entity_id($secretkey);
+  
+  if($entity_id>0){
+    $status = grnet_registration_get_submission_status($entity_id);
+    if($status=='prepending'){
+      _set_submission_status($entity_id,'pending');
+      $status_changed_to_pending = 1;
+      $status = 'pending';
+    }else{
+      $status_changed_to_pending = 0;
+    }
+    if ($status=='completed'){
+      drupal_set_message("Η εγγραφή σας ολοκληρώθηκε επιτυχώς (Κατάσταση : ".t('completed').")");
+    }
+    return _display_message($status, $status_changed_to_pending, $entity_id);
+    
+  }else{
+    drupal_set_message("Η σελίδα που προσπαθείτε να προσπελάσεται δεν αναγνωρίζεται!!","error");
+    return '';
+  }    
+}
+function grnet_registration_get_entity_id($secretkey){
+  $entity_id = db_query("SELECT {entity_id} FROM {field_data_field_ldapregistr_secretkey} WHERE (field_ldapregistr_secretkey_value=:secretkey)",array(':secretkey' => $secretkey) )->fetchField();
+  return $entity_id;
+}
+function grnet_registration_get_submission_status($entity_id){
+   if($entity_id>0){
+	   $status = db_query("SELECT {field_ldapregistr_status_value} FROM {field_data_field_ldapregistr_status} WHERE (entity_id=:entity_id)",array(':entity_id' => $entity_id) )->fetchField();
+	   return $status;
+   }else{
+     return '';
+   }
+}
+function _get_username($entity_id){
+   $username = db_query("SELECT {field_ldapregistr_username_value} FROM {field_data_field_ldapregistr_username} WHERE (entity_id=:entity_id)",array(':entity_id' => $entity_id) )->fetchField();
+   return $username;
+}
+function _set_submission_status($entity_id,$new_status){
+  	  db_query("update {field_data_field_ldapregistr_status}     SET field_ldapregistr_status_value=:status WHERE (entity_id=:entity_id)",array(':status' => $new_status, ':entity_id' => $entity_id ) );
+	  db_query("update {field_revision_field_ldapregistr_status} SET field_ldapregistr_status_value=:status WHERE (entity_id=:entity_id)",array(':status' => $new_status, ':entity_id' => $entity_id ) );  
+    
+      $email = db_query("SELECT {field_ldapregistr_email_email} FROM {field_data_field_ldapregistr_email} WHERE (entity_id=:entity_id)",array(':entity_id' => $entity_id) )->fetchField();
+      drupal_flush_all_caches();
+}
+function grnet_registration_get_username($entity_id){
+	$username = db_query("SELECT {field_ldapregistr_username_value} FROM {field_data_field_ldapregistr_username} WHERE (entity_id=:entity_id)",array(':entity_id' => $entity_id) )->fetchField();
+	return $username;
+}
+function grnet_registration_get_email($entity_id){
+   $email = db_query("SELECT {field_ldapregistr_email_email} FROM {field_data_field_ldapregistr_email} WHERE (entity_id=:entity_id)",array(':entity_id' => $entity_id) )->fetchField();
+   return $email;
+}
+function grnet_registration_get_amka($entity_id){
+	$amka = db_query("SELECT {field_ldapregistr_amka_value} FROM {field_data_field_ldapregistr_amka} WHERE (entity_id=:entity_id)",array(':entity_id' => $entity_id) )->fetchField();
+	return $amka;
+}
+function grnet_registration_get_submission_create_timestamp($entity_id){
+   $create_date = db_query("SELECT {created} FROM {entityform} WHERE (entityform_id=:entity_id)",array(':entity_id' => $entity_id) )->fetchField();
+   return $create_date;
+}
+function grnet_registration_get_expiration_date($entity_id,$duration_in_seconds){
+  $expiration_timestamp = grnet_registration_get_submission_create_timestamp($entity_id)+$duration_in_seconds;
+  return $expiration_timestamp;
+}
+function _display_message($status,$status_changed_to_pending,$entity_id){
+  $html = '<div class="confirmation-container">
+			 <div class="confirmation-text">'; 
+  
+  if($status_changed_to_pending==1){
+  	$html .=  '<div class="reg-page-title">
+				 Απαιτείται ενεργοποίηση του λογαριασμού σας από το διαχειριστή
+			   </div>';
+  }
+  if ($status=='prepending' || $status=='pending'){
+    $html .= '   <div class="step-info">
+  					Η αίτηση εγγραφής υποβλήθηκε επιτυχώς! Για την ενεργοποίηση του λογαριασμού σας επισκεφθείτε τον διαχειριστή. </br>
+               </div>';
+  }
+  $html .= ' <div id"status-info" class="step-info">
+	               	Κατάσταση αίτησης:<i> '.t($status).'</i>
+	            </div>
+	           
+               <div class="step-info">
+	               <b>Όνομα χρήστη (username):</b> '._get_username($entity_id).'</br>
+	  			   <b>Αριθμός αίτησης:</b> '.$entity_id.'
+  			   </div> </br>
+  			   ';
+			   
+  			 if ($status=='prepending' || $status=='pending'){
+			     $html .='<div id="attention-text">
+			     <div class="messages warning">
+				            
+				            ΠΡΟΣΟΧΗ:<br>Για να ενεργοποιηθεί ο λογαριασμός σας, θα πρέπει να επισκεφθείτε 
+				            τον διαχειριστή του συστήματος <u>το αργότερο μέχρι τις '.date("d/n/Y" , grnet_registration_get_expiration_date($entity_id,variable_get('grnet_complete_submission_duration_in_days')*86400)).'.</u>
+				            
+					            <div class="save-print-text">
+					            Παρακαλούμε εκτυπώστε ή αποθηκεύστε τα παραπάνω στοιχεία.
+					            </div>
+				            </div>
+				            </div>
+				            
+				            <div class="admin-contact">
+				            <u>Στοιχεία Διαχειριστή</u><br>
+				            '.grnet_core_get_manager_contact_info().'
+				            <br><br>
+			              </div>
+			 			  <button class="print-btn"> <i class="fi-print size-18"></i><a href="
+			             ';
+			   }
+			   
+  $html .= ' 
+			 </div>
+           </div>';
+           
+  return $html;           
+}
+	
+	
+/**
+ * Implementation of hook_form_alter().
+ */
+function grnet_registration_form_alter(&$form, $form_state, $form_id) {
+	
+	drupal_add_js(array('grnet_registration_form' => array('grnet_domain_suffixed_emails' => variable_get('grnet_domain_suffixed_emails'))), array('type' => 'setting'));
+	drupal_add_js(array('grnet_registration_form' => array('grnet_limit_domain_suffixed_emails' => variable_get('grnet_limit_domain_suffixed_emails'))), array('type' => 'setting'));
+	
+	if($form_id=='ldapregistration_entityform_edit_form'){
+		
+			include_once('includes/html/wrapper/prefix_html.php');
+		
+			include_once('includes/html/field_ldapregistr_username/prefix_html.php');
+			include_once('includes/html/field_ldapregistr_username/suffix_html.php');
+			include_once('includes/html/field_ldapregistr_pwd/prefix_html.php');
+			include_once('includes/html/field_ldapregistr_pwd/suffix_html.php');
+			include_once('includes/html/field_ldapregistr_confirmpwd/prefix_html.php');
+			include_once('includes/html/field_ldapregistr_confirmpwd/suffix_html.php');
+		
+			include_once('includes/html/wrapper/suffix_html.php');
+			$_SESSION['grnet_my_temp_loaded_entity'][arg(1)] = entity_load('entityform', array(arg(1)));
+			 
+			if(arg(0)=='eform'){
+				 
+				$form['field_ldapregistr_username']['
+				$form['field_ldapregistr_username']['
+				 
+				$form['field_ldapregistr_pwd']['
+				$form['field_ldapregistr_pwd']['
+				$form['field_ldapregistr_confirmpwd']['
+				$form['field_ldapregistr_confirmpwd']['
+				$form['
+			}elseif(!$_SESSION['cas_name']){
+				if(arg(0)=='entityform'){
+					$form['required-fields group-ldapregistr-personaldata field-group-fieldset form-wrapper']['
+	      		<fieldset class="required-fields group-ldapregistr-credentials field-group-fieldset form-wrapper">
+	      		  <legend><span class="fieldset-legend">Όνομα χρήστη και κωδικός πρόσβασης</span></legend>
+	      		  <div class="fieldset-wrapper">
+	      		    <div class="field-type-text field-name-field-ldapregistr-username field-widget-text-textfield form-wrapper" id="edit-field-ldapregistr-username">
+	      		      <div id="field-ldapregistr-username-add-more-wrapper">
+	      		        <div class="form-item form-type-textfield form-item-field-ldapregistr-username-und-0-value">
+	      		          <label for="edit-field-ldapregistr-username-und-0-value">Όνομα Χρήστη <span class="form-required" title="Το πεδίο είναι απαραίτητο.">*</span></label>
+	      		          <span class="field-content" id="grnet_username_show_field">'.grnet_core_get_username_by_entity_id(arg(1)).'</span>
+	      		        </div>
+	      		      </div>
+	      		    </div>
+	      		    <div class="form-item form-type-textfield form-item-field-ldapregistr-username-und-0-value">
+	      		      <label>Κωδικός πρόσβασης</label>
+	      		      <div style="margin-top:10px;"><span class="field-content">**********</span></div>
+	      		    </div>
+	      		  </div>
+	      		</fieldset>';
+					$form['field_ldapregistr_username']['
+				}
+				 
+				 
+				 
+				$form['field_ldapregistr_username']['
+		      <div class="form-item form-type-textfield form-item-field-ldapregistr-username-und-0-value">
+					  <label>Κωδικός πρόσβασης</label>
+            <div style="margin-top:10px;"><span class="field-content">**********</span></div>
+          </div>';
+				$form['field_ldapregistr_pwd']['
+				$form['field_ldapregistr_confirmpwd']['
+				 
+				$form['
+				 
+			}else{
+				 
+				 
+				$form['required-fields group-ldapregistr-personaldata field-group-fieldset form-wrapper']['
+	      		<fieldset class="required-fields group-ldapregistr-credentials field-group-fieldset form-wrapper">
+	      		  <legend><span class="fieldset-legend">Όνομα χρήστη και κωδικός πρόσβασης</span></legend>
+	      		  <div class="fieldset-wrapper">
+	      		    <div class="field-type-text field-name-field-ldapregistr-username field-widget-text-textfield form-wrapper" id="edit-field-ldapregistr-username">
+	      		      <div id="field-ldapregistr-username-add-more-wrapper">
+	      		        <div class="form-item form-type-textfield form-item-field-ldapregistr-username-und-0-value">
+	      		          <label for="edit-field-ldapregistr-username-und-0-value">Όνομα Χρήστη <span class="form-required" title="Το πεδίο είναι απαραίτητο.">*</span></label>
+	      		          <span class="field-content" id="grnet_username_show_field">'.grnet_core_get_username_by_entity_id(arg(1)).'</span>
+	      		        </div>
+	      		      </div>
+	      		    </div>
+					      <div class="form-item form-type-textfield form-item-field-ldapregistr-username-und-0-value">
+								  <label>Κωδικός Πρόσβασης</label>
+			            <div style="margin-top:10px;"><a href="/manage_password">Διαχείριση κωδικού</a></div>
+			          </div>
+	      		  </div>
+	      		</fieldset>';
+				 
+				 
+				$form['field_ldapregistr_username']['
+				$form['field_ldapregistr_pwd']['
+				$form['field_ldapregistr_confirmpwd']['
+				
+				$form['
+				
+			}
+		
+	}
+}
+function _ldapregistration_validation_anonymous($form, &$form_state) {
+	$name = $form['field_ldapregistr_name'][und][0]['value']['
+	if(!grnet_registration_check_name($name)){
+		form_set_error('field_ldapregistr_name', 'Στο Όνομα επιτρέπονται μόνο αλφαβητικοί χαρακτήρες από 1 έως 50 χαρακτήρες!!');
+	}
+	
+	
+	$surname = $form['field_ldapregistr_surname'][und][0]['value']['
+	if(!grnet_registration_check_surname($surname)){
+		form_set_error('field_ldapregistr_surname', 'Στο Επώνυμο επιτρέπονται μόνο αλφαβητικοί χαρακτήρες από 1 έως 50 χαρακτήρες!!');
+	}
+	
+	$amka = $form['field_ldapregistr_amka'][und][0]['value']['
+	if(!grnet_core_validateAMKA($amka)){
+		form_set_error('field_ldapregistr_amka', 'Εισάγεται ένα έγκυρο ΑΜΚΑ.');
+	}
+	
+	
+	$email = $form['field_ldapregistr_email'][und][0]['email']['
+	if(!grnet_core_isEmailValidDueToDomainSuffixedPolicy($email)){
+		form_set_error('field_ldapregistr_email', 'Το email σας πρέπει να έχει κατάληξη ίδια με το domain του νοσοκομείου. (@'.variable_get('grnet_domain_suffixed_emails').')');
+	}
+	
+	
+  $username = $form['field_ldapregistr_username'][und][0]['value']['
+	if(!grnet_registration_check_username($username)){
+		form_set_error('field_ldapregistr_pwd', 'Το όνομα χρήστη δεν πληρεί της πολιτικές ασφαλείας.');
+	}
+	
+	$password = $form['field_ldapregistr_pwd'][und][0][password_field]['
+	$confirmation_password = $form['field_ldapregistr_confirmpwd'][und][0][password_field]['
+	
+ 	if(!grnet_password_generator_check_password_strength($password,true)){
+		form_set_error('field_ldapregistr_pwd', 'Ο κωδικός πρόσβασης δεν πληρεί της πολιτικές ασφαλείας.');
+	}else{
+		if($password<>$confirmation_password){
+			form_set_error('field_ldapregistr_pwd', '');
+			form_set_error('field_ldapregistr_confirmpwd', 'Οι κωδικοί δεν είναι ίδιοι!!');
+		}
+	} 
+	return false;
+}
+function _ldapregistration_validation_ldapuser($form, &$form_state) {
+	$name = $form['field_ldapregistr_name'][und][0]['value']['
+	if(!grnet_registration_check_name($name)){
+		form_set_error('field_ldapregistr_name', 'Στο Όνομα επιτρέπονται μόνο αλφαβητικοί χαρακτήρες από 1 έως 50 χαρακτήρες!!');
+	}
+	$surname = $form['field_ldapregistr_surname'][und][0]['value']['
+	if(!grnet_registration_check_surname($surname)){
+		form_set_error('field_ldapregistr_surname', 'Στο Επώνυμο επιτρέπονται μόνο αλφαβητικοί χαρακτήρες από 1 έως 50 χαρακτήρες!!');
+	}
+	$amka = $form['field_ldapregistr_amka'][und][0]['value']['
+	if(!grnet_core_validateAMKA($amka)){
+		form_set_error('field_ldapregistr_amka', 'Εισάγεται ένα έγκυρο ΑΜΚΑ.');
+	}
+	$email = $form['field_ldapregistr_email'][und][0]['email']['
+	if(!grnet_core_isEmailValidDueToDomainSuffixedPolicy($email)){
+		form_set_error('field_ldapregistr_email', 'Το email σας πρέπει να έχει κατάληξη ίδια με το domain του νοσοκομείου. (@'.variable_get('grnet_domain_suffixed_emails').')');
+	}
+	return false;
+}
+function _ldapregistration_validation_manager($form, &$form_state) {
+	if( grnet_core_user_has_role('manager') &&
+			($form["field_ldapregistr_status"]['und']['
+			$form["field_ldapregistr_status"]['und']['
+			$form["field_ldapregistr_status"]['und']['
+			$form["field_ldapregistr_status"]['und']['
+	    )
+	){
+		 
+		form_set_error('field_ldapregistr_status', 'Η κατάσταση της αίτησης τροποποιήθηκε ή δεν επιτρέπεται η αποθήκευση από αυτή την κατάσταση!! Πατήστε <a href="/requests/all">εδώ</a> για επιστροφή στα αιτήματα μεταβολής.');
+	}
+	
+	$name = $form['field_ldapregistr_name'][und][0]['value']['
+	if(!grnet_registration_check_name($name)){
+		form_set_error('field_ldapregistr_name', 'Στο Όνομα επιτρέπονται μόνο αλφαβητικοί χαρακτήρες από 1 έως 50 χαρακτήρες!!');
+	}
+	
+	
+	$surname = $form['field_ldapregistr_surname'][und][0]['value']['
+	if(!grnet_registration_check_surname($surname)){
+		form_set_error('field_ldapregistr_surname', 'Στο Επώνυμο επιτρέπονται μόνο αλφαβητικοί χαρακτήρες από 1 έως 50 χαρακτήρες!!');
+	}
+	
+	
+	$amka = $form['field_ldapregistr_amka'][und][0]['value']['
+	if(!grnet_core_validateAMKA($amka)){
+		form_set_error('field_ldapregistr_amka', 'Εισάγεται ένα έγκυρο ΑΜΚΑ.');
+	}
+	
+	
+	$email = $form['field_ldapregistr_email'][und][0]['email']['
+	
+	if(!grnet_core_isEmailValidDueToDomainSuffixedPolicy($email)){
+		form_set_error('field_ldapregistr_email', 'Το email σας πρέπει να έχει κατάληξη ίδια με το domain του νοσοκομείου. (@'.variable_get('grnet_domain_suffixed_emails').')');
+	}
+	
+	return false;
+}
+function grnet_registration_cron(){
+	
+	/*
+	  
+    WATCHDOG_EMERGENCY: Emergency, system is unusable.
+    WATCHDOG_ALERT: Alert, action must be taken immediately.
+    WATCHDOG_CRITICAL: Critical conditions.
+    WATCHDOG_ERROR: Error conditions.
+    WATCHDOG_WARNING: Warning conditions.
+    WATCHDOG_NOTICE: (default) Normal but significant conditions.
+    WATCHDOG_INFO: Informational messages.
+    WATCHDOG_DEBUG: Debug-level messages.
+	*/
+	
+	
+	
+	
+	
+	$period_in_seconds = variable_get('grnet_mail_verification_duration_in_minutes')*60;
+	$timestamp_barrier = time()-$period_in_seconds;
+	
+	
+	
+		$result = db_query("SELECT entfrm.entityform_id as ent_id
+				                FROM {entityform} AS entfrm
+				                  JOIN {field_data_field_ldapregistr_status} as entfrm_st 
+				                  	ON (entfrm.entityform_id = entfrm_st.entity_id)
+				                WHERE
+												  entfrm_st.field_ldapregistr_status_value = 'prepending' AND 
+											    entfrm.created < :timestamp_barrier",array(':timestamp_barrier' => $timestamp_barrier));
+				
+		
+		
+		foreach ($result as $rec) {
+			
+				$entity_instance = entity_load('entityform', array($rec->ent_id));
+				$entity_instance = $entity_instance[$rec->ent_id];
+				
+				     $ent_id = $rec->ent_id;
+				   $ent_name = $entity_instance->field_ldapregistr_name['und'][0]['value'];
+				$ent_surname = $entity_instance->field_ldapregistr_surname['und'][0]['value'];
+				  $ent_email = $entity_instance->field_ldapregistr_email['und'][0]['email'];								
+			     $ent_amka = $entity_instance->field_ldapregistr_amka['und'][0]['value'];
+				
+				
+			
+				watchdog('grnet registration prepending', '<b><u>Submission Cron Deleted</u></b>  <br> 
+						                                  <b>id :</b> '.$ent_id.'          <br> 
+						                               <b>Όνομα :</b> '.$ent_name.'        <br> 
+						                             <b>Επώνυμο :</b> '.$ent_surname.'     <br> 
+						                               <b>Email :</b> '.$ent_email.'       <br> 
+						                                <b>ΑΜΚΑ :</b> '.$ent_amka, NULL , WATCHDOG_WARNING);
+				
+				entity_delete('entityform', $ent_id);
+				
+		}
+			
+		
+		
+		
+		
+		
+		
+		$period_in_seconds = variable_get('grnet_complete_submission_duration_in_days')*86400;
+		$timestamp_barrier = time()-$period_in_seconds;
+		
+		
+		
+		$result = db_query("SELECT entfrm.entityform_id as ent_id
+				                FROM {entityform} AS entfrm
+				                  JOIN {field_data_field_ldapregistr_status} as entfrm_st
+				                  	ON (entfrm.entityform_id = entfrm_st.entity_id)
+				                WHERE
+												  entfrm_st.field_ldapregistr_status_value = 'pending' AND
+											    entfrm.created < :timestamp_barrier",array(':timestamp_barrier' => $timestamp_barrier));
+		
+		
+		
+		foreach ($result as $rec) {
+				
+			$entity_instance = entity_load('entityform', array($rec->ent_id));
+			$entity_instance = $entity_instance[$rec->ent_id];
+		
+			$ent_id = $rec->ent_id;
+			$ent_name = $entity_instance->field_ldapregistr_name['und'][0]['value'];
+			$ent_surname = $entity_instance->field_ldapregistr_surname['und'][0]['value'];
+			$ent_email = $entity_instance->field_ldapregistr_email['und'][0]['email'];
+			$ent_amka = $entity_instance->field_ldapregistr_amka['und'][0]['value'];
+		
+		
+				
+			watchdog('grnet registration pending', '<b><u>Submission Cron Deleted</u></b>  <br>
+						                                  <b>id :</b> '.$ent_id.'          <br>
+						                               <b>Όνομα :</b> '.$ent_name.'        <br>
+						                             <b>Επώνυμο :</b> '.$ent_surname.'     <br>
+						                               <b>Email :</b> '.$ent_email.'       <br>
+						                                <b>ΑΜΚΑ :</b> '.$ent_amka, NULL , WATCHDOG_WARNING);
+		
+			entity_delete('entityform', $ent_id);
+		
+		}
+			
+		
+		
+	
+}
diff --git a/grnet_registration/includes/html/NewFile.html b/grnet_registration/includes/html/NewFile.html
new file mode 100644
index 0000000..505ec37
--- /dev/null
+++ b/grnet_registration/includes/html/NewFile.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="UTF-8">
+<title>Insert title here</title>
+</head>
+<body>
+</body>
+</html>
\ No newline at end of file
diff --git a/grnet_registration/includes/html/field_ldapregistr_confirmpwd/prefix_html.php b/grnet_registration/includes/html/field_ldapregistr_confirmpwd/prefix_html.php
new file mode 100644
index 0000000..30cdfb8
--- /dev/null
+++ b/grnet_registration/includes/html/field_ldapregistr_confirmpwd/prefix_html.php
@@ -0,0 +1,4 @@
+<?php
+$field_ldapregistr_confirmpwd_prefix_html ='
+		  <div class="columns" style="padding:0px;">
+		';
\ No newline at end of file
diff --git a/grnet_registration/includes/html/field_ldapregistr_confirmpwd/suffix_html.php b/grnet_registration/includes/html/field_ldapregistr_confirmpwd/suffix_html.php
new file mode 100644
index 0000000..fd1781b
--- /dev/null
+++ b/grnet_registration/includes/html/field_ldapregistr_confirmpwd/suffix_html.php
@@ -0,0 +1,5 @@
+<?php
+$field_ldapregistr_confirmpwd_suffix_html = '
+							<small class="note" id="confirmerror"></small>
+						</div>
+		';
\ No newline at end of file
diff --git a/grnet_registration/includes/html/field_ldapregistr_pwd/prefix_html.php b/grnet_registration/includes/html/field_ldapregistr_pwd/prefix_html.php
new file mode 100644
index 0000000..2eb27bb
--- /dev/null
+++ b/grnet_registration/includes/html/field_ldapregistr_pwd/prefix_html.php
@@ -0,0 +1,3 @@
+<?php
+	$field_ldapregistr_pwd_prefix_html ='<div class="columns" style="padding:0px;">';
+?>
\ No newline at end of file
diff --git a/grnet_registration/includes/html/field_ldapregistr_pwd/suffix_html.php b/grnet_registration/includes/html/field_ldapregistr_pwd/suffix_html.php
new file mode 100644
index 0000000..37dfc90
--- /dev/null
+++ b/grnet_registration/includes/html/field_ldapregistr_pwd/suffix_html.php
@@ -0,0 +1,21 @@
+<?php
+$alltest = array('regexpTest', 'consecutivenumbersTest', 'lengthTest', 'similarityTest', 'uniqueTest');
+$testmessage['regexpTest'] = "Τουλάχιστον ".variable_get('passwordStrength_nonAlpha')." μη αλφαριθμητικοί χαρακτήρες πρέπει να περιέχονται στον κωδικό.";
+$testmessage['consecutivenumbersTest'] = "Ο κωδικός δεν πρέπει να περιέχει περισσότερα από ".variable_get('passwordStrength_minCons')." διαδοχικά νούμερα, σε αύξουσα ή φθίνουσα σειρά.";
+$testmessage['lengthTest'] =  "Ο κωδικός πρέπει να έχει τουλάχιστον ".variable_get('passwordStrength_minLen')." χαρακτήρες";
+$testmessage['similarityTest'] = "Ο κωδικός δεν πρέπει να μοιάζει πολύ με το όνομα χρήστη.";
+$testmessage['uniqueTest'] =  "Ο κωδικός πρέπει να έχει τουλάχιστον ".variable_get('passwordStrength_minUniq')." διαφορετικούς χαρακτήρες";
+foreach($alltest as $test){
+	$outputmessages[$test] = $testmessage[$test];
+}
+$field_ldapregistr_pwd_suffix_html ='
+  <div class="bubble" id="bubblepass">
+    <ul>';
+foreach($outputmessages as $key => $value){
+	$field_ldapregistr_pwd_suffix_html .= '<li class="password_note" id="'.$key.'">'.$value.'</li>';
+}
+$field_ldapregistr_pwd_suffix_html .='
+    </ul>
+  </div>
+  <small class="note" id="passerror"></small>
+</div>';
\ No newline at end of file
diff --git a/grnet_registration/includes/html/field_ldapregistr_username/prefix_html.php b/grnet_registration/includes/html/field_ldapregistr_username/prefix_html.php
new file mode 100644
index 0000000..82ce1f1
--- /dev/null
+++ b/grnet_registration/includes/html/field_ldapregistr_username/prefix_html.php
@@ -0,0 +1,5 @@
+<?php
+$field_ldapregistr_username_prefix_html .= '
+		
+																					 ';
+?>
\ No newline at end of file
diff --git a/grnet_registration/includes/html/field_ldapregistr_username/suffix_html.php b/grnet_registration/includes/html/field_ldapregistr_username/suffix_html.php
new file mode 100644
index 0000000..d1ca141
--- /dev/null
+++ b/grnet_registration/includes/html/field_ldapregistr_username/suffix_html.php
@@ -0,0 +1,9 @@
+<?php
+$field_ldapregistr_username_suffix_html ='
+										<div class="note" id="usererror"></div>
+									  <div class="note" id="username_descr"> Πρέπει να περιέχει γράμματα και αριθμούς
+									  εκτός από σημεία στίξης και ειδικούς χαρακτήρες (*,&,-,/@,
+									κλπ)
+									  </div>
+';
+?>
\ No newline at end of file
diff --git a/grnet_registration/includes/html/wrapper/prefix_html.php b/grnet_registration/includes/html/wrapper/prefix_html.php
new file mode 100644
index 0000000..80f4b93
--- /dev/null
+++ b/grnet_registration/includes/html/wrapper/prefix_html.php
@@ -0,0 +1,64 @@
+<?php
+$passes = grnet_password_generator_generate_passes();
+$wrapper_prefix_html = '
+			<div class="panel">
+				<div
+					class="large-12 medium-12 small-medium1 small-medium2 small-medium3 small-12 columns">
+					<div class="post_position" id="post_position">
+						<div class="bubble_div effect" id="bubble_div" style="display: none">
+							<div class="suggested_title">
+								Προτεινόμενα passwords:
+								<hr>
+							</div>
+							<div class="large-12 medium-12 small-12 columns">';
+$counter=0;
+foreach($passes as $pass){
+  if($counter%2==0){
+  	$fopass = $pass;
+  }
+  
+  if($counter%2==1){
+		$wrapper_prefix_html .= '
+								<div class="large-12 medium-12 small-12 columns">
+									<div class="large-6 medium-6 small-12 columns">
+										<a href="javascript:void(0);">
+											<div class="sugg_pass but grow" id="sugg_pass_'.($counter-1).'">
+												'.$fopass.'</div>
+										</a>
+									</div>
+									<div class="large-6 medium-6 small-12 columns">
+										<a href="javascript:void(0);">
+											<div class="sugg_pass but grow" id="sugg_pass_'.$counter.'">
+												'.$pass.'</div>
+										</a>
+									</div>
+								</div>';
+  } 
+  $counter++;
+}
+$wrapper_prefix_html .= '
+							</div>
+							<!--end large-12 medium-12 small-12 columns -->
+							<hr>
+							<div class="select_note">Επιλέξτε με click</div>
+							<div class="row">
+								<div class="large-12 medium-12 small-12 columns">
+									<div class="large-7 medium-6 small-6 columns"></div>
+									<!--
+                    <div class="large-5 medium-6 small-6 columns">
+                        <a href="
+                    </div>
+									-->
+								</div>
+							</div>
+						</div>
+						<!--End of bubble_div effect div -->
+					</div>
+					<!--End of post_position div -->
+				</div>
+			</div>
+		
+		
+			<div class="input_card">
+				
+		';
diff --git a/grnet_registration/includes/html/wrapper/suffix_html.php b/grnet_registration/includes/html/wrapper/suffix_html.php
new file mode 100644
index 0000000..aa369ee
--- /dev/null
+++ b/grnet_registration/includes/html/wrapper/suffix_html.php
@@ -0,0 +1,5 @@
+<?php
+$wrapper_suffx_html = '
+		</div>
+	<!--End of div large-12 a-->
+';
\ No newline at end of file
diff --git a/grnet_registration/includes/policy/name.inc b/grnet_registration/includes/policy/name.inc
new file mode 100644
index 0000000..8405612
--- /dev/null
+++ b/grnet_registration/includes/policy/name.inc
@@ -0,0 +1,8 @@
+<?php
+  $result_policy = true;
+  
+	if(!preg_match('/^[A-Za-zΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψωΆΈΉΊΌΎΏάέήίόύώΪΫϊϋΐΰς ]{1,100}$/' , $name)){
+		$result_policy = false;
+	}
+	
+?>
diff --git a/grnet_registration/includes/policy/surname.inc b/grnet_registration/includes/policy/surname.inc
new file mode 100644
index 0000000..04f010d
--- /dev/null
+++ b/grnet_registration/includes/policy/surname.inc
@@ -0,0 +1,8 @@
+<?php
+  $result_policy = true;
+  
+  	if(!preg_match('/^[A-Za-zΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψωΆΈΉΊΌΎΏάέήίόύώΪΫϊϋΐΰς ]{1,100}$/' , $surname)){
+		$result_policy = false;
+	}
+	
+?>
diff --git a/grnet_registration/includes/policy/username.inc b/grnet_registration/includes/policy/username.inc
new file mode 100644
index 0000000..81d216b
--- /dev/null
+++ b/grnet_registration/includes/policy/username.inc
@@ -0,0 +1,13 @@
+<?php
+  $result_policy = true;
+  
+  
+	if($username =='polinux'){
+		$result_policy = false;
+	}
+	if(!preg_match('/^[a-z0-9._-]{4,20}$/' , $username)){
+		$result_policy = false;
+		$return_message = 'Μόνο αλφαριθμητικά μικρά επιτρέπονται από 4 έως 20 χαρακτήρες!!';
+	}
+	
+?>
diff --git a/grnet_registration/js/main.js b/grnet_registration/js/main.js
new file mode 100755
index 0000000..0f4a9ea
--- /dev/null
+++ b/grnet_registration/js/main.js
@@ -0,0 +1,545 @@
+//var scontinue = false;
+var usernameValid = false;
+var passwordValid = false;
+var passwordSame = false;
+var afmerror = false;
+var emailValid = false;
+var amkaValid = false;
+
+//var validpin=true;
+
+
+
+
+(function ($) {
+
+    
+	
+	// FUNCTIONS (Starts)
+	
+
+	// Username Check Function (Starts)
+	window.check_username  = function check_username(){
+	
+		username = $("#edit-field-ldapregistr-username-und-0-value").val();
+		//scontinue = false;
+
+		if(username == ''){
+		  $("#usererror").html('Παρακαλώ συμπληρώστε το πεδίο');
+		  $("#usererror").addClass('not_valid');
+		  usernameValid = false;
+		  $("#edit-field-ldapregistr-username-und-0-value").addClass('error');
+		  //scontinue = false;
+		  //returncode = 0;
+		}else{
+         			    	
+		  $.ajax({
+			  			url:'registration/check_username/'+username,
+					    success:function(data) {
+					    	if($.trim(data) != '0') {
+					     		$("#edit-field-ldapregistr-username-und-0-value").val('');
+					     		$("#usererror").html(data);
+					     		$("#usererror").addClass('not_valid');
+					     		usernameValid = false;
+					     		//scontinue = false;
+					     		//returncode = 0;
+					    	} else {
+					     		reset_usererrors();
+					     		usernameValid = true;
+					     		//scontinue = true;
+					     		//returncode = 1;
+							}
+				
+					    },
+					    error:function(){
+					    	//alert('username ajax error');
+							$("#usererror").html('Δεν μπόρεσε να γίνει επιβεβαίωση εγκυρότητας ονόματος'); 
+							$("#usererror").addClass('not_valid');
+							usernameValid = false;
+						    scontinue = false;
+						    //returncode = 0;
+						}
+			});
+
+        		
+		}
+		
+		return usernameValid;
+		
+    }
+	// Username Check Function (Ends)
+	
+
+	
+	// Password Check Function (Starts)
+	window.check_password  = function check_password(){
+
+			//$('#edit-field-ldapregistr-confirmpwd-und-0-password-field').trigger('focusout');
+			var pass = $("#edit-field-ldapregistr-pwd-und-0-password-field").val();
+			var confpass = $("#edit-field-ldapregistr-confirmpwd-und-0-password-field").val();
+			var username = $("#edit-field-ldapregistr-username-und-0-value").val();
+
+
+
+			if(pass==''){
+		     	$("#passerror").html('Παρακαλώ συμπληρώστε το πεδίο');
+		     	$("#passerror").addClass('not_valid');
+		     	passwordValid = false;
+		     	return false;
+			}
+
+			
+			//now that the username is valid and the password is not empty, request for password strength
+			//var dataString = $('ldapregistration-entityform-edit-form').serialize();
+			var dataString = 'username='+$("#edit-field-ldapregistr-username-und-0-value").val()+'&pwd='+$("#edit-field-ldapregistr-pwd-und-0-password-field").val();
+			
+				  $.ajax({
+					    type:'POST',
+					    data:dataString,
+					    url:'grnet/password_generator/check_strength',
+					    success:function(data) {
+					     	if($.trim(data) != '0') {
+								$.each($.parseJSON($.trim(data)), function(idx, obj) {
+									$("#"+obj.tname).addClass(obj.tstatus);
+								});
+		         				passwordValid = false;
+		         				//scontinue = false;
+								//return false;
+				         	} else {
+				         		reset_passerrors();
+				         		set_password_valid();
+				         		passwordValid = true;
+				         		
+				         		check_password_confirm();
+				         		
+				         		//scontinue = true;
+				         		//return true;
+							 }
+
+					    },
+					    error:function(){
+					    	//alert('pwd ajax error');
+							$("#passerror").html('Δεν μπόρεσε να γίνει επιβεβαίωση εγκυρότητας');  
+		         			$("#passerror").addClass('not_valid');
+		         			passwordValid = false;
+		         			//scontinue = false;
+							//return false;		
+					   }
+				  	});
+
+				
+	  return passwordValid;
+      
+	}
+	// Password Check Function (Ends)
+	
+	
+	// Password Confirmation Check Function (Starts)
+	window.check_password_confirm  = function check_password_confirm(){
+		//$('#edit-field-ldapregistr-confirmpwd-und-0-password-field').trigger('focusout');
+		var pass = $("#edit-field-ldapregistr-pwd-und-0-password-field").val();
+		var confpass = $("#edit-field-ldapregistr-confirmpwd-und-0-password-field").val();
+		
+		if(pass!=confpass){
+			passwordSame = false;
+			//scontinue = false;
+			$("#confirmerror").html('Οι κωδικοί δεν είναι ίδιοι');  
+	        $("#confirmerror").addClass('not_valid');
+	        //return false;
+		}else{
+			passwordSame = true;
+			$("#confirmerror").html('');  
+	        //$("#confirmerror").addClass('not_valid');
+		}
+		
+		return passwordSame;
+		
+	}
+	// Confirmation Password Check Function (Ends)
+	
+	
+	// Other Helpfull Functions (Starts)
+	function reset_usererrors(){
+		  $("#usererror").html('');
+		  $("#usererror").removeClass('not_valid');
+		  $("#edit-field-ldapregistr-username-und-0-value").removeClass('error');
+	}
+	
+
+
+	function set_password_valid(){
+		$("#consecutivenumbersTest").addClass('valid');
+		$("#similarityTest").addClass('valid');
+		$("#regexpTest").addClass('valid');
+		$("#lengthTest").addClass('valid');
+		$("#uniqueTest").addClass('valid');
+		passwordValid = true;
+		//scontinue = true;
+	}
+
+
+
+	function reset_passerrors(){
+		$("#passerror").html('');
+		$("#passerror").removeClass('not_valid');
+		$("#confirmerror").html('');
+		$("#edit-field-ldapregistr-pwd-und-0-password-field").removeClass('error');
+
+	}	
+	// Other Helpfull Functions (Ends)
+	
+	
+	// FUNCTIONS (Ends)		
+		
+	
+	$(document).ready(function() {
+		
+		
+		
+		
+		
+		
+		
+$("#bubblepass").hide();
+
+function strength_checks_ok(){
+
+	var theresult = true;
+
+	if($("#consecutivenumbersTest").hasClass('not_valid')){
+		theresult = false;
+		$("#edit-field-ldapregistr-pwd-und-0-password-field").addClass('error');
+	}
+
+	if($("#similarityTest").hasClass('not_valid')){
+		theresult = false;
+		$("#edit-field-ldapregistr-pwd-und-0-password-field").addClass('error');
+	}
+
+	if($("#regexpTest").hasClass('not_valid')){
+		theresult = false;
+		$("#edit-field-ldapregistr-pwd-und-0-password-field").addClass('error');
+	}
+
+	if($("#lengthTest").hasClass('not_valid')){
+		theresult = false;
+		$("#edit-field-ldapregistr-pwd-und-0-password-field").addClass('error');
+	}
+
+	if($("#uniqueTest").hasClass('not_valid')){
+		theresult = false;
+		$("#edit-field-ldapregistr-pwd-und-0-password-field").addClass('error');
+	}
+	return theresult;
+}
+
+
+function reset_strengtherrors(){
+	$("#consecutivenumbersTest").removeClass('not_valid');
+	$("#similarityTest").removeClass('not_valid');
+	$("#regexpTest").removeClass('not_valid');
+	$("#lengthTest").removeClass('not_valid');
+	$("#uniqueTest").removeClass('not_valid');
+	$("#consecutivenumbersTest").removeClass('valid');
+	$("#similarityTest").removeClass('valid');
+	$("#regexpTest").removeClass('valid');
+	$("#lengthTest").removeClass('valid');
+	$("#uniqueTest").removeClass('valid');
+	$("#edit-field-ldapregistr-pwd-und-0-password-field").removeClass('error');
+
+}
+
+
+
+//highlight selected password and insert into form
+$('div[id^="sugg_pass_"]').click(function() {
+	$('div[id^="sugg_pass_"]').removeClass('highlighted_password');
+	$(this).addClass('highlighted_password');
+	thenewpass = $(this).text().trim();
+	reset_strengtherrors();
+	reset_passerrors();
+	$("#edit-field-ldapregistr-pwd-und-0-password-field").val(thenewpass);
+	$("#edit-field-ldapregistr-confirmpwd-und-0-password-field").val(thenewpass);
+	set_password_valid();
+});
+
+
+$('#afm').click(function(){
+	$("#afmError").hide();
+        afmerror = false;
+});
+
+
+
+//clear usererrors
+$('#edit-field-ldapregistr-username-und-0-value').click(function(){
+	reset_usererrors();
+	$("#bubblepass").hide();
+});
+
+//clear password errors
+$('#edit-field-ldapregistr-pwd-und-0-password-field').click(function(){
+	reset_passerrors();
+	reset_strengtherrors();
+	$("#bubble_div").show();
+	$("#bubblepass").show();
+	
+});
+
+$('#edit-field-ldapregistr-confirmpwd-und-0-password-field').click(function(){
+	if(strength_checks_ok())
+			$("#bubblepass").hide();
+});
+
+
+
+
+
+$("#afm").keyup(function(e) {
+	afm = $("#afm").val();
+	if( afm.length > 8 && checkAFM(afm)==false){
+                afmerror = true;
+		$("#afmError").css('display', 'inline-block');
+	}else {
+               afmerror = false;
+		$("#afmError").css('display', 'none');
+            }
+
+});
+
+$("#afm").focusout(function(e) {
+	afm = $("#afm").val();
+	if(!checkAFM(afm)){
+          afmerror = true;
+	$("#afmError").css('display', 'inline-block');      
+	}
+});
+
+
+
+//ajax call to check username
+$("#edit-field-ldapregistr-username-und-0-value").focusout(function(e) {
+	check_username();
+});	
+
+
+
+
+	
+
+//ajax call to check password strength
+$("#edit-field-ldapregistr-pwd-und-0-password-field").focusout(function(e) {
+	check_password();
+});	
+
+
+
+
+$("#edit-field-ldapregistr-confirmpwd-und-0-password-field").focusout(function(e) {
+	check_password_confirm();
+});
+
+
+
+
+
+
+	$('#subbutton').click(function(e) {
+	
+	//maybe username is prefilled please check and se usernameValid = true
+	var username_readonly = $('#edit-field-ldapregistr-username-und-0-value').prop('readonly');
+	var uid = $('#edit-field-ldapregistr-username-und-0-value').val();
+	if(username_readonly && uid!='')
+		usernameValid = true;
+
+		$('#edit-field-ldapregistr-confirmpwd-und-0-password-field').trigger('focusout');
+
+		if($('#doyouagree').prop('checked')) {
+			$("#agreeerror").hide();
+			if(usernameValid==true && passwordValid==true && passwordSame==true){
+	
+				 var r=confirm("Οι λογαριασμοί είναι αυστηρά προσωπικοί και οι κωδικοί πρέπει να φυλάσσονται με ασφάλεια");
+					if (r==true){
+					 	$("#passer").submit();
+					}else{
+					   return false;
+					} 
+				
+			}
+		} else {
+			$("#agreeerror").show();
+		    return false;
+		}
+
+
+	});
+
+
+$('#doyouagree').change(function(){
+    if ($('#doyouagree').prop('checked'))
+        $("#agreeerror").hide();
+    else
+    	$("#agreeerror").show();
+
+});
+
+
+
+$('#bothempty').hide();
+
+//remove error message on click in one of two inputs
+	$('#email').click(function(e) {
+		$('#bothempty').hide();
+	});
+
+	$('#mobile').click(function(e) {
+		$('#bothempty').hide();
+	});
+
+
+//check one of two fields mandatory
+	$("#masterform").submit(function(e) {
+
+		var themail = $("#email").val();
+		var themobile = $("#mobile").val();
+
+		if(themail=='' && themobile==''){
+			$('#bothempty').show();
+			e.preventDefault();
+		} else
+			$('#bothempty').hide();
+                    
+                 if(afmerror==true) {
+                     e.preventDefault();
+                 }
+	});
+
+
+	$('#thepin').click(function(e) {
+		$("#thenote").css('color','#85898F');
+		$('#pinsuccess').hide();
+		$('#pinerror').hide();
+	});
+
+
+	$('#thepin').keydown(function(e) {
+	    if (e.keyCode == 13) {
+	    	$('#valbbutton').trigger('click');
+	       // alert('not like this');
+	        return false;
+	    }
+	});
+
+
+	$('#valbbutton').click(function(e) {
+
+		$('#pinsuccess').hide();
+		$('#pinerror').hide();
+		$("#thenote").css('color','#85898F');
+		$("#pinmessage").html('');
+		$("#pin-result").html('');
+
+		//here check with ajax
+		var pin = $("#thepin").val();
+		var afm = $("#afm").val();
+		var amka = $("#amka").val();
+
+		if(pin==''){
+	        $("#thenote").css('color','red');
+    		//validpin = false;
+		 	return false;
+		} else {
+			var dataString = $('#pinform').serialize()+'&afm='+afm+'&amka='+amka;
+				  $.ajax({
+					    type:'POST',
+					    data:dataString,
+					    url:'includes/check_pin.php',
+					    success:function(data) {
+					     	if(data != '0') {
+					     		$('#pinerrormessage').html('Ο κωδικός PIN που εισαγάγατε είναι λανθασμένος ή έχει λήξει. Παρακαλούμε προσπαθήστε να τον εισάγετε ξανά ή επιλέξτε <br>"Αποστολή νέου κωδικού" για να σας αποσταλεί νέος.');
+								$('#pinerror').show();
+		         				//validpin = false;
+								return false;
+				         	} else {
+				         		$("#pinmessage").html('');
+								$("#pin-result").html('');
+								$('#pinerror').hide();
+				         		//validpin = true;
+				         		$("#pinform").submit();
+				         		return true;
+							 }
+
+					    },
+					    error:function(){
+							$("#pinmessage").html('Δεν μπόρεσε να γίνει επιβεβαίωση εγκυρότητας');  
+		         			$("#pin-result").html('<img src="img/not-available.png" />');
+		         			//validpin = false;
+							return false;		
+					   }
+				  	});
+
+			}
+
+	});
+
+
+
+
+
+
+
+
+
+$('#resend_pin').click(function(e) {
+	$('#pinerror').hide();
+	$('#pinsuccess').hide();
+
+				  $.ajax({
+					    type:'POST',
+					    //data:dataString,
+					    url:'includes/resend_pin.php',
+					    success:function(data) {
+					     	if(data != '0') {
+					     		//$('#example-hide').trigger('click');
+								$('#pinerrormessage').text('Δεν μπόρεσε να αποσταλεί νέο PIN, λόγω χρονικού περιορισμού. Παρακαλώ δοκιμάστε αργότερα');
+					     		$('#pinerror').show();
+
+				         	} else {
+				         		$('#example-hide').trigger('click');
+								$('#pinsuccessmessage').text('Σας έχει αποσταλεί νέο PIN');
+								$('#pinerror').hide();
+					     		$('#pinsuccess').show();
+							 }
+
+					    },
+					    error:function(){
+							$('#pinerrormessage').text('Πρόβλημα στην αποστολή PIN.');
+					     	$('#pinerror').show();
+					   }
+				  	});
+
+});
+
+
+
+function checkAFM(afm) {
+   if (!afm.match(/^\d{9}$/) || afm == '000000000')
+      return false;
+
+   var m = 1, sum = 0;
+   for (var i = 7; i >= 0; i--) {
+      m *= 2;
+      sum += afm.charAt(i) * m;
+   }
+
+   return sum % 11 % 10 == afm.charAt(8);
+}
+
+
+
+
+
+	});
+	
+})(jQuery);
+