User = function()
{
	var t= this;
	t.filter = {'login':"",'last_name':"",'first_name':"",'groups':"",'email':"",'parent_id':""};
	
	t.function_formatter = function(eCell, oRecord, oColumn, oData)
	{
		
		eCell.data_table_i = this;
		var edit_href = '';
		var password_href = '';
		
		edit_href = '<a href="javascript:void(0);" onclick="user.edit('+oData+');">'+icon_const.edit('Edit Users')+'</a>';
		password_href = '<a href="javascript:void(0);" onclick="user.change_password('+oData+');">'+icon_const.lock_edit('Change Password')+'</a>';
		

		var details_href = '<a href="javascript:void(0);" onclick="user.details('+oData+',this);">'+icon_const.detail('User Details')+'</a>';
		
		var delete_href = '';
		delete_href = '<a href="javascript:void(0);" onclick="user.delete_user('+oData+');">'+icon_const.delete_i()+'</a>';
		
		var approve_href = ''; 
		var fields_href = '';
		var approve_fields_href = '';
		
		if (oRecord.getData('is_member') == 1)
		{
			if (oRecord.getData('approved') != 0)
				approve_href = '<a href="javascript:void(0);" onclick="user.unapprove_user(' + oData + ');">' + icon_const.deactivate('Unapprove') + '</a>';
			else approve_href = '<a href="javascript:void(0);" onclick="user.approve_user(' + oData + ');">' + icon_const.activate('Approve') + '</a>'; 
			
			fields_href = '<a href="javascript:void(0);" onclick="user.edit_fields(' + oData + ');">' + icon_const.zoom_in('Member fields') + '</a>';
			if (not_approved_members[oData] != undefined)
			{
				approve_fields_href = '<a href="javascript:void(0);" onclick="user.approve_fields(' + oData + ',0);">' + icon_const.complete_bpo('Approve Member fields') + '</a>';
			}
		}

		//var access = '<a href="'+ajax_prefix+'AccessRights/'+oRecord.getData('department_id')+'/'+oRecord.getData('user_id')+'.html">'+icon_const.access('Access')+'</a>';
		//var login_as = '<a href="javascript:void(0);" onclick="user.login_as('+oData+');">'+icon_const.login_as()+'</a>';
		//if(!admin_user)
		login_as = '';
		eCell.innerHTML = details_href + '' + login_as + '' + edit_href + '' + password_href + delete_href + ' ' + approve_href + ' ' + fields_href + ' ' + approve_fields_href;
	};

	t.row_formatter = function(elTr, oRecord)
	{
		var id  = oRecord.getData('user_id');
	    if (not_approved_members[id] != undefined)
    	{
	        YAHOO.util.Dom.addClass(elTr, 'red_back');
	    }	    
	    return true;
	}; 

	t.delete_user = function(user_id)
	{
		if(!confirm('Are you sure?'))
			return false;
		
		params = {user_id: user_id};
		var req = new JsHttpRequest();
		
		req.onreadystatechange = function()
		{
			if(req.readyState == 4)
			{
				user_list.onPaginatorChangeRequest(user_list.getState().pagination);
			}
		}
		req.caching = false;
		req.open('POST', ajax_prefix + '?rm=ajax_delete_user', true);
		req.send(params);
	};
	
	t.approve_user = function(user_id)
	{
		if(!confirm('Are you sure?')) return false;
		
		params = {user_id: user_id};
		var req = new JsHttpRequest();
		
		req.onreadystatechange = function()
		{
			if(req.readyState == 4)
			{
				user_list.onPaginatorChangeRequest(user_list.getState().pagination);
			}
		}
		req.caching = false;
		req.open('POST', ajax_prefix + '?rm=ajax_approve_user', true);
		req.send(params);
	};
	
	t.unapprove_user = function(user_id)
	{
		if(!confirm('Are you sure?')) return false;
		
		params = {user_id: user_id};
		var req = new JsHttpRequest();
		
		req.onreadystatechange = function()
		{
			if(req.readyState == 4)
			{
				user_list.onPaginatorChangeRequest(user_list.getState().pagination);
			}
		}
		req.caching = false;
		req.open('POST', ajax_prefix + '?rm=ajax_unapprove_user', true);
		req.send(params);
	};
	
	t.login_as = function(user_id)
	{
		//alert('logging in as ' + user_id);
		document.location = ajax_prefix + 'login_as/' + user_id + '.html';
	};
	
	t.details = function(user_id, cell)
	{
		if(this['d_l_overlay' + user_id] == undefined)
		{
			this['d_l_overlay' + user_id] = new YAHOO.widget.Panel('d_l_overlay' + user_id,{
				width: "300px",//"900px",
				//height: "650px",
				visible:true,
				close: true,
				/*x: YAHOO.util.Dom.getViewportWidth() / 2,
				y: YAHOO.util.Dom.getViewportHeight() / 2 - 150,*/
				constraintoviewport:true,
				fixedcenter:true,
				modal:true,
				draggable:false,
				zIndex: 1000
			});
		}
		
		this['d_l_overlay' + user_id].setHeader('User Details');
		this['d_l_overlay' + user_id].setBody('Loading...');
		this['d_l_overlay' + user_id].setFooter('');
		this['d_l_overlay' + user_id].render(document.body);
		params = {user_id: user_id};
		var req = new JsHttpRequest();		
		req.overlay = this['d_l_overlay' + user_id];
		req.onreadystatechange = function()
		{
			if(req.readyState == 4)
			{
				//$(req.information_div).innerHTML = req.responseJS.html;
				//tab_view.selectTab(2);
				//req.overlay.setHeader('Agent Details');
				req.overlay.setBody(req.responseJS.html);
				req.overlay.setFooter('');
				req.overlay.show();
			}
		}
		req.caching = false;
		req.open('POST', ajax_prefix + '?rm=ajax_get_user_information', true);
		req.send(params);
	};
	
	t.approve_fields = function(user_id, type)
	{
		if(this['d_l_overlay' + user_id] == undefined)
		{
			this['d_l_overlay' + user_id] = new YAHOO.widget.Panel('d_l_overlay' + user_id,{
				width: "900px",//"900px",
				//height: "650px",
				visible:true,
				close: true,
				/*x: YAHOO.util.Dom.getViewportWidth() / 2,
				y: YAHOO.util.Dom.getViewportHeight() / 2 - 150,*/
				constraintoviewport:true,
				fixedcenter:true,
				modal:true,
				draggable:false,
				zIndex: 1000
			});
		}
		
		this['d_l_overlay' + user_id].setHeader('Member Fields');
		this['d_l_overlay' + user_id].setBody('Loading...');
		this['d_l_overlay' + user_id].setFooter('');
		this['d_l_overlay' + user_id].render(document.body);
		params = {user_id: user_id,type:type};
		var req = new JsHttpRequest();		
		req.user = this;
		req.overlay = this['d_l_overlay' + user_id];
		req.onreadystatechange = function()
		{
			if(req.readyState == 4)
			{
				//$(req.information_div).innerHTML = req.responseJS.html;
				//tab_view.selectTab(2);
				//req.overlay.setHeader('Agent Details');
				if (req.responseJS.error == 1)
				{
					alert('This member has not data to approve');
				}
				else
				{
					if (req.responseJS.success == 0) 
					{
						req.overlay.setBody(req.responseJS.html);
						req.overlay.show();
					}
					else 
					{
						req.overlay.hide();
						if(req.user['d_l_overlay'] != undefined)
                        {
							req.user['d_l_overlay'].destroy();
							delete req.user['e_l_overlay'];
						}
							
						//user_list.onPaginatorChangeRequest(user_list.getState().pagination);
						document.location = document.location
					}					
				}
								
			}
		}
		req.caching = false;
		req.open('POST', ajax_prefix + '?rm=ajax_get_member_fields', true);
		req.send(params);
	}

    t.add = function(info_div)
	{
		if(this['a_l_overlay'] == undefined)
		{
			this['a_l_overlay'] = new YAHOO.widget.Panel('a_l_overlay',{
				width: "300px",//"900px",
				//height: "650px",
				visible:true,
				close: true,
				/*x: YAHOO.util.Dom.getViewportWidth() / 2,
				y: YAHOO.util.Dom.getViewportHeight() / 2 - 150,*/
				constraintoviewport:true,
				fixedcenter:true,
				modal:true,
				draggable:false
			});
		}
		this['a_l_overlay'].setHeader('Add User');
		this['a_l_overlay'].setBody('Body');
		this['a_l_overlay'].setFooter('');
		this['a_l_overlay'].render(document.body);
		params = {};
		var req = new JsHttpRequest();
		req.information_div = info_div;
		req.overlay = this['a_l_overlay'];
		req.onreadystatechange = function()
		{
			if(req.readyState == 4)
			{
				$(req.information_div).innerHTML = req.responseJS.html
				//tab_view.selectTab(2);
				req.overlay.setBody(req.responseJS.html);
				req.overlay.show();
			}
		}
		req.caching = false;
		req.open('POST', ajax_prefix + '?rm=edit_department_user', true);
		req.send(params);
	};

    t.edit = function(user_id){
		if(this['e_l_overlay'] == undefined){
			this['e_l_overlay'] = new YAHOO.widget.Panel('e_l_overlay',{
				width: "300px",
				//height: "550px",
				visible: true,
				close: true,
				constraintoviewport: true,
				fixedcenter: true,
				modal: true,
				draggable: false
			});

		}
		this['e_l_overlay'].setHeader(user_id>0 ? 'Edit user' : 'Add new user');
		this['e_l_overlay'].setBody('Loading...');
		this['e_l_overlay'].setFooter('');
		this['e_l_overlay'].render(document.body);

		params = {user_id: user_id};
		var req = new JsHttpRequest();
		req.overlay = this['e_l_overlay'];
		req.onreadystatechange = function(){
			if(req.readyState == 4){
				//tab_view.selectTab(3);
				req.overlay.setBody(req.responseJS.html);
				req.overlay.show();
			}
		}
		req.caching = false;
		req.open('POST', ajax_prefix + '?rm=ajax_edit_user', true);
		req.send(params);
	};
	
	t.save_edit = function(form_id){
		//now we prepared params and ready to send
		var params = get_form_params(form_id);
		var req = new JsHttpRequest();
		params['save'] = 1;
		req.user = this;
		req.overlay = this['e_l_overlay'];

		req.onreadystatechange = function()
                {
			if(req.readyState == 4)
                        {
				//$(req.information_div).innerHTML = req.responseJS.html
				//tab_view.selectTab(3);
				if(!req.responseJS.success)
                                {
					req.user['e_l_overlay'].setBody(req.responseJS.html);

				}
                                else
                                { //if(req.responseJS.success){
					user_list.onPaginatorChangeRequest(user_list.getState().pagination);
					//tab_view.selectTab(0);
					if(req.user['e_l_overlay'] != undefined)
                                        {
						req.user['e_l_overlay'].destroy();
						delete req.user['e_l_overlay'];
					}
				}
			}
		}
		req.caching = false;
		req.open('POST', ajax_prefix + '?rm=ajax_edit_user', true);
		req.send(params);

	};
	
	t.edit_fields = function(user_id)
	{
		if(this['f_l_overlay'] == undefined)
		{
			this['f_l_overlay'] = new YAHOO.widget.Panel('f_l_overlay',{
				width: "900px",
				//height: "550px",
				visible: true,
				close: true,
				constraintoviewport: true,
				fixedcenter: true,
				modal: true,
				draggable: false
			});

		}
		this['f_l_overlay'].setHeader('Edit member fields');
		this['f_l_overlay'].setBody('Loading...');
		this['f_l_overlay'].setFooter('');
		this['f_l_overlay'].render(document.body);

		params = {user_id: user_id};
		var req = new JsHttpRequest();
		req.overlay = this['f_l_overlay'];
		req.onreadystatechange = function(){
			if(req.readyState == 4){
				//tab_view.selectTab(3);
				req.overlay.setBody(req.responseJS.html);
				req.overlay.show();
				load_simple_tiny(req.responseJS.simple_tiny);
				if (req.responseJS.data.state_id) current_state_id = req.responseJS.data.state_id;
				user.load_regions($('country_select').value);
				validator.add('edit_form');
			}
		}
		req.caching = false;
		req.open('POST', ajax_prefix + '?rm=ajax_edit_user_fields', true);
		req.send(params);
	};
	
	t.save_user_fields = function(form_elem)
	{
		if (!validator.check(form_elem.id)) return false;		
		params = {};
		if (form_elem.elements['user_id'] != undefined) params['user_id'] = form_elem.elements['user_id'].value;
		if (form_elem.elements['seo_url'] != undefined) params['seo_url'] = form_elem.elements['seo_url'].value;
		
		var req = new JsHttpRequest();
		req.onreadystatechange = function()
		{
			if(req.readyState == 4)
			{				
				if (req.responseJS.error)
				{
					document.getElementById('seo_url_error').innerHTML = 'Seo url unavailable';
					form_elem.elements['seo_url'].focus();
				}
				else
				{
					form_elem.submit();					
				}
			}
		}
		req.caching = false;
		req.open('POST', ajax_prefix + '?rm=ajax_save_user_fields', true);
		req.send(params);
		
	};
	
	t.save_edit_fields = function(form_id)
	{
		//now we prepared params and ready to send
		document.forms[form_id].elements['brief_history'].value = tinyMCE.get('brief_historyid').getContent();
		document.forms[form_id].elements['specialisations'].value = tinyMCE.get('specialisationsid').getContent();
		var params = get_form_params(form_id);
		var req = new JsHttpRequest();
		params['save'] = 1;
		req.user = this;
		req.overlay = this['f_l_overlay'];

		req.onreadystatechange = function()
        {
			if(req.readyState == 4)
            {				
				if(!req.responseJS.success)
                {
					req.user['f_l_overlay'].setBody(req.responseJS.html);
				}
                else
                {
					user_list.onPaginatorChangeRequest(user_list.getState().pagination);					
					if(req.user['f_l_overlay'] != undefined)
                    {
						req.user['f_l_overlay'].destroy();
						delete req.user['f_l_overlay'];
					}
				}
			}
		}
		req.caching = false;
		req.open('POST', ajax_prefix + '?rm=ajax_edit_user_fields', true);
		req.send(params);
	};
	

    t.change_password = function(user_id){
		if(this['e_l_overlay'] == undefined){
			this['e_l_overlay'] = new YAHOO.widget.Panel('e_l_overlay',{
				width: "300px",
				//height: "550px",
				visible: true,
				close: true,
				constraintoviewport: true,
				fixedcenter: true,
				modal: true,
				draggable: false
			});

		}
		this['e_l_overlay'].setHeader('Change password');
		this['e_l_overlay'].setBody('Loading...');
		this['e_l_overlay'].setFooter('');
		this['e_l_overlay'].render(document.body);

		params = {user_id: user_id};
		var req = new JsHttpRequest();
		req.overlay = this['e_l_overlay'];
		req.onreadystatechange = function(){
			if(req.readyState == 4){
				//tab_view.selectTab(3);
				req.overlay.setBody(req.responseJS.html);
				req.overlay.show();
			}
		}
		req.caching = false;
		req.open('POST', ajax_prefix + '?rm=ajax_change_password', true);
		req.send(params);
	};        

    t.save_password = function(form_id){
		//now we prepared params and ready to send
		var params = get_form_params(form_id);
		var req = new JsHttpRequest();
		params['save'] = 1;
		req.user = this;
		req.overlay = this['e_l_overlay'];

		req.onreadystatechange = function()
                {
			if(req.readyState == 4)
                        {
				//$(req.information_div).innerHTML = req.responseJS.html
				//tab_view.selectTab(3);
				if(!req.responseJS.success)
                                {
					req.user['e_l_overlay'].setBody(req.responseJS.html);
                                                                                
				} 
                                else
                                { //if(req.responseJS.success){
					user_list.onPaginatorChangeRequest(user_list.getState().pagination);
					//tab_view.selectTab(0);
					if(req.user['e_l_overlay'] != undefined)
                                        {
						req.user['e_l_overlay'].destroy();
						delete req.user['e_l_overlay'];
					}
				}
			}
		}
		req.caching = false;
		req.open('POST', ajax_prefix + '?rm=ajax_change_password', true);
		req.send(params);

	};	


	t.show_all = function()
	{
		$('user_filter').reset();
		t.filter = {'user_id':0, 'name':"", 'first_name':"", 'last_name':""};
			
		tab_view.getTab(1).set('label', 'Viewing All Users'); 
		
		tab_view.selectTab(1);
		var pagination = user_list.getState().pagination;
		pagination.recordOffset = 0;
		user_list.onPaginatorChangeRequest(pagination);
	};

	t.generate_request = function(oState, oSelf)
	{
        // Set defaults
        oState = oState || {pagination:null, sortedBy:null};
        var sort = (oState.sortedBy) ? oState.sortedBy.key : oSelf.getColumnSet().keys[0].getKey();
        var dir = (oState.sortedBy && oState.sortedBy.dir === YAHOO.widget.DataTable.CLASS_DESC) ? "desc" : "asc";
        var startIndex = (oState.pagination) ? oState.pagination.recordOffset : 0;
        var results = (oState.pagination) ? oState.pagination.rowsPerPage : null;
        
        // Build the request
        return  "sort=" + sort +
                "&dir=" + dir +
                "&startIndex=" + startIndex +
                "&filter[login]=" + t.filter['login'] +
                "&filter[first_name]=" + t.filter['first_name'] +
                "&filter[last_name]=" + t.filter['last_name'] +
                "&filter[groups]=" + t.filter['groups'] +
                "&filter[email]=" + t.filter['email'] +
                "&filter[parent_id]=" + t.filter['parent_id'] +
                ((results !== null) ? "&results=" + results : "");
	};

	t.search_go = function(form_id)
	{
		//var temp = t.filter;
		//var filters = get_form_params(form_id);
                //t.filter = filters;
		//t.filter['user_id'] = temp['user_id'];
                
                t.filter = get_form_params(form_id);
                //alert(t.filter['login']);
		var pagination = user_list.getState().pagination;
		pagination.recordOffset = 0;
		user_list.onPaginatorChangeRequest(pagination);

               /* params = {filters: filters};
		var req = new JsHttpRequest();
                
		req.caching = false;
		req.open('POST', ajax_prefix + '?rm=ajax_user_list', true);
		req.send(params);*/
                
                /*var pagination = user_list.getState().pagination;
		pagination.recordOffset = 0;
		user_list.onPaginatorChangeRequest(pagination);
                alert(user_list.onPaginatorChangeRequest(pagination));*/
                
	};
	t.access = function(info_div, department_user_id)
	{
		if(this['acu_overlay' + department_user_id] == undefined)
		{
			this['acu_overlay' + department_user_id] = new YAHOO.widget.Panel('acu_overlay' + department_user_id,{
				width: "520px",//"900px",
				height: "600px",
				visible:true,
				close: true,
				constraintoviewport:true,
				fixedcenter:true,
				modal:true,
				draggable:false
			});
		}
		this['acu_overlay' + department_user_id].setHeader('Access User');
		this['acu_overlay' + department_user_id].setBody('Body');
		this['acu_overlay' + department_user_id].setFooter('');
		this['acu_overlay' + department_user_id].render(document.body);
		params = {department_user_id: department_user_id};
		var req = new JsHttpRequest();
		req.information_div = info_div;
		req.overlay = this['acu_overlay' + department_user_id];
		req.onreadystatechange = function()
		{
			if(req.readyState == 4)
			{
				$(req.information_div).innerHTML = req.responseJS.html;
				//tab_view.selectTab(3);
				req.overlay.setBody(req.responseJS.html);
				req.overlay.show();
			}
		}
		req.caching = false;
		req.open('POST', ajax_prefix + '?rm=access_department_user', true);
		req.send(params);		
	};
	t.save_access = function(form_id, info_div)
	{
		var params = get_form_params(form_id);
		var req = new JsHttpRequest();params['save'] = 1;
		req.information_div = info_div;
		req.department_user = this;
		req.onreadystatechange = function()
		{
			if(req.readyState == 4)
			{
				$(req.information_div).innerHTML = req.responseJS.html
				//tab_view.selectTab(3);
				if(!req.responseJS.success)
				{
					if(req.responseJS.department_user_id != null)
						req.department_user['acu_overlay' + req.responseJS.department_user_id].setBody(req.responseJS.html);
					else
					{
						
					}
				}
				
				if(req.responseJS.success)
				{
//					department_user_list.onPaginatorChangeRequest(department_user_list.getState().pagination);
					tab_view.selectTab(1);
					if(req.department_user['acu_overlay' + req.responseJS.department_user_id] != undefined)
					{
						req.department_user['acu_overlay' + req.responseJS.department_user_id].destroy();
						delete req.department_user['acu_overlay' + req.responseJS.department_user_id];
					}
				}
			}
		}
		req.caching = false;
		req.open('POST', ajax_prefix + '?rm=access_department_user', true);
		req.send(params);		
	};	
	
	t.add_more_staff = function()
	{
		staff_profile_counter ++;
		var el = new Element('tr');	
		
		var td10 = new Element('td');
		td10.innerHTML = 'About';
		td10.injectInside(el);
		
		var td1 = new Element('td');
		td1.innerHTML = '<textarea name="new_about[]" id="new_about' + staff_profile_counter+ '_id" style="width:auto;" />';
		td1.injectInside(el);				
		
		var e2 = new Element('tr');	
		
		var td3 = new Element('td');
		td3.innerHTML = 'Picture';
		td3.injectInside(e2);
		
		var td2 = new Element('td');
		td2.innerHTML = '<input type="file" name="new_staff_picture[]" style="width:auto;" />';
		td2.injectInside(e2);				
		
		el.injectBefore($('staff_row'));
		e2.injectBefore($('staff_row'));
		load_simple_tiny('new_about' + staff_profile_counter + '_id');
	}
	
	t.load_regions = function(id)
	{	
		var params = {'id':id};
	
		var req = new JsHttpRequest();	
	    req.onreadystatechange = function()
	    {
			if (req.readyState == 4)
	      	{
				var locations_select = document.getElementById('region_select');
				locations_select.options.length = 0;
	  			locations_select.options[locations_select.options.length] = new Option('Select...','', false, false);
	  			var selected = false;
	  			for (var i in req.responseJS.regions)
	  			{
	  				if (req.responseJS.regions[i].id == current_state_id) selected = true;
	  				locations_select.options[locations_select.options.length] = new Option(req.responseJS.regions[i].title,req.responseJS.regions[i].id, false, selected);
	  				selected = false;
	  			}
	      	}
	    }
	    req.caching = false;
	    req.open('POST', ajax_prefix + '?rm=ajax_load_regions', true);
	    req.send(params);
	} 
	
	t.show_contact = function(id)
	{
		var params = {'id':id};
		Lightbox.get_html('ajax_load_contact_form', params);
		Lightbox.get_html_callback = function()
		{
			validator.add('contact_form_13');
		}
	}
	
	t.populate_seo = function(page_title)
	{		
		page_title = page_title.replace(/\s/g,'-');
		page_title = page_title.replace(/([^a-z|A-Z|\d|\-])/g,'');
		page_title = page_title.replace(/([^a-z|A-Z|\d|\-])/g,'');
		$('seo_url_id').value = page_title;
	}
}

var user = new User();
var staff_profile_counter = 1;
var current_state_id = 0;

function get_form_params(form_id)
{
	var form = $(form_id);								
	var params = {};
	for(var i = 0; i < form.elements.length; i++)
	{
		var element = form.elements[i];
		var type = form.elements[i].type;
		if (form.elements[i].tagName != 'FIELDSET' && form.elements[i].type != 'checkbox' && form.elements[i].type != 'radio')
	  		params[form.elements[i].name] = form.elements[i].value;

		if (form.elements[i].type == 'textarea' && !form.elements[i].value)
		{
	  		params[form.elements[i].name] = form.elements[i].value;
		}

		if (form.elements[i].type == 'checkbox' && form.elements[i].checked)
	  		params[form.elements[i].name] = form.elements[i].value;
		else if(form.elements[i].type == 'checkbox' && !form.elements[i].checked)
	  		params[form.elements[i].name] = '';
		if (form.elements[i].type == 'radio' && form.elements[i].checked)
	  		params[form.elements[i].name] = form.elements[i].value;

		if (form.elements[i].type == 'select-multiple')
		{
	  		var values = [];
	  		for (var o=0;o<form.elements[i].options.length;o++)
	  		{
	    		if (form.elements[i].options[o].selected)
	  				values[values.length] = form.elements[i].options[o].value;
	  		}
	  		params[form.elements[i].name] = values;
		}
	}
	return params;
}
