/*****************************
*
* Generic
*
*****************************/

var GuidesError = Class.create({
	initialize: function() {
		this.alert_div = 'ajaxGenericError';
		this.timeout;
	},
	
	alert: function(str_message) {
		// cancel timeout
		this.cancel_timeout();
		
		// show msg
		$(this.alert_div).update(str_message).show();
		
		// scroll
		$(this.alert_div).scrollTo();
		
		// fade it
		this.fade();
	},
	
	fade: function() {
		this.timeout = setTimeout("new Effect.Fade($('" + this.alert_div + "'));", 4000 );
	},
	
	cancel_timeout: function() {
		// clear timeout
		if(this.timeout) {
			clearTimeout(this.timeout);
		}
	},
	
	hide: function() {
		this.cancel_timeout();
		$(this.alert_div).hide();
	}
});




// ajax path
var PROFILE_EDIT_AJAX_URL 			= "/ajax/front/components/GuidesUserProfileEdit/ajax.php";
var PROFILE_VIEW_AJAX_URL 			= "/ajax/front/components/GuidesUserProfileView/ajax.php";
var FRIENDS_SEARCH_AJAX_URL 		= "/ajax/front/components/GuidesFriendsSearch/ajax.php";
var FRIENDS_LISTING_AJAX_URL 		= "/ajax/front/components/GuidesFriendsListing/ajax.php";

// to after dom has loaded
Event.observe(window, 'load', function() {
	Error = new GuidesError();
	
	// hide successmsg if it exists
	if($('successmsg')) {
		setTimeout("Effect.Fade('successmsg', { duration: 10.0 });", 10000);
	}
	
	// hide loginerrors if it exists
	if($('loginerrors')) {
		setTimeout("Effect.Fade('loginerrors', { duration: 7.0 });", 7000);
	}

});

function clearbox(txt) {
	if (txt.defaultValue == txt.value) txt.value = '';
}


/*****************************
*
* Login
*
*****************************/
function frmUserLogin_Validate(element) {
	new Validation(element); 
}
/* show forgot pwd */
function frmUserLogin_ForgotPass(){
	$('divUserLogin_Inputs').hide();
	$('divUserLogin_Forgot').show();
}
/* cancel pwd retrieval */
function frmUserLogin_ForgotPassCancel(){
	$('divUserLogin_Inputs').show();
	$('divUserLogin_Forgot').hide();
	if($('loginerrors')) { $('loginerrors').hide(); }
	if($('successmsg')) { $('successmsg').hide(); }	
}


/*****************************
*
* Messages
*
*****************************/
function fncGuidesMessages_DeleteBatch() {
	if(confirm("Are you sure you want to delete these messages?")) {
		$('MessageActionsForm').submit(); /*document.MessageActionsForm.submit(); */
	}
}

/*****************************
*
* View Profile
*
*****************************/
function fncGuidesUserProfileView_FriendAdd(people_id, viewer_people_id){
	$('friend_request_message').disabled=true;
	
 	new Ajax.Request(PROFILE_VIEW_AJAX_URL, {
		parameters  : {
			action 					: "Friend_Add",
			people_id				: people_id,
			viewer_people_id		: viewer_people_id,
			request_message			: $('friend_request_message').getValue()
		},
		evalScripts : true,
	
		onSuccess: function(transport){
			var result = transport.responseText;
			
			if(result == "added") {
				$('friendAction').innerHTML = '<span class="note">&raquo; Request Sent</a>';
				$('addFriendWindow').hide();
				$('addFriendWindow').remove();
			}
		},
		  
		 onFailure: function(transport){
		 	$('friend_request_message').disabled=false;
		 	Error.alert(transport.responseText);
		 }
	});
	
}

/*
* Reset Wall Post Form
*/
function fncGuidesUserProfileView_Wall_Post_Reset(){
	$('WallPostForm').reset();
	$('wall_post_text').disabled=false;
	$('wall_post_text').value="";
	$('SendGiftBtn_No').checked=true;
	$('GiftsList').hide();
	$('SubmitWallPost').value="Submit";
	$('SubmitWallPost').disabled=false;
}


/*
* Load Gifts
*/
function fncGuidesUserProfileView_Wall_Post_Gifts_Load(offset){
	$('GiftsList').innerHTML = '<center><br><br>Loading<br><img src="/common/templates/default/images/icons_modules/loading.gif" /><br><br></center>';
	new Ajax.Updater({success: 'GiftsList', failure: null}, PROFILE_VIEW_AJAX_URL, {
		parameters: {
			action : "Wall_Post_Gifts_Load",
			offset: offset
		},
		evalScripts: true,
		onSuccess: function(transport){
		},
		onFailure: function(transport){
		  	$('SendGiftBtn_Yes').checked=true;
			Error.alert(transport.responseText);
		}
	});
}


/*
* Load Wall Messages
*/
function fncGuidesUserProfileView_Wall_Post_Load(offset, people_id) {
	$('WallPostList').innerHTML = '<center><br><br>Loading<br><img src="/common/templates/default/images/icons_modules/loading.gif" /><br><br><br><br></center>';
	
	new Ajax.Updater({success: 'WallPostList', failure: null}, PROFILE_VIEW_AJAX_URL, {
		parameters: {
			action : "Wall_Post_Load",
			people_id: people_id,
			offset: offset
		},
		evalScripts: true,
		onSuccess: function(transport){
			 fncGuidesUserProfileView_Wall_Post_Pages_Load(offset,people_id);
		},
		onFailure: function(transport){
			Error.alert(transport.responseText);
		}
	});
}

/*
* Load Pages links
*/

function fncGuidesUserProfileView_Wall_Post_Pages_Load(offset, people_id){
	new Ajax.Updater({success: 'WallPostPages', failure: null}, PROFILE_VIEW_AJAX_URL, {
		parameters: {
			action : "Wall_Post_Pages_Load",
			people_id: people_id,
			offset: offset
		},
		evalScripts: true,
		onSuccess: function(transport){
			 
		},
		onFailure: function(transport){
			Error.alert(transport.responseText);
		}
	});
}

/*
* Add Wall Post
*/
function fncGuidesUserProfileView_Wall_Post_Add(friend_id, people_id, strCensor){
	$('wall_post_text').disabled=true;
	$('SubmitWallPost').disabled=true;
	$('SubmitWallPost').value="Loading";
	
	// figure out which is checked
	if($('SendGiftBtn_Yes').checked) {
		arrGifts = $$('input.picture_gallery_id');
		for(i=0;i<arrGifts.length;i++){
			if(arrGifts[i].checked) {
				var gift_id = arrGifts[i].getValue();
				break;
			}
		}
	}
	if(!gift_id) { var gift_id = 0;  }
	
	new Ajax.Updater({success: 'WallPostList', failure: null}, PROFILE_VIEW_AJAX_URL, {
		parameters: {
			action 				: "Wall_Post_Add",
			people_id			: people_id,
			friend_id			: friend_id,
			wall_post_text		: $('wall_post_text').getValue(),
			picture_gallery_id	: gift_id,
			strCensor			: strCensor
		},
		evalScripts: true,
		insertion: Insertion.Top,
		onSuccess: function(transport){
			// reload the pages links and reset the form
			fncGuidesUserProfileView_Wall_Post_Pages_Load(0, people_id);
			fncGuidesUserProfileView_Wall_Post_Reset()
		},
		
	  onFailure: function(transport){
		  	$('wall_post_text').disabled=false;
			$('SubmitWallPost').disabled=false;
			$('SubmitWallPost').value="Submit";
 			Error.alert(transport.responseText);
	  }
	});
	
	
}

/*
* Delete Wall Post
*/
function fncGuidesUserProfileView_Wall_Post_Delete(wall_post_id, people_id){
	if(confirm("Are you sure you want to delete this wall post?")) {
		$('wallpost_loading_'+wall_post_id).innerHTML = 'Deleting...<img src="/common/templates/default/images/icons_modules/loading.gif" />';
		
		new Ajax.Request(PROFILE_VIEW_AJAX_URL, {
			parameters  : {
				action 					: "Wall_Post_Delete",
				people_id				: people_id,
				wall_post_id			: wall_post_id
			},
			evalScripts : true,
		
			onSuccess: function(transport){
				var arrWallPost = transport.responseJSON;
				$('wallpost_'+wall_post_id).hide();
				fncGuidesUserProfileView_Wall_Post_Load(0, arrWallPost.wall_post_people_id);
				fncGuidesUserProfileView_Wall_Post_Pages_Load(0, arrWallPost.wall_post_people_id);
			},
			  
			 onFailure: function(transport){
			 	$('wallpost_loading_'+wall_post_id).hide();
			 	Error.alert(transport.responseText);
			 }
		});
	}
	
}

/*****************************
*
* Friends Listing
*
*****************************/

// Load
function fncGuidesFriendsListing_FriendsLoad(offset, people_id){
	$('friendsListWindow').innerHTML = '<center><br><br>Loading<br><img src="/common/templates/default/images/icons_modules/loading.gif" /><br><br><br><br></center>';
	
	new Ajax.Updater({success: 'friendsListWindow', failure: null}, FRIENDS_LISTING_AJAX_URL, {
		parameters: {
			action : "Friends_Load",
			people_id: people_id,
			offset: offset
		},
		evalScripts: true,
		
		onComplete: function(transport){
			
		},
		
	  onFailure: function(transport){
 			Error.alert(transport.responseText);
	  }
	});
}

// figure out if we should hide the pending layer or not
function fncGuidesFriendsListing_FriendsPendingCount(people_id) {
	new Ajax.Request(FRIENDS_LISTING_AJAX_URL, {
	parameters  : {
			action 					: "Friend_PendingCount",
			people_id				: people_id
			
		},
		evalScripts : true,
	
		onSuccess: function(transport){
			var result = transport.responseText;
			if(result == 0) {
				$('pendingFriendsWindow').hide();
			} 
		}
	});

}

// Confirm
function fncGuidesFriendsListing_FriendConfirm(friend_id, people_id){
	$('loadingPendingLayer_'+friend_id).innerHTML = '<div style="margin: 5px;">Loading: <img src="/common/templates/default/images/icons_modules/loading.gif" /></div>';
	new Ajax.Request(FRIENDS_LISTING_AJAX_URL, {
		parameters  : {
			action 					: "Friend_Confirm",
			people_id				: people_id,
			friend_id				: friend_id
		},
		evalScripts : true,
	
		onSuccess: function(transport){
			var result = transport.responseText;
			if(result == "added") {
				$('pendingfriend_'+friend_id).hide();
				$('pendingfriend_'+friend_id).remove();
				fncGuidesFriendsListing_FriendsLoad(0, people_id);
				fncGuidesFriendsListing_FriendsPendingCount(people_id);
			}
		},
		  
		 onFailure: function(transport){
		 	$('loadingPendingLayer_'+friend_id).hide();
		 	Error.alert(transport.responseText);
		 }
	});
	
}

// Remove
function fncGuidesFriendsListing_FriendRemove(friend_id, people_id){
	if(confirm("Are you sure you want to remove this friend?")) {
			$('loadingLayer_'+friend_id).innerHTML = 'Removing...<img src="/common/templates/default/images/icons_modules/smloading.gif" />';
			
			new Ajax.Request(FRIENDS_LISTING_AJAX_URL, {
				parameters  : {
					action 					: "Friend_Remove",
					people_id				: people_id,
					friend_id				: friend_id
				},
				evalScripts : true,
			
				onSuccess: function(transport){
					var result = transport.responseText;
					if(result == "removed") {
						$('friend_'+friend_id).hide();
						$('friend_'+friend_id).remove();
						fncGuidesFriendsListing_FriendsLoad(0, people_id);
						fncGuidesFriendsListing_FriendsPendingCount(people_id);
					}
				},
				  
				 onFailure: function(transport){
				 	$('loadingLayer_'+friend_id).hide();
				 	Error.alert(transport.responseText);
				 }
			});
	}
}

/*****************************
*
* Friends Search
*
*****************************/
function fncGuidesFriendsSearch_ResetForm() {
	window.location="/friends/search";
}

function fncGuidesFriendsSearch_FriendAdd(people_id, viewer_people_id){
	$('friend_request_message_'+people_id).disabled=true;
	$('friend_request_message_'+people_id).hide();
	$('loadingLayer_'+people_id).show().innerHTML = '<img src="/common/templates/default/images/icons_modules/loading.gif" />';
 	
	new Ajax.Request(FRIENDS_SEARCH_AJAX_URL, {
		parameters  : {
			action 					: "Friend_Add",
			people_id				: people_id,
			viewer_people_id		: viewer_people_id,
			request_message			: $('friend_request_message_'+people_id).getValue()
		},
		evalScripts : true,
	
		onSuccess: function(transport){
			var result = transport.responseText;
			if(result == "added") {
				$('friendAction_'+people_id).innerHTML = '<span class="note">&raquo; Request Sent</a>';
				$('addFriendWindow_'+people_id).hide();
				$('addFriendWindow_'+people_id).remove();
			} else if (result == "pending"){
				$('friendAction_'+people_id).innerHTML = '<span class="note">&raquo; Request had alreday been sent. Waiting for approval.</a>';
				$('addFriendWindow_'+people_id).hide();
				$('addFriendWindow_'+people_id).remove();
			}
		},
		  
		 onFailure: function(transport){
		 	$('friend_request_message_'+people_id).disabled=false;
			$('friend_request_message_'+people_id).show();
			$('loadingLayer_'+people_id).hide();
		 	Error.alert(transport.responseText);
		 	console.log("ERROR!");
		 }
	});
	
}




/*****************************
*
* Edit Profile
*
*****************************/
function fncGuidesUserProfileEdit_CountryIso2Char_OnChange(presetCountryISO, presetStateISO){
	var countryISO = $('addresses_country_iso_2char').getValue();
	var stateISO = "";
	
	// select canada if its page's first load
	if(presetCountryISO) {
		var countryISO = presetCountryISO;
	}
	
	// select ontario if its page's first load 
	if(presetCountryISO == 'CA') {
		var stateISO = "ON";
	}
	
	// preselected state if error
	if(presetStateISO) {
		var stateISO = presetStateISO;
	}
	
	if($('addresses_country_iso_2char').present()){
		new Ajax.Request(PROFILE_EDIT_AJAX_URL, {
			parameters : {
				action : "CountryIso2Char_OnChange",
				country_iso_2char : countryISO
			},
			
			onSuccess: function(transport){		
				var arrStates = transport.responseText;
				
				if(arrStates.length == 0){
					$('address_state').innerHTML = " <input type=\"text\" name=\"addresses_state\" value=\"\" maxlength=\"100\"> ";
				} else {
					var strHTML = " <select name=\"addresses_state\">";
					strHTML 	+= "<option value=\"\">Select a State</option>";
					arrStates.each(function(arrState){
						
						if(stateISO == arrState.state_iso_2char) {
							var selected = " selected=\"selected\"";
						} else {
							var selected = "";
						}
						
						strHTML += "<option value=\"" + arrState.state_iso_2char + "\" " + selected + ">" + arrState.state_name + "</option>";
					});
					
					strHTML += "</select> ";
					$('address_state').innerHTML = strHTML;
				}
			},
			
		  onFailure: function(transport){
		  	Error.alert(transport.responseText);
		  }
		  
		});
	}
}
