var toggleWithData = {};
var getWeatherCaption = {};
var changeDropDown = {};
var addMyBusiness = {};
var completePPUpload = {};
var sendFriendRequest = {};
//$ = jQuery.noConflict(true);
$(document).ready(function(){
	
	var emailexp = /^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/i;
	
	var websiteexp = /^((http|https|ftp):\/\/(www\.)?|www\.)[a-zA-Z0-9\_\-]+\.([a-zA-Z]{2,4}|[a-zA-Z]{2}\.[a-zA-Z]{2})(\/[a-zA-Z0-9\-\._\?\&=,'\+%\$#~]*)*$/i;
	
	var ajaxurl = '/ajax/';

	var buffer = '';
	
	function reloadWindow(delay) {
		window.setTimeout('location.reload(true)',delay);
	}
	
	//disable enter
	function disableEnter(elem) {
		if($('#'+elem).length != 0) {
			$("#"+elem).bind("keypress", function(e) {
				  if (e.keyCode == 13) return false;
			});
		}
	}
	
	function getMiniLoader(position,text) {
		var loader = '';
		loader += '<div style="padding:5px; text-align:' + position + ';">';
		loader += text+' '+'<img src="/resources/images/misc/mini-loader.gif" width="16" height="16" alt="loading.." />';		
		loader += '</div>';		
		return loader;
	}
	
	function clearIndicator(name) {
		if(typeof name != 'undefined') {
			$('#'+name).html('').fadeOut(500);
		} else {
			if($('#feedback-indicator').length != 0) {
				$('#feedback-indicator').html('').fadeOut(500);
			}
		}		
	}
	
	function getIndicator(position,text) {
		if($('#feedback-indicator').length != 0) {
			$('#feedback-indicator').html(getMiniLoader(position,text)).show();
		}
	}
	
	function setBuffer(content) {
		buffer = content;
	}
	
	/**
     * Toggles the view of a form
     */
     function toggleForms(event, container, hide) {
    	if(!$('#'+container).is(':visible')) {
    		$('#'+container).show();
    		$('#'+hide).hide();
    	}
    	else {
    		$('#'+container).hide();
    	}
    }
	
	/**
	 * Make an AJAX call	
	 * @param string data 
	 */
	function makeAjaxCall(action,data) {
		$.ajax({
			type : 'POST',
			url : ajaxurl,
			data : data,
			cache : false,
			success : function(response) {
				switch(action) {
				case 'home-news-set-tabs':
				case 'weather-city-dropdown':
				case 'geography-city-dropdown':
				case 'main-category-dropdown':
				case 'pre-search-listing':
				case 'search-result':
				case 'forgotten-password':
					$('#'+data.container).html(response).show();
					clearIndicator();
					break;				
				case 'email-listing':
				case 'review-listing':
				case 'report-listing':
				case 'comment-discussion':
				case 'email-discussion':
				case 'report-discussion':
					$('#'+action+'-wrapper').slideUp(1000);
					$('#'+data.type+'-action-feedback').html(response).show().fadeIn(1000);
					clear_form_elements(action);
					break;
				case 'save-blog-comment':
					$('#comment-blog-wrapper').before(response);
					clear_form_elements('comment-discussion');
					break;				
				}
			}
		});
	}
	
	/**
	 * Make an AJAX call with JSON data
	 * @param string data 
	 */
	function makeJSONCall(action,data) {
		$.ajax({
			type : 'POST',
			url : ajaxurl,
			data : data,
			dataType : 'json',
			cache : false,
			success : function(response) {
				switch(action) {				
					case 'status-message':						
						$('#statusForm').after(response.response);						
						break;
					case 'status-comment':
						var message_id = response.message_id;
						var comment = response.data;
						$('#status-comment-form_'+message_id).before(comment);
						
						//reset the comment button
    					$('#add-status-comment_'+message_id).removeClass('dashBoardButtons-blue');
    					$('#add-status-comment_'+message_id).attr('disabled',false);
    					$('#status-comment-input_'+message_id).val('Add your comment');
						
						break;
					case 'basic-info':
						$('#edit-basic-info-form-container').slideUp(500);	
						var params = {area:'refresh-basic-info',func:'dashboard-actions',request:func.refreshbasicinfo,container:'ignore'};
        				makeJSONCall(params.area,params);        				
						break;
					case 'refresh-basic-info':
						$('#basic-info').html(response.response);
						$('#save-basic-info-button').html(buffer);
						break;
					case 'contact-info':
						$('#edit-contact-info-form-container').slideUp(500);	
						var params = {area:'refresh-contact-info',func:'dashboard-actions',request:func.refreshcontactinfo,container:'ignore'};
        				makeJSONCall(params.area,params);	
						break;
					case 'refresh-contact-info':
						$('#contact-info').html(response.response);
						$('#save-contact-info-button').html(buffer);
						break;
					case 'approve-blog-comment':
					case 'approve-friend':
						$('#item-block_'+data.subcontainer).fadeOut(500);
						break;
					case 'refresh-profile-pic':					
						$('#'+data.container).html(response.response);
						break;
					case 'profile-privacy':
						$('#'+data.container).html(response.response);
						clearIndicator('privacy-feedback');
						break;
					case 'change-password':
						if(response.code=='ERROR') {
							$('#changeperror').html(response.response);
						} else {
							$('#changep').hide();
							window.alert(response.response);
							window.location = '/login/';
						}						
						break;
					case 'friend_request':
						$('#overlay-header').html('Friend request sent');
						$('#'+data.container).html(response.response);
						$('a[rel*=facebox]').unbind('click');
						$('a[rel*=facebox]').attr('href','javascript:void(0);');
						$('a[rel*=facebox]').attr('rel','external');												
						break;
				}
				clearIndicator();
			}
		});
	}
	
	/**
	 * Clear a form
	 */
	function clear_form_elements(ele) {
	    $('#'+ele).find(':input').each(function() {
	        switch(this.type) {
	            case 'password':
	            case 'select-multiple':
	            case 'select-one':
	            case 'text':
	            case 'textarea':
	                $(this).val('');
	                break;
	            case 'checkbox':
	            case 'radio':
	                this.checked = false;
	        }
	    });
	}
	
	//show a quick message
	function showQuickError(element,message) {
		$('#'+element).html(message).show().fadeOut(4000);
	}
	
	/**
	 * Equivalent to PHP trim
	 */
	function trim(inputString) {
		//Removes leading and trailing spaces from the passed string
		//Also removes consecutive spaces and replaces them with a single space
		//if its not a string return the value
		
		if(typeof inputString != "string") { return inputString; }
		
		var retValue = inputString;
		
		var ch = retValue.substring(0, 1);
		while(ch == " ") { //Check for spaces at beginning of string
			retValue = retValue.substring(1, retValue.length);
			ch = retValue.substring(0, 1);
		}
		
		ch = retValue.substring(retValue.length - 1, retValue.length);
		while(ch == " ") { //Check for spaces at the end of the string
			retValue = retValue.substring(0, retValue.length - 1);
			ch = retValue.substring(retValue.length - 1, retValue.length);
		}
		
		while(retValue.indexOf("  ") != -1) {
			//There are two spaces in the string 
			retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ") + 1, retValue.length);
		}
		
		return retValue; //return trimmed string to the user
	}
	
	$('#add-viewer-comment').click(function() {
		var errors = 0;
		var name = $('#name').val();
		var email = $('#email').val();
		var comment = $('#comment').val();
		var website = $('#website').val();
		
		if(name == '') {
			showQuickError('name-error','Your name is required');
			errors++;
		}
		
		if(email == '') {
			showQuickError('email-error','Your email is required');	
			errors++;
		} else if(emailexp.test(email) == false){
			showQuickError('email-error','Please enter a valid email address');
			errors++;
		}
		
		if(comment == '') {
			showQuickError('comment-error','Your comment is required');	
			errors++;
		}
		
		if(website != '' && website != 'http://') {
			if(websiteexp.test(website) == false) {
				showQuickError('website-error','Please enter a valid website address');
			} else {
				if(errors == 0) {					
					var formdata = $('#add-comment').serialize();
					makeAjaxCall('add_viewer_comment',{data:formdata,func:'add_viewer_comment'});
				}
			}
		} else {
			if(errors == 0) {
				if(website == '' || website == 'http://') {
					$('#website').val(''); 
				}
				var formdata = $('#add-comment').serialize();
				makeAjaxCall('add_viewer_comment',{data:formdata,func:'add_viewer_comment'});
			}
		}		
	});
	
	$('#send-contact-form').click(function(){
	
		var numexp=/[0-9_\-+\s]/;
		
		 if($('#title').val()=="#")
			{
				alert("Please choose your title !");
				$('#title').focus();
				return false;
			}
			 if($('#fname').val()=="")
			{
				alert("Please provide your first name !");
				$('#fname').focus();
				return false;
			}
			 if($('#lname').val()=="")
			{
				alert("Please provide your last name !");
				$('#lname').focus();
				return false;
			}
		if($('#email').val()=="")		
			{
			window.alert('email blank');
				alert("Please provide Your Email Address !");
				$('#email').focus();
				return false;
			}
		   else if(emailexp.test($('#email').val())==false)		
		    {
				alert("Invalid Email Address entered !");
				$('#email').focus();
				return false;
			}
		 if($('#telno').val()!=""&& numexp.test($('#telno').val())==false)
		    {
				alert("Only numeric values are allowed for the telephone number !");
				$('#telno').focus();
				return false;
			}
		 if($('#fax').val()!="" && numexp.test($('#fax').val())==false)
		    {
				alert("Only numeric values are allowed for the fax number !");
				$('#fax').focus();
				return false;
			}
		 if($('#feedback').val()=="")
			{
				alert("Please let us know the details of your enquiry !");
				$('#feedback').focus();
				return false;
			}
		 
		 $('#contact').submit();
	});
		
	/**
	 * Toggle tabs with data
	 */
	toggleWithData = function(params) {
		toggleTabs(params.area,params.container);
		params.func = 'rss';		
		makeAjaxCall(params.area,params);		
	};	

	if($('#home-news-set-tabs').length != 0) {
		toggleWithData({area:'home-news-set-tabs',processor:'rss',source:'news',container:'home_ajax_content'});
	}	
	
	getWeatherCaption = function(params) {
		params.func = 'rss';
		makeAjaxCall(params.area,params);
	};
	
	changeDropDown = function(params) {
		params.func = params.processor;		
		makeAjaxCall(params.area,params);
	};
	
	//for adding business to listing
	addMyBusiness = function() {
		$('#company-not-in-listing').click(function(){
			$('#check-listing').hide();
			$('#search-listings-data').hide();
			$('#add-listing-content').show();
			window.location = '#top';
		});
	};
	
	$('#geography-country').change(function(){
		var country_id = $('#geography-country').val();
		if($('#selected-country').length != 0) {
			$('#selected-country').val($('#geography-country option:selected').text());
		}		
		changeDropDown({area:'geography-city-dropdown',processor:'dropdown',request:'all-city',country_id:country_id,container:'geography-city'});
	});
	
	$('#geography-country-special').change(function(){
		var country_parts = ($('#geography-country-special').val()).split('-');				
		changeDropDown({area:'geography-city-dropdown',processor:'dropdown',request:'all-city',country_id:country_parts[0],container:'geography-city',special:true,condition:'city_name'});
	});
	
	//main category selector
	if($('#main_category').length != 0) {
		$('#main_category').change(function(){
			var main_category_id = $('#main_category').val();				
			changeDropDown({area:'main-category-dropdown',processor:'dropdown',request:'sub-category',main_category_id:main_category_id,container:'sub_category'});
		});		
	}
	
	if($('#pre-search-listing').length != 0) {
		$('#pre-search-listing').click(function(){
			if($('#business-name').val() == '') {
				showQuickError('error','Please enter a business name');
				return false;
			} else {
				var formdata = $('#search-for-listing').serialize();
				var params = {area:'pre-search-listing',func:'search',request:'listing',data:formdata,container:'search-listings-data'};
				makeAjaxCall(params.area,params);
			}
			
		});
	}
	
	$('#refresh-geography-selector').click(function(){
		$('#selected-city').val($('#geography-city option:selected').text());
		$('#geography').submit();
	});
	
	//submit new directory listing form
	if($('#submit-new-listing').length != 0) {
		$('#submit-new-listing').click(function(){
			$('#new_directory_listing').submit();
		});		
	}
	
	//submit new discussion form
	if($('#submit-new-discussion').length != 0) {
		$('#submit-new-discussion').click(function(){
			$('#new_discussion').submit();
		});		
	}
	
	/**
	 * Function for toggling tabbed content
	 * @param string tabs Which set of tabs [tagged by ul id]
	 * @return void
	 */
	function toggleTabs(tabs,container,effect) {
		effect = (typeof effect != 'undefined') ? effect : false;
		if(container == null) {
			container = false;
		}
		if($('#'+tabs)) {
			$('#'+tabs+' li').click(function(e){
				var elem = e.target.id;
				var chil = $('#'+tabs+' li').children();
				chil.each(function(){
					var id = this.id;
					if(id == elem) {
						if($('#'+id).is('.active')) {						
								//do nothing
							} else {						
								$('#'+id).addClass('active');
								if(container) {
									//do nothing
								} else {
									if(effect) {
										$('#'+id+'-content').fadeIn(500);
									} else {
										$('#'+id+'-content').show();
									}								
								}								
							}
					} else {
						$('#'+id).removeClass('active');
						if(container) {
							//do nothing
						} else {
							$('#'+id+'-content').hide();
						}						
					}
				});
			});
		}
	}
	
	//toggle featured movie tabs
	toggleTabs('home-listing-tabs');
	
	if($("#accordion").length !=0) {
		$("#accordion").accordion({
			header:'a.header',
			clearStyle: true,
			alwaysOpen: false,
			active: false
		});
	}
	
	//email listing
	if($('#email-listing').length != 0) {
		$('#email-listing-button').click(function(){
			if(trim($('#your-name').val()) == '') {
				showQuickError('name-error','Please enter your name');
				return false;
			} else if(trim($('#email-addresses').val()) == '') {
				showQuickError('email-error','Please enter at least one email address');
				return false;
			}
			else {
				var formdata = $('#email-listing').serialize();
				var params = {type:'listing',area:'email-listing',func:'listing-actions',request:'email',data:formdata,container:'email-listing-wrapper'};
				makeAjaxCall(params.area,params);
			}
		});
		
		$('#cancel-email-listing-button').click(function(){
			$('#email-listing-wrapper').slideUp(1000);
		});
	}
	
	//control email listing form viewing
	if($('#email-this-listing').length != 0) {
		$('#email-this-listing').click(function(){
			if($('#email-listing-wrapper').is(':visible')) {
				$('#email-listing-wrapper').slideUp(1000);
			} else {
				$('#listing-action-feedback').hide();
				$('#email-listing-wrapper').slideDown(1000);
				if($('#report-listing-wrapper').is(':visible')) {
					$('#report-listing-wrapper').slideUp(1000);
				}
				if($('#review-listing-wrapper').is(':visible')) {
					$('#review-listing-wrapper').slideUp(1000);
				}
			}			
		});
	}
	
	//control report listing form viewing
	if($('#report-this-listing').length != 0) {
		$('#report-this-listing').click(function(){
			if($('#report-listing-wrapper').is(':visible')) {
				$('#report-listing-wrapper').slideUp(1000);
			} else {
				$('#listing-action-feedback').hide();
				$('#report-listing-wrapper').slideDown(1000);
				if($('#email-listing-wrapper').is(':visible')) {
					$('#email-listing-wrapper').slideUp(1000);
				}
				if($('#review-listing-wrapper').is(':visible')) {
					$('#review-listing-wrapper').slideUp(1000);
				}
			}			
		});
	}
	
	//control review listing form viewing
	if($('#review-this-listing').length != 0) {
		$('#review-this-listing').click(function(){
			if($('#review-listing-wrapper').is(':visible')) {
				$('#review-listing-wrapper').slideUp(1000);
			} else {
				$('#listing-action-feedback').hide();
				$('#review-listing-wrapper').slideDown(1000);
				if($('#email-listing-wrapper').is(':visible')) {
					$('#email-listing-wrapper').slideUp(1000);
				}
				if($('#report-listing-wrapper').is(':visible')) {
					$('#report-listing-wrapper').slideUp(1000);
				}
			}			
		});
	}
	
	//report listing
	if($('#report-listing').length != 0) {
		$('#report-listing-button').click(function(){
			if(trim($('#optional-reasons').val()) == '') {
				showQuickError('optional-reasons-error','Please indicate why you think this listing is abusing the Business Directory');
				return false;
			} 
			else {
				var formdata = $('#report-listing').serialize();
				var params = {type:'listing',area:'report-listing',func:'listing-actions',request:'report',data:formdata,container:'report-listing-wrapper'};
				makeAjaxCall(params.area,params);
			}
		});
		
		$('#cancel-report-listing-button').click(function(){
			$('#report-listing-wrapper').slideUp(1000);
		});
	}
	
	//review listing
	if($('#review-listing').length != 0) {
		$('#review-listing-button').click(function(){
			if(trim($('#your-review-comments').val()) == '') {
				showQuickError('review-comments-error','Please enter some comments concerning your review');
				return false;
			} 
			else {
				var formdata = $('#review-listing').serialize();
				var params = {type:'listing',area:'review-listing',func:'listing-actions',request:'review',data:formdata,container:'review-listing-wrapper'};
				makeAjaxCall(params.area,params);
			}
		});
		
		$('#cancel-review-listing-button').click(function(){
			$('#review-listing-wrapper').slideUp(1000);
		});
	}
	
	//login page
	if($('#website-login').length != 0) {
		$('#log-me-in').click(function(){
			if(trim($('#username').val()) == '') {
				showQuickError('username-error','Please enter your username');
				return false;
			} else if(trim($('#password').val()) == '') {
				showQuickError('password-error','Please enter your password');
				return false;
			} else {
				$('#website-login').submit();
			}
		});
	}
	
	//autocomplete functionality
	function autoComplete(selector) {
		$('#'+selector+'-search-term').autocomplete(ajaxurl,
			{
				extraParams:{func:'search',data:$('#search_form').serialize(),request:selector},
				delay:10,
				minChars:2,
				matchSubset:1,
				matchContains:1,
				scrollHeight:400,
				highlightItem: true				
			}
		).result(function(event,data,formatted){
			$('#feedback-indicator').html(getMiniLoader('left','<em>please wait..</em>'));
			var params = {area:'search-result',func:'search',request:selector,selected:true,data:$('#search_form').serialize(),container:'search-result'};
			makeAjaxCall(params.area,params);
		});	
	}
	
	//autocomplete for discussions
	if($('#discussion-search-bar').length != 0) {		
		autoComplete('discussion');	
	}
	
	disableEnter('search_form');
	
	//comments links discussion
	if($('#discussion-jump').length != 0) {
		$('#discussion-jump').click(function(){
			$('#discussion-comments').scrollTo(1000);
		});				
	}
	
	//directory review link jump
	if($('#directory-reviews-jumpto').length != 0) {
		$('#directory-reviews-jump').click(function(){
			$('#directory-reviews-jumpto').scrollTo(1000);
		});
	}	
	
	disableEnter('search-for-listing');
	
	//--------------- Blog actions ---------------------------//
	
	//autocomplete for blogs
	if($('#blogs-search-bar').length != 0) {		
		autoComplete('blogs');	
	}
	
	//comments links
	if($('#comment-this-blog').length != 0) {
		$('#comment-this-blog').click(function(){
			$('#comment-blog-wrapper').scrollTo(1000);
		});
		$('#blog-comments-jump').click(function(){
			if($('#actual-comments-jump').length !=0) {
				$('#actual-comments-jump').scrollTo(1000);
			}			
		});		
	}
	
	var fields = new Array('your-name','your-email','your-comments');
	var count = 0;
	
	if($('#comment-blog-button').length != 0){
		$('#comment-blog-button').click(function(){
			$(fields).each(function(){
				if(trim($('#'+this).val()) == '') {
					count = 0;
					showQuickError(this+'-error','This field must be completed.');					
				} else {
					count++;
				}
			});
			
			if(count == 3) {				
				if(emailexp.test(trim($('#your-email').val())) == false) {			
					count = 0;
					showQuickError('your-email-error','Please enter a valid email address.');
					return;
				} 
				
				if((trim($('#your-website').val()) != '') && websiteexp.test(trim($('#your-website').val())) == false) {
					count = 0;
					showQuickError('your-website-error','Please enter a valid website address.');
					return;
				}
				
				var data = $('#comment-discussion').serialize();
				var params = {area:'save-blog-comment',func:'save',request:'blog-comment',data:data,container:'ignore'};
				makeAjaxCall(params.area,params);
				count = 0;
			}
		});
	}
	
	//create form info
	var create_elems = new Array('heading_info','about_me_info','location_info');
	if($('#new_blog').length != 0){
		$(create_elems).each(function(){
			if($('#'+this).length != 0) {
				$('#'+this).click(function(){
					if($('#'+$(this).attr('id')+'-tooltip').is(':visible')) {
						$('#'+$(this).attr('id')+'-tooltip').slideUp(200);
					} else {
						$('#'+$(this).attr('id')+'-tooltip').slideDown(200);
					}
				});					
			}
		});
		
		$('#create-new-blog').click(function(){
			$('#new_blog').submit();
		});
	}
	
	//creating a new blog post
	if($('#new_blog_post').length != 0) {
		$('#submit-new-blog-post').click(function(){
			$('#new_blog_post').submit();
		});
	}
	
	if($('#new_section').length != 0) {
		var params = {area:'new-blog-section',func:'search',request:'blog-section',data:$('#new_section').serialize(),container:'ignore'};
		$('#section-name').autocomplete(ajaxurl,{
				minChars:3,
				timeout:10,
				validSelection:false,
				parameters:params,
				before : function(input,text) {},
				after : function(input,text) {}
				});
	}

	//creating a new section
	if($('#new_section').length != 0) {
		$('#create-new-section').click(function(){
			$('#new_section').submit();
		});
	}
	
	//--------------- Discussion actions ---------------------------//
	//comment on discussion
	if($('#comment-discussion').length != 0) {
		$('#comment-discussion-button').click(function(){
			if(trim($('#your-comments').val()) == '') {
				showQuickError('your-comments-error','Please enter some comments for this dialogue post.');
				return false;
			} 
			else {
				var formdata = $('#comment-discussion').serialize();
				var params = {type:'discussion',area:'comment-discussion',func:'discussion-actions',request:'comment',data:formdata,container:'comment-discussion-wrapper'};
				makeAjaxCall(params.area,params);
			}
		});
		
		$('#cancel-comment-discussion-button').click(function(){
			$('#comment-discussion-wrapper').slideUp(1000);
		});
	}
	
	//control comment discussion form viewing
	if($('#comment-this-discussion').length != 0) {
		$('#comment-this-discussion').click(function(){
			if($('#comment-discussion-wrapper').is(':visible')) {
				$('#comment-discussion-wrapper').slideUp(1000);
			} else {
				$('#discussion-action-feedback').hide();
				$('#comment-discussion-wrapper').slideDown(1000);
				if($('#email-discussion-wrapper').is(':visible')) {
					$('#email-discussion-wrapper').slideUp(1000);
				}
				if($('#report-discussion-wrapper').is(':visible')) {
					$('#report-discussion-wrapper').slideUp(1000);
				}
			}			
		});
	}
	
	//email discussion
	if($('#email-discussion').length != 0) {
		$('#email-discussion-button').click(function(){
			if(trim($('#your-name').val()) == '') {
				showQuickError('name-error','Please enter your name');
				return false;
			} else if(trim($('#email-addresses').val()) == '') {
				showQuickError('email-error','Please enter at least one email address');
				return false;
			} 
			else {
				var formdata = $('#email-discussion').serialize();
				var params = {type:'discussion',area:'email-discussion',func:'discussion-actions',request:'email',data:formdata,container:'email-discussion-wrapper'};
				makeAjaxCall(params.area,params);
			}
		});
		
		$('#cancel-email-discussion-button').click(function(){
			$('#email-discussion-wrapper').slideUp(1000);
		});
	}
	
	//control email discussion form viewing
	if($('#email-this-discussion').length != 0) {
		$('#email-this-discussion').click(function(){
			if($('#email-discussion-wrapper').is(':visible')) {
				$('#email-discussion-wrapper').slideUp(1000);
			} else {
				$('#discussion-action-feedback').hide();
				$('#email-discussion-wrapper').slideDown(1000);
				if($('#comment-discussion-wrapper').is(':visible')) {
					$('#comment-discussion-wrapper').slideUp(1000);
				}
				if($('#report-discussion-wrapper').is(':visible')) {
					$('#report-discussion-wrapper').slideUp(1000);
				}
			}			
		});
	}
	
	//report discussion
	if($('#report-discussion').length != 0) {
		$('#report-discussion-button').click(function(){
			if(trim($('#optional-reasons').val()) == '') {
				showQuickError('optional-reasons-error','Please indicate why you think this dialogue post is abusing the integrity of Open Dialogue.');
				return false;
			} 
			else {
				var formdata = $('#report-discussion').serialize();
				var params = {type:'discussion',area:'report-discussion',func:'discussion-actions',request:'report',data:formdata,container:'report-discussion-wrapper'};
				makeAjaxCall(params.area,params);
			}
		});
		
		$('#cancel-report-discussion-button').click(function(){
			$('#report-discussion-wrapper').slideUp(1000);
		});
	}
	
	//control report discussion form viewing
	if($('#report-this-discussion').length != 0) {
		$('#report-this-discussion').click(function(){
			if($('#report-discussion-wrapper').is(':visible')) {
				$('#report-discussion-wrapper').slideUp(1000);
			} else {
				$('#discussion-action-feedback').hide();
				$('#report-discussion-wrapper').slideDown(1000);
				if($('#comment-discussion-wrapper').is(':visible')) {
					$('#comment-discussion-wrapper').slideUp(1000);
				}
				if($('#email-discussion-wrapper').is(':visible')) {
					$('#email-discussion-wrapper').slideUp(1000);
				}
			}			
		});
	}
	
	//---------------Membership form ---------------------------//
	
	if($('#join-community').length != 0) {
		$('#submit-new-member').click(function(){
			$('#join-community').submit();
		});
	}
	
	if($('#forgotten-password-wrapper').length != 0) {
		$('#forgot-my-password').click(function(){
			if($('#forgotten-password-wrapper').is(':visible')) {
				$('#forgotten-password-wrapper').slideUp(1000);
			} else {				
				$('#forgotten-password-wrapper').fadeIn(1000);				
			}			
		});
		
		$('#reset-password').click(function(){
			if(trim($('#email').val()) == '' ) {
				showQuickError('forgotten-password-email-error','Please enter the email address you registered with.');
				return false;
			} else if(emailexp.test(trim($('#email').val())) == false) {
				showQuickError('forgotten-password-email-error','Is that an email address? We don\'t think so.');
				return false;
			} else {
				var params = {area:'forgotten-password',func:'reset-password',email:$('#email').val(),container:'forgotten-password-wrapper'};
				makeAjaxCall(params.area,params);
			}
		});
	}

	//----------------- Notifications Panel --------------------------------//
	
	
	//----------------Feedback form ---------------------------------------//
	
	if($('#feedback-form').length != 0) {
		$('#site-feedback').click(function(){
			$('#feedback-form').submit();
		});
	}
	
	//---------------- Dashboard Panel ---------------------------------------//
	
	var func = { 
	 	changep : 'change_password',
	 	refreshpp : 'refresh_profile_pic',
	 	addstatusmessage : 'add_status_message',
	 	addstatuscomment : 'add_status_comment',
	 	savebasicinfo : 'save_basic_info',
	 	refreshbasicinfo : 'refresh_basic_info',
	 	refreshbasicinfoform : 'refresh_basic_info_form',
	 	savecontactinfo : 'save_contact_info',
	 	refreshcontactinfo : 'refresh_contact_info',
	 	refreshcontactinfoform : 'refresh_contact_info_form',
	 	approveblogcomment : 'approve_blog_comment',
	 	profileprivate: 'make_profile_private',
	 	profilepublic: 'make_profile_public',
	 	sendfriendrequest : 'send_friend_request',
	 	approvefriend : 'approve_friend_request'
 	 };
	
	if($('#dashboardRight').length != 0) {		
		toggleTabs('dashboard-tabs','',true);
		$('#edit-basic-info-form-container').hide();
		$('#edit-contact-info-form-container').hide();
		
		$('#dashboard-content-area').click(function(evt){
			var elemId = evt.target.id;			
	    	if(elemId) {
	    		
	    		//try {
	    			
	    			if(elemId.match(/([a-z\-]+)_\d+/)) {
	        			
	        			var idParts = elemId.match(/([a-z\-]+)_(\d+)/);
	        			
	        			var idName = idParts[1];
	        			var idNum = idParts[2];
	        			
	        			switch(idName) {
		        			case 'status-comment-input':
		        				$('#'+elemId).val('');
		        				break;
		        			case 'add-status-message':
		        				if(trim($('#mystatus').val()) == '' || trim($('#mystatus').val()) == 'Write something first :)'
		        	                || trim($('#mystatus').val()) == 'Whats on your mind?')
			        	        {
			        	            $('#mystatus').val('Write something first :)');
			        			}
			        			else {
			        	            var memberId = idNum;
			        				var message = $('#mystatus').val();
			        				getIndicator('left','');
			        				var params = {area:'status-message',func:'dashboard-actions',request:func.addstatusmessage,container:'ignore',member_id:memberId,mystatus:message};
			        				makeJSONCall(params.area,params);			        				
			        			}
		        				break;
		        			case 'add-status-comment':	        				
		        				if(trim($('#status-comment-input_'+idNum).val()) == '' || trim($('#status-comment-input_'+idNum).val()) == 'Add your comment') {
		        					$('#status-comment-input_'+idNum).val('Add your comment');	        						        					
		        				} else {
		        					$('#add-status-comment_'+idNum).addClass('dashBoardButtons-blue');
		        					$('#add-status-comment_'+idNum).attr('disabled',true);
		        					
		        					//send to server for processing
		        					var comment = $('#status-comment-input_'+idNum).val();
		        					var profile_member = $('#profile_member_id').val();
		        					getIndicator('left','');
			        				var params = {area:'status-comment',func:'dashboard-actions',request:func.addstatuscomment,container:'ignore',id:idNum,comment:comment,profile_member_id:profile_member};
			        				makeJSONCall(params.area,params);	        					
		        				}
		        				break;
		        			case 'save-basic-info':
		        				setBuffer($('#save-basic-info-button').html());
		        				$('#save-basic-info-button').html(getMiniLoader('left','Saving...'));
		        				var formdata = $('#edit-basic-info-form').serialize();
		        				var params = {area:'basic-info',func:'dashboard-actions',request:func.savebasicinfo,container:'ignore',data:formdata};
		        				makeJSONCall(params.area,params);	        					
		        				break;
		        			case 'edit-basic-information':	        				
		        				if(!$('#edit-basic-info-form-container').is(':visible')) {
		        					$('#edit-basic-info-form-container').slideDown(500);
		        					return false;
		        				} else {
		        					$('#edit-basic-info-form-container').slideUp(500);
		        					return false;
		        				}
		        				break;
		        			case 'save-contact-info':
		        				setBuffer($('#save-contact-info-button').html());
		        				$('#save-contact-info-button').html(getMiniLoader('left','Saving...'));
		        				var formdata = $('#edit-contact-info-form').serialize();
		        				var params = {area:'contact-info',id:$('#profile_id').val(),func:'dashboard-actions',request:func.savecontactinfo,container:'ignore',data:formdata};
		        				makeJSONCall(params.area,params);	        					
		        				break;
		        			case 'edit-contact-information':	        				
		        				if(!$('#edit-contact-info-form-container').is(':visible')) {
		        					$('#edit-contact-info-form-container').slideDown(500);
		        					return false;
		        				} else {
		        					$('#edit-contact-info-form-container').slideUp(500);
		        					return false;
		        				}
		        				break;
		        			case 'approve-blog-comment':
		        				$('#indicator_'+idNum).html(getMiniLoader('left',''));
		        				var params = {area:'approve-blog-comment',id:idNum,func:'dashboard-actions',request:func.approveblogcomment,container:'ignore',subcontainer:idNum};
		        				makeJSONCall(params.area,params);		        				
		        				break;		        			
		        			case 'profile-private':
		        				$('#privacy-feedback').html(getMiniLoader('left',''));
		        				var params = {area:'profile-privacy',id:idNum,func:'dashboard-actions',request:func.profileprivate,container:'privacy-info',subcontainer:idNum};
		        				makeJSONCall(params.area,params);
		        				break;
		        			case 'profile-public':
		        				$('#privacy-feedback').html(getMiniLoader('left',''));
		        				var params = {area:'profile-privacy',id:idNum,func:'dashboard-actions',request:func.profilepublic,container:'privacy-info',subcontainer:idNum};
		        				makeJSONCall(params.area,params);
		        				break;
		        			
	        			}
	        		}
	    			
	    		//} catch(e) {}    		
	    		
	    	}
		});
		
		//change profile picture
		$('#cppic').click(function(evt){
			toggleForms(evt,'change_profile_pic','changep');			
		});
		
		$('#cancel_cppicform').click(function(evt){
			toggleForms(evt,'change_profile_pic','');
		});
		
		$('#submit_cppicform').click(function(){
			if($('#profilePic').val() == '') {
				$('#changeppicerror').html('Please select a picture to upload. (.jpg)');			
				void(0);
				return false;
			} else {
				$('#changeppicerror').html(getMiniLoader('left','Saving...'));
				return true;
			}
		});
		
		//change password
		$('#change_password').click(function(evt){
			toggleForms(evt,'changep','change_profile_pic');			
		});
		
		//cancel change password
		$('#cancel_change_password').click(function(evt){
			toggleForms(evt,'changep',null);			
		});
		
		$('#submit_change_password').click(function(evt){
			var validated = validatecpform();
			if(validated) {
				var data = $('#cpform').serialize();				
				$('#changeperror').html(getMiniLoader('left',''));
				var params = {area:'change-password',func:'dashboard-actions',request:func.changep,container:'ignore',data:data};
				makeJSONCall(params.area,params);						
			}
			else {
				return false;
			}
		});
		
		//validate change password form
		function validatecpform() {
			if($('#oldpassword').val() == '') {				
				$('#changeperror').html('Please enter your existing password');
				return false;
			}
			
			if($('#newpassword').val() == '') {
				$('#changeperror').html('Please enter the new password you wish to use');				
				return false;
			}
			else if($('#newpassword').val() == $('#oldpassword').val()) {
				$('#changeperror').html('Your new password cannot be the same as your existing password');				
				return false;
			}
			
			if($('#confirmpassword').val() == '') {
				$('#changeperror').html('Please confirm your new password');				
				return false;
			}			
			else if($('#newpassword').val() != $('#confirmpassword').val()) {
				$('#changeperror').html('Your new password and confirmation do not match');				
				return false;
			}
			
			return true;
		}		
		 
	}
	
	if($('#notifications-panel').length != 0) {
		$('#notifications-panel').click(function(evt){
			var elemId = evt.target.id;			
	    	if(elemId) {	    		
	    		try {	    			
	    			if(elemId.match(/([a-z\-]+)_\d+/)) {
	        			
	        			var idParts = elemId.match(/([a-z\-]+)_(\d+)/);
	        			
	        			var idName = idParts[1];
	        			var idNum = idParts[2];
	        			
	        			switch(idName) {		        			
		        			case 'approve-blog-comment':
		        				$('#indicator_'+idNum).html(getMiniLoader('left',''));
		        				var params = {area:'approve-blog-comment',id:idNum,func:'dashboard-actions',request:func.approveblogcomment,container:'ignore',subcontainer:idNum};
		        				makeJSONCall(params.area,params);		        				
		        				break;
		        			case 'approve-friend':
		        				$('#indicator_'+idNum).html(getMiniLoader('left',''));
		        				var params = {area:'approve-friend',id:idNum,func:'dashboard-actions',request:func.approvefriend,container:'ignore',subcontainer:idNum};
		        				makeJSONCall(params.area,params);
		        				break;
	        			}
	        		}	    			
	    		} catch(e) {}	    		
	    	}
		});		
	}
	
	/**
	 * Complete the profile picture upload
	 * @param string flag The flag to indicate the status of the picture upload
	 */
	completePPUpload = function(flag, memberId) {
		clear_form_elements('cppicform');		
		$('#change_profile_pic').hide();		
		if(flag == 'SUCCESS') {
			window.alert('Your profile picture was successfully uploaded and will now be refreshed');
			var params = {area:'refresh-profile-pic',func:'dashboard-actions',request:func.refreshpp,container:'profilepic',id:memberId};
			makeJSONCall(params.area,params);						
		} else {
			window.alert('There was a problem');
		}
		
	};
	
	//facebox logic
	$(document).ready(function($) {
	  if($('a[rel*=facebox]').length != 0) {
		  $('a[rel*=facebox]').facebox();
	  }  
	});
	
	
	sendFriendRequest = function() {
		//send friend request
		if($('#send-friend-request').length != 0) {		
			$('#send-friend-request').click(function(evt){
				var params = {};
				params.area = 'friend_request';
				params.message = $('#optional-message').val();
				params.func = func.sendfriendrequest;
				params.member_id = $('#member_id').val();
				params.container = 'overlay-page-content';
				getIndicator('left','');
				makeJSONCall(params.area,params);
			});
		}
	};
	
	

	
});