$(document).ready(function(){

		function email_validate(email) {
			var reg = /^([A-Za-z0-9_\-\.]){2,}\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
			if(reg.test(email) == false){
				return false;
			}
			else{
				return true;
			}
		}
		
		function showRegConf(user) {
			$("*").dialog("close");
			$("#confirm-reg-dialog a b.new_user_email").text(user);
			$("#confirm-reg-dialog").dialog("open");
		}
				
		function showRequestPassConf(user){
			$("*").dialog("close");
			$("#confirm-pass-dialog a b.new_user_email").text(user);
			$("#confirm-pass-dialog").dialog("open");
		}
		

		var holdOn = false ;
		function displayDialogError(dialog, err_str, post){
			if(!dialog){
				return false;
			}
			var er_container = dialog.find(".error-message-container:first");
			var er_div = dialog.find(".error-message:first") ;
			if(!er_container || !er_div){
				return false ;
			}
			er_container.css('display','none');
			if(err_str.length>0){
				er_div.html(err_str.replace(/^\n|\n$/g,'').replace(/\n/g,'<br/>'));
				er_container.css('display','block');
			}
		}
		
		
		function registration() {
			if(holdOn)
				return ;
			var er='';
			var err_this = $("#register-dialog-form");

			var user   = $("#registr-form [id='registr-form-email']").val();
			var pass   = $("#registr-form [id='registr-form-pass']").val();
			var repass = $("#registr-form [id='registr-form-repass']").val();
			var gender = $("#registr-form input[name='gender']:checked");
			var agreed = $("#registr-form [id='registr-form-agreement']").attr('checked');

			//check email
			if(!email_validate(user)){
				er+="המייל שהוכנס אינו תקין\n";
			}
			if(agreed!=true){
				er+="אנא הסכם לתנאי השימוש\n";
			}
			//check gender
			gender = !gender ? '' : gender.val() ;
			if(gender!='female' && gender!='male'){
				gender='';
			}
			//check pass
			if(pass.length<6){
				er += "הסיסמא צריכה להכיל 6 תווים לפחות\n";
				displayDialogError(err_this,er);
				return;
			}
			//check repass
			if(pass!=repass){
				er += "הסיסמאות אינן זהות\n";
			}
			if(er.length>0){
				displayDialogError(err_this,er);
				return;
			}
			
			//if valid data
			setHoldOnTimeOut() ;
			$.ajax({
				type: 'POST',
				url: '/myuserdo/register_user/',
				dataType: 'json',
				data: {
				'email':user,
				'pass' :pass,
				'auth_val': Math.floor(Math.random()*100),
				'gender' : gender,
				'agreed': (agreed==true ? 1 : 0)
				},
				success: function(json){
					if (json=='registration succeed') {
						displayDialogError(err_this,'התהליך הושלם בהצלחה');
						showRegConf(user);
						$( "#register-dialog-form" ).dialog( "close" );
						$( "#register-d , a.register-now, a.propos_reg" ).unbind('click');
						$( "#register-d , a.register-now, a.propos_reg" ).click(function() {
							showRegConf(user);
						});
					}
					else{
						displayDialogError(err_this,json);
						holdOn = false ;
					}
					return;
				}
			});
		}

		
		function logination() {
			if(holdOn)
				return ;
			var user = $("#login-dialog-form [id='login-form-email']").val();
			var pass = $("#login-dialog-form [id='login-form-password']").val();
			
			var er='';
			var err_this = $("#login-dialog-form");

			if(!email_validate(user)){
				er+="המייל שהוכנס אינו תקין\n";
			}
			if(pass.length<6){
				er += "הסיסמא צריכה להכיל 6 תווים לפחות\n";
			}
			if(er.length>0){
				displayDialogError(err_this,er);
				return;
			}

			setHoldOnTimeOut() ;
			$.ajax({
				type: 'POST',
				url: '/myuserdo/login_user/',
				dataType: 'json',
				data: {'user_email':user,'pass':pass},
				success: function(json){
					if (json=='authorization secceed') {
						displayDialogError(err_this,'מתבצע חיבור למערכת, נא להמתין');
						$( "#login-d , a.login-now" ).unbind('click');
						location.reload(true);
					}
					else{
						//alert(json);
						displayDialogError(err_this,json);
						holdOn = false ;
					}
					return ;
				}
			});
		}

		function logoutation( ) {
			if(holdOn)
				return ;
			setHoldOnTimeOut() ;
			$.ajax({
				type: 'POST',
				url: '/myuserdo/logout_user/',
				dataType: 'json',
				data: {'logout':''},
				success: function(json){
					if (json=='logout succeed') {
						//alert('after refresh will be logged out');
						$( "#logout-d" ).unbind('click');
						location.reload(true);
					}
					else{
						alert("שגיאה בעת ניתוק משתמש\nתיאור:" + json);
						holdOn = false ;
					}
				}
			});
		}

		function requestnewpass() {
			if(holdOn)
				return ;
			var user = $("#forget-pass-dialog #forget-pass-form #email").val();

			var er='';
			var err_this = $("#forget-pass-dialog");
			
			if(!email_validate(user)){
				er+="המייל שהוכנס אינו תקין\n";
			}
			if(er.length>0){
				displayDialogError(err_this,er);
				return;
			}

			setHoldOnTimeOut() ;
			$.ajax({
				type: 'POST',
				url: '/myuserdo/request_new_pass/',
				dataType: 'json',
				data: {'user_email':user},
				success: function(json){
					if (json=='request pass succeed') {
						$( "*" ).dialog( "close" );
						showRequestPassConf(user);
						$( "a.login-forget-pass" ).unbind('click');
						$( "a.login-forget-pass" ).click(function() {
							showRequestPassConf(user);
						});
						//location.reload(true);
					}
					else{
						//alert(json);
						displayDialogError(err_this,json);
						holdOn = false ;
					}
					return;
				}
			});
		}

		
		function req_reg_email() {
			if(holdOn)
				return ;
			var user = $("#login-dialog-form [id='login-form-email']").val();
			if(!email_validate(user)){
				user = $("#registr-form [id='registr-form-email']").val();
			}
			
			var er='';

			if(!email_validate(user)){
				er += "המייל שהוכנס אינו תקין\n";
			}
			if(er.length>0){
				alert(er);
				return;
			}
			
			setHoldOnTimeOut() ;
			$.ajax({
				type: 'POST',
				url: '/myuserdo/request_registration_email/',
				dataType: 'json',
				data: {'user_email':user},
				success: function(json){
					if (json=='request_succeed') {
						$( "*" ).dialog( "close" );
						showRegConf(user);
					}
					else{
						alert(json);
						holdOn = false ;
					}
					return;
				}
			});
		}
		$( "a#open-request-reg-email" )
			.live('click',function(e) {
				e.preventDefault();
				req_reg_email();
		});


		$( "#register-dialog-form" ).dialog({
			autoOpen: false,
			closeOnEscape: true ,
			resizable: false ,
			height: 'auto',
			width: 402,
			modal: true,
			close: function() {
				displayDialogError($(this),'');
				return;
			}
		});

		$( "#login-dialog-form" ).dialog({
			autoOpen: false,
			closeOnEscape: true ,
			resizable: false ,
			height: 'auto',
			width: 350,
			modal: true,
			close: function() {
				displayDialogError($(this),'');
				return;
			}
		});

		$( "#forget-pass-dialog" ).dialog({
			autoOpen: false,
			closeOnEscape: true ,
			resizable: false ,
			height: 'auto',
			width: 350,
			modal: true,
			// buttons: { },
			close: function() {
				displayDialogError($(this),'');
				return ;
			}
		});

		$( "#confirm-reg-dialog" ).dialog({
			autoOpen: false,
			closeOnEscape: true ,
			resizable: false ,
			height: 'auto',
			width: 350,
			modal: true,
			close: function() {
				return ;
			}
		});
			
		$( "#confirm-pass-dialog" ).dialog({
			autoOpen: false,
			closeOnEscape: true ,
			resizable: false ,
			height: 'auto',
			width: 350,
			modal: true,
			close: function() {
			return ;
			}
		});


		$( "#login-d , a.login-now" ).click(function() {
			$( "*" ).dialog( "close" );
			$( "#login-dialog-form" ).dialog( "open" );
		});
		$( "#login-dialog-form #login-form button#submit-dialog" ).
			live('click', function(e) {
				e.preventDefault();
				logination();
		});
		
		function setHoldOnTimeOut(){
			if(holdOn)
				return ;
			holdOn = true ;
			window.setTimeout(function() {holdOn=false;}, 5000);
		};
		
		
		$( "#logout-d" ).click(function() {
				logoutation();
		});


		$( "#register-d , a.register-now" )
		.click(function() {
			$( "*" ).dialog( "close" );
			$( "#register-dialog-form p#paragraph_block").css('display','block');
			$( "#register-dialog-form p#paragraph_none").css('display','none');
			$( "#register-dialog-form" ).dialog( "open" );
		});
		$( "a.propos_reg" )
		.live('click',function() {
			$( "*" ).dialog( "close" );
			$( "#register-dialog-form p#paragraph_block").css('display','none');
			$( "#register-dialog-form p#paragraph_none").css('display','block');
			$( "#register-dialog-form" ).dialog( "open" );
		});
		$( "#register-dialog-form #registr-form button#submit-dialog" ).
			live('click', function(e) {
				e.preventDefault();
				registration();
		});
		$( "#conf-reg-d" )
		.click(function() {
			$( "#confirm-reg-dialog" ).dialog( "open" );
		});
		
		
		$( "a.login-forget-pass" )
		.click(function() {
			$( ".error-message" ).html( "" );
			$( "*" ).dialog( "close" );
			$( "#forget-pass-dialog" ).dialog( "open" );
		});
		$( "#forget-pass-dialog #forget-pass-form button#submit-dialog" ).
			live('click', function(e) {
				e.preventDefault();
				requestnewpass();
		});

		$("#login-dialog-form #login-form input").keyup(function(event) {
			if (event.keyCode == '13') {
				event.preventDefault();
				$(this).parents("form").find("button#submit-dialog").click();
				return false;
			}
		});
		

		
		var total_rec = 0 ;
		function resetSendListingsDialog(){
			$( "#send-to-friend-dialog-form tr.email_recepients_tr" ).remove();
			total_rec = 0 ;
		}
		$( "#send-to-friend-dialog-form #send-to-friend-form-add-rec" )
		.live('click',function() {
			if(total_rec>3){ 
				alert("ניתן לשלוח ל-5 נמענים לכל היותר");	return;	}
			else{ 
				total_rec++; }
			var id_str = "email_recepients_" + total_rec ;
			var add_str = '<tr class="email_recepients_tr"><td><label for="email_recepients"><a class="remove_reciep">הסר</a></label></td><td><input name="email_recepients" id="'+id_str+'" value="" class="input w1 email_recepients" type="text"></td></tr>';
			$(this).parents('tr').before(add_str);
		});
		$( "#send-to-friend-dialog-form tr td a.remove_reciep" )
		.live('click',function() {
			if(total_rec==0)
				return;
			$(this).parents('tr').remove();
			total_rec--;
		});
		
		var global_send_to_friend_listing_ids = new Array();
		function sendToFriend() {
			if(holdOn)
				return ;
			
			var er='';
			var err_this = $("#send-to-friend-dialog-form");
		
			var from_email_tag = $("#send-to-friend-form input#from_email");
			var from_email = from_email_tag.val().replace(/(^\s+)|(\s+$)/g,'');
			var to_emails = [] ;
			var to_emails_valid = true;
			var email_receipients = $("#send-to-friend-form input[id^='email_rec'].email_recepients");
			
			var sender_name = $("#send-to-friend-form input#sender_name").val().replace(/(^\s+)|(\s+$)/g,'');
			var optional_text = $("#send-to-friend-form textarea#optional_text").val().replace(/(^\s+)|(\s+$)/g,'');
			var send_to_myself = $("#send-to-friend-form input#copy_tome").attr('checked');

			//sender
			if(from_email==''){
				er += 'נא להכניס מייל של השולח\n' ;
			}
			else if(!email_validate(from_email)){
				from_email_tag.css('color','#EC008C');
				er += 'מייל של השולח אינו תקין\n' ;
			}
			else{
				from_email_tag.css('color','#787878');
			}
			
			//reciepients
			if( $(".email_recepients:first").val().replace(/(^\s+)|(\s+$)/g,'') == '' ){
				er += 'יש להכניס כתובת של נמען אחד לפחות' ;
			}
			else{ 
				email_receipients.each(function() {
					var one_email = $(this).val().replace(/(^\s+)|(\s+$)/g,'');
					if(one_email==''){
						$(this).parents('tr').find('a').click();
					}
					else if(!email_validate(one_email)){
						to_emails_valid = false ;
						$(this).css('color','#EC008C');
					}
					else{
						to_emails.push(one_email);
						$(this).css('color','#787878');
					}
				});
			}
			if (!to_emails_valid){
				er += "אחד או יותר מהמיילים ברשימת הנמענים נמצא/ו לא תקין/ים\n" ;
			}
			
			if (er.length>0){
				displayDialogError(err_this,er);
				return;
			}
			
			if (to_emails.length == 0 || !to_emails_valid){
				displayDialogError(err_this,'רשימת הנמענים עדיין ריקה');
				return;
			}
			
			//if valid data
			setHoldOnTimeOut() ;
			$.ajax({
				type: 'POST',
				url: '/myuserdo/send_mail_to_friend/',
				dataType: 'json',
				data: {
				'from_email':from_email,
				'to_email' :to_emails,
				'sender_name': sender_name,
				'optional_text' : optional_text,
				'send_to_myself' : send_to_myself,
				'my_listings' : global_send_to_friend_listing_ids
				},
				success: function(json){
					if (/^mail_sent/.test(json)==true) {
						displayDialogError(err_this,'הפריט נשלח לנמענים');
						$( "*" ).dialog( "close" );
						$("#confirm-mail-sent-dialog p#confirm-mail-reciepients").html(json.replace(/^mail_sent/,'').replace(/\,/g,'<br>'));
						$( "#confirm-mail-sent-dialog" ).dialog("open");
					}
					else{
						displayDialogError(err_this,json);
						holdOn = false ;
					}
					return;
				}
			});
		}

		//send to friend - open form
		$( ".send-listing-s" )
		.live('click',function() {
			resetSendListingsDialog();
			global_send_to_friend_listing_ids = [];
			var id = $(this).find('#sectionval').val() + '_' + $(this).attr( 'id' );
			global_send_to_friend_listing_ids.push(id);
			
			$( "#send-to-friend-dialog-form" ).dialog( "open" );
		});
		//send to friend - map 
		$( ".send-listing-s-map" )
		.live('click',function() {
			resetSendListingsDialog();
			global_send_to_friend_listing_ids = [];
			var id = $(this).attr('rel') + '_' + $(this).attr( 'id' ).replace(/^send_tf_/g,'');
			global_send_to_friend_listing_ids.push(id);
			
			$( "#send-to-friend-dialog-form" ).dialog( "open" );
		});
		
		//send to fiend - send mail
		$( "#send-to-friend-dialog-form #send-to-friend-form button#submit-dialog" )
		.live('click',function(e) {
			e.preventDefault();
			sendToFriend();
		});

		//send mails from MY section - open form
		$ ( ".send-to-friend-from-my" )
		.click(function() {
			if( $("table.saved_items .check_box_send_from_my:checked").size()==0){
				alert('לא נבחרו מודעות');
				return;
			}

			// global_send_to_friend_from = 'my';
			var boxes = $('input.check_box_send_from_my:checked');

			global_send_to_friend_listing_ids = [];
			$(boxes).each(function(id,item){
				var id = $(item).attr('id');
				global_send_to_friend_listing_ids.push(id);
			});
			$( "#send-to-friend-dialog-form" ).dialog( "open" );
		});
		
		
		//confirm sent operation
		$( "#confirm-send-s" )
		.click(function() {
			$( "#confirm-mail-sent-dialog" ).dialog( "open" );
		});

		$( "#send-to-friend-dialog-form" ).dialog({
			autoOpen: false,
			closeOnEscape: true ,
			resizable: false ,
			height: 'auto',
			width: 350,
			modal: true,
			//buttons: {},
			close: function() {
				displayDialogError($(this),'');
				return false ;
			}
		});
		$( "#confirm-mail-sent-dialog" ).dialog({
			autoOpen: false,
			closeOnEscape: true ,
			resizable: false ,
			height: 'auto',
			width: 350,
			modal: true,
			close: function() {
				$("#confirm-mail-sent-dialog p#confirm-mail-reciepients").html("");
				return false ;
			}
		});
		
});
