var path = '';
var isIE = (window.sidebar ? false : true);
var sitePrefix = "";

/**
 * Space used for holding diff routines for warning users.
 *
 */
var Warning = {
	/**
	 * Display to user condition warning. User can choose Yes/No.
	 *
	 * @return bool condition
	 */
	msg: function(msg)
	{
		if (confirm(msg)) {
			return true;
		} else {
			return false;
		}
	}
}


/**
 * Deals with login facilities.
 */
//this will make the script alert a message if Caps Lock is engaged
var capsError = 'WARNING:\n\nYou are using Caps Lock.\n\nThe filed you are typing is case sensitive.';
var warn = false;
var Login = {
	check: function()
	{
		
		if ($('username') != null && $('username').value == '' || $('username').value == 'Username') {
			_generateError('Missing username, please provide username to log on.');
			return false;
		}
		
		if ($('username').value.match(/[^a-zA-Z0-9_.-]/) != null) {
			_generateError('Please fill your username correctly.');
			return false;			
		}

		if ($('password').value == '') {
			_generateError('Missing password, please provide password to log on.');
			return false;
		}
		
		if ($('captcha') != null) {
			if ($('captcha').value == '' || $('captcha').value.length < 5) {
				_generateError('Please fill the code from the image bellow.');
				return false;
			}
			
			if ($('captcha').value.match(/^\d+$/) == null) {
				_generateError('The code from image contains only numbers.');
				return false;
			}			
		}
		
		document.forms['login'].submit();
		return true;
	},
	changeUname: function()
	{
		/**
		 * Delete cookies.
		 */
		var c = new Date();
   		document.cookie = "_pre_login_times=0;expires="+c.toGMTString()+";"+";";
   		document.cookie = "_pre_login_username=nil;expires="+c.toGMTString()+";"+";";
   		document.cookie = "_pre_login_ipaddr=0.0.0.0;expires="+c.toGMTString()+";"+";";

		$('changeArea').innerHTML = '';

		
            var input_username = document.createElement('input');
               input_username.maxlength = 255;
               input_username.value = "";
               input_username.style.width = "97%";
               input_username.name = "username";
               input_username.id = "username";
               input_username.className = "inputstyle";
               input_username.type = "text";
            $('changeArea').appendChild( input_username );

            
            $('usertip').innerHTML = '';
            $('usertip').appendChild( document.createTextNode("Please enter your username") );
        
        	$('username').onkeypress = function() { Login.capsDetect(arguments[0]); };
        	$('username').focus();
	},
	capsDetect: function (e) 
	{
		if( !e ) { e = window.event; } if( !e ) { Login.MWJ_say_Caps( false ); return; }
		//what (case sensitive in good browsers) key was pressed
		var theKey = e.which ? e.which : ( e.keyCode ? e.keyCode : ( e.charCode ? e.charCode : 0 ) );
	
		//was the shift key was pressed
		var theShift = e.shiftKey || ( e.modifiers && ( e.modifiers & 4 ) ); //bitWise AND
		//if upper case, check if shift is not pressed. if lower case, check if shift is pressed
		Login.MWJ_say_Caps( ( theKey > 64 && theKey < 91 && !theShift ) || ( theKey > 96 && theKey < 123 && theShift ) );
	},
	MWJ_say_Caps: function( oC ) {
		if( oC && warn == false) { alert( capsError ); warn = true; }
	}	
}


var Contacts = {
	check: function(fromSession)
	{
		if (typeof fromSession == 'undefined') {
			fromSession = 0;
		}

		if (fromSession == 0) {
			if (Validator.checkName($('from_name').value, 1) == false) {
				return false;
			}
			
			if (Validator.checkEmail($('from_email').value) == false) {
				return false;
			}
		}

		if ($('feedback').value == '' || $('feedback').value.length < 50) {
			_generateError('Please provide message greater than 50 symbols.');
			return false;
		}
		return true;
	}
}


var Register = {
	check: function()
	{
	    if ($('username').value == '') {
            _generateError('Please fill your username.'); 
	        return false;
	    }
	    
        if ($('username').value.match(/[^a-zA-Z0-9_.-]/) != null) {
            _generateError('Please insert no spaces and only alphabetic symbols in your username.'); 
            return false;
        }	    
	    	   
        
   		if (Validator.checkPassword($('password').value, $('cpassword').value) == false) {
			return false;
		}
		
		
		/**
		 * We cannot validate names becouse they can contain non latin characters and JavaScript
		 * doesn`t have full UTF-8 support.
		 */
		if (Validator.checkName($('contact_name').value, 1) == false) {
			_generateError('Please fill your names.');
			return false;
		} 
			   
		
		if (Validator.checkEmail($('email_address').value) == false) {
			return false;
		}


		if ($('captcha') != null) {
			if ($('captcha').value == '') {
				_generateError('Please enter the code from the picture bellow.');
				return false;
			} else {
				if (isNaN($('captcha').value) == true) {
					_generateError('CAPTCHA code must contains only digits.');
					return false;
				}
			}
		}

		document.forms['register'].submit();
		return true;
	},
	newCAPTCHA: function()
	{
		new Ajax.Request(path + '/Register',
						{method: 'post',
						 parameters : 'action=captcha',
						 onComplete: function(originalRequest)
						 {
						 	var response = _json(originalRequest.responseText);
						 	if (typeof response == "object") {
								$('captcha_img').src = path +'/tmp/'+ response['image'];
						 	}
						 }
						});
		return false;
	},
	recoverIndex: function()
	{
	    
	    if ($('username').value == '') {
            _generateError('Please fill your username.'); 
	        return false;
	    }
	    
        if ($('username').value.match(/[^a-zA-Z0-9_.-]/) != null) {
            _generateError('Please insert no spaces and only alphabetic symbols in your username.'); 
            return false;
        }
        
	    document.forms['recover'].submit();
	    return false;
	}
}


var Settings = {
	check: function()
	{
		if (Validator.checkName($('contact_name').value, 1) == false) {
			_generateError('Please fill your names.');
			return false;
		} 
		
		if (Validator.checkEmail($('email_address').value) == false) {
		    _generateError('Given email address is not correct.');
			return false;
		}		
	    
        if ($('phone_num').value != '') {
            if ($('phone_num').value.match(/[^ 0-9\.+-]/) != null) {
                _generateError('Please use only numeric characters for phone number.'); 
                return false;
            }
        }


		if ($('set_password').value != '' || $('set_password2').value != '') {
			if ($('set_password').value == '' || $('set_password2').value == '') {
				_generateError('Please provide both passwords.');
				return false;
			}

			if ($('set_password').value != $('set_password2').value) {
				_generateError('Both passwords must be equal.');
				return false;
			}

			if ($('set_password').value.length < 6) {
				_generateError('For security reasons, your password must be greather than 6 symbols.');
				return false;
			}
		}
		
		document.forms['profile'].submit();
		return true;
	}
}

var deletedConferences, timeParts, warnedUrgent = 0;
var Conference = {
	initEdit: function()
	{
		if ($('is_permanent') != null && $('is_permanent').value == 1) {
			$('perm_holder').src = sitePrefix +"/i/elements/check.gif";
		}
		
		if ($('is_urgent') != null && $('is_urgent').value == 1) {
			$('urg_holder').src = sitePrefix +"/i/elements/check.gif";
		}

		if ($('audio_record') != null && $('audio_record').value == 1) {
			$('audio_holder').src = sitePrefix +"/i/elements/check.gif";
		}		

	},
	check: function(mouseEvent)
	{
		var elm =  Event.element(mouseEvent);
		var subBoxSuffix = '';

		if (elm.src.lastIndexOf('/check') > 0) {
			elm.src = sitePrefix +'/i/elements/uncheck.gif';
			subBoxSuffix = 'un';

			///
			/// Some checkboxes may have input values with the id of the 
			/// img name. so fill the values like those images was checkboxes.
			if (elm.name != '' && $(elm.name)) {
				$(elm.name).value = 0;
			}
		} else {
			elm.src = sitePrefix +'/i/elements/check.gif';
			
			if (elm.name != '' && $(elm.name)) {
				$(elm.name).value = 1;
			}
		}
		
		/**
		 * The clicked checkbox is those above all.
		 * We must select all check boxes according to this checkbox current
		 * status.
		 */
		if (elm.id == 'master_check') {
			$A($$('td.box_contain img')).each(function(imgElm) {
				imgElm.src = sitePrefix +'/i/elements/'+ subBoxSuffix +'check.gif';
			});
		}
	
		return false;
	},
	urgent: function(mouseEvent)
	{
	    var elm =  Event.element(mouseEvent);
	    
	    if (elm.src.lastIndexOf('/check') <= 0 && 0 == warnedUrgent) {
	        warnedUrgent = 1;
    	    if (!confirm('Making conference ugent will create it right away, without ability to select exact datetime.')) {
    	        return false;
    	    }
	    }
	    
		if (elm.src.lastIndexOf('/check') > 0) {
			elm.src = sitePrefix +'/i/elements/uncheck.gif';
			subBoxSuffix = 'un';

			///
			/// Some checkboxes may have input values with the id of the 
			/// img name. so fill the values like those images was checkboxes.
			if (elm.name != '' && $(elm.name)) {
				$(elm.name).value = 0;
			}
		} else {
			elm.src = sitePrefix +'/i/elements/check.gif';
			
			if (elm.name != '' && $(elm.name)) {
				$(elm.name).value = 1;
			}
		}
			    
	    
	    timeParts = dateTime.split(' ');
	    
		var d = dojo.date.fromRfc3339(timeParts[0],'dateOnly');
		var t = dojo.date.fromRfc3339(dateTime,'dateOnly');
		var s = timeParts[0];
		var s = s.split('-');
		if(d.getFullYear() == s[0] && d.getMonth()+1 == s[1] && d.getDate() == s[2]){
			 formDp.setDate(timeParts[0]);
			 dojo.widget.byId("timepicker").setTime(t);
		} else {
			alert("Problem occur while loading your calendar, please reload the page.");
		}
	    
	    return false;
	},
	proceedChecked: function(mouseEvent)
	{
		var elm =  Event.element(mouseEvent);	

		///
		/// Needed to know should we proceed
		var checked = 0;
		
		///
		/// Needed to know if we delete all conferences to display message
		/// for adding new one
		var totalConferences = 0;
		
		///
		/// Make easy iteration of conferences later easy
		var selectedConferences = new Array();
		$A($$('td.box_contain img')).each(function(imgElm) {
			if (imgElm.src.lastIndexOf('/check') > 0) {
				var tmpCont = imgElm.id.split('_');
				selectedConferences.push(tmpCont[1]);
				checked++;
			}
			
			totalConferences++;
		});
		
		
		if (totalConferences == 0) {
			return false;
		}
		
		if (checked == 0) {
			alert('Please select conference(s) to be managed!');
			return false;
		}
		

		new Ajax.Request(sitePrefix + '/Conference',
						{method: 'post',
						 parameters : 'conferences='+ selectedConferences.join(','),
						 onComplete: function(originalRequest)
						 {
						 	// alert(originalRequest.responseText); return false;
						 	var response = _json(originalRequest.responseText);
						 	if (typeof response == "object") {
						 	
						 		if (response.status == 1) {
						 			alert('Selected Conferences were successfuly deleted.');	
						 		} else {
						 			alert(response.message);
						 			haltExecution = true;
						 			return false;
						 		}
						 		
		
								selectedConferences.each(function(confId) {
									if ($('table_'+ confId) != null) {
										new Effect.Fade('parent_t_'+ confId);	
										new Effect.Fade('table_'+ confId);
										
										setTimeout("Element.remove('parent_t_"+ confId +"'); Element.remove('table_"+ confId +"');", 3000);
									}
								});
						
								
								if ((totalConferences - checked) == 0) {
									buildConferenceAddNewWarning();
									
									setTimeout("new Effect.Appear('tmp_table_1');", 1150);
									setTimeout("new Effect.Appear('tmp_table_2');", 1150);
									
									$('master_check').src = sitePrefix +'/i/elements/uncheck.gif';			
								}						 		
						 	}
						 }
		});		

		return false;
	},
	terminate: function(mouseEvent)
	{ 
	    if (confirm('Are you sure you want to terminate this conference? All participants will be kicked from the conference.')) {
	        document.location.href = sitePrefix + '/Conference/Cancel/'+ $('conf_id_hidden').value;
            return false;
	    }
	    
	    return true;
	},
	cancel: function(mouseEvent)
	{
		var elm =  Event.element(mouseEvent);	
		var tmpParts = elm.id.split('_');
				
		new Ajax.Request(sitePrefix + '/Conference/Cancel',
						{method: 'post',
						 parameters : 'conference='+ tmpParts[1],
						 onComplete: function(originalRequest)
						 {
						 	//alert(originalRequest.responseText); return false;
						 	var response = _json(originalRequest.responseText);
						 	
						 	if (typeof response == "object") {
						 	
						 		if (response.status == 1) {
						 			alert('Selected Conference was successfuly deleted.');	
						 		} else {
									if (response.message) {
						 				alert(response.message);
									} else {
										alert('Error deleting conference.');
									}
						 			return false;
						 		}
						 		
						 		if (typeof deletedConferences == 'undefined') {		
									deletedConferences = 1;
						 		}
						 								 							 								
								new Effect.Fade('parent_t_'+ tmpParts[1]);	
								new Effect.Fade('table_'+ tmpParts[1]);
								
								setTimeout("Element.remove('parent_t_"+ tmpParts[1] +"'); Element.remove('table_"+ tmpParts[1] +"');", 3000);
								
								if (($A($$('td.box_contain img')).length - deletedConferences) == 0) {
									buildConferenceAddNewWarning();
									
									setTimeout("new Effect.Appear('tmp_table_1');", 1150);
									setTimeout("new Effect.Appear('tmp_table_2');", 1150);
									
									$('master_check').src = sitePrefix +'/i/elements/uncheck.gif';			
								}						 		
								
								deletedConferences++;								
						 	}						 	
						 }
		});
						 		
		return false;
	},
	submit: function()
	{		
		if ($('title').value == '') {
			_generateError('Please provide conference name.');
			return false;
		}	    

		if (!formDp.getDate()) {
			_generateError('Conference date should not match current date or any past date.');
			return false;		    
		}
				
		
		if ($('urg_holder').src.lastIndexOf('/check') > 0) {
    		if ($$('table#users_area_holder tr td') == '' || $$('table#users_area_holder tr td') == 0) {
    		    _generateError('Making conference Urgent, requires at least one participant to be added.');
    		    return false;
    		}
		} else {
    		if ($$('table#users_area_holder tr td') == '' || $$('table#users_area_holder tr td') == 0) {
    			if (confirm('You don`t provide conference`s participants. Do you want to continue?') == false) {
    				return false;
    			}
    		}
		}
	
		
        if (formDp.getDate()) {
		  $('date_picker').value = dojo.date.strftime(formDp.getDate(), "%Y-%m-%d") +' '+ dojo.widget.byId("timepicker").storedTime +':00';
        }

		document.forms['conference_submit'].submit();
		return false;
	},
	addCustomerWidgetInit: function()
	{
		
	},
	inviteNewUser: function()
	{
		lon();
	},
	loff: function()
	{
		loff();
	},
	submitParticipant: function()
	{
	    
		if ($('books_list').selectedIndex == 0 && $('part_email'). value == '' &&
			$('part_name').value == '') {
				
			alert('Please select participant from your address book, or add it manualy.');
			return false;
		}
		
		if ($('books_list').selectedIndex != 0 && ($('part_email'). value != '' ||
			$('part_name').value != '')) {
			
			alert('Please use only one way for inviting participant in your conference.');
			return false;
		}
		
		if ($('books_list').selectedIndex == 0) {
			if ($('part_name').value == '') {
				alert('Please enter participant`s names');
				return false;
			}
	
			if ($('part_email').value == '') {
				alert('Please enter participant`s email');
				return false;
			}
			
			if (Validator.checkEmail($('part_email').value, true) == false) {
				alert('Please enter valid email');
				return false;
			}			
		}
		
		new Ajax.Request(sitePrefix + '/Participant/Subscribe',
						{method: 'post',						              
						 parameters : 'part_name='+ encodeURIComponent($('part_name').value) +'&part_email='+ encodeURIComponent($('part_email').value) +'&part_phone='+ encodeURIComponent($('part_phone').value) +'&part_id='+ encodeURIComponent($('books_list').options[$('books_list').selectedIndex].value),
						 onComplete: function(originalRequest)
						 {
						 //	alert(originalRequest.responseText); return false;
						 	var response = _json(originalRequest.responseText);
						 	
						 	if (typeof response == "object") {
						 				
								if (response.status == 1) {
									createUserSpaceInConferenceScreen(response);	
									loff();
								} else {
									alert(response.message);
									return false;
								}
								
						 	}
						 }
		});
		
		return true;
	},
	inviteParticipant: function(mouseEvent)
	{
		if ($('books_list').selectedIndex == 0 && $('part_email'). value == '' &&
			$('part_name').value == '') {
				
			alert('Please select participant from your address book, or add it manualy.');
			return false;
		}
		
		if ($('books_list').selectedIndex != 0 && ($('part_email'). value != '' ||
			$('part_name').value != '')) {
			
			alert('Please use only one way for inviting participant in your conference.');
			return false;
		}
		
		if ($('books_list').selectedIndex == 0) {
			if ($('part_name').value == '') {
				alert('Please enter participant`s names');
				return false;
			}
	
			if ($('part_email').value == '') {
				alert('Please enter participant`s email');
				return false;
			}
			
			if (Validator.checkEmail($('part_email').value, true) == false) {
				alert('Please enter valid email');
				return false;
			}			
		}

			
		new Ajax.Request(sitePrefix + '/Participant/Invite',
						{method: 'post',
						 parameters : 'part_name='+ encodeURIComponent($('part_name').value) +'&part_email='+ encodeURIComponent($('part_email').value) +'&part_id='+ encodeURIComponent($('books_list').options[$('books_list').selectedIndex].value),
						 onComplete: function(originalRequest)
						 {
						 	var response = _json(originalRequest.responseText);
						 	
						 	if (typeof response == "object") {
						 				
								if (response.status == 1) {								    
								    appendNewUserToConferencePannel(response.part_id, response, true);
								    $('part_email').value = '';
								    $('part_name').value = '';
								    $('books_list').selectedIndex = 0;
								    return false;
								} else {
									alert(response.message);
									return false;
								}
						 	}
						 }
		});		
		

		return false;
	},
	/* Fron now, all commands with prefix proceed, are used only when
	   conference is in run. */
	proceedInfoShow: function(mouseEvent)
	{
		var elm =  Event.element(mouseEvent);
		var tmpParts = elm.id.split('_');
		var selectedPart = tmpParts[1];
		
		if (elm.src.lastIndexOf('plus.gif') > 0) {
			Effect.Appear('info_'+ selectedPart);
			elm.src = sitePrefix + '/i/icons/minus.gif';
		} else {
			elm.src = sitePrefix + '/i/icons/plus.gif';
			Effect.Fade('info_'+ selectedPart);	
		}
	},
	proceedDeleteEntry: function(mouseEvent)
	{
	    var elm =  Event.element(mouseEvent);

	    var tmpParts = elm.id.split('_');
	    
		new Ajax.Request(sitePrefix + '/Conference/Delete',
						{method: 'post',
						 parameters : 'uniq_id='+ tmpParts[1]  +'&part_id='+ tmpParts[2],
						 onComplete: function(originalRequest)
						 {
						 	var response = _json(originalRequest.responseText);
						 	
						 	if (typeof response == "object") {
								if (response.status == 1) {
								    var elmId = '';
								    if (tmpParts[1] != 0) {
								        elmId = tmpParts[1];
								    } else {
								        elmId = tmpParts[2];
								    }
								    
    								new Effect.Fade('holder_'+ elmId);	
    								new Effect.Fade('info_'+ elmId);
    								setTimeout("Element.remove('holder_"+ elmId +"'); Element.remove('info_"+ elmId +"');", 3000);
									return false;
								} else {
									alert(response.message);
									return false;
								}
						 	}
						 }
		});		

		return false;	    
	},
	proceedKickEntry: function(mouseEvent)
	{
	    var elm =  Event.element(mouseEvent);

	    var tmpParts = elm.id.split('_');
	    
		new Ajax.Request(sitePrefix + '/Conference/Kick',
						{method: 'post',
						 parameters : 'uniq_id='+ tmpParts[1]  +'&part_id='+ tmpParts[2],
						 onComplete: function(originalRequest)
						 {
						 	var response = _json(originalRequest.responseText);
						 	
						 	if (typeof response == "object") {
								if (response.status == 1) {
    								$('holder_'+ tmpParts[1]).bgColor = '#F1E0E0';	
    								$('info_'+ tmpParts[1]).bgColor = '#F1E0E0';
    								
    								enableTools(tmpParts[1], 0, tmpParts);
    								$('left_'+ tmpParts[1]).innerHTML = response.time;
    								
                                    ///
                                    /// Return part_id as html id, so if the user is back
                                    /// we can find him again.    					
                                    if (response.part_id != '0') {
                                        $('holder_'+ tmpParts[1]).id = 'holder_'+ response.part_id;
                                        $('info_'+ tmpParts[1]).id = 'info_'+ response.part_id;
                                        $('tools_'+ tmpParts[1]).id = 'tools_'+ response.part_id;
                                        $('joned_'+ tmpParts[1]).id = 'joned_'+ response.part_id;
                                        $('clicker_'+ tmpParts[1]).id = 'clicker_'+ response.part_id;
                                        $('left_'+ tmpParts[1]).id = 'left_'+ response.part_id;
                                    }
									return false;
								} else {
									alert(response.message);
									return false;
								}
						 	}
						 }
		});		

		return false;	    
	},
	proceedMuteEntry: function(mouseEvent)
	{
	    var elm =  Event.element(mouseEvent);

	    var tmpParts = elm.id.split('_');
        var muted = '';
        var muteParam = 0;
        
	    if (elm.src.lastIndexOf('/mute.gif') > 0) {
	        muted = 'un';
	    } else {
	        muted = '';
	        var muteParam = 1;
	    }
	    
		new Ajax.Request(sitePrefix + '/Conference/Mute',
						{method: 'post',
						 parameters : 'uniq_id='+ tmpParts[1]  +'&part_id='+ tmpParts[2] +'&muted='+ muteParam,
						 onComplete: function(originalRequest)
						 {
						 	var response = _json(originalRequest.responseText);
						 	
						 	if (typeof response == "object") {
								if (response.status == 1) {
								    elm.src = sitePrefix +'/i/icons/'+ muted +'mute.gif';
									return false;
								} else {
									alert(response.message);
									return false;
								}
						 	}
						 }
		});		

		return false;	    
	},	
	proceedUpdater: function(confId)
	{
		current_cond = confId;

		 window.setInterval(updateConferencePanel, 1000 * 10);
		// updateConferencePanel();

	}
}


/**
 *
 */
var current_cond = 0;
var hashUsers = new Array();
var hashUsers2 = new Array();
function updateConferencePanel()
{
    new Ajax.Request(sitePrefix +"/Conference/Edit/"+ current_cond,
                     { onComplete: function(originalRequest) {
                         
                        var jsonData = _json(originalRequest.responseText);
                     	 // alert(originalRequest.responseText);
                     	
                         var jsonData = _json(originalRequest.responseText);                        
                         if (jsonData == undefined) { return }
                         
                         $('kicked_users').innerHTML = jsonData['kicked_users'];
                         $('total_users').innerHTML = jsonData['total_users'];
                         
                         ///
                         /// Mark joined users.
                         var joinedUsers = new Array();
						forEach (jsonData['joined_ids'], function(value, key) {
                            if ((typeof value[1] == 'undefined') == false) {
                                joinedUsers.push(key);
                                // joinedUsers.push(value[1]);
                                hashUsers[value[1]] = key;
                            }
                            
                            
						    ///
						    /// There is no such user in the UI, add it.
						    if ($('holder_'+ key) == null && (typeof value[1] == 'undefined' == false)) {
						        if ($('holder_'+ value[1]) == null) {
						          appendNewUserToConferencePannel(key, value); 
						          next;   
						        }
						    } else {
						        ///
						        /// In case user is already in, don`t update HTML page.
						        if ($('active_'+ key) == null) {
						            ///
						            /// When user is kicked, and join the conference again
						            /// he is passing this if-case.
						            
                                    $('holder_'+ key).bgColor = '#ffffff';
                                    $('info_'+ key).bgColor = '#ffffff';
						            
        							enableTools(key, 1, value);
        							$('joned_'+ key).innerHTML = value[0];
        							$('left_'+ key).innerHTML = 'N/A';
        							
        							/// Replace old part_id with new uniq_id, so we'll
        							/// stop checking his status etc...
        							$('holder_'+ key).id = 'holder_'+ value[1];
        							$('info_'+ key).id = 'info_'+ value[1];
        							$('tools_'+ key).id = 'tools_'+ value[1];
        							$('joned_'+ key).id = 'joned_'+ value[1];
        							$('clicker_'+ key).id = 'clicker_'+ value[1];
        							$('left_'+ key).id = 'left_'+ value[1];
        							
        							if (typeof hashUsers2[key] == 'undefined') {
        							 Event.observe($('clicker_'+ value[1]), "click", Conference.proceedInfoShow.bind(), false);    
        							}
                                    
                                    hashUsers2[key] = 1;
						        }
						    }
						});

						
					
						$$('table#conf_panel tr').each(function (table)
						      {
						          var tmpParts = table.id.split('_');
						          
						          if (table.id.indexOf('holder_')+1 == 1) {
   						              						          
    						          var found = false;
                                        
                						forEach (jsonData['joined_ids'], function(value, key) {
        					              if (key == tmpParts[1]) {
        					                  found = true;
        					              } else if (value[1] == tmpParts[1]) {
        					                  found = true;
        					              }
                						});

                				    ///
                				    /// Mark use as leaved the conference.
                        			 if (found == false) {
    					              if ($('active_'+ tmpParts[1]) != null) {
    					                  /// Check if the user is kicked, skip this...
    					                  /// "kicked_ids":{"1163683809.393":["16.11.2006 15:30:36","134"]}    					                  
    					                  if (jsonData['kicked_ids'][tmpParts[1]]) {
    					                      next;
    					                  }
    					                  
                                          $('holder_'+ tmpParts[1]).bgColor = '#f1f1f1';
                                          $('info_'+ tmpParts[1]).bgColor = '#f1f1f1';
                                          
    					                  enableTools(tmpParts[1], 0);
    					                  
            							  $('holder_'+ tmpParts[1]).id = 'holder_'+ hashUsers[tmpParts[1]];
            							  $('info_'+ tmpParts[1]).id = 'info_'+ hashUsers[tmpParts[1]];
            							  $('tools_'+ tmpParts[1]).id = 'tools_'+ hashUsers[tmpParts[1]];
            							  $('joned_'+ tmpParts[1]).id = 'joned_'+ hashUsers[tmpParts[1]];
            							  $('clicker_'+ tmpParts[1]).id = 'clicker_'+ hashUsers[tmpParts[1]];
            							  $('left_'+ tmpParts[1]).id = 'left_'+ hashUsers[tmpParts[1]];
            							  
            							  Element.remove('active_'+ hashUsers[tmpParts[1]]);
    					              }                   			         
                    			     }
						          }
						      });

                         
                         ///
                         /// Mark kicked users.
						forEach (jsonData['kicked_ids'], function(value, key) {
						    /// 
						    /// "kicked_ids":{"1163683809.393":["16.11.2006 15:30:36","134"]}
                            $('holder_'+ key).bgColor = '#F1E0E0';
                            $('info_'+ key).bgColor = '#F1E0E0';
                         	$('left_'+ key).innerHTML = value[0];
                         	// Element.hide('tools_'+ key);
                         	
                            $('holder_'+ key).id = 'holder_'+ value[1];
                            $('info_'+ key).id = 'info_'+ value[1];
                            $('tools_'+ key).id = 'tools_'+ value[1];
                            $('joned_'+ key).id = 'joned_'+ value[1];
                            $('clicker_'+ key).id = 'clicker_'+ value[1];
                            $('left_'+ key).id = 'left_'+ value[1];
                    	
						});                         

                         
                       }
                     });
                     
	return false;
}
/* END updater */

function dsadsa()
{
	alert('dsadsa');
}


var Book = {
    check: function()
    {
		
		/**
		 * We cannot validate names becouse they can contain non latin characters and JavaScript
		 * doesn`t have full UTF-8 support.
		 */
		if (Validator.checkName($('part_name').value, 1) == false) {
			_generateError('Please fill both names of the entry.');
			return false;
		}
		
		if (Validator.checkEmail($('part_email').value) == false) {
			return false;
		}
		
		
        if ($('part_phone').value != '') {
            if ($('part_phone').value.match(/[^ 0-9\.+-]/) != null) {
                _generateError('Please use only numeric characters for phone number.'); 
                return false;
            }
        }		
		
        
        document.forms['profile'].submit();
        return false; 
    },
	cancel: function(mouseEvent)
	{
		var elm =  Event.element(mouseEvent);	
		var tmpParts = elm.id.split('_');
				
		new Ajax.Request(sitePrefix + '/Book/Cancel',
						{method: 'post',
						 parameters : 'book='+ tmpParts[1],
						 onComplete: function(originalRequest)
						 {
						 	// alert(originalRequest.responseText); return false;
						 	var response = _json(originalRequest.responseText);
						 	
						 	if (typeof response == "object") {
						 	
						 		if (response.status == 1) {
						 			alert('Selected phone book entry was successfuly deleted.');	
						 		} else {
						 			alert(response.message);
						 			return false;
						 		}
						 		
						 		if (typeof deletedConferences == 'undefined') {		
									deletedConferences = 1;
						 		}
						 		
					
						 		if ($A($$('td.box_contain img')).length == 1) {
									if ($('have_paging') != null) {
										window.location.href = '?page=1';
										return false;
									}
						 		}
						 								 							 								
								new Effect.Fade('parent_t_'+ tmpParts[1]);	
								new Effect.Fade('table_'+ tmpParts[1]);
								
								setTimeout("Element.remove('parent_t_"+ tmpParts[1] +"'); Element.remove('table_"+ tmpParts[1] +"');", 3000);
								
						 	}						 	
						 }
		});
						 		
		return false;		
	},
	proceedChecked: function(mouseEvent)
	{
		
		var elm =  Event.element(mouseEvent);	

		///
		/// Needed to know should we proceed
		var checked = 0;
		
		///
		/// Needed to know if we delete all conferences to display message
		/// for adding new one
		var totalConferences = 0;
		
		///
		/// Make easy iteration of conferences later easy
		var selectedConferences = new Array();
		$A($$('td.box_contain img')).each(function(imgElm) {
			if (imgElm.src.lastIndexOf('/check') > 0) {
				var tmpCont = imgElm.id.split('_');
				selectedConferences.push(tmpCont[1]);
				checked++;
			}
			
			totalConferences++;
		});
		
		
		if (totalConferences == 0) {
			return false;
		}
		
		if (checked == 0) {
			alert('Please select conference(s) to be managed!');
			return false;
		}
				
		
		new Ajax.Request(sitePrefix + '/Book',
						{method: 'post',
						 parameters : 'books='+ selectedConferences.join(','),
						 onComplete: function(originalRequest)
						 {
						    // alert(originalRequest.responseText); return false;
						 	var response = _json(originalRequest.responseText);
						 	if (typeof response == "object") {
						 	
						 		if (response.status == 1) {
						 			alert('Selected address book entries were successfuly deleted.');	
						 		} else {
						 			alert(response.message);
						 			haltExecution = true;
						 			return false;
						 		}
						 		
								if ((totalConferences - checked) == 0) {
									/**
									 * In case we have paging and we delete all records, reload
									 * page.
									 */									
									if ($('have_paging') != null) {
										window.location.href = '?page=1';
										return false;
									}
									
									$('master_check').src = sitePrefix +'/i/elements/uncheck.gif';			
								}		
								
								selectedConferences.each(function(confId) {
									if ($('table_'+ confId) != null) {
										new Effect.Fade('parent_t_'+ confId);	
										new Effect.Fade('table_'+ confId);
										
										setTimeout("Element.remove('parent_t_"+ confId +"'); Element.remove('table_"+ confId +"');", 3000);
									}
								});
						 	}
						 }
		});		

		return false;
	}
}

var Participant = {
	remove: function(mouseEvent)
	{
		var elm;
		
		if (typeof mouseEvent == 'object') {
			var tmpElm =  Event.element(mouseEvent);
			var splitParts = tmpElm.parentNode.id.split('_');
			
			elm = splitParts[1];
		} else {
			elm = mouseEvent;
		}
		
		
		
		new Ajax.Request(sitePrefix + '/Participant/UnSubscribe',
						{method: 'post',
						 parameters : 'part_id='+ elm,
						 onComplete: function(originalRequest)
						 {
						 	
						 	//alert(originalRequest.responseText); return false;
						 	var response = _json(originalRequest.responseText);
						 	
						 	if (typeof response == "object") {
						 				
								if (response.status == 1) {
							   		new Effect.Fade('pholder_'+ elm);
							   		setTimeout("Element.remove('pholder_"+ elm +"')", 1300);		
								} else {
									alert(response.message);
									return false;
								}
								
						 	}
						 }
		});		

		return false;
	}
}

/**
 *
 * Generates error table content.
 */
var initErrorTable = false;
function _generateError(message, field)
{
	if (typeof field == 'undefined') {
		field = 'errorHolder';
	}

	/**
	 * Remove old content
	 */
	var table_errorHolder = document.createElement('table');
	   table_errorHolder.width = "100%";
	   table_errorHolder.cellspacing = 0;
	   table_errorHolder.cellpadding = 0;
	   table_errorHolder.id = field;
	 $(field).parentNode.replaceChild(table_errorHolder, $(field));

	 if (initErrorTable == false) {
	 	$(field).hide();
	 }

	 initErrorTable = true;

	 /**
	  * Generate new table content.
	  */
	var tbody = document.createElement('tbody');
	var tr_0 = document.createElement('tr');

		var td_0 = document.createElement('td');
			td_0.colSpan = 2;
			td_0.className = "er";

		var strong_0 = document.createElement('strong');
			strong_0.appendChild( document.createTextNode("Error") );

		td_0.appendChild( strong_0 );


		var br_0 = document.createElement('br');
			td_0.appendChild( br_0 );

		td_0.appendChild( document.createTextNode(message) );
	tr_0.appendChild( td_0 );
	tbody.appendChild( tr_0 );

	var tr_1 = document.createElement('tr');
		var td_1 = document.createElement('td');
		var br_0 = document.createElement('br');
	tr_1.appendChild( br_0 );
	tbody.appendChild( tr_1 );
	
	$(field).appendChild(tbody);
	
	new Effect.Appear(field);
	return true;
}


/**
 * Class holding several functions for validating content.
 */
var Validator = {
	checkName: function(string, extendCheck)
	{
		if (typeof extendCheck == 'undefined') {
			extendCheck = 0;
		}
		
		if (string == '') {	
			_generateError('Please fill your names.');
			return false;
		}
		
		var nameParts = string.split(' ');
		if (nameParts.length <= 1 || nameParts[0] == '' || nameParts[1] == '') {
			_generateError('Please enter first and last name.');
			return false;			
		}
		
/*		if (extendCheck == 0) {
			if (string.match(/[^a-zA-Z ]/) != null) {
				_generateError('Please enter valid real names.');
				return false;
			}		
		}
*/		return true;
	},
	checkEmail: function(string, dontDisplay)
	{
		if (string == '') {
			_generateError('Missing Email address.');
			return false;
		}
		
		if (string.match(/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,4}))$/) == null) {
			if (typeof dontDisplay == 'undefined') {
				_generateError('Enter valid email address.');
			}
			return false;
		}
		return true;
	},
	checkURL: function(string)
	{
		if (string.match(/^(((http|https):\/\/)|(www\.))+(([a-zA-Z0-9\._-]+\.[a-zA-Z]{2,6})|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))?$/) == null) {
			return false;
		}
		return true;
	},
	checkPassword: function(pass, pass2)
	{
		if (pass == '' || pass2 == '') {
			_generateError('Please provide both passwords.');
			return false;
		}

		if (pass != pass2) {
			_generateError('Both passwords must be equal.');
			return false;
		}

		if (pass.length < 6) {
			_generateError('For security reasons, your password must be greather than 6 symbols.');
			return false;
		}

		return true;
	}
}

function _json(string)
{
	if (string == '')
		return false;

	if (string.substr(0, 1) == '{') {
		return new Function('return ' + string)();	
	} else {
		return new Function('return {' + string +'}')();	
	}
}

function _collapse(mouseEvent)
{
	var elm =  Event.element(mouseEvent);


	var envelope = elm.id.split('_');

	if (envelope.length != 2) {
		return false;
	}

	envelope = envelope[0] +'_envelope';

	if ($(envelope) == null) {
		return false;
	}

	if ($(envelope).style.display == '') {
		Element.removeClassName(elm, "up");
		Element.addClassName(elm, "dwn");

		$(envelope).hide();
	} else {
		Element.addClassName(elm, "up");
		Element.removeClassName(elm, "dwn");

		$(envelope).show();
	}

	return true;
}



/**
 * Section: Loader
 * Description: Put screen over all layers and prevent user from interacting
 * with the browser.
 */
function _body_onload()
{
	loff();
//	SetContext('domain_report');
}

function _body_onunload()
{
	lon();
}

function lon(target)
{


	if (!document.getElementById('adminarea') == null) {
		return false;
	}

	try {
		if (!target)
			target = this;

		lsetup(target);

		if (!target._lon_disabled_arr)
			target._lon_disabled_arr = new Array();
		else if (target._lon_disabled_arr.length > 0)
			return true;

		if (document.getElementById("loaderContainer"))
			target.document.getElementById("loaderContainer").style.display = "";

	} catch (e) {
		return false;
	}

	return true;
}

function loff(target)
{


	try {
		if (!target)
			target = this;

		target.document.getElementById("loaderContainer").style.display = "none";

	} catch (e) {
		return false;
	}
	return true;
}

function lsetup_handler(e)
{
	lsetup(this);
	return true;
}

function lsetup(target)
{
	try {
		if (!target)
			target = this;

		var o_set = target.document.getElementById('loaderContainerWH');
		var o_getH = target.document.getElementsByTagName('BODY')[0];

//		o_set.style.height = o_getH.scrollHeight;
	} catch (e) {
	}
}


function buildConferenceAddNewWarning()
{
	

	   var table_0 = document.createElement('table');
	      table_0.width = "100%";
	      table_0.cellSpacing = 0;
	      table_0.cellPadding = 0;
	      table_0.border = 0;
	      table_0.id = 'tmp_table_1';
	      table_0.style.display = 'none';
	
	      var tr_0 = document.createElement('tr');
	
	         var td_0 = document.createElement('td');
	            td_0.className = "dashline";
	
	            var img_0 = document.createElement('img');
	               img_0.width = 1;
	               img_0.alt = "";
	               img_0.src = sitePrefix +"/i/elements/blank.gif";
	               img_0.height = 1;
	         td_0.appendChild( img_0 );
	
	         tr_0.appendChild( td_0 );
	
	      table_0.appendChild( tr_0 );
	
	   $('conf_container').appendChild( table_0 );
	
	
	   var table_1 = document.createElement('table');
	      table_1.width = "100%";
	      table_1.cellspacing = 0;
	      table_1.cellpadding = 0;
	      table_1.border = 0;
	      table_1.id = 'tmp_table_2';
	      table_1.style.display = 'none';
	      
	      var tr_1 = document.createElement('tr');
	
	         var td_1 = document.createElement('td');
	            td_1.align = "center";
	            td_1.className = "text_big_center";
	            td_1.appendChild( document.createTextNode("\nThere are no conferences at this time, don't waste time and ") );
	
	            var a_0 = document.createElement('<strong>');
	               a_0.appendChild( document.createTextNode("create new one") );
	            td_1.appendChild( a_0 );
	
	            td_1.appendChild( document.createTextNode("!\n") );
	         tr_1.appendChild( td_1 );
	
	      table_1.appendChild( tr_1 );
	
	   $('conf_container').appendChild( table_1 );
}


function createUserSpaceInConferenceScreen(resp)
{
	var td_0 = document.createElement('td');
	   td_0.width = "50%";
	   td_0.align = "left";
	   td_0.valign = "top";
	   td_0.id = resp.part_id;
	
	   var table_0 = document.createElement('table');
	      table_0.width = "100%";
	      table_0.cellspacing = 5;
	      table_0.cellpadding = 0;
	      table_0.border = 0;
	
	      var tr_0 = document.createElement('tr');
	
	         var td_1 = document.createElement('td');
	            td_1.align = "left";
	            td_1.valign = "top";
	
	            var img_0 = document.createElement('img');
	               img_0.width = 58;
	               img_0.alt = "";
	               img_0.src = sitePrefix +"/i/photos/avatar_na.gif";
	               img_0.className = "imgborder";
	               img_0.height = 58;
	            td_1.appendChild( img_0 );
	
	         tr_0.appendChild( td_1 );
	
	
	         var td_2 = document.createElement('td');
	            td_2.width = "100%";
	            td_2.align = "left";
	            td_2.valign = "top";
	            td_2.className = "formtitle";
	
	            var strong_0 = document.createElement('strong');
	               strong_0.appendChild( document.createTextNode(resp.part_name) );
	            td_2.appendChild( strong_0 );
	
	
	            var br_0 = document.createElement('br');
	            td_2.appendChild( br_0 );
	
	            td_2.appendChild( document.createTextNode("\ne-mail: "+ resp.part_email) );
	
	            var br_1 = document.createElement('br');
	            td_2.appendChild( br_1 );

	
	            var br_2 = document.createElement('br');
	            td_2.appendChild( br_2 );
	
	
	            var a_0 = document.createElement('a');
	               a_0.href = "#nil";
	               a_0.title = "Remove Participant";
	               a_0.onclick = function()
	               {
	               		////
	               		/// XXX:
	               		/// Remove tr 
	               		new Effect.Fade(td_0.id);
	               		setTimeout("Element.remove('"+ td_0.id +"')", 1300);
	               }
	
	               var img_1 = document.createElement('img');
	                  img_1.width = 14;
	                  img_1.alt = "";
	                  img_1.src = sitePrefix +"/i/icons/delete.gif";
	                  img_1.height = 18;
	                  img_1.border = 0;
	               a_0.appendChild( img_1 );
	
	            td_2.appendChild( a_0 );
	
	         tr_0.appendChild( td_2 );
	
	      table_0.appendChild( tr_0 );
	
	   td_0.appendChild( table_0 );

	   
	   /**
	    * Calculate where to put this shit!:)
	    */
		var tables_tr = $$('table#users_area_holder tr');
		if (tables_tr == '' || tables_tr[tables_tr.length-1].childNodes.length == 0) {
			var tr_init = document.createElement('tr');
			tr_init.appendChild( td_0 );
			
			$('users_area_holder').appendChild( tr_init );	
			return true;
		} else {
			
			if ($('users_area_holder').lastChild.childNodes.length == 1) {
				$('users_area_holder').lastChild.appendChild( td_0 );	
			} else {
				var tr_init = document.createElement('tr');
				tr_init.appendChild( td_0 );
				
				$('users_area_holder').appendChild( tr_init );				
			}
			
			return false;
		}
	   
		
		$('users_area_holder').appendChild( td_0 );	
		return true;
}

function randomString() {
	var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
	var string_length = 8;
	var randomstring = '';
	for (var i=0; i<string_length; i++) {
		var rnum = Math.floor(Math.random() * chars.length);
		randomstring += chars.substring(rnum,rnum+1);
	}
	return randomstring;
}


function enableTools(partId, status, values)
{
	var table_tools = document.createElement('table');
	   table_tools.width = "80%";
	   table_tools.cellspacing = 0;
	   table_tools.id = "tools_"+ partId;
	   table_tools.cellpadding = 0;
	   table_tools.border = 0;
	   
	   
	   if (status == 0) {
	       $('holder_'+ partId).onmouseover = function() { }
	       $('holder_'+ partId).onmouseout = function() { }
	   }
	   
	
	   var tbody = document.createElement('tbody');
	   var tr_0 = document.createElement('tr');
	
	      var td_0 = document.createElement('td');
	         td_0.align = "left";
	         td_0.noWrap = "noWrap";
	         td_0.valign = "top";
	         td_0.className = "smallico";
	
	         var a_0 = document.createElement('a');
	            a_0.href = "#nil";
	            a_0.title = "Kick";
	            a_0.className = "smallicolink";
	
	            var img_0 = document.createElement('img');
	               img_0.width = 14;
	               img_0.alt = "";
	               img_0.align = "absmiddle";
	               img_0.hspace = 2;

	               if (status == 1) {
	                   if (values)
	                       img_0.id = 'kick_'+ values[1] +'_0';
	                   img_0.src = sitePrefix +"/i/icons/kick.gif";
	               } else {
	                   img_0.src = sitePrefix +"/i/icons/kick_disabled.gif";
	               }
	               
	               img_0.height = 18;
	               img_0.border = 0;
	            a_0.appendChild( img_0 );
	
	         td_0.appendChild( a_0 );
	         
	         if (status == 1) {
                var input_active = document.createElement('input');
                   input_active.value = 1;
                   input_active.name = "active_"+ values[1];
                   input_active.id = "active_"+ values[1];
                   input_active.type = "hidden";
                     
                  td_0.appendChild( input_active );	             
	         }
	
	      tr_0.appendChild( td_0 );
	
	      var td_1 = document.createElement('td');
	         td_1.align = "left";
	         td_1.noWrap = "noWrap";
	         td_1.valign = "top";
	         td_1.className = "smallico";
	
	         var a_1 = document.createElement('a');
	            a_1.href = "#nil";
	            a_1.title = "Mute";
	            a_1.className = "smallicolink";
	
	            var img_1 = document.createElement('img');
	               img_1.width = 14;
	               img_1.alt = "";
	               img_1.align = "absmiddle";
	               img_1.hspace = 2;
	               if (status == 1) {
	                   if (values) {
	                       img_1.id = 'mute_'+ values[1] +'_0';
	                   }
	                       
	                   img_1.src = sitePrefix +"/i/icons/mute.gif";
	               } else {
	                   img_1.src = sitePrefix +"/i/icons/mute_disabled.gif";
	               }
	               img_1.height = 18;
	               img_1.border = 0;
	            a_1.appendChild( img_1 );
	
	         td_1.appendChild( a_1 );
	
	      tr_0.appendChild( td_1 );
	
	      var td_2 = document.createElement('td');
	         td_2.align = "left";
	         td_2.noWrap = "noWrap";
	         td_2.valign = "top";
	         td_2.className = "smallico";
	
	         var a_2 = document.createElement('a');
	            a_2.href = "#nil";
	            a_2.title = "Private Talk";
	            a_2.className = "smallicolink";
	
	            var img_2 = document.createElement('img');
	               img_2.width = 14;
	               img_2.alt = "";
	               img_2.align = "absmiddle";
	               img_2.hspace = 2;
	               if (status == 1) {
    	               img_2.src = sitePrefix +"/i/icons/private_talk.gif";
	               } else {
    	               img_2.src = sitePrefix +"/i/icons/private_talk_disabled.gif";
	               }
	               img_2.height = 18;
	               img_2.border = 0;
	            a_2.appendChild( img_2 );
	
	         td_2.appendChild( a_2 );
	
	      tr_0.appendChild( td_2 );
	      
	      var td_0 = document.createElement('td');
	         td_0.align = "left";
	         td_0.noWrap = "noWrap";
	         td_0.valign = "top";
	         td_0.className = "smallico";
	
	         var a_0 = document.createElement('a');
	            a_0.href = "#nil";
	            a_0.title = "Delete Record";
	            a_0.className = "smallicolink";
	
	            var img_0 = document.createElement('img');
	               img_0.width = 14;
	               img_0.alt = "";
	               img_0.align = "absmiddle";
	               img_0.hspace = 2;

	               if (status == 1) {
	                   img_0.src = sitePrefix +"/i/icons/delete_disabled.gif";    
	               } else {
	                   if (values) {
	                       img_0.id = 'delete_'+ values[1] +'_0';
	                   }
	                   img_0.src = sitePrefix +"/i/icons/delete.gif";
	               }
	               
	               img_0.height = 18;
	               img_0.border = 0;
	            a_0.appendChild( img_0 );
	
	         td_0.appendChild( a_0 );
	
	      tr_0.appendChild( td_0 );	      
	
	   tbody.appendChild( tr_0 );
	   table_tools.appendChild( tbody );
	   
	   $('tools_'+ partId).parentNode.replaceChild(table_tools, $('tools_'+ partId));
	

       ///
       /// Bind events to bottons
       if (status == 1) {
           Event.observe($('kick_'+ values[1] +'_0'), "click", Conference.proceedKickEntry.bind(), false);
           Event.observe($('mute_'+ values[1] +'_0'), "click", Conference.proceedMuteEntry.bind(), false);
       } else {
           if (values)
              Event.observe($('delete_'+ values[1] +'_0'), "click", Conference.proceedDeleteEntry.bind(), false);
       }
	   

	   return false;
}


function appendNewUserToConferencePannel(userNo, values, disabled)
{
    if (typeof disabled != 'boolean') {
        disabled = false;
    }
    
    var tr_holder = document.createElement('tr');
       tr_holder.bgColor = "#FFFFFF";
       tr_holder.onmouseover = function(){
          this.bgColor='#f1f1f1'
       };
       
       tr_holder.style.display = 'none';
       
       tr_holder.onmouseout = function(){
          this.bgColor='#FFFFFF'
       };
       tr_holder.id = "holder_"+ userNo;
        
       var td_1 = document.createElement('td');
          td_1.width = "33%";
          td_1.align = "left";
          td_1.valign = "top";
          td_1.className = "tdconf10";
    
          var img_clicker = document.createElement('img');
             img_clicker.width = 9;
             img_clicker.alt = "";
             img_clicker.align = "absmiddle";
             img_clicker.src = sitePrefix +"/i/icons/plus.gif";
             img_clicker.height = 9;
             img_clicker.border = 0;
             img_clicker.hspace = 3;
             img_clicker.className = "js_checkbox";
             img_clicker.id = "clicker_"+ userNo;
          td_1.appendChild( img_clicker );
    
         
          if (typeof values.part_name == 'string') {
            td_1.appendChild( document.createTextNode(values.part_name) );
          } else {
            td_1.appendChild( document.createTextNode("Anonymous") );    
          }
          
       tr_holder.appendChild( td_1 );
    
       
    
       var td_3 = document.createElement('td');
          td_3.width = "33%";
          td_3.align = "center";
          td_3.valign = "top";
          td_3.className = "tdconf10";
    
          var a_0 = document.createElement('a');
             
             if (typeof values.part_email == 'string') {
                 a_0.href = "mailto:"+ values.part_email;
                 a_0.appendChild( document.createTextNode(values.part_email) );                 
             } else {
                 a_0.href = "N/A";
                 a_0.appendChild( document.createTextNode("N/A") );
             }
          td_3.appendChild( a_0 );
    
       tr_holder.appendChild( td_3 );
    
    
       var td_4 = document.createElement('td');
          td_4.align = "center";
          td_4.valign = "top";
          td_4.className = "smallicolink";
    
          var table_tools = document.createElement('table');
             table_tools.width = "80%";
             table_tools.cellspacing = 0;
             table_tools.id = "tools_"+ userNo;
             table_tools.cellpadding = 0;
             table_tools.border = 0;
    
             var tbody_0 = document.createElement('tbody');
             var tr_0 = document.createElement('tr');
    
                var td_5 = document.createElement('td');
                   td_5.align = "left";
                   td_5.noWrap = "noWrap";
                   td_5.valign = "top";
                   td_5.className = "smallico";
        
                      var img_0 = document.createElement('img');
                         img_0.width = 14;
                         img_0.id = 'kick_'+ userNo +'_0';
                         img_0.className = 'js_checkbox';
                         img_0.alt = "";
                         img_0.align = "absmiddle";
                         img_0.hspace = 2;
                         
                         
                         if (disabled == true) {
                            img_0.src = sitePrefix +"/i/icons/kick_disabled.gif"; 
                         } else {
                            img_0.src = sitePrefix +"/i/icons/kick.gif";
                         }
                         
                         img_0.height = 18;
                         img_0.border = 0;
    
                   td_5.appendChild( img_0 );
    
                tr_0.appendChild( td_5 );
    
    
                var td_6 = document.createElement('td');
                   td_6.align = "left";
                   td_6.noWrap = "noWrap";
                   td_6.valign = "top";
                   td_6.className = "smallico";
        
                      var img_1 = document.createElement('img');
                         img_1.width = 14;
                         img_1.id = 'mute_'+ userNo +'_0';
                         img_1.className = 'js_checkbox';
                         img_1.alt = "";
                         img_1.align = "absmiddle";
                         img_1.hspace = 2;
                         if (disabled == true) {
                             img_1.src = sitePrefix +"/i/icons/mute_disabled.gif";
                         } else {
                             img_1.src = sitePrefix +"/i/icons/mute.gif";
                         }
                         
                         img_1.height = 18;
                         img_1.border = 0;
    
                   td_6.appendChild( img_1 );
    
                tr_0.appendChild( td_6 );
    
    
                var td_7 = document.createElement('td');
                   td_7.align = "left";
                   td_7.noWrap = "noWrap";
                   td_7.valign = "top";
                   td_7.className = "smallico";
    
                      var img_2 = document.createElement('img');
                         img_2.width = 14;
                         img_2.id = 'talk_'+ userNo +'_0';
                         img_2.className = 'js_checkbox';
                         img_2.alt = "";
                         img_2.align = "absmiddle";
                         img_2.hspace = 2;
                         if (disabled == true) {
                             img_2.src = sitePrefix +"/i/icons/private_talk_disabled.gif";
                         } else {
                             img_2.src = sitePrefix +"/i/icons/private_talk.gif";
                         }                         
                         img_2.height = 18;
                         img_2.border = 0;
    
                   td_7.appendChild( img_2 );
    
                tr_0.appendChild( td_7 );
                
                var td_5 = document.createElement('td');
                   td_5.align = "left";
                   td_5.noWrap = "noWrap";
                   td_5.valign = "top";
                   td_5.className = "smallico";
        
                      var img_0 = document.createElement('img');
                         img_0.id = 'delete_0_'+ userNo;
                         img_0.width = 14;
                         img_0.className = 'js_checkbox';
                         img_0.alt = "";
                         img_0.align = "absmiddle";
                         img_0.hspace = 2;
                         img_0.src = sitePrefix +"/i/icons/delete.gif";
                         img_0.height = 18;
                         img_0.border = 0;
                   td_5.appendChild( img_0 );
    
                tr_0.appendChild( td_5 );                
    
             tbody_0.appendChild( tr_0 );
             table_tools.appendChild( tbody_0 );
    
          td_4.appendChild( table_tools );
    
       tr_holder.appendChild( td_4 );
    
       $('conf_panel').appendChild( tr_holder );
       Effect.Appear('holder_'+ userNo);
       
       
       ///
       /// Bind events to bottons
       if (disabled == false) {
           Event.observe($('kick_'+ userNo +'_0'), "click", Conference.proceedKickEntry.bind(), false);
           Event.observe($('mute_'+ userNo +'_0'), "click", Conference.proceedMuteEntry.bind(), false);
       }

       Event.observe($('delete_0_'+ userNo), "click", Conference.proceedDeleteEntry.bind(), false);           

       
       
    ///
    /// Down tr starts here.
    var tr_info = document.createElement('tr');
       tr_info.bgColor = "#FFFFFF";
       tr_info.id = "info_"+ userNo;
       tr_info.style.display = 'none';
    
       var td_8 = document.createElement('td');
          td_8.colSpan = 5;
          td_8.className = "tdconf10";
    
                  
        var input_active = document.createElement('input');
           input_active.value = 1;
           input_active.name = "active_"+ userNo;
           input_active.id = "active_"+ userNo;
           input_active.type = "hidden";
             
          td_8.appendChild( input_active );
          
          var div_0 = document.createElement('div');
             div_0.className = "widgHolder";
    
             var div_1 = document.createElement('div');
                div_1.className = "left";
    
                var strong_0 = document.createElement('strong');
                   strong_0.appendChild( document.createTextNode("Joined On: ") );
                div_1.appendChild( strong_0 );
    
    
                var span_joned = document.createElement('span');
                   span_joned.id = "joned_"+ userNo;
                   span_joned.appendChild( document.createTextNode(values[0]) );
                div_1.appendChild( span_joned );
  
    
                var br_0 = document.createElement('br');
                div_1.appendChild( br_0 );
    
             div_0.appendChild( div_1 );
    
    
             var div_2 = document.createElement('div');
                div_2.className = "right";
    
                var strong_2 = document.createElement('strong');
                   strong_2.appendChild( document.createTextNode("Left On: ") );
                div_2.appendChild( strong_2 );
    
    
                var span_left = document.createElement('span');
                   span_left.id = "left_"+ userNo;
                   span_left.appendChild( document.createTextNode("N/A") );
                div_2.appendChild( span_left );
    
    
                var br_1 = document.createElement('br');
                div_2.appendChild( br_1 );
    
                var strong_3 = document.createElement('strong');
                   strong_3.appendChild( document.createTextNode("Logged From Phone: ") );
                div_2.appendChild( strong_3 );
    
    
                var span_phone = document.createElement('span');
                   span_phone.id = "phone_"+ userNo;
                   span_phone.appendChild( document.createTextNode(values[1]) );
                div_2.appendChild( span_phone );
    
             div_0.appendChild( div_2 );
    
          td_8.appendChild( div_0 );
    
       tr_info.appendChild( td_8 );
    
       $('conf_panel').appendChild( tr_info );
       
       if (disabled == false) {
        Event.observe($('clicker_'+ userNo), "click", Conference.proceedInfoShow.bind(), false);    
       }
}

function checkInt(mouseEvent)
{
    var elm =  Event.element(mouseEvent);
    
    if (isNaN(elm.value)) {
        elm.value = '';
        alert('This field can contain only numbers.');
        return false;
    }
    
    return true;
}
