var loggedIn = false;
var data_exists = false;
var shortTabs = new Array(); //array of divs with short reports (needing fixing of footerPanel)
var chartTabs = new Array();
var specialTabs = new Array();
var tabArray = new Array(1,2,3,4,5,6,7,8,9,10);
var tabColors =  new Array();
var userEmail = "";
var getEmailids= new Array();
//var recipients = new Array();
var navigatingSuggest = false;
var newRecipient = false;
var is_admin = false;
var user_id;
var renewal_due = false;
var def_text = new Array();
def_text['feedback_email'] = "Enter your email address here";
def_text['feedback_text'] = "Enter your message here";

$(function(){
	
	var left = (screen.width - 762)/2;	
	//$("#topPanel").css({left:left, margin:'0px'});//this fixes the position of topPanel, and avoids jerky transformations
	$("#container").tabs({		
		show: function(){			
			var myPane = $(".ui-tabs-selected a").attr("href");
			if (myPane == "#rpwzd" || myPane == '#my_r2b') {
				$("#tab_menu .menuitem").hide();	
			}
			else if (exists_in_array(shortTabs, myPane)) {//report tab
				$(myPane).css('margin-bottom', '20%');
				$("#tab_menu .menuitem").show();	
			}
			else if (exists_in_array(chartTabs, myPane)) {// chart tab
				$("#tab_menu .menuitem").show();
				$("#fontsizeplus, #fontsizeminus, #csv, #email_rep").hide();			
			}
			else if (exists_in_array(specialTabs, myPane)) {// dashboard, etc
				$("#tab_menu .menuitem").show();
				$("#fontsizeplus, #fontsizeminus, #csv, #email_rep").hide();
			}			
			else //report tab
				$("#tab_menu .menuitem").show(); 
			/*if (navigator.appName != 'Microsoft Internet Explorer')	{	
				$(myPane).after("<div class='cp_shadow'>&nbsp;</div><div class='cp_shadow1'>&nbsp;</div><div class='cp_shadow2'>&nbsp;</div>");
				var h = $("div.cp_shadow").parents(':first').height();
				$("div.cp_shadow, div.cp_shadow1, div.cp_shadow2").height(h).width("100%");//shadow
			}*/					
		}		
	});
	//$("#login, #signup").corner("30px");	
	$("form#login, form#signup, div.fancyButton, div#bodyPanel, #container, #menubar, #email_popup, #mozes_prefs").hide();
	
	// add button effect
	$(".button").button();
	
	//this is only for the signup_form page
	if (document.URL.match("signup_form")) {
		$("#topPanel").css("height", "110px");
		$("#valid-user-info").hide();
		var h = screen.height * 0.5;
		//$("form#signup").height(h);
		$("form#signup").after("<div class='shadow'>&nbsp;</div><div class='shadow1'>&nbsp;</div><div class='shadow2'>&nbsp;</div>");

		//drop-shadow effect	
		var myWidth = $("form#signup").width();			
		var myHeight = $("form#signup").height();
		$("div.shadow, div.shadow1, div.shadow2").height(myHeight).width(myWidth);
		$('#edit-user-cancel').hide();
		$("form#signup").show();
	}
	else if (document.URL.match("subscribe")) { //this is for renewal form
		$("#topPanel").css("height", "110px");				
		//$("#renew_account_form").after("<div class='shadow'>&nbsp;</div><div class='shadow1'>&nbsp;</div><div class='shadow2'>&nbsp;</div>");

		//drop-shadow effect	
		var myWidth = $("#renew_account_form").width();			
		var myHeight = $("#renew_account_form").height();
		$("div.shadow, div.shadow1, div.shadow2").height(myHeight).width(myWidth);		
	}	
	else //and this is for the regular page(s)
		initialize(false);

	//user clicks 'Signup'
	$("div#headerPanelsecond").click(function(){
		//var message = "Signup is currently open to invitees only. Press 'OK' to request an invitation or press 'Cancel' if you are already an invitee.";	
		//var request = window.confirm(message);
		//var message = "<h3>Hi, Good day!</h3><br><p>Signup is currently open to invitees only. Would you like to request an invitation?</p>";
		/*$.prompt(message, {
			prefix: 'impromptu',
			buttons: {'Yes, indeed!': true, 'No, I\'m already an Invitee': false},
			callback: function (v, m) {		
				if (!v) {*/
					$("div.fancyButton, #footerPanel, div#bodyPanel").fadeOut(500, function(){
						$("#topPanel").css("height", "110px");
						$("#valid-user-info").hide();
						var h = screen.height * 0.5;
						//$("form#signup")
						//.after("<div class='shadow'>&nbsp;</div><div class='shadow1'>&nbsp;</div><div class='shadow2'>&nbsp;</div>");

						//drop-shadow effect	
						var myWidth = $("form#signup").width();			
						var myHeight = $("form#signup").height();
						$("div.shadow, div.shadow1, div.shadow2").height(myHeight).width(myWidth);
						$('#edit-user-cancel').hide();
						$("form#signup, #footerPanel").fadeIn(500);
					});
				/*}
				else {
					$("div.fancyButton, #footerPanel, div#bodyPanel").fadeOut(500, function(){
						$("#topPanel").css("height", "110px");
						var h = screen.height * 0.2;
						$("form#invitation")
						.after("<div class='shadow'>&nbsp;</div><div class='shadow1'>&nbsp;</div><div class='shadow2'>&nbsp;</div>");
						//drop-shadow effect	
						var myWidth = $("form#invitation").width();			
						var myHeight = $("form#invitation").height();
						$("div.shadow, div.shadow1, div.shadow2").height(myHeight).width(myWidth);
						$("#footerPanel").css("position","absolute");
						$("form#invitation, #footerPanel").fadeIn(500);
					});			
				//}*/
			//}
		//});
	});

	//user clicks 'feedback'
	$("#feedback_tab").click(function() {
		myDiv = $("#feedback_contents");
		if ($(myDiv).is(":visible"))
			myDiv.hide("slow");
		else {
			$('.feedback_inputs').each(function() {
				myid = $(this).attr('id');
				$(this).val(def_text[myid]);
			});
			$('#feedback_errors').hide();
			myDiv.show("slow");
		}

		//input fields prompt messages		
		$('.feedback_inputs').focus(function() {
			myid =  $(this).attr('id');
			if ($(this).val() == def_text[myid])
				$(this).val('');
		});
		$('.feedback_inputs').blur(function() {
			myid =  $(this).attr('id');
			if ($(this).val() == '')
				$(this).val(def_text[myid]);
		});
	});

	//user submits feedback
	$("#feedback_submit").click(function() {
		var inp = new Array();
		valid = true;
		$('.feedback_inputs').each(function() {
			myid =  $(this).attr('id');
			if ($(this).val() == def_text[myid]) {
				$('#feedback_errors').text("Pls enter valid inputs").show();
				$(this).focus();
				valid = false;
				return;
			}
			else if (myid == 'feedback_email' && $(this).val().search(/[^@]+@[^@\.]+\.[^@]+/) == -1) {
				$('#feedback_errors').text("Pls enter a valid email address").show();
				$(this).focus();
				valid = false;
				return;
			}
			else
				inp[myid] = $(this).val();		
		});
		if (valid) {
			$.post("index.php/user/feedbackSubmit", 
				{
					feedback_email:inp['feedback_email'], 
					feedback_text:inp['feedback_text']
				},
				function(data) {
					confirm_msg = "<h2>Thank you</h2><p>We appreciate your writing to us. We will look into your suggestions and implement them, if they appear to benefit our users.</p>";
					error_msg = "<p>Failed to submit your feedback. Pls try again.</p>";
					if (data.match(/success/i)) 
						$("#feedback_confirm").html(confirm_msg);
					else
						$("#feedback_confirm").html(error_msg);
					$("#feedback_form").hide();
					$("#feedback_confirm").show();
					setTimeout(
					"$('#feedback_contents').hide('slow');$('#feedback_confirm').hide(); $('#feedback_form').show();", 
					10000);
				}
			);//$("#tab" + tab_index + " a").click();
		}	
	});

	//user clicks betabug
	$("#betabug_widget").click(function() {
		myDiv = $("#betabug_contents");
		if ($(myDiv).is(":visible")) {
			myDiv.hide("slow");
		}
		else {
			myDiv.show("slow");								
		}		
	});

	

	//user clicks submit of invitation
	$("#email-submit").click(function() {
		var email = $("input[name=invitee_email]").val();
		if (email.search(/[^@]+@[^@\.]+\.[^@]+/) == -1) {
			$("form#invitation .error").css("color", "red")
			.text("Invalid email address! Please provide a valid email address");
		}
		else {
			$("a, input, p", "form#invitation").hide();
			$("form#invitation span").text("Sending email invitation...");
			$("form#invitation .error").text("");
			$.post("index.php/user/addInvitee",
				{email:email},
				function(data) {
					if (data.match(/success/i)) {
						$("form#invitation span").text("");
						$("form#invitation #thanks-note").html("Thanks for your interest in Report2Base. An invitation has been dispatched to your email address. Pls follow the steps outlined in the invitation, to sign up with Report2Base.<br><br>Report2Base Team");
					}
					else {
						$("form#invitation span").text("");
						$("form#invitation #thanks-note").html("Error encountered. Please try again with a correct email address");
					}	
				}
			);
		}	
	});
	
	//user clicks 'Login'
	$("div#headerPanelthird").click(function(){
		$("div.fancyButton, #footerPanel, div#bodyPanel").fadeOut(500, function() {
			$("#topPanel").css("height", "110px");
			var h = screen.height * 0.3;
			//$("form#login").height(h)
			//.after("<div class='shadow'>&nbsp;</div><div class='shadow1'>&nbsp;</div><div class='shadow2'>&nbsp;</div>");

			//drop-shadow effect	
			var myWidth = $("form#login").width();			
			var myHeight = $("form#login").height();
			$("div.shadow, div.shadow1, div.shadow2").height(myHeight).width(myWidth);

			$("#footerPanel").css("position","absolute");
			$("form#login, #footerPanel").fadeIn(500);
		});			
	});

	//user clicks submit of login form
	$("#login-submit").click(function(){
		//collect the form input values
		var usrname = $("#login input[name=username]").val();
		var psswd = $("#login input[name=password]").val();
		var protocol = $('#login select[name=protocol]').val();
		var subdmn = $("#login input[name=subdomain]").val();
		var dmn = $("#login select[name=domain]").val();	
		$.post("index.php/user/login", 
	 		{username: usrname, password: psswd, protocol:protocol, subdomain: subdmn, domain: dmn},
			function(){
				initialize(true);							
			}						
		);
	});				
	
	base_url = $('#base_url').attr('href');	

	//user clicks 'continue' button of signup
	$("#continue").click(function() {
		$("#announcement").text("Validating user....");
 		var username = $("#signup input[name=username]").val();
		var password = $("#signup input[name=password]").val();
		var protocol = $("#signup select[name=protocol]").val();
		var subdomain = $("#signup input[name=subdomain]").val();
		var domain = $("#signup select[name=domain]").val();
		var context = $("#signup input[name=context]").val();		
		//alert('username: ' + username + ', password: ' + password + ', protocol: ' + protocol + ', subdomain: ' + subdomain + ', domain: ' + domain);

		if (!username || !password || !subdomain) {
			$("#announcement").css("color", "red").text('Please enter all fields');
			return false;
		}			
		
		$.post(base_url + "index.php/user/verify", 
			{username:username, password:password, protocol:protocol, subdomain:subdomain, domain:domain},
			function (data) {
				data.replace('\n', '');
				var myObj = eval('(' + data + ')');			
				var valid_account = myObj.valid_account;
				var protocol_correct = myObj.protocol_correct;
				var user_exists = myObj.user_exists;
				var data_exists = myObj.data_exists;
				var count = myObj.count;			
				
				if (!user_exists || context == 'edit account') {
					if (valid_account) {
						if (!protocol_correct) {
							if (protocol == 'http://')
								protocol = 'https://';
							else
								protocol = 'http://';
							$("#signup select[name=protocol]").val(protocol); //set to correct protocol							
						}						
						//save correct protocol in a hidden field	
						$("#signup input[name=verified_protocol]").val(protocol);
						
						if (!data_exists && count > 10) {
							$("#announcement").css("color", "green").html("Your credentials have been verified. Since you have a large volume of data, you need to upload your Basecamp export file (XML). You may obtain it by visiting your <a target='_blank' href='" + protocol + subdomain + '.' + domain + "/account'>Basecamp account page</a> and clicking on the link labelled <b>'Export my account in raw XML format'</b>");
							$("#continue").fadeOut(500);
							$("#valid-user-info").show('fast', function(){
								h = $('form#signup').height();
								$("div.shadow, div.shadow1, div.shadow2").height(h);							
							});
						}						
						else {
						  if (data_exists) {
                // this will be used deny trial period for subsequent users
                $("#signup input[name=data_exists]").val(1);
              }
							$("#signup span#file_label, #signup input[name=userfile]").hide();
							$("#signup input[name=userfile_hidden]").val(1);							
							$("#signup").submit();
						}
					}
					else
						$("#announcement").css("color", "red").html("Could not validate user information. Either your information is not correct or you have not enabled Basecamp API for your account. Pls rectify and retry.<br>(Note: Basecamp API can be enabled by visiting your <a target='_blank' href='" + protocol + subdomain + '.' + domain + "/account'>Basecamp account page</a>)");						
				}
				else
					$("#announcement").html("You have already signed up. Use 'Login' button to access your account. <a href='" + base_url + "'>Click here</a> to go to the start page");
			}
		); 
	});	

	//signup submit - bind a function
	$("#signup").submit(function() {
		//validating user inputs
		var valid = false;
		/*var fname = $("#signup input[name=fname]").val();
		var lname = $("#signup input[name=lname]").val();
		var email = $("#signup input[name=email]").val();*/
		var usrfile = $("#signup input[name=userfile]").val();
		var userfile_hidden = $("#signup input[name=userfile_hidden]").val();
		//var invitee = 0;
		
		/*if (!fname) {
			$("#announcement").css('color', 'red').text("Please enter your full name!");
			$("#signup input[name=fname]").focus();				
		}
		else if (!lname) {
			$("#announcement").css('color', 'red').text("Please enter your full name!");
			$("#signup input[name=lname]").focus();
		}
		else if (!email) {
			$("#announcement").css('color', 'red').text("Please enter your email address!");
			$("#signup input[name=email]").focus();
		}
		else*/ 
		if (!usrfile && !userfile_hidden) {
			$("#announcement").css('color', 'red').text("Please choose the export file to be uploaded!");
			h = $('form#signup').height();
			$("div.shadow, div.shadow1, div.shadow2").height(h);
			$("#signup input[name=userfile]").focus();
		}
		/*else if (email.search(/[^@]+@[^@\.]+\.[^@]+/) == -1) {
			$("#announcement").css('color', 'red').text("Invalid email address! Pls provide a valid email address");
			$("#signup input[name=email]").focus();
		}*/			
		else {
			valid = true;
			$("#signup, div.shadow, div.shadow1, div.shadow2").fadeOut(500, function() {
				$("#signup").parent(".user_form_wrapper")
				.height(screen.height * 0.45)
				.html("<img src='images/loading.gif' style='position:absolute; left:45%; top:45%'/>");
				$("#alerts").text("Signing up...").show();				
			});
		}			
		return valid;	
	});
	
	//signup submit - click handler
	$("#signup-submit").click(function() {
		/*var context = $('form#signup input[name=context]').val();
		if (context == 'edit account') {
			var username = $("#signup input[name=username]").val();
			var password = $("#signup input[name=password]").val();
			var protocol = $("#signup input[name=verified_protocol]").val();
			var subdomain = $("#signup input[name=subdomain]").val();
			var domain = $("#signup select[name=domain]").val();
			var fname = $("#signup input[name=fname]").val();
			var lname = $("#signup input[name=lname]").val();
			var email = $("#signup input[name=email]").val();
			$.post("index.php/user/editUser", {username:username, password:password, protocol:protocol, subdomain:subdomain, domain:domain, fname:fname, lname:lname, email:email}, function(data) {
				data.replace('\n', '');
				if (data == 'Success') {
					$(".shadow, .shadow1, .shadow2").remove();
					$("#signup").fadeOut(500, function() {
						$("#rpwzd, #menubar, #tabPanel").show();
						$("#alerts").text("Your changes have been saved");
						setTimeout("$('#alerts').text('');", 5000);
						initialize(false);
					});		
				}	
			});
			return;			
		}*/
		//verify whether invitee or not
		/*var email = $("#signup input[name=email]").val();
		$.post(base_url + "index.php/user/isInvitee", {email:email}, function(data) {
			var invitee = data.replace('\n', '');
			if (invitee == 0) {
				$("#announcement")
				.css({'color': 'red', 'font-size':'smaller'})
				.html("<p>Your email address could not be found in our invitees list. <a href='#' id='rfi'>Click here</a> to request an invitation.</p>")
				.insertAfter("#valid-user-info");
				$("#rfi").click(function() {
					$("#signup, #footerPanel, div.shadow, div.shadow1, div.shadow2").fadeOut(500);
					var h = screen.height * 0.2;
					$("form#invitation").height(h)
					.after("<div class='shadow'>&nbsp;</div><div class='shadow1'>&nbsp;</div><div class='shadow2'>&nbsp;</div>");
					//drop-shadow effect	
					var myWidth = $("form#invitation").width();			
					var myHeight = $("form#invitation").height();
					$("div.shadow, div.shadow1, div.shadow2").height(myHeight).width(myWidth);
					$("#footerPanel").css("position","absolute");
					$("form#invitation, #footerPanel").fadeIn(500);
				});
				$("#signup input[name=email]").focus();				
			}
			else*/
				$("#signup").submit();
		//});		
	});
	

	//user clicks submit of report wizard		
	$("#rpwzd").click(function(event){		
		if(event.target.id == "rep-wiz-submit" || event.target.id == "submit-span") {
			
			var valid = true;
			var report_id = $("#rep_wiz input[name=report_id]").val();
			var report_type = $("#rep_wiz select[name=report_type]").val();
			if (report_type == 'Select:') {
				$("#notification").css("color", "red").text("Select a report");
				$("#rep_wiz select[name=report_type]").focus();
				valid = false;
			}
			var key1 = $("#rep_wiz select[name=key_1]").val();
			var key2 = $("#rep_wiz select[name=key_2]").val();
			var key3 = $("#rep_wiz select[name=key_3]").val();				
			var project_name = $("#rep_wiz input[name=project_name]").val();
			if (report_type == 'Messages' && project_name == 'All')  {
				$("#notification").css("color", "red").text("Select a project");
				$("#rep_wiz select[name=project_name]").focus();
				valid = false;
			}		
			var person_name = $("#rep_wiz input[name=person_name]").val();
			var client_name = $("#rep_wiz input[name=client_name]").val();
			if (key1 == 'Client Name' && client_name == 'All') {
				$("#notification").css("color", "red").text("Select a client");
				$("#rep_wiz select[name=client_name]").focus();
				valid = false;
			}
			var from_date = $("#rep_wiz input[name=from_date]").val();
			var to_date = $('#rep_wiz input[name=to_date]').val();
			var completed = $('#rep_wiz select[name=completed]').val();
			//var color_code = $("#rep_wiz input[name=color_code]").val();
			var color_code = 0;
			var save_rep = $("#rep_wiz input[name=save_rep]").attr("checked");
			if(save_rep)
				save_rep = 1;
			else
				save_rep = 0;
			var rep_name = $("#rep_wiz input[name=rep_name]").val();
			if (save_rep && !rep_name) {
				$("#notification").css("color", "red").text("Enter report name");
				$("#rep_wiz input[name=rep_name]").focus();
				valid = false;	
			}	
			var set_dispatch = $("#rep_wiz input[name=set_dispatch]").attr("checked");
			if (set_dispatch)
				set_dispatch = 1;
			else
				set_dispatch = 0;			 	
			var frequency = $("#rep_wiz select[name=frequency]").val();
			
			var rep_branding = $("#rep_wiz input[name=rep_branding]").attr("checked");
			if (rep_branding)
				rep_branding = 1;
			else
				rep_branding = 0;	
			
			var emails = $("#rep_wiz input[name=emails]").val();
			if (set_dispatch && !emails) {
				$("#notification").css("color", "red").text("Enter recipients' emails");
				$("#rep_wiz input[name=emails]").focus();
				valid = false;	
			}
			var tab_index = tabArray.shift();
			if (tab_index && valid) {	
				$("#alerts").text("Generating report...").show();
				$("#cp" + tab_index).load("index.php/user/genReport",
					{report_id:report_id, report_type:report_type, key1:key1, key2:key2, key3:key3, project_name:project_name, person_name:person_name, client_name:client_name, from_date:from_date, to_date:to_date, completed:completed, color_code:color_code, save_rep:save_rep, rep_name:rep_name, set_dispatch:set_dispatch, frequency:frequency, emails:emails, rep_branding:rep_branding, tab_id:tab_index},
					function(data) {
						//remove notification
						$("#alerts").text('').hide();
						
						//insert sorting widgets - this fn written in 'report_sorting.js' 
						// make sure this is done only for ungrouped reports
						  if (project_name != 'All' && person_name != 'All')
                insertSorters(this, color_code);
						
						//tidy up report - text-alignments etc.
						tidyUpReport(this);

						//get back the ampersand
						rep_title = $('h3', this).text();
						rep_title = rep_title.replace('[and]', '&');
						$('h3', this).text(rep_title);
						
						
						//data existance check
						var searchStr = "This error message was generated by PHPReports";
						var mySearch = data.search(searchStr);
						if (mySearch == -1) {
							var h = $("#cp" + tab_index).height();						
							//if (h < screen.height * 0.40)
								//shortTabs.push("#cp" + tab_index);
							$("#cp" + tab_index).css("border-bottom", "thin solid lightgrey");
							/*if (navigator.appName != 'Microsoft Internet Explorer') {
								wrap = $("#cp" + tab_index).parents('.contentPanelWrapper:first');
								if (!wrap.length)
									$("#cp" + tab_index).wrap("<div class='contentPanelWrapper'></div>");
							}*/	

							
							//color the rows
							$("#cp" + tab_index + " TD.SUBHEADER").addClass("ui-table-subheader");
							$("#cp" + tab_index + " TD.GROUPHEADER").addClass("ui-table-groupheader");
							$("#cp" + tab_index + " TD.FOOTER").addClass("FOOTER");
							
							//$("TD.FIELDS", myCP).addClass("ui-table-fields");
							//$("TD.ODD", myCP).addClass("ui-table-odd");
							//$("#pg" + tab_id).addClass("ui-table");
							
							$("#cp" + tab_index + " TR")
							.filter(function() {
								len = $(this).children('.FIELDS').length;
								//alert(len);
								if (len)
									return true;
								else
									return false;
								
							})
							.addClass("ui-table-fields");
							
							$("#cp" + tab_index + " TR")
							.filter(function() {
								len = $(this).children('.ODD').length;
								//alert(len);
								if (len)
									return true;
								else
									return false;
								
							})
							.addClass("ui-table-odd");							
							
							tabColors[tab_index] = color_code;
							if(save_rep) {
								//updateReports();
								$('#my_r2b').load('index.php/user/dashboard', function() {
									dashboard_init();
								});								
							}	
							$("#rpwzd").load("index.php/user/setReport", function() {
								rep_wiz_init();
							});
							$("#rpwzd_tab span").text("Create a Report");
							//$("#container").triggerTab(tab_index + 2);
							$("#tab" + tab_index + " a").click();
							$("#cp" + tab_index + ", #tab" + tab_index).show(500);
						}
						else {
							//alert('no data');
							/*if (navigator.appName != 'Microsoft Internet Explorer') {
								wrap = $("#cp" + tab_index).parents('.contentPanelWrapper:first');
								if (!wrap.length)
									$("#cp" + tab_index).wrap("<div class='contentPanelWrapper'></div>");
							}*/	
							$("#cp" + tab_index).html('<div style="text-align:center; padding:50px; font-weight:bold">NO DATA FOUND</div>');
							shortTabs.push("#cp" + tab_index);
							$("#rpwzd").load("index.php/user/setReport", function() {
								rep_wiz_init();
							});
							$("#rpwzd_tab span").text("Create a Report");				
							//$("#container").triggerTab(tab_index + 2);
							$("#tab" + tab_index + " a").click();
							$("#cp" + tab_index + ", #tab" + tab_index).show(500);
						}
					}
				);
				var desc = "";
				switch (key1) {
					case 'Project Name':
						selection = project_name;
						break;
					case 'Person Name':
						selection = person_name;
						break;
					case 'Client Name':
						selection = client_name;
						break;
					case 'Date created':
					case 'Date due':
					case 'Date completed':
						selection = from_date + ' to ' + to_date;
						break;
					default:
						selection = '';	
				}	
				if (selection)
					desc = " - " + selection;
				$("#tab" + tab_index + " span").text(report_type + desc);	
			}							 
		}
		//user clicks 'cancel' of report wizard
		else if (event.target.id == "cancel" || event.target.id == "cancel-span") {	
			$("#rpwzd").load("index.php/user/setReport", function() {
				rep_wiz_init();
			});
			$("#rpwzd_tab span").text("Create a Report");
		}	
	});
	
	
	

	//logout
	$("div#topPanel").click(function(event) {
    var base_url = $('#base_url').attr('href');	   
		if (event.target.id == 'logout') 
			$.post(base_url + "index.php/user/logout", function(data) {
				window.location.replace(base_url);
			});					
	});	
	
	//user hovers over a menuitem
	$(".menuitem span.item-label, .menuitem img").hover(
		function() {
			$(this).addClass("menuitem_hover");		
		},
		function() {
			$(this).removeClass("menuitem_hover");
		}
	);	

	//user clicks 'Saved Reports' menu-item
	$("#myreports span.item-label").click(function(event){
		//workaround for IE select tag z-index bug
		if (navigator.appName == 'Microsoft Internet Explorer') {
			$("#rpwzd select").toggle();
		}
		//slide toggle the drop-down menu if line-items exist
		if ($("#drpdwn_reports li").length > 0){
			$("#drpdwn_reports").slideToggle();							
		}
		else {
			$("#err").show();
			setTimeout("$('#err').hide();", 3000);
		}		
	});	
	
	//user clicks 'Charts' menu-item
	$("#chart span.item-label").click(function() {
    $("#chart_options").load("index.php/user/showChartOptions", function() {
			$(".button").button();
			//workaround for IE select tag z-index bug
			if (navigator.appName == 'Microsoft Internet Explorer') {
				$(".contentPanel#rpwzd select").toggle();
			}
			$("input[name=project_select], input[name=person_select], span#project_label, span#person_label").hide();
			$(this).slideToggle();
			
			//code for chart form actions
			$("select[name=chart_type]").change(function() {
					var mySelection = $(this).val();
					if (mySelection == 0)
						$(this).siblings("input, span#project_label, span#person_label").hide();
					else if (mySelection == 1) {
						$(this).siblings("input[name=project_select], span#project_label").show();
						$(this).siblings("input[name=person_select], span#person_label").hide();
					}
					else {
						$(this).siblings("input[name=project_select], span#project_label").hide();
						$(this).siblings("input[name=person_select], span#person_label").show();
					}	
			});
			
			$("input[name=project_select]").autocomplete({ 
        source: projects, 
        select: function(e,ui) {
          key = 'project';
          val = $(ui.item).val();  
          drawTimeChart(key,val);          
        }
      });
			$("input[name=person_select]").autocomplete({ 
        source: persons,
        select: function(e,ui) {
          key = 'person';
          val = $(ui.item).val();  
          drawTimeChart(key,val);
        } 
      });
			
			$("#chart_selector .cancel").click(function() {
				$("#chart_options").slideUp();
			});
			
			
			//code for drawing chart
			/*if (drawChart) {
				$("#chart_options").slideUp();
				//alert('hi');
				var tab_index = tabArray.shift();
				
				if (tab_index) {
					$("#cp" + tab_index)
					.append("<div style='width:800px; height:300px;' id='last_chart" + tab_index + "' class='time_chart'></div>")
					.append("<div style='width:800px; height:300px;' id='this_chart" + tab_index + "' class='time_chart'></div>");
				
					//last week's chart
					//$('#last_chart' + tab_index).load('index.php/user/getChart/' + chart_key + '/' + encodeURI(selected_value) + '/last');
					
					//this week's chart
					//$('#this_chart' + tab_index).load('index.php/user/getChart/' + chart_key + '/' + encodeURI(selected_value) + '/this');
					
					chartTabs.push("#cp" + tab_index);
					$("#tab" + tab_index + " span").text("Time Entries Chart of " + val);
					if (navigator.appName != 'Microsoft Internet Explorer')
						$("#cp" + tab_index).wrap("<div class='contentPanelWrapper'></div>");
					//$("#container").triggerTab(tab_index + 2);
					$("#tab" + tab_index + " a").click();
					$("#cp" + tab_index + ", #tab" + tab_index).show(500);
				}
			}*/
		});	
	});
	
	// view brand form
	$("#rep-brand span.item-label").click(function() {
	    $("#branding_options").load("index.php/user/reportBranding", function(data) {
				$(".button").button();
				$(this).slideToggle();

				$("#cmp-header-form-submit").click( function() {
				  filename = $('input[name=userfile]','#brand_selector').get(0).value;
				  if (filename) {
				    if (filename.match(/\.(jpg|jpeg)$/))
				      $("#brand_selector").submit();
  			    else
              alert('Unsupported file format. Pls upload the logo in jpg format only');
          }
          else
            $("#brand_selector").submit();
				});
				
				$("#brand_selector .cancel").click(function() {
					$("#branding_options").slideUp();
				});
				$("#brand_selector #delete").click(function() {
					$.getJSON("index.php/user/deleteImageBranding", function(resobj) {
						$("#alerts").text("Branding logo Deleted Successfully.........")
						$("#cmy-image,#cmy-image_label,#delete,#branding_options .alert-label-exist").slideUp();
						$("#branding_options .alert-label-new").show();
					});		
				});
	    });
	});
	
			

	
	
	
	//user clicks 'edit user' menu item
	$('#edit_user').click(function() {
		$(".cp_shadow, .cp_shadow1, .cp_shadow2").remove();
		$('#menubar, #tabPanel, .customTabs, .contentPanel').hide();
		$("#rpwzd").fadeOut(500, function(){			
			$("#valid-user-info").hide();
			$('#announcement').text('');
			$("#continue").show();
			var h = screen.height * 0.5;
			//$("form#signup").height(h)
			//.after("<div class='shadow'>&nbsp;</div><div class='shadow1'>&nbsp;</div><div class='shadow2'>&nbsp;</div>");
			$('.shadow, .shadow1, .shadow2').hide();

			//drop-shadow effect	
			var myWidth = $("form#signup").width();			
			var myHeight = $("form#signup").height();
			$("div.shadow, div.shadow1, div.shadow2").height(myHeight).width(myWidth);
			$('p#instruct').remove();
			var note = "<p id='instruct'>(Note: Username, Password & URL may be changed, only if they have been changed in your Basecamp account.)</p>";
			$('form#signup h3').text('Edit my info').after(note);
			$('#edit-user-cancel').show();
			$("#signup input[name=context]").val('edit account');
			$.getJSON("index.php/user/getMyInfo", function(data) {
				$('#signup input[name=username]').val(data.username);
				$('#signup input[name=protocol]').val(data.protocol);
				$('#signup input[name=subdomain]').val(data.subdomain);
				$('#signup input[name=domain]').val(data.domain);
				$('#signup input[name=fname]').val(data.fname);
				$('#signup input[name=lname]').val(data.lname);
				$('#signup input[name=email]').val(data.email);						
				$("form#signup, #footerPanel, .shadow, .shadow1, .shadow2").fadeIn(500);
			});	
		});
	});

	//user clicks 'cancel' button in 'edit my info' form
	$('#edit-user-cancel').click(function() {
		$(".shadow, .shadow1, .shadow2").remove();
		$("#signup").fadeOut(500, function() {
			$("#rpwzd, #menubar, #tabPanel").show();
			initialize(false);
		});
	});
	
	//user clicks 'Mobile R2B' menuitem
	$('#mozes').click(function(){
		mozes_conf();
	});
	
	//user closes 'Mobile' R2B form
	$("#cancel_mozes").click(function() {
		$("#mozes_prefs").slideUp();
		if (navigator.appName == 'Microsoft Internet Explorer') {
			$("#rpwzd select").show();
		}
	});

	//user clicks 'dashboard'
	/*$("#dashboard").click(function() {
		$(".cp_shadow, .cp_shadow1, .cp_shadow2").remove();
		var tab_index = tabArray.shift();
		if (tab_index) {
			$("#cp" + tab_index).load("tpr.php?user_id=" + user_id, function(data) {								
				//tab properties
				specialTabs.push("#cp" + tab_index);
				tabColors[tab_index] = 0;					 
				$("#tab" + tab_index + " span").text("Daily Report");
				if (navigator.appName != 'Microsoft Internet Explorer') 
					$("#cp" + tab_index).wrap("<div class='contentPanelWrapper'></div>");
				$("#container").triggerTab(tab_index + 1);	
				$("#cp" + tab_index + ", #tab" + tab_index).show(500);
			});
		}
	});*/
	
	//user clicks 'increase font size' menu item
	$("#fontsizeplus").click(function() {
		//remove old drop shadows
		$(".cp_shadow, .cp_shadow1, .cp_shadow2").remove();
	
		var size = $(".contentPanel TD.HEADER").css('font-size');	
		if (size.search(/px/) != -1) {	//for browsers that give size in px
			var size_pt = 0.75 * size.replace(/px/, ''); //this is the size in points
			size_pt = Math.round(size_pt);
		}
		else if (size.search(/pt/) != -1) // IE outputs size in pts
			var size_pt = size.replace(/pt/, '');
		if (size_pt < 14) 
			size_pt++;		
		size_pt += 'pt';
		$("TD.HEADER, TD.SUBHEADER, TD.FOOTER, TD.ODD, TD.FIELDS").css('font-size', size_pt);			
	});
	
	//user clicks 'decrease font size' menu item
	$("#fontsizeminus").click(function() {
		//remove old drop shadows
		$(".cp_shadow, .cp_shadow1, .cp_shadow2").remove();
	
		var size = $(".contentPanel TD.HEADER").css('font-size');		
		if (size.search(/px/) != -1) {	//for browsers that give size in px
			var size_pt = 0.75 * size.replace(/px/, ''); //this is the size in points
			size_pt = Math.round(size_pt);
		}
		else if (size.search(/pt/) != -1) // IE outputs size in pts
			var size_pt = size.replace(/pt/, '');
		if (size_pt > 9) 
			size_pt--;		
		size_pt += 'pt';
		$("TD.HEADER, TD.SUBHEADER, TD.FOOTER, TD.ODD, TD.FIELDS").css('font-size', size_pt);			
	});
	
	//user clicks 'export as PDF' menu item
	$("#pdf").click(function() {
		var myPane = $(".ui-tabs-selected a").attr("href");
		if (myPane != "#rpwzd"){
			if (exists_in_array(specialTabs, myPane) || exists_in_array(chartTabs, myPane))
				html = $(myPane).html();
			else
				html = "";
			var index = myPane.replace('#cp', '');
				
			$.post("index.php/user/genPDF/" + index + '/' + tabColors[index] + '/F', 
				{html:html},
				function(data) {				  
					var pdfURL = data.replace('\n', '');
					pdfURL = pdfURL.replace('./', '');
					//alert(pdfURL);
					window.location.assign("index.php/user/fileDownload/" + pdfURL);
				}
			);			
		}
	});

	//user clicks 'export as CSV' menu item
	$("#csv").click(function() {
		var myPane = $(".ui-tabs-selected a").attr("href");
		if (myPane != "#rpwzd" && !exists_in_array(chartTabs, myPane)){
			if (exists_in_array(specialTabs, myPane))
				html = $(myPane).html();
			else
				html = "";
			var index = myPane.replace('#cp', '');
				
			$.post("index.php/user/genCSV/" + index, 
				{html:html},
				function(data) {
					var csvURL = data.replace('\n', '');
					csvURL = csvURL.replace('./', '');
					//alert(csvURL);
					window.location.assign("index.php/user/fileDownload/" + csvURL);
				}
			);			
		}
	});
	
	//user clicks 'email as PDF' menu item
	$("#email_rep img").click(function() {
		var myPane = $(".ui-tabs-selected a").attr("href");
		var tab_id = myPane.replace('#cp', '');
		var rep_name = $(".ui-tabs-selected span").text();
		if (myPane != "#rpwzd" && !exists_in_array(chartTabs, myPane)){
			//workaround for IE select tag z-index bug
			if (navigator.appName == 'Microsoft Internet Explorer') {
				$("#rpwzd select").hide();
			}
			else if (navigator.appName == 'Netscape') {
				$("#email_popup")
					.css('position','fixed')
					.css('left','30%')
					.css('top','20%');	
			}
			var index = myPane.replace('#cp', '');
			
			$("#email_form input[name=email_list]").autocomplete({
        minLength: 0,
        source: function(request, response) {
          // delegate back to autocomplete, but extract the last term
          response($.ui.autocomplete.filter(getEmailids, extractLast(request.term)));
        },
        focus: function() {
          // prevent value inserted on focus
          return false;
        },
        select: function(event, ui) {
          var terms = split( this.value );
          // remove the current input
          terms.pop();
          // add the selected item
          terms.push( ui.item.value );
          // add placeholder to get the comma-and-space at the end
          terms.push("");
          this.value = terms.join(", ");
          return false;
        }
      });
			
			$("#email_popup").slideDown();
			$("#email_form input[name=email_list]").val(userEmail + ',');
			//.keyup(email_suggest)
			$("#email_form input[name=email_subject]").val('Report [' + rep_name + '] from Report2Base');
			$("#email_form textarea[name=email_message]").val('');	
			$("#email_form input[name=rpt_id]").val(0);
			$("#email_form input[name=tab_id]").val(tab_id);
			$("#email_form input[name=report_name]").val(rep_name);
			$("#email_form input[name=clr_code]").val(tabColors[tab_id]);
			$("#email_form").show();			
		}
	});
	
	//user submits email form
	$("#email-form-submit").click(function() {
		emails = $("#email_form input[name=email_list]").val();
		subject = $("#email_form input[name=email_subject]").val();
		message = $("#email_form textarea[name=email_message]").val();
		report_id = $("#email_form input[name=rpt_id]").val();
		tab_id = $("#email_form input[name=tab_id]").val();
		report_name = $("#email_form input[name=report_name]").val();
		color_code = $("#email_form input[name=clr_code]").val();		
		$.post("index.php/user/dispatchReport", 
			{emails:emails, subject:subject, message:message, report_id:report_id, tab_id:tab_id, report_name:report_name, color_code:color_code},
			function(data) {
				data = data.replace(/New data/, '');
				data = data.replace(/Old data/, '');
				$.prompt(data);
			}
		);	
		$("#email_popup").slideUp();
		//workaround for IE select tag z-index bug
		if (navigator.appName == 'Microsoft Internet Explorer') {
			$("#rpwzd select").show();
		}
	});
	
	//user closes email form
	$("#cancel_email").click(function() {
		$("#email_popup").slideUp();
		if (navigator.appName == 'Microsoft Internet Explorer') {
			$("#rpwzd select").show();
		}
	});
	
	//synchronize from the basecamp.com
	$("#synch-db").click(function() {
		$("#alerts").text("Synchronizing with Basecamp...").show();
		$.getJSON("index.php/user/synchDB", function(resobj) {
			$("#alerts").text("Synchronizing with Basecamp.... Completed")
		/*	if(resobj.Projects!=0)
				.append("<tr><td>Project</td><td>"+ resobj.Projects +"</td><tr>")
			else
				.append("<tr><td>Milestones</td><td>"+ resobj.Milestones +"</td><tr>")
				.append("<tr><td>ToDoLists</td><td>"+ resobj.ToDoLists +"</td><tr>")
				.append("<tr><td>ToDoItems</td><td>"+ resobj.ToDoItems +"</td><tr>")
				.append("<tr><td>Posts</td><td>"+ resobj.Posts +"</td><tr>")
				.append("<tr><td>Comments</td><td>"+ resobj.Comments +"</td><tr>")
				.append("<tr><td>Companies</td><td>"+ resobj.Companies +"</td><tr>")
				.append("<tr><td>Persons</td><td>"+ resobj.Persons +"</td><tr>")
				.append("<tr><td>TimeEntries</td><td>"+ resobj.TimeEntries +"</td><tr>")
				.append("</table>");
		 	*/
			setTimeout("$('#alerts').text('').hide();", 5000);
		});		
	});
	
	
	//user clicks 'close tab' menuitem
	$("#closetab").click(function() {
		var myPane = $(".ui-tabs-selected a").attr("href");
		if (myPane != "#rpwzd"){
			var index = myPane.replace('#cp', '');
			if (exists_in_array(shortTabs, myPane)) {
				//remove pane from shortTabs array
				var elem ="";
				do {
					elem = shortTabs.shift(); 
					if (elem != myPane)
						shortTabs.push(elem);
				}
				while (elem != myPane);
			}
			if (exists_in_array(chartTabs, myPane)) {
				//remove pane from chartTabs array
				var elem ="";
				do {
					elem = chartTabs.shift(); 
					if (elem != myPane)
						chartTabs.push(elem);
				}
				while (elem != myPane);
			}
			if (exists_in_array(specialTabs, myPane)) {
				//remove pane from specialTabs array
				var elem ="";
				do {
					elem = specialTabs.shift(); 
					if (elem != myPane)
						specialTabs.push(elem);
				}
				while (elem != myPane);				
			}
			
			tabArray.push(index);
			/*var x = 10;
			var exists =  true;
			while (exists) {
				if (exists_in_array(tabArray, x)) 
					x--;
				else
					exists = false;		
			}*/
			//alert(x);
			$("#container").tabs('select',0);		
			$(myPane).hide();
			$('#tab' + index).hide(500);
		}
	});	
		
});

function initialize(login) {	
	$(".shadow, .shadow1, .shadow2").remove();	   
	$.getJSON("index.php/user/sessionState", function(respObj) {
		if (respObj.state == "Logged in") {			
			if(login)
				$("#login, #footerPanel").fadeOut(500);
			loggedIn = true;
			$("#topPanel").css("height", "90px");
			$('span#user_fname').remove();
			//$("#main_menu").prepend("<span id='user_fname'>Hi " + respObj.fname + "!</span>");			
			userEmail = respObj.email;
			user_id = respObj.user_id;
			if (respObj.renewal_due == 'true')
				$('#subscribe').show();
				$('#synch-db').show();
			if (respObj.is_admin == 'true')
				is_admin = true;
			else	
				is_admin = false;
			/*if (respObj.recipients) 
				recipients = respObj.recipients; //array of emails
			if (!exists_in_array(recipients, userEmail))	
				recipients.push(userEmail);*/	
			alert_text = $('#alerts').text();
			if (alert_text) {
				$('#alerts').show();
				setTimeout("$('#alerts').text('').hide();", 10000);
			}	
			//updateReports();			
			
			$.post("index.php/user/isNewData", function(data) {
				data.replace('\n', '');
				if (data == "Old data") {
					$("#alerts").text("Synchronizing with Basecamp...").show();
					$.post("index.php/user/synchDB", function() {
						$("#alerts").append("Completed!");
						setTimeout("$('#alerts').text('').hide();", 5000);
						displayReportWizard();						
					});					
				}
				else
					displayReportWizard();
			});					
		}
		else if(respObj.state == "Inactive") {
			var message = "<h2>Account inactive</h2><p>Either your subscription has expired or some one from your company has already signed up for the trial usage. Please subscribe to activate your account</p>";
			$.prompt(message, { 
				callback: function() {
					window.location.replace('index.php/user/subscribe');
				}
			});			
		}
		else {
			if (login) {
				$("#login .error_msg").show();
			}
			else {		
				loggedIn = false;				
				$("div.fancyButton, div#bodyPanel").show();
			}
		}
		//alert(respObj);
	});
}

function displayReportWizard() {
	$("#rpwzd").load("index.php/user/setReport", function(){
		rep_wiz_init();		
		$("#drpdwn_reports, #chart_options, #email_popup, .customTabs, #tab_menu .menuitem").hide();		
		
		//apply wrapper to report wizard & My R2B tab containers
		var h = $("#rpwzd").height();
		var h1 = $('#my_r2b').height();
		//$("#rpwzd").css('min-height', h + 'px');
		/*if (navigator.appName != 'Microsoft Internet Explorer') {
			var rpwzdParent = $("#rpwzd").parents("div.contentPanelWrapper");
			if (!rpwzdParent.length)
				$("#rpwzd").wrap("<div class='contentPanelWrapper'></div>");
			var myr2bParent = $('#my_r2b').parents('div.contentPanelWrapper');
			if (!myr2bParent.length)
				$("#my_r2b").wrap("<div class='contentPanelWrapper'></div>");			
			$('#my_r2b').after("<div class='cp_shadow'>&nbsp;</div><div class='cp_shadow1'>&nbsp;</div><div class='cp_shadow2'>&nbsp;</div>");
			var myr2bWrapper = $("#my_r2b").parents('.contentPanelWrapper:first');
			$("div.cp_shadow, div.cp_shadow1, div.cp_shadow2", myr2bWrapper).height('100%').width('100%');
		}
		else
			$(".contentPanel").width("80%").css("left", "10%");*/		
		$("#footerPanel").css("position", "relative");
		$("#container, #menubar, #footerPanel").fadeIn(500);
		$("a#logout").parents('li:first').remove();
		$("a#r2badmin").parents('li:first').remove();
		var logout_str = "<li><a id='logout' href='#'>Log out</a></li>";
		if (is_admin)
			admin_str = "<li><a id='r2badmin' href='index.php/admin'>Admin</a></li>";
		else
			admin_str = "";
		var myhtml = $("#topPanel ul").html();
		$("#topPanel ul").html(logout_str + admin_str + myhtml);	 
		$('#my_r2b').load('index.php/user/dashboard', function() {
			dashboard_init();
		});	
	});
}

/*function updateReports() {
	$.getJSON("index.php/user/sessionState", function(respObj) {		
		if (respObj.state == "Logged in") {
			$("#drpdwn_reports ul").html('');
			var reports = respObj.reports;			
			if (reports) {				
				for (x in reports) {
					var rpt_id = reports[x].rpt_id;
					var rep_name = reports[x].rep_name;
					var str = "<li id=" + rpt_id + ">" + rep_name + "</li>";
					$("#drpdwn_reports ul").append(str);					
				}
				$("li", "#drpdwn_reports").hover(
					function(e) {
						$(this).addClass("li_hover")
						.append("<img title='View' class='option' src='images/view.gif'><img title='Email' class='option' src='images/email.gif'><img title='Edit' class='option' src='images/edit.gif'><img title='Delete' class='option' src='images/delete.gif'>");	
						$(".option").hover(
							function(){
								$(this).addClass("option_hover");
							},
							function(){
								$(this).removeClass("option_hover");
							}
						);
						$(".option").click(function(e){
							var myOption = $(this).attr('title');
							if (myOption == 'View') {
								var id = $(this).parent("li").attr("id");
								var title = $(this).parent("li").text();
								title = title.replace(/ViewEditDelete/, '');
								showReport(id, title);								
								$("#drpdwn_reports").slideUp();
								//workaround for IE select tag z-index bug
								if (navigator.appName == 'Microsoft Internet Explorer') {
									$(".contentPanel#rpwzd select, .contentPanel input.txtbox").show();
								}
							}
							else if (myOption == 'Email') {
								var report_id = $(this).parent("li").attr("id");
								var rep_name = $(this).parent("li").text();
								rep_name = rep_name.replace(/ViewEditDelete/, '');
								mailReport(report_id, rep_name);								
								$("#drpdwn_reports").slideUp();
							}
							else if (myOption == 'Edit') {
								var id = $(this).parent("li").attr("id");
								editReport(id);
								$("#drpdwn_reports").slideUp();
								//workaround for IE select tag z-index bug
								if (navigator.appName == 'Microsoft Internet Explorer') {
									$(".contentPanel#rpwzd select, .contentPanel input.txtbox").show();
								}
							}
							else {
								var id = $(this).parent("li").attr("id");
								var desc = $(this).parent("li").text();
								desc = desc.replace(/ViewEditDelete/, '');
								deleteReport(id, desc);
								$("#drpdwn_reports").slideUp();
								//workaround for IE select tag z-index bug
								if (navigator.appName == 'Microsoft Internet Explorer') {
									$(".contentPanel#rpwzd select, .contentPanel input.txtbox").show();
								}	
							}										
						});
					},
					function(e) {
						$(this).removeClass("li_hover").children("img").remove();				
					}
				);	
				
			}			
		}
	});	
}*/

function showReport(rpt_id, rpt_title) {	
	var color_code = 0;
	/*$.post("index.php/user/getReportColorCode/" + rpt_id, function(data) {
		color_code = data.replace('\n', '');
	});*/	
	
	var tab_index = tabArray.shift();
	if (tab_index) {
		$("#alerts").css("color", "green").text("Generating report...").show();		
		$("#cp" + tab_index).load("index.php/user/genReport/" + rpt_id, 
			{tab_id:tab_index},
			function(data){
				//remove notification
				$("#alerts").text('').hide();
				
			  //insert sorting widgets - this fn written in 'report_sorting.js' 
			  // check for GROUPHEADER and do this only for ungrouped reports  
			  var searchStr = "GROUPHEADER";
        var mySearch = data.search(searchStr);
        if (mySearch == -1)
				  insertSorters(this, color_code);
				
				//tidy up report - text-alignments etc.
				tidyUpReport(this);

				//get back the ampersand
				rep_title = $('h3', this).text();
				rep_title = rep_title.replace('[and]', '&');
				$('h3', this).text(rep_title);
				
				//data existance check
				var searchStr = "This error message was generated by PHPReports";
				var mySearch = data.search(searchStr);
				if (mySearch == -1) {
					/*var h = $("#cp" + tab_index).height();
					if (h < screen.height * 0.40)
						shortTabs.push("#cp" + tab_index);*/					
					/*if (navigator.appName != 'Microsoft Internet Explorer') {
						wrap = $("#cp" + tab_index).parents('.contentPanelWrapper:first');
						if (!wrap.length)
							$("#cp" + tab_index).wrap("<div class='contentPanelWrapper'></div>");
					}*/	

					//color the rows
					$("#cp" + tab_index + " TD.SUBHEADER").addClass("ui-table-subheader");
					$("#cp" + tab_index + " TD.GROUPHEADER").addClass("ui-table-groupheader");
					//$("#cp" + tab_index + " TD.FOOTER").addClass("FOOTER");
					
					//$("TD.FIELDS", myCP).addClass("ui-table-fields");
					//$("TD.ODD", myCP).addClass("ui-table-odd");
					//$("#pg" + tab_id).addClass("ui-table");
					
					$("#cp" + tab_index + " TR")
					.filter(function() {
						len = $(this).children('.FIELDS,.STAT').length;
						//alert(len);
						if (len)
							return true;
						else
							return false;
						
					})
					.addClass("ui-table-fields");
					
					$("#cp" + tab_index + " TR")
					.filter(function() {
						len = $(this).children('.ODD').length;
						//alert(len);
						if (len)
							return true;
						else
							return false;
						
					})
					.addClass("ui-table-odd");
					
					tabColors[tab_index] = color_code;					
					$("#tab" + tab_index).show();
					//$("#container").triggerTab(tab_index + 2);
					$("#tab" + tab_index + " a").click();
				}
				else {
					//no data alert
					/*if (navigator.appName != 'Microsoft Internet Explorer') {
						wrap = $("#cp" + tab_index).parents('.contentPanelWrapper:first');
						if (!wrap.length)
							$("#cp" + tab_index).wrap("<div class='contentPanelWrapper'></div>");
					}*/	
					$("#cp" + tab_index).html('<div style="text-align:center; padding:50px; font-weight:bold">NO DATA FOUND</div>');
					shortTabs.push("#cp" + tab_index);
					//$("#container").triggerTab(tab_index + 2);
					$("#tab" + tab_index + " a").click();
					$("#cp" + tab_index + ", #tab" + tab_index).show(500);
				}	
			}
		);			
		$("#tab" + tab_index + " span").text(rpt_title);					
	}
}

function mailReport(rpt_id, rpt_title) {
	if (navigator.appName == 'Microsoft Internet Explorer') {
		$("#rpwzd select").hide();
	}
	else if (navigator.appName == 'Netscape') {
		$("#email_popup")
			.css('position','fixed')
			.css('left','30%')
			.css('top','20%');	
	}
	
	//alert(getEmailids);
	$("#email_form input[name=email_list]").autocomplete({source:getEmailids});
	
	$("#email_form input[name=email_list]").autocomplete({
		minLength: 0,
		source: function(request, response) {
			// delegate back to autocomplete, but extract the last term
			response($.ui.autocomplete.filter(getEmailids, extractLast(request.term)));
		},
		focus: function() {
			// prevent value inserted on focus
			return false;
		},
		select: function(event, ui) {
			var terms = split( this.value );
			// remove the current input
			terms.pop();
			// add the selected item
			terms.push( ui.item.value );
			// add placeholder to get the comma-and-space at the end
			terms.push("");
			this.value = terms.join(", ");
			return false;
		}
	});	
	
	$("#email_popup").slideDown();
	$("#email_form input[name=email_list]").val(userEmail + ',');
	//.keyup(email_suggest)
	$("#email_form input[name=email_subject]").val('Report [' + rpt_title + '] from Report2Base');
	$("#email_form textarea[name=email_message]").val('');	
	$("#email_form input[name=rpt_id]").val(rpt_id);
	$("#email_form input[name=tab_id]").val(0);
	$("#email_form input[name=report_name]").val('');
	$("#email_form input[name=clr_code]").val('');
	$("#email_form").show();
}

// support functions for autocompleting email fields
function split(val) {
  return val.split(/,\s*/);
}
function extractLast(term) {
  return split(term).pop();
}

function editReport(rpt_id) {
	$("#rpwzd").load("index.php/user/setReport/" + rpt_id, function() {
		rep_wiz_init();
		$("#container").tabs('select',1);
		//$("#rep_wiz input[name=emails]").keyup(email_suggest);
	});
	$("#rpwzd_tab span").text("Edit report");
}

function deleteReport(rpt_id, rpt_title) {
	var resp = window.confirm("Delete the report '" + rpt_title + "'?");
	if (resp) {	
		$.post("index.php/user/deleteReport/" + rpt_id, function() {
			//updateReports();
			$('#my_r2b').load('index.php/user/dashboard', function() {
				dashboard_init();
			});
		});
	}
}

function showProjectSummary(project_id, project_name) {
	$('#alerts').text('Generating project summary...').show();
	var tab_index = tabArray.shift();
	if (tab_index) {		
	 tabColors[tab_index] = 0;
		$("#cp" + tab_index).load("index.php/user/projectSummary/" + project_id,		
		function() {
			$('#alerts').text('').hide();
			specialTabs.push("#cp" + tab_index);
			//$("#container").triggerTab(tab_index + 2);
			$("#tab" + tab_index + " a").click();
			/*if (navigator.appName != 'Microsoft Internet Explorer') {
				wrap = $("#cp" + tab_index).parents('.contentPanelWrapper:first');
				if (!wrap.length)
					$("#cp" + tab_index).wrap("<div class='contentPanelWrapper'></div>");
			}*/	
			$("#tab" + tab_index).show();			
		});		
	}
	$("#tab" + tab_index + " span").text('Project summary: ' + project_name);
}

function exists_in_array(myArray, myStr) {
	var x = 0;
	for (x in myArray) {
		if (myArray[x] == myStr)
			return true;
	}
	return false;
}

//this function performs auto-suggest for all email input boxes in the application
function email_suggest(e) {			
	if (e.keyCode == 40) {//down arrow key
		if (!navigatingSuggest) {
			$("#recipients li:first").addClass('recipient_hover');
			navigatingSuggest = true;	
		}	
		else {
			var thisItem = $("#recipients li.recipient_hover");
			if (!thisItem.is(":last-child")) {
				//alert('last item');
				var nextItem = thisItem.next();
				thisItem.removeClass('recipient_hover');
				nextItem.addClass('recipient_hover');
			}
		}			
	}
	else if (e.keyCode == 38) {//up arrow key
		if (navigatingSuggest) {
			var thisItem = $("#recipients li.recipient_hover");
			if (!thisItem.is(":first-child")) {
				var prevItem = thisItem.prev();
				thisItem.removeClass('recipient_hover');
				prevItem.addClass('recipient_hover');desc
			}
		}
	}
	else if (e.keyCode == 13) {//enter key
		if (navigatingSuggest) {
			var myEmail = $("#recipients li.recipient_hover").text();
			var myStr = $(this).val();
			var pos = myStr.lastIndexOf(',');
			if (pos != -1)
				myStr = myStr.substring(0, pos + 1);
			else
				myStr = "";
			$(this).val(myStr + myEmail + ',');
			$("#suggest-popup").remove();			
			dispatch_keypress(this);	
		}
	}	
	else if (e.keyCode == 188) {// 'comma' key 
		newRecipient = false;
		addRecipient(this);
	}
	else {
		navigatingSuggest = false;
		$("#suggest-popup").remove();
		var myInputBox = $(this);
		var myStr = $(this).val();
		var left = $(this).css('left');		
		$(this).after("<div id='suggest-popup'><ul id='recipients'></ul></div>");
		$("#suggest-popup").css({
			'position': 'absolute', 			 
			'left': left, 
			'z-index': 7,
			'margin-top': '27px',
			'border': 'thin solid lightgrey',
			'background-color': '#fff',
			'font': '12px/15px Arial, Helvetica, sans-serif'		
		});	
		var pos = myStr.lastIndexOf(',');
		if (pos != -1) 
			myStr = myStr.substring(pos + 1);		
		if (myStr) {	
			var matches = new Array();	
			var x = 0;
			for (x in recipients) {
				var recipient = recipients[x];
				if (recipient.indexOf(myStr) == 0)
					matches.push(recipient);						
			}
			if (matches.length) {
				var x = 0;
				for (x in matches) {
					$('#recipients').append("<li class='recipient'>" + matches[x] + "</li>");
				}
				$(".recipient").hover(
					function() {
						$(this).addClass('recipient_hover');
					},
					function() {
						$(this).removeClass('recipient_hover');
					}
				);
				$(".recipient").click(function() {				
					var myEmail = $(this).text();
					var myStr = myInputBox.val();
					var pos = myStr.lastIndexOf(',');
					if (pos != -1)
						myStr = myStr.substring(0, pos + 1);
					else
						myStr = "";
					myInputBox.val(myStr + myEmail + ',');
					$("#suggest-popup").remove();
					var myBoxDom = myInputBox.get(0);
					myBoxDom.focus();
					dispatch_keypress(myBoxDom);	
				});
			}
			else
				newRecipient = true;
		}	
	}

	$(this).blur(function() {
		if (newRecipient) {
			addRecipient(this);
			newRecipient = false;
		}		
	});	
}

//this function dispatches some keypresses to adjust the caret position of text box (Mozilla browsers)
function dispatch_keypress(myBox) {
	if (navigator.appName != 'Microsoft Internet Explorer') {	
		var evt = document.createEvent("KeyboardEvent");
		var evt1 = document.createEvent("KeyboardEvent");
		evt.initKeyEvent("keypress", true, true, null, false, false, false, false, 0, 32); //space
		evt1.initKeyEvent("keypress", true, true, null, false, false, false, false, 8, 0); //backspace
		myBox.dispatchEvent(evt);	
		myBox.dispatchEvent(evt1);
	}	
}

function addRecipient(myBox) {
	var myStr = myBox.value;
	$.post("index.php/user/addRecipient", 
			{email:newEmail}	
		);
}

function drawTimeChart(key,val) {
  $("#chart_options").slideUp();
  //alert('hi');
  var tab_index = tabArray.shift();
  
  if (tab_index) {
    $("#cp" + tab_index)
    .append("<div style='width:800px; height:300px;' id='last_chart" + tab_index + "' class='time_chart'></div>")
    .append("<div style='width:800px; height:300px;' id='this_chart" + tab_index + "' class='time_chart'></div>");
  
    //last week's chart
    $('#last_chart' + tab_index).load('index.php/user/getChart/' + key + '/' + encodeURI(val) + '/last');
    
    //this week's chart
    $('#this_chart' + tab_index).load('index.php/user/getChart/' + key + '/' + encodeURI(val) + '/this');
    
    tabColors[tab_index] = 0;
    chartTabs.push("#cp" + tab_index);
    $("#tab" + tab_index + " span").text("Time Entries Chart of " + val);
    $("#tab" + tab_index + " a").click();
    $("#cp" + tab_index + ", #tab" + tab_index).show(500);
  }
}

