 var Member = Base.extend({
  
	constructor: function( init ) {
    var init = Object.extend({
      queryParams: $H({}),
      url: "updatemember.do"    
    }, init || {} );
    this.container = $(init.container);
    this.continueBtnObj = $(init.continueBtnObj);
    this.addBtnContainer = $(init.addBtnContainer);
    this.firstNameObj = $(init.firstNameObj);
    this.middleNameObj = $(init.middleNameObj);
    this.lastNameObj = $(init.lastNameObj);   
    this.queryParams = init.queryParams;
    this.url = init.url;
    this.queryParams = Object.extend({
    	url: this.url
    }, this.queryParams);
    this.contents;
    this.tbodyEl;
    this.parentEl;   
 },
 
 insertMember: function( movewith ){
 	var qp = this.queryParams;
 	var url = qp.url;
 	var firstName = this.trim(this.firstNameObj.value);
 	var middleName = this.trim(this.middleNameObj.value);
 	var lastName = this.trim(this.lastNameObj.value); 	 	
 	if( firstName == null || firstName == ""){
 		if(movewith=='business') {
 			alert(employeefirstNameInvalid);
 		}else{	
	 		alert(memberfirstNameInvalid);
 		}
 		this.firstNameObj.focus();
 	}/*else if( firstName.length < 1 ){
 		alert("The first name must have minimum 1 character");
 		this.firstNameObj.focus();
 	}*/else if( lastName == null || lastName == ""){
 	    if(movewith=='business') {
 			alert(employeelastNameInvalid);
 		}else{
 			alert(memberlastNameInvalid);
 		}
 		this.lastNameObj.focus();
 	}/*else if( lastName.length < 1 ){
 		alert("The last name must have minimum 1 character");
 		this.lastNameObj.focus();
 	}*/else{ 	
 		var addBtnContainer = this.addBtnContainer;
	 	this.contents = addBtnContainer.innerHTML;
 		addBtnContainer.innerHTML = "";
	 	addBtnContainer.appendChild( this.createPregessIndicator() );
 		
	 	var params = "firstName=" + firstName + "&middleName=" + middleName + "&lastName=" + lastName + "&option=add";
	 	var moveWith = document.getElementsByName('moveTypeWith');
	 	if(moveWith.length > 0){
	 		if(moveWith[2].checked){
	 			params += "&quantity=50";
	 		}
	 	}
 		var thisObj = this;
	 	new Ajax.Request( url,{
 			parameters: params,
 			onSuccess: function( t ){
 				var res = t.responseText;
 				if( thisObj.isNumeric(res)){
		 			thisObj.callBackFn( t );
		 		}else{
		 			thisObj.forwardToSessionExpiredPage();
		 		}
 			},
 			onFailure: function( t ){ 				
 				var result = t.statusText;
 				if(result.indexOf('11') != -1){
 					alert(notAllowMoreThanEleven);
 				}else if(result.indexOf('50') != -1 ){
 				    alert(notAllowMoreThanFifty);
 				}else if(result == 'FirstNameInvalid' ){
 				    alert(memberfirstNameInvalid);
 				}else if(result == 'MiddleNameInvalid' ){
 				    alert(membermiddleNameInvalid);
 				}else if(result == 'LastNameInvalid' ){
 				    alert(memberlastNameInvalid);
 				}else if(result == 'ErrorToAddMember' ){
 				    alert(errorToAddMember);
 				}else if(result == 'MissingParameter' ){
 				    alert(missingParameter);
 				}
 				
	 			addBtnContainer.innerHTML = thisObj.contents;
	 			
 			}
	 	});
	 }
 },
 
 callBackFn: function( t ){
 	var container = this.container;
 	var res = t.responseText;
 	var firstName = this.firstNameObj.value;
 	var middleName = this.middleNameObj.value;
 	var lastName = this.lastNameObj.value;
 	var row = this.createRow( res, firstName, middleName, lastName, 1 );
 	container.appendChild( row );
 	var addBtnContainer = this.addBtnContainer;
 	addBtnContainer.innerHTML = this.contents;
 	this.firstNameObj.value = "";
 	this.middleNameObj.value = "";
 	this.lastNameObj.value = "";
 	this.firstNameObj.focus();
 }, 
  
 createRow: function( id, firstName, middleName, lastName, index ){
 	var tdEl = Builder.node("td",{ "width" : "18%" },[]);
 	var row = Builder.node("tr",{},[
 				Builder.node("td",{ "width" : "43%","class":"medium" },firstName + "  " + middleName + "  " + lastName),
	 			Builder.node("td",{ "width" : "39%" }," "),
 				tdEl
	  		 ]); 
	 if( index > 0 ){ 		 
	 	this.createDeleteButton( tdEl, id, row );
	 }else{
	 	row.appendChild( tdEl );
	 }
 	return row;
 },
 
  createDeleteButton: function( parentEl, memberId, row ){
 	var deleteBtn = Builder.node("img",{"src":"images/blue-images/delete.gif", "title": deleteLabel , "style":"cursor: pointer;", "width":"12", "height":"12", "align":"absmiddle" },[]); 						
 					
 	var thisObj = this;
 	deleteBtn.onclick = function(){
 		thisObj.deleteMember( memberId,parentEl, row );
 	} 	
 	parentEl.appendChild( deleteBtn ); 	
 },
 
  createPregessIndicator: function(){
 	return Builder.node("img",{ "src":"images/loading.gif","align":"middle" ,"height":"50","width":"50"},[]);
 },
 
 deleteMember: function( memberId, btnObjParentEl, rowEl  ){
 	var thisObj = this;
 	if( memberId != null || memberId != "" ){
 		btnObjParentEl.innerHTML = "";
 		btnObjParentEl.appendChild( this.createPregessIndicator() );
 		var qp = thisObj.queryParams;
 		var url = qp.url;
 		var params = "memberId=" + memberId + "&option=delete"; 
 		
	 	new Ajax.Request( url,{
	 		parameters: params,
 			onSuccess: function( t){ 				
 				var res =  t.responseText;
 				if( res == 0 ){
	 				Element.hide( rowEl );
 				}else{
 					thisObj.forwardToSessionExpiredPage();
 				}
 			},
 			onFailure: function( t ){
 				var result = t.statusText;
 				
 				if(result == 'ErrorToDeleteMember' ){
 				    alert(errorToDeleteMember);
 				}else if(result == 'MissingMemberId' ){
 				    alert(missingMemberId);
 				}
 				btnObjParentEl.innerHTML = "";
 				thisObj.createDeleteButton( btnObjParentEl, memberId, rowEl );
	 		}
 	});
 	}else{
 		alert(memberNotBlank);
 	}
 },  
 
 getMembers: function(){
 	var qp = this.queryParams;
 	var url = qp.url;
	var container = this.container;
	var containerContents = container.innerHTML;
	var parentEl = container.parentNode;
	parentEl.removeChild(container);
	var tbodyEl = Builder.node("tbody", { "id":"AutoNumber1" },[]);
	container = tbodyEl;
	parentEl.appendChild( tbodyEl );
	this.parentEl = parentEl;
	this.tbodyEl = tbodyEl;
	container.appendChild( this.containerCreatePregessIndicator() );
	var thisObj = this;
 	new Ajax.Request( url,{
		onSuccess: this.membersList.bind(this),		
		onFailure: function( t ){ 	
			var result = t.statusText;
			if(result == 'MissingParameter' ){
 				alert(missingParameter);
 			}
 			tbodyEl.innerHTML = containerContents;
 			var continueBtnObj = thisObj.continueBtnObj;
			continueBtnObj.disabled = false;
		}
 	});
 },
 
 membersList: function( t ){
 	var record = eval( "(" + t.responseText + ")");
 	var parentEl = this.parentEl;
 	var tbodyEl = this.tbodyEl;
 	var parentEl = tbodyEl.parentNode;
	parentEl.removeChild(tbodyEl);
	var bodyEl = Builder.node("tbody", { "id":"AutoNumber1" },[]);
	parentEl.appendChild( bodyEl );
 	var thisObj = this;
 	if( record ){
 		var index = 0;
 		record.each( function(member) {
 			var mName = "";
 			if( member.middleName == null ){
 				mName = "";
 			}else{
 				mName = member.middleName;
 			}
			var row = thisObj.createRow( member.id, member.firstName, mName, member.lastName,index );
		 	bodyEl.appendChild( row );
		 	index++;
		});
	}
	var continueBtnObj = this.continueBtnObj;
	continueBtnObj.disabled = false;
 },
 
 containerCreatePregessIndicator: function(){
 	return Builder.node("tr",{},[
 			Builder.node("td",{ "align":"center" },[
	 			Builder.node("img",{ "src":"images/loading.gif","align":"middle" ,"height":"100","width":"100"},[])
	 		])
 		   ]);
 },
 
 forwardToSessionExpiredPage: function(){
 	window.location.href = "sessionExpired.jsp";
 },
 
 trim: function( str ){
 	if( str == null || str == 'undefined'){
 		return "";
 	}else{
 	 while(str.charAt(0) == (" ") ){
 	   str = str.substring(1);
	 }
	 while(str.charAt(str.length-1) == " " ){
	   str = str.substring(0,str.length-1);
     }
	 return str;
	}
 },
 
 isNumeric: function( sText ){
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;
 
   for (var i = 0; i < sText.length && IsNumber == true; i++){ 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1){
	  	IsNumber = false;
      }
   }
   return IsNumber;
 }

});