var $bday = jQuery.noConflict();

var FORMFIELDS = ['firstname','lastname','birthdate','mobile','nickname']
var myTitle = '';

var BDAY =
{
	init: function(){
	 	$bday('a[rel="signup"]').click(function(){ signup(); return false; });
		$bday('a[rel="signin"]').click(function(){ signin(); return false; });
		$bday('a[rel="signout"]').click(function(){ signout(); return false; });
		$bday('a[rel="Help"], a[rel="About"]').click(function(){ BDAY.habout($bday(this)); return false; });
		if($bday('table.calendar').length > 0 ) BDAY.calendarScroll();
		if($bday('#updateBirthday').length > 0) $bday('#updateBirthday li:nth-child(odd)').addClass('odd');
		if($bday('#comments a[href="#addcomment"], a[href="#addWishList"]').length > 0) { BDAY.popUpForms(); }
		if($bday('form').length > 0){ BDAY.formInit(); }
		if($bday('.upcoming .friendList, .myFriends.view').length > 0) { SCROLL.init(); }
		if($bday('#comments').length > 0) {  COMMENTS.init(); }
		if($bday('a.rmUser, a.rm').length > 0) { BDAY.removeLinks(); }
		if($bday('textarea[name="description"]').length > 0) { BDAY.chopDescription(); }
		if($bday('.level').length > 0){ var total = $bday('.level span').css('width');
			if(parseInt(total) > 0){
				$bday(".level div span:not('.bought')").css('width','0').animate({ width: parseInt(total)+'%' }, 2000 ); }}

		if($bday('#boughtItems').length > 0){ BDAY.buyMeStuff(); }
		if($bday('.importContacts table').length >0) { $bday(document).ready(function(){ BDAY.importContacts(); }); }
		BDAY.titles();
	},
	titles: function(){
		$bday('.data, ul li').live("mouseover",function(){
		 myTitle = $bday(this).attr('title');
		 $bday(this).attr('title','');
			}).live("mouseout",function(){
			 $bday(this).attr('title', myTitle);
			});
	},
	formInit: function(){
		if($bday('#mobile').length > 0) { $bday('#mobile').attr('autocomplete','off'); }
		if($bday('#nickname').length > 0){
			$bday('#nickname').keyup(function(){
				var t = $bday(this).val(); $bday(this).val(t.toLowerCase());
			});
			if(!($bday(this).val().length == 0) || !($bday(this).attr('type') != 'hidden')) {
		}
			$bday('#nickname').parent().siblings('.help_block').append('<a id="checkAvailability" href="#" style="display:block;font-size:11px;text-align:center;padding-top:4px;">check availability</a>');
			$bday('#checkAvailability').click( function(){ FORMS.checkUserExists(); return false; });
		}
		$bday('#nickname').blur(function(){
				FORMS.checkUserExists();
		});
		// perform validation when typing
		$bday('input[type="text"]').keyup(function(){
			var id = $bday(this).attr('id');
			if(id == 'status') return false;
			BDAY.formErrors(id);
		})
		// perform validation when field looses focus
		.blur(function(){
			var id = $bday(this).attr('id');
			if(id == 'status') return false;
		});
		//checkif birthdate field is present in the page and do inline validation
		if($bday('#year').length > 0){
			$bday('#months, #year, #day').change(function(){
				if(!FORMS.birthdate()){
					$bday('#year').parent().parent().
						removeClass('success').
							addClass('error').
								find('.err_block').
									text(CONF.commonErrorBirthdate);
				} else { $bday('#year').parent().parent().removeClass('error').addClass('success').find('.err_block').empty();}
			});
		}
		// prevent form submission
		$bday('form').submit(function(){
			var theForm = $bday(this).attr('id');
			var errors = 0;
			switch(theForm){
				case 'editProfile':
				// user is in edit mode	
				if($bday('#nickname[type="hidden"]').length == 1){
					if(FORMFIELDS.length == 5) FORMFIELDS.pop();
					for(var i = 0; i < FORMFIELDS.length; i++){
						var fieldCheck = FORMFIELDS[i];
						BDAY.formErrors(fieldCheck);
						if(!FORMS[fieldCheck]()) errors++; ;
					}
				}
				// user is in creation mode
				else {
					for(var i = 0; i < FORMFIELDS.length; i++){
						var fieldCheck = FORMFIELDS[i];
						BDAY.formErrors(fieldCheck);
						if(!FORMS[fieldCheck]()) errors++;
					}
					var checkNick = $bday('#nickname[type!="hidden"]').parent().parent();
					if($bday('checkNick').hasClass('error')) errors++;
				}
					break;
				case 'uploadAvatar':
					FORMS.uploadAvatar();
					errors++;
					break;
				case 'statusUpdate':
					FORMS.statusUpdate();
					errors++;
					break;
				case 'addContact':
						BDAY.formErrors('email');
						BDAY.formErrors('firstname');
						if(!FORMS.email()) errors++; ;
						if(!FORMS.firstname()) errors++
					if(errors > 0){ FORMS.addContact(false)} else { FORMS.addContact(true); };
					return false;
					break;
				default:
					break;
			}
			if(errors == 0) return true;
			else return false;
		});
	},
	chopDescription: function(){
		var limitChars = 120;
		$bday('p.descriptionChars span').text(limitChars - $bday('textarea[name="description"]').val().length);
		$bday('textarea[name="description"]').keyup(function(){
			if($bday(this).val().length > limitChars){
				var txt = $bday(this).val();
				$bday(this).val(txt.substring(0, limitChars));
				$bday('p.descriptionChars span').text(limitChars - $bday('textarea[name="description"]').val().length);
			} else {
				$bday('p.descriptionChars span').text(limitChars - $bday('textarea[name="description"]').val().length);
			}
		});
		$bday('textarea[name="description"]').focus(function(){
			$bday('p.descriptionChars span').text(limitChars - $bday('textarea[name="description"]').val().length);
		});
		$bday('textarea[name="description"]').blur(function(){
			$bday('p.descriptionChars span').text(limitChars - $bday('textarea[name="description"]').val().length);
		});
	},
	removeLinks: function(){
			$bday('li:has(".rmUser"), li:has(".rm")').live("mouseover",function(){ $bday('.rmUser, .rm',this).css('display','block');}).live("mouseout",function(){ $bday('.rmUser, .rm',this).css('display','none'); });
			
		$bday('a.rmUser, a.rm').live("click", function(){
			var profileID = $bday('#myProfile .data').attr('title');
			var lnkType = $bday(this).attr('class');
			var lnkUrl = $bday(this).attr('href');
			if(lnkType == 'rmUser') {
				var msg = 'Are you sure you want to remove this user from your contacts?';
				var upcoming = $bday('table.calendar').attr('title');
		
				if(confirm(msg)){
					$bday.get(lnkUrl);
					$bday.ajax({
						  url: CONF._URL_DISPATCHER_BLOCKS + 'xhtml/Upcoming/display/'+ upcoming,
						  cache: false,
						  success: function(resp){
						    $bday(".upcoming").html(resp);
							}
					});
//					BDAY.removeLinks();
					SCROLL.init();
				 }
	
			} else if(lnkType == 'rm') {
				var msg = 'Are you sure you want to remove this item?';
				if(confirm(msg)){
					$bday.get(lnkUrl);
					if($bday('#myProfile').hasClass('mine')){
						$bday.get( CONF._URL_DISPATCHER_BLOCKS + 'xhtml/WishList/display/'+profileID+'/0',
							function(data){ $bday('#wishList ul li').remove(); $bday('#wishList ul').append(data.replace(/<ul class="mine">/,'').replace(/<\/ul>/,'')); });		
						$bday.get( CONF._URL_DISPATCHER_BLOCKS + 'xhtml/WishListStatus/display/'+profileID,
							function(data){
								$bday('.col.last').html(data);
								if($bday('.level').length > 0){ var total = $bday('.level span').css('width');
									if(parseInt(total) > 0){ $bday(".level div span:not('.bought')").css('width','0').animate({ width: parseInt(total)+'%' }, 2000 ); 
									}
								}
						 });		
					}
					else {
						$bday.get( CONF._URL_DISPATCHER_BLOCKS + 'xhtml/WishList/display/'+profileID+'/1',
							function(data){  $bday('#wishList ul li').remove(); $bday('#wishList ul').append(data.replace(/<ul>/,'').replace(/<\/ul>/,'')); });
					}
					$bday.get( CONF._URL_DISPATCHER_BLOCKS + 'xhtml/GiftList/display/'+profileID+'/1',
						function(data){  $bday('#giftIdeas ul li').remove(); $bday('#giftIdeas ul').append(data.replace(/<ul>/,'').replace(/<\/ul>/,'')); });
					$bday.get( CONF._URL_DISPATCHER_BLOCKS + 'xhtml/BoughtItems/display/'+profileID+'/',
						function(data){ $bday('#boughtItems ul li').remove(); $bday('#boughtItems ul').append(data.replace(/<ul>/,'').replace(/<\/ul>/,'')); });
				}
			}

		return false;
		});
	},
	habout: function(e){
		var page = $bday(e).attr('rel');
		$bday('#pophelp').remove();
		if(page == 'Help'){ var iframeheight = '500'; }
		else { var iframeheight = '400' }

		var iframect = '<iframe id="myIframe" src="http://web.djinngo.com/common/locale/nls/'+CONF._LOCALE+'/'+page.toLowerCase()+'.html" frameborder="0" style="border:0; width:100%; margin:0;height: '+iframeheight+'px;"></iframe>';
		var URL = CONF._URL_DISPATCHER_BLOCKS+'xhtml/HelpAbout/display/'+page;
		$bday.ajax({
		   type: "GET",
		   url: URL,
		   success: function(msg){
  				$bday("html").animate({scrollTop: 0}, 50);
		   	$bday('body').append(msg);
		   	$bday('#helpcontent').append(iframect);
		   	$bday('#closeHelp').click(function(){
		   		$bday('#pophelp').remove(); 
				   return false;							
	   		});
		   	$bday('#helpcontent').contents().find('a[href^="#"]').click();
	   	}
	   });
	return false;
	},
	calendarScroll: function(){
		BDAY.calendarEvents();
		$bday('.calendar-month span a').click(function(){
			var upcoming = $bday(this).parent().attr('title');
			$bday.ajax({
				  url: CONF._URL_DISPATCHER_BLOCKS + 'xhtml/Calendar/display/' + upcoming,
				  cache: true,
				  success: function(html){
				    $bday(".myFriends .box.small .inner").html(html);
				    $bday.ajax({
						  url: CONF._URL_DISPATCHER_BLOCKS + 'xhtml/Upcoming/display/' + upcoming + '/1',
						  cache: false,
						  success: function(data){
					   	 $bday(".upcoming").html(data);
							}
						});
	    			BDAY.calendarScroll();
	    			SCROLL.init();
					}
			});
		return false;
		});
	},
	calendarEvents: function(){
		$bday("table.calendar td.event").click(function(){
			$bday('table.calendar td.selected').removeClass('selected');
			$bday(this).addClass('selected');
			var upcoming = $bday(this).attr('title');
			$bday.ajax({
				  url: CONF._URL_DISPATCHER_BLOCKS + 'xhtml/Upcoming/display/'+ upcoming,
				  cache: false,
				  success: function(resp){
				    $bday(".upcoming").html(resp);
					}
		});
			return false;
		});
	},
	popUpForms: function(){
			$bday('#comments a[href="#addcomment"]').click(function(){
				$bday("html").animate({scrollTop: 0}, 50);
				var typeOfComment = $bday('h3 + div:visible','#comments').attr('id');
				if(typeOfComment == 'public') { var privacy = 1; }
				else if(typeOfComment == 'private') { var privacy = 2; } 
				$bday.ajax({
				   type: "GET",
				   url: CONF._URL_DISPATCHER_BLOCKS+'xhtml/PopupForms/display/'+CONF._POPUP_FORM_ADDCOMMENT,
				   success: function(msg){
				   	$bday('body').append(msg);
				   	$bday('.blockUI').addClass(typeOfComment);
						var profileName = $bday('.data h2 a').text();
						$bday('legend span').text(profileName).css('font-size','110%');				   	
				   	$bday('#close').click(function(){
				   		$bday('#authent').remove(); 
							$bday('#overlay').remove();
							$bday('.grey-overlay').remove();
							$bday('.blockUI').remove();
						   return false;							
				   	});
				   	$bday('#addComment').submit(function(){
				   		if($bday.trim($bday('.blockUI textarea').val()).length == 0) return false;
							$bday('#addComment input[type="submit"]').attr('disabled',true);
				   		var receiver_id = $bday('a[href="#addcomment"]').attr('rel');
				   		var poster_id = $bday('input[name="poster_id"]').val();
				   		if(privacy == 1) { var commentType = 'public'; }
				   		else if (privacy == 2) { var commentType = 'private'; }
							$bday.ajax({
								type: 'POST',
							  url: CONF._URL_DISPATCHER_ACTIONS + 'json/ProcessCommentActions/addComment',
							  data: 'receiver_id='+receiver_id+'&comment='+$bday('textarea[name="comment"]').val()+'&poster_id='+poster_id+'&privacy='+privacy,
							  dataType: 'json',
							  success: function(resp){
								  	if(resp.result != 'false'){
								  		$bday('.blockUI').removeClass(commentType);
								  		$bday('.blockUI fieldset').remove();
								  		$bday('#addComment').replaceWith('<h2 class="confirmed" style="padding:5em">Your comment was successfully added.</h2>');
								  		$bday.get(
								  			CONF._URL_DISPATCHER_BLOCKS+'xhtml/CommentList/display/'+receiver_id+'/'+privacy+'/',
											  function(data){
											  	var newClass = 'friendList '+commentType;
											  	$bday('li','#comments ul.'+commentType).remove();
											  	$bday('#comments ul.'+commentType).append(data.replace(/<ul class="friendList">/,'').replace(/<\/ul>/,''));
											  });
											BDAY.removePopUp();
								  	}
								  	else {
										$bday('#addComment p.radio').before('<span class="flyout" style="float: none; padding: 10px; width: 75%; margin-bottom: 5px;background: #FBE3E4; color:#8A1F11; border: 2px solid #FBC2C4;font-weight:bold;display: block; clear:both;">There where error while adding your comment. Please try again later.</span>').slideDown('slow');
				setTimeout(function(){
					$bday('#addComment .flyout').slideUp('slow');
					setTimeout(function(){$bday('#addComment .flyout').remove()},500) }, 1500);								  	
								  	}
								}
							});
				   	return false; 
				   	});
				   	
				   }
				 });
			return false;
			});
// add wishList item			
			$bday('a[href="#addWishList"]').click(function(){
			$bday("html").animate({scrollTop: 0}, 50);
				$bday.ajax({
				   type: "GET",
				   url: CONF._URL_DISPATCHER_BLOCKS+'xhtml/PopupForms/display/'+CONF._POPUP_FORM_ADDWISHLISTITEM,
				   success: function(msg){
				   	$bday('body').append(msg);
				   	$bday('.blockUI').addClass('wishList');
				   	$bday('#close').click(function(){
				   		$bday('#authent').remove(); 
							$bday('#overlay').remove();
							$bday('.grey-overlay').remove();
							$bday('.blockUI').remove();
						   return false;							
				   	});
				   	$bday('#addWishListItem').submit(function(){
				   		if($bday.trim($bday('.blockUI textarea').val()).length == 0) return false;
				   		$bday('#addWishListItem input[type="submit"]').attr('disabled',true);
				   		var receiver_id = $bday('a[href="#addWishList"]').attr('rel');
				   		var poster_id = $bday('input[name="poster_id"]').val();
							$bday.ajax({
								type: 'POST',
							  url: CONF._URL_DISPATCHER_ACTIONS + 'json/ProcessSuggestionActions/addWish/',
							  data: 'receiver_id='+receiver_id+'&idea_headline='+$bday('textarea[name="wishListItem"]').val()+'&poster_id='+poster_id,
							  dataType: 'json',
							  success: function(resp){
								  	if(resp.result != 'false'){
								  		$bday('.blockUI').removeClass('wishList');
								  		$bday('.blockUI fieldset').remove();
								  		$bday('#addWishListItem').replaceWith('<h2 class="confirmed" style="padding:5em">Your Wish List item was successfully added.</h2>');
								  		$bday.get(
								  			CONF._URL_DISPATCHER_BLOCKS+'xhtml/WishList/display/'+receiver_id+'/see/',
											  function(data){
											  	$bday('li','#wishList ul').remove();
												  	$bday('#wishList ul').append(data.replace(/<ul class="mine">/,'').replace(/<\/ul>/,''));
							  });
											BDAY.removePopUp();
								  	}
								  	else {
										$bday('#addWishListItem textarea[name="wishListItem"]').after('<span class="flyout" style="float: none; padding: 10px; width: 75%; margin-bottom: 5px;background: #FBE3E4; color:#8A1F11; border: 2px solid #FBC2C4;font-weight:bold;display: block; clear:both;">There where error while adding your wish lit item. Please try again later.</span>').slideDown('slow');
				setTimeout(function(){
					$bday('#addWishListItem .flyout').slideUp('slow');
					setTimeout(function(){$bday('#addWishListItem .flyout').remove()},500) }, 1500);								  	
								  	}
								}
							});
				   	return false; 
				   	});
				   	
				   }
				 });
			return false;
			});
// add giftIdea item			
			$bday('a[href="#addGiftIdea"]').click(function(){
			$bday("html").animate({scrollTop: 0}, 50);
				$bday.ajax({
				   type: "GET",
				   url: CONF._URL_DISPATCHER_BLOCKS+'xhtml/PopupForms/display/'+CONF._POPUP_FORM_ADDGIFTIDEA,
				   success: function(msg){
				   	$bday('body').append(msg);
				   	$bday('.blockUI').addClass('giftIdea');
				   	$bday('#close').click(function(){
				   		$bday('#authent').remove(); 
							$bday('#overlay').remove();
							$bday('.grey-overlay').remove();
							$bday('.blockUI').remove();
						   return false;							
				   	});
				   	$bday('#addGiftIdea').submit(function(){
				   		if($bday.trim($bday('.blockUI textarea').val()).length == 0) return false;
				   		$bday('#addGiftIdea input[type="submit"]').attr('disabled',true);
				   		var receiver_id = $bday('a[href="#addGiftIdea"]').attr('rel');
				   		var poster_id = $bday('input[name="poster_id"]').val();
							$bday.ajax({
								type: 'POST',
							  url: CONF._URL_DISPATCHER_ACTIONS + 'json/ProcessSuggestionActions/addGift',
							  data: 'idea_headline='+$bday('textarea[name="giftIdea"]').val()+'&poster_id='+poster_id+'&receiver_id='+receiver_id,
							  dataType: 'json',
							  success: function(resp){
								  	if(resp.result != 'false'){
								  		$bday('.blockUI').removeClass('giftIdea');
								  		$bday('.blockUI fieldset').remove();
								  		$bday('#addGiftIdea').replaceWith('<h2 class="confirmed" style="padding:5em">Your idea was succesfully added.</h2>');
								  		$bday.get(
								  			CONF._URL_DISPATCHER_BLOCKS+'xhtml/GiftList/display/'+receiver_id+'/1',
											  function(data){
											  	$bday('li','#giftIdeas ul').remove();
											  	$bday('#giftIdeas ul').append(data.replace(/<ul>/,'').replace(/<\/ul>/,''));
											  });
											BDAY.removePopUp();
								  	}
								  	else {
		  					   		$bday('#addGiftIdea input[type="submit"]').attr('disabled',true);

										$bday('#addGiftIdea textarea[name="giftIdea"').after('<span class="flyout" style="float: none; padding: 10px; width: 75%; margin-bottom: 5px;background: #FBE3E4; color:#8A1F11; border: 2px solid #FBC2C4;font-weight:bold;display: block; clear:both;">There where error while adding your idea. Please try again later.</span>').slideDown('slow');
				setTimeout(function(){
					$bday('#addGiftIdea .flyout').slideUp('slow');
					setTimeout(function(){$bday('#addGiftIdea .flyout').remove()},500) }, 1500);								  	
								  	}
								}
							});
				   	return false; 
				   	});
				   	
				   }
				 });
			return false;
			});
	},
	removePopUp: function(){
  	setTimeout(function(){
  			$bday('#authent').remove(); 
			$bday('#overlay').remove();
			$bday('.grey-overlay').remove();
			$bday('.blockUI').remove();
  	}, 1000);
	},
	formErrors: function(id){
		if(id == 'firstname' || id == 'lastname'){
			if(!FORMS[id]()){
				$bday('#'+id).parent().parent().
					removeClass('success').
						addClass('error').
							find('.err_block').text(CONF.commonErrorName); }
			else { 
				$bday('#'+id).parent().parent().
					removeClass('error').
						addClass('success').
						find('.err_block').empty(); 
			}
		} // end firstname check
		else if(id == 'mobile'){
			var s = $bday.trim($bday('#'+id).val()).length;
			if(s == 0){
				$bday('#'+id).parent().parent().
					removeClass('error').
						removeClass('success').
						find('.err_block').empty(); 		
			}
			//if(s < 8 ) return false;
			else if(!FORMS[id]()){
				$bday('#'+id).parent().parent().
					removeClass('success').
						addClass('error').
							find('.err_block').text(CONF.commonErrorMobile); }
			else { 
				$bday('#'+id).parent().parent().
					removeClass('error').
						addClass('success').
						find('.err_block').empty(); 
			}
		} // end mobile check
		else if(id == 'nickname'){
			if(($bday(id).attr('type') != 'hidden') || ($bday.trim($bday(id).val()).length < 4)){
				if(!FORMS[id]()){
					$bday('#'+id).parent().parent().
						removeClass('success').
							addClass('error').
								find('.err_block').text(CONF.commonErrorNicknameShort); }
				else { 
					$bday('#'+id).parent().parent().
						removeClass('error').
							addClass('success').
							find('.err_block').empty(); 
				}
			}
		} // end nickname check
		else if(id == 'email'){
			if($bday(id).attr('type') != 'hidden'){
				if(!FORMS[id]()){
					$bday('#'+id).parent().parent().
						removeClass('success').
							addClass('error').
								find('.err_block').text(CONF.commonErrorEmail); }
				else { 
					$bday('#'+id).parent().parent().
						removeClass('error').
							addClass('success').
							find('.err_block').empty(); 
				}
			}
		} // end email check
		else if(id == 'birthdate'){
			if(!FORMS.birthdate()){
				$bday('#year').parent().parent().
					removeClass('success').
						addClass('error').
							find('.err_block').
							text(CONF.commonErrorBirthdate);
			} 	else {
					$bday('#year').parent().parent().
						removeClass('error').
							addClass('success').find('.err_block').empty();
				}
		} // end birthdate check
	},
	buyMeStuff: function(){
	
		$bday('#wishList ul li, #giftIdeas ul li').live("click",function(){
			$bday(this).toggleClass('selected');
		});	
		$bday('p.buttons').click(function(){
			var befo = $bday(this).prev('div');
			var list = $bday('ul', befo);
			var receiver_id = $bday('#myProfile .data').attr('title');
			$bday('.selected',list).each(function(){
				var giftID = $bday(this).attr('title');
				var getURL = CONF._URL_DISPATCHER_ACTIONS + 'json/processSuggestionActions/buySuggestion/'+giftID;
				$bday.get(getURL);
			});
			setTimeout(function(){
			$bday.ajax({
			  url: CONF._URL_DISPATCHER_BLOCKS+'xhtml/BoughtItems/display/'+receiver_id+'/',
			  success: function(resp){
			  	 $bday('#boughtItems ul li').remove();
			  	 $bday('#boughtItems ul').append(resp.replace(/<ul>/,'').replace(/<\/ul>/,''));
			  }
			});
			$bday.ajax({
			  url: CONF._URL_DISPATCHER_BLOCKS+'xhtml/WishList/display/'+receiver_id+'/1',
			  success: function(resp){
			  	 $bday('#wishList ul li').remove();
			  	 $bday('#wishList ul').append(resp.replace(/<ul>/,'').replace(/<\/ul>/,''));
			  }
			});
			$bday.ajax({
			  url: CONF._URL_DISPATCHER_BLOCKS+'xhtml/GiftList/display/'+receiver_id+'/1',
			  success: function(resp){
			  	 $bday('#giftIdeas ul li').remove();
			  	 $bday('#giftIdeas ul').append(resp.replace(/<ul>/,'').replace(/<\/ul>/,''));
			  }
			});
			}, 1000);
		});

	},
	importContacts: function(){
		var URL = CONF._URL_DISPATCHER_BLOCKS+'xhtml/AddContactList/display/'+ $bday('.importContacts table').attr('rel');
		$bday.ajax({
				beforeSend: function(){ $bday('.importContacts table tr.nb').before('<tr class="loader"><td colspan="4" style="text-align: center; background: #fff; padding: 10px 0;"><img src="'+CONF._URL_STYLES+'images/loader.gif" /></td></tr>'); },
				url: URL,
				success: function(html){
				$bday('th.chck').html('<input type="checkbox" checked="checked" name="toggler" />');
				$bday('input[name="toggler"]').click( function(){
					var state = $bday(this).attr('checked')
					$bday('td.chck input[type="checkbox"]').attr('checked',state);
				});
				 $bday('tr.loader').remove();
			    $bday(".importContacts table tr.nb").before(html);
  				}
		});

	}
}
// inits the scroller in the friendlist in calendar view 
var SCROLL = {

	init: function(){
		if (typeof document.body.style.maxHeight == "undefined") { $bday('.status').css('zoom','1'); }
		if($bday('.myFriends.view').length > 0) { var maxHeight = 450; var stepScrol = 220;}
			else { var maxHeight = 320; var stepScrol = 160;}
			var totalHeight = document.getElementById('upcoming').offsetHeight;
			if(totalHeight < maxHeight) return false;
			if($bday('#scrollup').length == 0){ 
			if($bday('.myFriends.view').length > 0) { $bday('.upcoming').before('<p id="scroller"><a id="scrollup" href="">&nbsp;</a><a id="scrolldown" href="">&nbsp;</a></p>'); }
			
			else { $bday('.upcoming').before('<p id="scroller"><a id="scrollup" href="">&nbsp;</a><a id="scrolldown" href="">&nbsp;</a></p>'); }
			}
			
			var scrollable = totalHeight - maxHeight;
			$bday('.upcoming').css({'position':'relative','overflow':'hidden','height':maxHeight+'px'});
			$bday('#upcoming').css({'position':'absolute', 'top':'0'});
			$bday('#scrolldown').click(function(){
				$bday('#upcoming').css('position','absolute');
				var actualPos = $bday('#upcoming').css('margin-top').replace(/px/,'').replace(/pt/,'');
				if(parseInt(actualPos)-stepScrol > scrollable*-1) { nextPos = parseInt(actualPos) -stepScrol }
					else nextPos = scrollable * -1;
				$bday('#upcoming').animate({marginTop: nextPos}, "fast","swing");
				return false;
			});
			$bday('#scrollup').click(function(){
				$bday('#upcoming').css('position','absolute');
				var actualPos = $bday('#upcoming').css('margin-top').replace(/px/,'').replace(/pt/,'');
				var nextPos = parseInt(actualPos) +stepScrol
				if(nextPos > 0) nextPos = 0;
				$bday('#upcoming').animate({marginTop: nextPos}, "fast","swing");
				return false;
			});
	}
}

var FORMS = {
	email: function()	{ return ('' == $bday('#email').val()) ? false : /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test($bday('#email').val()); },
	mobile: function() { if($bday.trim($bday('#mobile').val()).length > 0) { return ('' == $bday('#mobile').val() && $bday('#mobile').val() == '06') ? false : /^336([0-9]{8})$/.test($bday('#mobile').val()); } else return true;  },
	password: function() { return ('' == $bday('#password').val()) ? false : /^([^\ ]{6,16})$/.test($bday('#password').val()); },
	passwordcheck: function()	{ return ('' == $bday('#passwordcheck').val()) ? false : ($bday('#password').val() == $bday('#passwordcheck').val()); },
	nickname: function() { return ('' == $bday('#nickname').val()) ? false : /^([a-z0-9]{4,12})/.test($bday('#nickname').val()); },
	firstname: function() { return ('' == $bday('#firstname').val()) ? false : /^(.{2,})/.test($bday('#firstname').val()); },
	lastname: function() { return ('' == $bday('#lastname').val()) ? false : /^(.{2,})/.test($bday('#lastname').val()); },
	year: function() { return ($bday('#year').val() < CONF._JS_DATE_TODAY_YEAR) },
	months: function() { return ($bday('#months').val() < CONF._JS_DATE_TODAY_MONTH) },
	day: function() { return ($bday('#day').val() < CONF._JS_DATE_TODAY_DAY) },
	birthdate: function() {
		if($bday('#year').val() == 0 || $bday('#months').val() == 0 || $bday('#day').val() == 0){ return false; }
		if($bday('#year').val() == CONF._JS_DATE_TODAY_YEAR){
			if($bday('#months').val() > CONF._JS_DATE_TODAY_MONTH){ return false; }
			else if($bday('#months').val() == CONF._JS_DATE_TODAY_MONTH){
				if($bday('#day').val() > CONF._JS_DATE_TODAY_DAY) { return false; }
			}
		}
		return true;
	},
	acceptCGU: function(){ return $bday('#CGU').is(':checked'); },
	checkUserExists: function(){
		var err = 0;
		var myLength = $bday.trim($bday('#nickname').val()).length;
		var container = $bday('#nickname').parent().parent();
		if(myLength > 3){
			$bday.getJSON(CONF._URL_DISPATCHER_ACTIONS+'json/ProcessAccountActions/nicknameAlreadyExist/'+$bday('#nickname').val(),
	        	function(data){
	        		if(data.result == 'true'){
	        			$bday(container).removeClass('success').addClass('error');
	        			$bday('.err_block',container).text(CONF.commonErrorNickname);
	        			err++;
	        		} else {
	        			$bday(container).removeClass('error').addClass('success');
	        			$bday('.err_block',container).text(CONF.commonErrorNicknameOK);
	        		}
	        });
       } 
		else if(myLength < 4){
        	$bday(container).removeClass('success').addClass('error');
			$bday('.err_block',container).text(CONF.commonErrorNicknameShort);
			err++;
      }
      else err++;

      if(err > 0) return false; else return true;
	},
	uploadAvatar: function(){
		var userID = $bday('#userId').val();
		var userIDurl = '';
		for (var i = 0; i < userID.length; i++)
			{ userIDurl += userID[i]+'/'; }
		var options = {
			beforeSubmit:  function(formData, jqForm, options) {
				var fileToUploadValue = $bday('input[name=fileToUpload]').fieldValue();
				if(!(/^.+(.jpg|.JPG|.gif|.GIF|.png|.PNG|.bmp|.BMP|.jpeg|.JPEG)$/.test($bday('input[name=fileToUpload]').val()))){
					$bday('#uploadAvatar p:has(small)').after('<span class="err_block flyout" style="float: left; margin-bottom:10px; padding: 5px; background: #FBE3E4; color:#8A1F11; border: 2px solid #FBC2C4;">Allowed file types: png, bmp, gif, jpg, jpeg</span>').slideDown('slow');
					setTimeout(function(){ $bday('#uploadAvatar span.err_block.flyout').slideUp('slow');setTimeout(function(){$bday('#uploadAvatar span.err_block.flyout').remove()},500) }, 1500);
					return false;
				}
				if(($bday.trim($bday('#fileToUpload').val()).length)==0){ errCount++; }
				else {
					original = $bday("#uploadAvatar img").attr('src');
					$bday("#uploadAvatar img").attr('src',CONF._URL_STYLES+'images/ajax-loader.gif');
				}
				return true;
			},
			success: function(data)  {
				if (data.errors.error.id == 200) {
					if (data.result != '') {
						var pic = CONF._URL_STATIC_PERSONAL_PICTURES + userIDurl + data.result + '_' + CONF._PICTO_PERSO_BIG_MAXWIDTH + 'x' + CONF._PICTO_PERSO_BIG_MAXHEIGHT + '.' + CONF._PICTO_PERSO_EXTENSION;
		
						$bday('#uploadAvatar img').fadeOut("fast").attr({src:pic}).fadeIn("slow");
					}
					else { $bday('#uploadAvatar img').attr('src',original); }
				} 
				else {
					$bday('#uploadAvatar img').attr('src',original);
				}
			},
			url: CONF._URL_DISPATCHER_ACTIONS +'json/ProcessAccountActions/saveAvatar',
			dataType:  'json',
			type: 'POST'
		};
		$bday('#hUpload').empty();
		$bday('#uploadAvatar').ajaxSubmit(options);
		return false;
	},
	statusUpdate: function(){
		$bday.ajax({
			type: 'POST',
		  url: CONF._URL_DISPATCHER_ACTIONS + 'json/ProcessAccountActions/saveStatusAndDescription',
		  data: 'status='+$bday('#status').val()+'&description='+$bday('textarea[name="description"]').val(),
		  dataType: 'json',
		  success: function(response){
		  		if(response.result != "1"){
					$bday('#statusUpdate p.btn.small').
						before('<span class="flyout" style="float: none; padding: 10px; width: 75%; margin-bottom: 5px;background: #FBE3E4; color:#8A1F11; border: 2px solid #FBC2C4;font-weight:bold;display: block; clear:both;">There where error while updating your information. Please try again later.</span>').
							slideDown('slow');
				setTimeout(function(){ 
					$bday('#statusUpdate .flyout').
						slideUp('slow');
					setTimeout(function(){$bday('#statusUpdate .flyout').remove()},500) }, 1500); }
				else { $bday('#statusUpdate p.btn.small').
					before('<span class="flyout" style="float: none; padding: 10px; width: 75%; margin-bottom: 5px;background: #E6EFC2; color: #264409; border:2px solid #C6D880; font-weight:bold; display: block; clear:both;">Your status was successfully updated.</span>').slideDown('slow');
				setTimeout(function(){ $bday('#statusUpdate .flyout').slideUp('slow');
					setTimeout(function(){$bday('#statusUpdate .flyout').remove()},500) }, 1500);
				}
			}
		});
		return false;
	},
	addContact: function(msg){

		if(msg == false){
				$bday('#addContact p.nolabel').
						before('<span class="flyout" style="float: none; padding: 10px; width: 170px; margin-bottom: 5px; margin-left: 78px; background: #FBE3E4; color:#8A1F11; border: 2px solid #FBC2C4;font-weight:bold;display: block; clear:both;">There where errors while adding the contact. Please try again later.</span>').
							slideDown('slow');
				setTimeout(function(){ 
					$bday('#addContact .flyout').
						slideUp('slow');
					setTimeout(function(){$bday('#addContact .flyout').remove()},500) }, 1500);
			return false;
		}

		var firstname = $bday('#firstname').val();
		var lastname = $bday('#lastname').val();
		var email = $bday('#email').val();
		var year = $bday('#year').val();
		var months = $bday('#months').val();
		var day = $bday('#day').val();
		
		var pbutton = $bday('p.nolabel').html();
		$bday.ajax({
			beforeSend: function(){
				$bday('p.nolabel > span').replaceWith('<img id="loader" style="float:none;background:transparent;border:0;margin:0;padding:0;" src="'+CONF._URL_STYLES+'images/smallloader.gif" />');
			},
		  type: 'POST',
		  url: CONF._URL_DISPATCHER_ACTIONS + 'json/ProcessContactActions/addContact',
		  data: 'firstname='+firstname+'&lastname='+lastname+'&email='+email+'&year='+year+'&months='+months+'&day='+day,
		  dataType: 'json',
		  success: function(resp){
		  	if(resp.result != 'error'){
				var shownMonth = $bday('table.calendar').attr('title');
				$bday.ajax({
					  url: CONF._URL_DISPATCHER_BLOCKS + 'xhtml/Calendar/display/' + shownMonth,
					  cache: true,
					  success: function(html){
					    $bday(".myFriends .box.small .inner").html(html);
					    $bday.ajax({
							  url: CONF._URL_DISPATCHER_BLOCKS + 'xhtml/Upcoming/display/' + shownMonth + '/1',
							  cache: false,
							  success: function(data){
						   	 $bday(".upcoming").html(data);
								}
							});
		    			BDAY.calendarScroll();
						}
				});
    			$bday('p.nolabel').html(pbutton);
				$bday('#addContact p.nolabel').
					before('<span class="flyout" style="float: none; padding: 10px; width:170px; margin-bottom: 5px; margin-left:78px;background: #E6EFC2; color: #264409; border:2px solid #C6D880; font-weight:bold; display: block; clear:both;">Yout contact was successfully added.</span>').slideDown('slow');
				setTimeout(function(){ $bday('#addContact .flyout').slideUp('slow');
					setTimeout(function(){$bday('#addContact .flyout').remove(); $bday('#signupForm.addContacts p').removeClass('.error').removeClass('.success'); $bday('.error, .success','#addContact').removeClass('error').removeClass('success');
    			$bday('p.nolabel').html(pbutton); $bday('#firstname').val(''); $bday('#lastname').val(''); $bday('#email').val('');
},500) }, 1500);
		  	}
		  	else {
    			$bday('p.nolabel').html(pbutton);
				$bday('#addContact p.nolabel').
						before('<span class="flyout" style="float: none; padding: 10px; width:170px; margin-bottom: 5px; margin-left: 78px;background: #FBE3E4; color:#8A1F11; border: 2px solid #FBC2C4;font-weight:bold;display: block; clear:both;">There where errors while adding the contact. Please try again later.</span>').
							slideDown('slow');
				setTimeout(function(){ 
					$bday('#addContact .flyout').
						slideUp('slow');
					setTimeout(function(){$bday('#addContact .flyout').remove()},500) }, 1500);
			}
	  		}
		});
	}
}
var COMMENTS = {
	init: function(){
		if($bday('p.scroller').length == 0){
				$bday('#comments').prepend('<p class="scroller public"><a id="scrollup" href="#up">up</a> <a id="scrolldown" href="#down">down</a></p>');
				$bday('#comments').prepend('<p class="scroller private"><a id="scrollup" href="#up">up</a> <a id="scrolldown" href="#down">down</a></p>');
		}
		$bday('#comments').addClass('js');
		$bday('h3.public').next('ul').addClass('public');
		$bday('h3.private').next('ul').addClass('private');
		if($bday('#public, #private').length == 0){
			$bday('.friendList.public').wrap('<div id="public"></div>');
			$bday('.friendList.private').wrap('<div id="private"></div>');
		}
		$bday('#private').hide();$bday('.scroller.private').hide();
			$bday('#comments h3').click(function(){
			var currentTab = $bday('h3 + div:visible','#comments').attr('id');
			var showTab = $bday(this).attr('class');
			var hiddenTab = $bday('h3 + div:not(":visible")','#comments').attr('id');
			if(currentTab != hiddenTab ){
				if(currentTab != showTab){ $bday('h3 + div','#comments').toggle(); }
				$bday('#comments .scroller').toggle();
			}
			$bday(this).next('div ul').css('margin-top','0');
			var pageIsMine = parseInt($bday('#myProfile.mine').length);
			if(pageIsMine == 1 && showTab == 'private'){ $bday('#comments .plus').css('display','none');}
			else if(showTab == 'public'){ $bday('#comments .plus').css('display','block');}

		});
		var theone = $bday('#comments .friendList:visible').attr('class').replace(/friendList /,'');
		$bday('#public ul, #private ul').css({'position':'absolute','top':'0'});
		$bday('#public, #private').css({'position':'relative','overflow':'hidden','height':'320px','margin-top':'0'});

		COMMENTS.commentScroll();
	},
	commentScroll: function(){
			$bday('a[href$="#down"]').click(function(){
				if($bday('div:visible ul','#comments').hasClass('private')){
	 				var totalHeight = $bday('#comments ul.friendList.private:visible').height();
	 			}
	 			else { var totalHeight = $bday('#comments ul.friendList.public:visible').height(); }
	 			if(totalHeight < 320) return false;
				var scrollable = totalHeight - 320;
				var actualPos = $bday('div:visible ul','#comments').css('margin-top').replace(/px/,'').replace(/pt/,'');
				if(parseInt(actualPos)-160 > scrollable*-1) { nextPos = parseInt(actualPos) - 160 }
					else nextPos = scrollable * -1;
				$bday('div:visible ul','#comments').animate({marginTop: nextPos}, "fast","swing");
				return false;
				
			});
			
			$bday('a[href$="#up"]').click(function(){
				if($bday('div:visible ul','#comments').hasClass('private')){
	 				var totalHeight = $bday('#comments ul.friendList.private:visible').height();
	 			}
	 			else { var totalHeight = $bday('#comments ul.friendList.public:visible').height(); }
	 			if(totalHeight < 320) return false;
				var scrollable = totalHeight - 320;
				var actualPos = $bday('div:visible ul','#comments').css('margin-top').replace(/px/,'').replace(/pt/,'');
				var nextPos = parseInt(actualPos) +160;
				if(nextPos > 0) nextPos = 0;
				$bday('div:visible ul','#comments').animate({marginTop: nextPos}, "fast","swing");
				return false;
			});
		
		$bday('li.next, li.prev').live("click",function(){
			$bday(this).html('<img style="float:none;background:transparent;border:0;margin:0;padding:0;" src="'+CONF._URL_STYLES+'images/smallloader.gif" />');
			var getURL = myTitle;
			$bday.ajax({
				  url: getURL,
				  success: function(resp){
				  	$bday('#comments div:visible ul li').remove();
				  	$bday('#comments div:visible ul').append(resp.replace(/<ul class="friendList">/,'').replace(/<\/ul>/,''));
				  	$bday('#comments div:visible ul').css('margin-top','0');
					}
			});
			return false;
		});

	}
}
$bday(document).ready( function(){ BDAY.init(); } );