if (typeof (NP) === "undefined") { var NP = {}; }
if (typeof (NP.trip) === "undefined") {
    NP.trip = {};
}
NP.trip = (function() {
    // Declare any object-wide variables here with a brief comment about what they are 
    var partWrapperId; // Unique string that identifies the block(or div) in the page
    var partWrapperSel; // partWrapperId with a # appended for use in jQuery selectors
	jQuery.validator.messages.required = "";
	
	var submitForm = function(actionurl,postData,frm) {
		//alert(postData)
			$.ajax({   
				  type: "GET",   
				  url: actionurl,   
				  data: postData,
				  contentType: "application/json; charset=utf-8",   
				  dataType: "json",   
				  beforeSend: function (XMLHttpRequest) {
				  },
				  complete: function(XMLHttpRequest, textStatus) {
					  //alert(textStatus)
				  },
				  success: function(data) {
				  						  if(data.error==0){
											 // alert(data.url)
						  window.location=data.url;
					  } else if(data.error==3){
					  	$('#newsMessage').html(data.message);
						$('#txtFirstName').val('');
						$('#txtLastName').val('');
						$('#txtEmail').val('');
					  } else if(data.error==4){
					  	$('#contactMessage').html(data.message);
						$('#txtContactName').val('');
						$('#txtContactMessage').val('');
						$('#txtContactemail').val('');
					  }  else if(data.error==5){
						  alert(data.message)
					  	//$('.message-'+frm).html(data.message);
						//$('.message-'+frm).show();
					  }  else {
						  $("div.error").hide();
						$('#'+frm+'.message-frm').html(data.message);
						$('#'+frm+'.message-frm').show();
					  }

				  }   
			});

	};
	
	var listValidateError = function(errors) {
				if (errors) {
					var message = errors == 1
						? 'You missed 1 field. It has been highlighted below'
						: 'You missed ' + errors + ' fields.  They have been highlighted below';
					$("div.error span").html(message);
					$("div.error").show();
				} else {
					$("div.error").hide();
				}
	};
	
	var validateContact = function() {
		$("#frmContact").validate({
			rules:{
			txtContactName : "required",
			txtContactMessage : "required",
			txtContactemail :{
				required:true,
				email:true}
			},
			messages:{
			},
			invalidHandler: function(e, validator) {
				var errors = validator.numberOfInvalids();
				//listValidateError(errors);
			},
			onkeyup: false,
			submitHandler: function(){
				actionurl='ajax/contact.php';
				postData=$("#frmContact").serialize();  
				submitForm(actionurl,postData, 'frmContact');
			}
		});

	};
	var validateNews = function() {
		$("#frmNews").validate({
			rules:{
			txtFirstName : "required",
			txtLastName : "required",
			txtEmail :{
				required:true,
				email:true}
			},
			messages:{
			},
			invalidHandler: function(e, validator) {
				var errors = validator.numberOfInvalids();
				//listValidateError(errors);
			},
			onkeyup: false,
			submitHandler: function(){
				actionurl='ajax/news.php';
				postData=$("#frmNews").serialize();  
				submitForm(actionurl,postData, 'frmNews');
			}
		});

	};
	var validateLogin = function(frm) {
		$("#"+frm).validate({
			rules:{
			txtUserName : "required",
			txtPassword : "required"
			},
			messages:{
			},
			invalidHandler: function(e, validator) {
				var errors = validator.numberOfInvalids();
				//listValidateError(errors);
			},
			onkeyup: false,
			submitHandler: function(){
				actionurl='ajax/login.php';
				postData=$("#"+frm).serialize();  
				submitForm(actionurl,postData,frm);
			}
		});

	};
	var validateRegister = function() {
		var flag=0;
		$("#frmregister").validate({
			rules:{
			txtUser:"required",
			txtEmail : {
				required:true,
				email:true},
			txtPassword : "required",
			txtPasswordConfirm:{
				required: true,
				matchPass: true
			 },
			 txtFirstName:"required",
			 txtLastName:"required",
			 txtDob:"required",
			 txtBlood:"required",
			 txtAddress:"required",
			 txtPhone:"required",
			 txtPhone:"required",
			 txtCountry:"required",
			 txtLicense:"required",
			 txtValidFrom:"required",
			 txtValidTo:"required",
			 txtMake:"required",
			 txtModel:"required",
			 txtYear:"required"
			},
			messages:{
			},
			invalidHandler: function(e, validator) {
				var errors = validator.numberOfInvalids();
				//listValidateError(errors);
				flag=1;
			},
			onkeyup: false
		});
		if(flag==0) return true;

	};
	var validateRegister1 = function() {
		var flag=0;
		$("#frmregister").validate({
			rules:{
			txtUser:"required",
			txtEmail : {
				required:true,
				email:true},
			txtPassword : "required",
			txtPasswordConfirm:{
				required: true,
				matchPass: true
			 }
			},
			messages:{
			},
			invalidHandler: function(e, validator) {
				var errors = validator.numberOfInvalids();
				//listValidateError(errors);
				flag=1;
			},
			onkeyup: false
		});
		if(flag==0) return true;

	};
	var setLogout = function(){
		$.ajax({   
				  type: "GET",   
				  url: "ajax/logout.php",   
				  data: '',
				  contentType: "application/json; charset=utf-8",   
				  dataType: "json",   
				  beforeSend: function (XMLHttpRequest) {
				  },
				  complete: function(XMLHttpRequest, textStatus) {
					 //alert(textStatus)
				  },
				  success: function(data) {
					   window.location=data.url;
				  }   
			});
	};
	var validatePass = function() {
		$("#frmpassword").validate({
			rules:{
			txtCurrentPass : "required",
			txtNewPass : "required",
			txtNewPassRep : "required"
			},
			messages:{
			},
			invalidHandler: function(e, validator) {
				var errors = validator.numberOfInvalids();
				listValidateError(errors);
			},
			onkeyup: false,
			submitHandler: function(){
				if($('#txtNewPass').val()!=$('#txtNewPassRep').val()){
						$("div.error span").html("Please make sure Password and Confirm Password fields are matching");
					$("div.error").show();										
				} else { 
				actionurl='ajax/pass.php';
				postData=$("#frmpassword").serialize();  
				submitForm(actionurl,postData,'');
				}
			}
		});
	};
	var RegisterEventHandlers = function() {
		$("#txtTripType").change(function () {
				  	if($(this).val()=='Guided tour') {
						 var addlist='';
	 	 addlist+='<tr><td align="right" class="form-label">Guide Description<span class="required">*</span>:</td>';
		 addlist+='<td align="left"><textarea name="txtGuideDescription" id="txtGuideDescription" rows="4" cols="30"></textarea></td></tr>';
		 	$("#ttype").after(addlist);
					}
					
				})
			$(partWrapperSel).click(function(event) {
					target=$(event.target);
					if(target.is('.btn-login')){ 
						validateLogin('frmlogin');
					}
					if(target.is('.btn-loginRegLog')){ 
						validateLogin('frmloginlog');
					}
					if(target.is('.log-out')){ 
						setLogout();
					}
					if(target.is('.register-trips')){ 
						validateRegister();
					}
					
					if(target.is('.add-trip')){ 
						validateRegister1();
					}
					if(target.is('.signup-news')){ 
						validateNews();
					}
					if(target.is('.reset-news')){ 
						$('#txtFirstName').val('');
						$('#txtLastName').val('');
						$('#txtEmail').val('');
					}
					if(target.is('.signup-contact')){ 
						validateContact();
					}
					if (target.is('.pop')) {
						id=target.attr("id");
						$('#rivewId').val(id);
						tb_show('','#TB_inline?height=300&width=600&inlineId=popContent')

					}
					if (target.is('.popph')) {
						id=target.attr("id");
						$('#rivewId').val(id);
						tb_show('','#TB_inline?height=100&width=600&inlineId=popContent')

					}
					
					if (target.is('.poppro')) {
						id=target.attr("id");
						$('#user_profilid').val(id);
						tb_show('','#TB_inline?height=400&width=600&inlineId=popContentPro')

					}
					if (target.is('.poppass')) {
						id=target.attr("id");
						$('#rivewPass').val(id);
						tb_show('','#TB_inline?height=400&width=600&inlineId=popContentPass')

					}
					
					if(target.is('.reset-contact')){ 
						$('#txtContactName').val('');
						$('#txtContactemail').val('');
						$('#txtContactMessage').val('');
					}
					
			});								 
		};
	
    //End Private methods
    return {
        // Public Methods
		Init: function(partId) {
			partWrapperId = partId;
            partWrapperSel = "#" + partId;
            RegisterEventHandlers();
			
		},
		Register:function(){
			if(validateRegister()) return true;
		},
		Register1:function(){
			if(validateRegister1()) return true;
		}
    }; //end return
 
} ());
