if(!window.Owner){
	window.Owner = {

		LBUpload: null,
		LBPlans: null,
		lastStateId: "",
		lastCityId:"",
		enableCheckState: true,

		newComplementData: null,
		complementId: "",
		complementJSON: null,
		complementDetailType: "",
		
		siteTypeJSON: null,
		siteTypeId: "",
		
		newHospitalData: null,
		hospitalId: "",
		hospitalJSON: null,
		
			
		init: function(step){
			switch(step){
				case "summary":
					Consulte.toggleDimmer("dimmerCover", false);
					Consulte.setBackOptions({
						url:window.contextPath+"/owner/data/summary.action",
						hadBanner:true
					});
					if(String.isEmpty($F("owner.approved"))){
						$("txtMessage").innerHTML = Bundle.getMessage("message.owner.is.pending.approval");
						$("saveSuccessMessage").removeClassName("success").addClassName("warning");
						$("saveSuccessMessage").show();
						$("topMessage").show();
					}
				break;

				case "comment":
				case "hospital":
				case "site":
					Consulte.toggleDimmer("dimmerCover", true);
				break;
				
				case "evalPreference":
					Consulte.toggleDimmer("dimmerCover", true);
					this.checkEvaluate(null);
				break;
				
				case "step1":
					Consulte.toggleDimmer("dimmerCover", true);
					if(states && jQuery){
						this.bindCRMState("owner.crmState", states);
						this.checkCRMState();
					}
					
					Event.observe($("owner.fullName"), "blur", this.suggestShortNameUserName.bind(this));
					Event.observe($("owner.zipCode"), "blur", this.validateCep.bind(this));
					Event.observe($("owner.login"), "blur", this.verifyUserName.bind(this));

					if($F("owner.mode") == "new"){
						Event.observe($("owner.cpf"), "blur", this.verifyCPF.bind(this));
						Mask.numberField("owner.cpf", Mask.CPF);

						Event.observe($("owner.crm"), "blur", this.verifyCRM.bind(this));
						Event.observe($("owner.crmState"), "blur", function(){
							this.checkCRMState();
							this.verifyCRM();
						}.bind(this));
					}
					
					// Define Mascara ao campo
					Mask.numberField("owner.birthdate", Mask.DATE);
					Mask.numberField("owner.identityNumber");
					Mask.numberField("owner.crm");
					Mask.numberField("owner.zipCode", Mask.CEP);
					Mask.charNumberField("owner.login");

					// Executa Evento do campo
					try{
						Mask.runEvent = true;
						Consulte.lastValidatedCep = "";
						Consulte.runEvent($("owner.zipCode"), "blur");
					}finally{
						Mask.runEvent = false;
					}
					$("owner.fullName").focus();
				break;

				case "step2":
					Consulte.toggleDimmer("dimmerCover", true);
					this.clearDependedField();
					if(String.isEmpty($F("owner.street")) && states && jQuery){
						this.enableCheckState = true;	
						this.bindState("owner.state", states);
						this.checkState();
					}else{
						this.enableCheckState = false;
					}
					// Define Mascara ao campo
					Mask.numberField("owner.number");
					Mask.numberField("owner.cellPhoneAreaCode", Mask.AREACODE);
					Mask.numberField("owner.cellPhoneNumber", Mask.PHONE);
					Mask.numberField("owner.homePhoneAreaCode", Mask.AREACODE);
					Mask.numberField("owner.homePhoneNumber", Mask.PHONE);
					Mask.numberField("owner.commercialPhoneAreaCode", Mask.AREACODE);
					Mask.numberField("owner.commercialPhoneNumber", Mask.PHONE);
					Mask.numberField("owner.branchPhone");
					// Executa Evento do campo
					try{
						Mask.runEvent = true;
						Consulte.runEvent($("owner.cellPhoneAreaCode"), "keyup");
						Consulte.runEvent($("owner.cellPhoneNumber"), "keyup");
						Consulte.runEvent($("owner.homePhoneAreaCode"), "keyup");
						Consulte.runEvent($("owner.homePhoneNumber"), "keyup");
						Consulte.runEvent($("owner.commercialPhoneAreaCode"), "keyup");
						Consulte.runEvent($("owner.commercialPhoneNumber"), "keyup");
					}finally{
						Mask.runEvent = false;
					}
				break;

				case "step3":
					Consulte.toggleDimmer("dimmerCover", true);
/*				VALIDAÇÃO DE PAGAMENTOS, SUPRIMIDAS NA PRIMEIRA ENTREGA	
					Mask.numberField("owner.creditCardBirthDate", Mask.DATE);
					Mask.numberField("owner.creditCardCpf", Mask.CPF);
					Mask.numberField("owner.creditCardNumber", Mask.CREDITCARD);
					Mask.numberField("owner.creditCardSecurityCode");
					Mask.numberField("owner.creditCardValidityMonth");
					Mask.numberField("owner.creditCardValidityYear");

					// Executa Evento do campo
					try{
						Mask.runEvent = true;
						if(Consulte.isNotEmpty("owner.creditCardCpf")){
							$("owner.creditCardCpf").value = Mask.setMask($F("owner.creditCardCpf"), Mask.CPF);
						}
						if(Consulte.isNotEmpty("owner.creditCardNumber")){
							$("owner.creditCardNumber").value = Mask.setMask($F("owner.creditCardNumber"), Mask.CREDITCARD);
						}
					}finally{
						Mask.runEvent = false;
					}
*/				
				break;
			}
			Consulte.enableGlossary();
		},
		
		commentList:function(saveSuccess){
			var parameters = Form.serialize($("commentFilterForm"), {hash:true});
			new Ajax.Request(contextPath + "/comment/list.action", {
				parameters:parameters,
				onComplete:function(response){
					if(Consulte.hasError(response) == false){
						$("content").innerHTML = response.responseText;
					}
				}
			});
		},
		
		showPlansLB:function(){
			this.LBPlans = new LightBox($("plansLB").value, {title:"Planos de Assinatura disponíveis do PortalConsulte"});
			this.LBPlans.show();
		},		
		
		commentTurn: function(customerId, scheduleId){
			new Ajax.Request(contextPath + "/comment/turn.action", {
				parameters:{customerId:customerId, scheduleId:scheduleId},
				onComplete:function(response){
					if(Consulte.hasError(response) == false){
						$("content").innerHTML = response.responseText;
					}
				}
			});
		},
		
		step1: function(){
			var parameters = Form.serialize($("ownerForm"), {hash:true});

			if($F("owner.step") == "2"){
				parameters = this.clearMask(parameters, "step2");
			}
			
			new Ajax.Updater("content", contextPath + "/owner/data/step1.action", {
				parameters:parameters,
				onComplete:function(response){
					$("owner.login").blur();
				}
			});
		},

		step2: function(){
			var parameters = Form.serialize($("ownerForm"), {hash:true});

			if(($F("owner.step") == "1" && this.validateMandatoryFields("step1")) || 
			   ($F("owner.step") == "3") ){
				if($F("owner.step") == "1") parameters = this.clearMask(parameters, "step1");
				if($F("owner.step") == "3") parameters = this.clearMask(parameters, "step3");
				
				new Ajax.Request(contextPath + "/owner/data/step2.action", {
					parameters:parameters,
					onComplete:function(response){
						if(Consulte.hasError(response) == false){
							$("content").innerHTML = response.responseText;
						}
					}
				});
			}
		},
		
		step3: function(){
			if($F("owner.mode") == "new" && this.validateMandatoryFields("step2")){
				var parameters = Form.serialize($("ownerForm"), {hash:true});
				parameters = this.clearMask(parameters, "step2");
				
				new Ajax.Request(contextPath + "/owner/data/step3.action", {
					parameters:parameters,
					onComplete:function(response){
						if(Consulte.hasError(response) == false){
							$("content").innerHTML = response.responseText;
						}
					}
				});
			}
		},

		save: function(){
			var mode = $F("owner.mode");
			if(mode == "edit" || this.validateMandatoryFields("step3")){
				var parameters = Form.serialize($("ownerForm"), {hash:true});
				parameters = this.clearMask(parameters, "step"+$F("owner.step"));

				new Ajax.Request(contextPath + "/owner/data/save.action", {
					parameters:parameters,
					onComplete:function(response){
						if(Consulte.hasError(response) == false){
							$("content").innerHTML = response.responseText;
							if(mode == "edit"){
								if($("saveSuccessMessage") != null){
									$("saveSuccessMessage").show();
									$("topMessage").show();
								}
							}
						}
					}
				});
				Consulte.toggleDimmer("dimmerCover", false);
			}
		},
		
		saveEdit: function(){
			if(this.validateMandatoryFields("step2")){
				this.save();
			}
		},
		
		cancel: function(){
			if(Consulte.showConfirmMessage(Bundle.getMessage("message.cancel.process"))){
				new Ajax.Request(contextPath + "/owner/data/cancel.action", {
					onComplete:function(response){
						Consulte.toggleDimmer("dimmerCover", false);
						if(Consulte.hasError(response) == false){
							if($F("owner.mode") == "edit"){
								$("content").innerHTML = response.responseText;
							}else{
								location.href = contextPath;
							}
						}
					}
				});
			}
		},
		
		evalPreference: function(){
			var parameters = Form.serialize($("ownerForm"), {hash:true});

			new Ajax.Request(contextPath + "/owner/data/evalPreference.action", {
				parameters:parameters,
				onComplete:function(response){
					if(Consulte.hasError(response) == false){
						$("content").innerHTML = response.responseText;
					}
				}.bind(this)
			});
		},
		
		saveEvalPreference: function(){
			$("owner.publicEvaluationY").disabled = false;
			$("owner.publicEvaluationN").disabled = false;
			var parameters = Form.serialize($("ownerForm"), {hash:true});

			new Ajax.Request(contextPath + "/owner/data/saveEvalPreference.action", {
				parameters:parameters,
				onComplete:function(response){
					if(Consulte.hasError(response) == false){
						$("content").innerHTML = response.responseText;
					}
				}.bind(this)
			});
		},
		
		checkEvaluate: function(flag){
			if(flag == null){
				flag = String($("ownerEvaluate").value) == "true";
			}
			if(flag){
				$("owner.publicEvaluationY").disabled = false;
				$("owner.publicEvaluationN").disabled = false;
			}else{
				$("owner.publicEvaluationN").checked = true;
				$("owner.publicEvaluationY").disabled = true;
				$("owner.publicEvaluationN").disabled = true;
			}
		},
		
		showUploadImage: function(){
			new Ajax.Request(contextPath +"/upload.action", {
				parameters:{namespace:"/owner/data", actionName:"uploadImage", method:"uploadImage"},
				onComplete:function(response){
					if(Consulte.hasError(response) == false){
						this.LBUpload = new LightBox(response.responseText, {
							title:Bundle.getMessage("txt.load.image"),
							position:"scroll"
						});
						this.LBUpload.show();
						Consulte.toggleDimmer("dimmerCover", false);
					}
				}.bind(this)
			});
		},
		
		upload: function(){
			$("returnUpload").innerHTML = "";
			$("frameUpload").contentWindow.document.body.innerHTML = "";
			$("upload").submit();
		},
		
		finishedUpload: function(){
			new Ajax.Request(contextPath + "/owner/data/finishedUpload.action", {
				onComplete:function(response){
					if(Consulte.hasError(response) == false){
						$("content").innerHTML = response.responseText;
					}
				}.bind(this)
			});
			this.LBUpload.hide();
		},
		
		deletePicture: function(){
			var parameters = Form.serialize($("ownerForm"), {hash:true});
			new Ajax.Request(contextPath + "/owner/data/deletePicture.action", {
				parameters:parameters,
				onComplete:function(response){
					if(Consulte.hasError(response) == false){
						$("content").innerHTML = response.responseText;
					}
				}.bind(this)
			});
		},
		
		lattes: function(accountType){
			
			if(accountType != "BSC"){
				new Ajax.Request(contextPath + "/owner/data/lattes.action", {
					onComplete:function(response){
						if(Consulte.hasError(response) == false){
							$("content").innerHTML = response.responseText;
						}
					}.bind(this)
				});
			}
			else
			{
				alert("Funcionalidade disponível apenas para planos Standard e Master");
			}
		},
		
		saveLattes: function(){
			var parameters = Form.serialize($("lattesForm"), {hash:true});
			if($F("owner.lattes") == "http://lattes.cnpq.br/"){
				parameters["owner.lattes"] = null;
			}
			new Ajax.Request(contextPath + "/owner/data/saveLattes.action", {
				parameters:parameters,
				onComplete:function(response){
					if(Consulte.hasError(response) == false){
						$("content").innerHTML = response.responseText;
					}
				}.bind(this)
			});
		},
		
		/* ----- DADOS COMPLEMENTARES ---- */
		/* ------------------------------- */
		complement: function(type, accountType){
			this.toggleMiniMenuSummary(1);
			if(accountType != "BSC"){	
				$("complementType").value = this.complementDetailType = type;
				var parameters = Form.serialize($("ownerForm"), {hash:true});
				new Ajax.Request(contextPath + "/owner/data/complement.action", {
					parameters:parameters,
					onComplete:function(response){
						if(Consulte.hasError(response) == false){
							$("content").innerHTML = response.responseText;
							this.complementJSON = Consulte.getHeaderAsJSON(response, "X-Consulte-Owner-OwnerDetails");
							if(type == "SITE"){
								this.siteTypeJSON = Consulte.getHeaderAsJSON(response, "X-Consulte-Owner-OwnerDetails-SiteType");
							}
						}
					}.bind(this)
				});
			}
			else
			{
				alert("Funcionalidade disponível apenas para planos Standard e Master");
			}
		},
		
		saveComplement: function(){
			if(this.newComplementData != null && !this.confirmComplement()){
				return;
			}
			new Ajax.Request(contextPath + "/owner/data/saveComplement.action", {
				parameters:{
					"refreshOwnerDetails": Object.toJSON({complementType:this.complementDetailType, values:$A(this.complementJSON)})
				},
				onComplete:function(response){
				Consulte.toggleDimmer("dimmerCover", false);
					if(Consulte.hasError(response) == false){
						$("content").innerHTML = response.responseText;
						this.complementJSON = null;
						if($("saveSuccessMessage") != null){
							$("saveSuccessMessage").show();
							$("topMessage").show();
						}
					}
				}
			});
		},
		
		newComplement: function(){
			this.newComplementData = {
				id: new Date().getTime(),
				name: "",
				date: null,
				dateDesc: "",
				month: "",
				year: "",
				institute: "",
				description: "",
				magazine: "",
				url: "",
				"new": true
			};
			$("tr.new.add").hide();
			var html = $("newComplementTemplate").innerHTML.interpolate(this.newComplementData);
			$("newComplementTD").innerHTML = html;
			Mask.numberField($("complementYear_"+this.newComplementData.id));
			this.complementId = this.newComplementData.id;
		},
		
		confirmComplement: function(){
			var id = this.complementId;
			
			if(this.complementJSON == null){
				this.complementJSON = [];
			}

			if(!this.validateComplement()){
				return false;
			}
			// Aplica os valores no objeto principal:
			var obj = this.newComplementData;
			obj.name = $F("complementName_"+id);
			obj.institute = $F("complementInstitute_"+id);

			var year = $F("complementYear_"+id);
			if(String.isNotEmpty(year)){
				var month = parseInt($F("complementMonth_"+id)) + 1;
				obj.date = Date.parse_DDMMYYYY("1"+"/"+month+"/"+year).getTime();
				obj.dateDesc = Bundle.getMessage("txt.month."+(month - 1))+"/"+year;
			}else{
				obj.date = obj.dateDesc = null;
			}

			if(this.complementDetailType == "MAGAZ"){
				obj.magazine = $F("complementMagazine_"+id);
				obj.url = $F("complementURL_"+id);
			}else{
				obj.description = $F("complementDescription_"+id);
			}
			
			var array = $$(".lineMessage");
			if(array.length > 0){
				array.first().hide();
			}
			$("tr.new.add").show();
			
			this.complementJSON.push(obj);
			
			var html = $F("showComplementTemplate").interpolate(obj);
			$("newComplementTR").insert({before:html});
			$("newComplementTD").innerHTML = "";
			this.newComplementData = null;

			return true;
		},
		
		cancelComplement: function(){
			var id = this.complementId;
			$("complement_"+id).remove();
			$("tr.new.add").show();
			this.newComplementData = null;
		},
		
		deleteComplement: function(id){
			$("complement_"+id).remove();
			this._removeComplement(id);
			this.showChangeFormMessage("complement");
		},
		
		_removeComplement: function(id){
			this.complementJSON = this.complementJSON.reject(function(complement){
				if(complement.id == id){
					return true;
					/*
					if(complement["new"]){ // Remove da lista:
						return true;
					}else{ // Continua na lista:
						complement.deleted = true;
					}
					*/
				}
				// Continua na lista:
				return false;
			});
		},

		validateComplement:function(){
			var id = this.complementId;
			var label;
			// Curso
			if(Consulte.isEmpty($("complementName_"+id))){
				if(this.complementDetailType == "MAGAZ"){
					 label = "label.title";
				}else if(this.complementDetailType == "RESID"){
					label = "label.name";
				}else{
					label = "label.course";
				}
				Consulte.showErrorMessage(Bundle.getMessage("message.mandatory.field", label));
				$("complementName_"+id).activate();
				return false;
			}
			
			// Data
			if(this.complementDetailType == "MAGAZ")
				 label = "label.published.date";
			else if(this.complementDetailType == "RESID")
				 label = "label.conclusion.date";
			else label = "label.completed.in";

			if(this.complementDetailType == "MAGAZ" || Consulte.isNotEmpty($("complementMonth_"+id)) || $F("complementYear_"+id).length > 0){
				if(Consulte.isEmpty($("complementMonth_"+id))){
					Consulte.showErrorMessage(Bundle.getMessage("message.mandatory.field", label));
					$("complementMonth_"+id).activate();
					return false;
				}
				if(Consulte.isEmpty($("complementYear_"+id))){
					Consulte.showErrorMessage(Bundle.getMessage("message.mandatory.field", label));
					$("complementYear_"+id).activate();
					return false;
				}

				if($F("complementYear_"+id).length < 4){
					Consulte.showErrorMessage(Bundle.getMessage("message.invalid.format.field", label));
					$("complementYear_"+id).activate();
					return false;
				}
				if($F("complementYear_"+id) > new Date().getUTCFullYear()){
					Consulte.showErrorMessage(Bundle.getMessage("message.year.less.current"));
					$("complementYear_"+id).activate();
					return false;
				}
			}
			
			// Institute
			if(this.complementDetailType != "MAGAZ"){
				if(Consulte.isEmpty($("complementInstitute_"+id))){
					Consulte.showErrorMessage(Bundle.getMessage("message.mandatory.field", "label.company"));
					$("complementInstitute_"+id).activate();
					return false;
				}
			}
			
			return true;
		},
		
		/* ----- DADOS HOSPITAIS ---- */
		/* ------------------------------- */
		hospital: function(accountType){
			
			this.toggleMiniMenuSummary(1);
			var parameters = Form.serialize($("ownerForm"), {hash:true});
			
			if(accountType != "BSC"){
				new Ajax.Request(contextPath + "/owner/data/hospital.action", {
					parameters:parameters,
					onComplete:function(response){
						if(Consulte.hasError(response) == false){
							$("content").innerHTML = response.responseText;
							this.hospitalJSON = Consulte.getHeaderAsJSON(response, "X-Consulte-Owner-Hospitals");
						}
					}.bind(this)
				});
			}
			else
			{
				alert("Funcionalidade disponível apenas para planos Standard e Master");
			}
		},
		
		saveHospital: function(){
			if(this.newHospitalData != null && !this.confirmHospital()){
				return;
			}
			
			new Ajax.Request(contextPath + "/owner/data/saveHospital.action", {
				parameters:{
					"refreshOwnerHospitals": Object.toJSON({values:$A(this.hospitalJSON)})
				},
				onComplete:function(response){
				Consulte.toggleDimmer("dimmerCover", false);
					if(Consulte.hasError(response) == false){
						$("content").innerHTML = response.responseText;
						this.hospitalJSON = null;
						if($("saveSuccessMessage") != null){
							$("saveSuccessMessage").show();
							$("topMessage").show();
						}
					}
				}
			});
		},
		
		newHospital: function(){
			this.newHospitalData = {
				id: null,
				name: "",
				"new": true
			};
			var html = $F("newHospitalTemplate").interpolate(this.newHospitalData);
			$("newHospitalTD").innerHTML = html;
			
			if(states && jQuery){
				this.bindHospitalState("hospitalState", states);
				//this.checkHospitalState();
			}
			$("tr.new.add").hide();
		},
		
		confirmHospital: function(){
			var id = this.hospitalId;
			
			if(this.hospitalJSON == null){
				this.hospitalJSON = [];
			}

			if(!this.validateHospital()){
				return false;
			}

			var obj = this.newHospitalData;
			obj.id = id;
			obj.name = $F("hospitalName");
			this.hospitalJSON.push(obj);
			
			var html = $F("showHospitalTemplate").interpolate(obj);
			$("newHospitalTR").insert({before:html});
			
			var array = $$(".lineMessage");
			if(array.length > 0){
				array.first().hide();
			}
			$("tr.new.add").show();
			
			$("newHospitalTD").innerHTML = "";
			this.newHospitalData = null;
			this.showChangeFormMessage("hospital");
			return true;
		},
		
		cancelHospital: function(){
			$("newHospital").remove();
			$("tr.new.add").show();
			this.newHospitalData = null;
			
		},
		
		deleteHospital: function(id){
			$("hospital_"+id).remove();
			this._removeHospital(id);
			this.showChangeFormMessage("hospital");
		},
		
		_removeHospital: function(id){
			this.hospitalJSON = this.hospitalJSON.reject(function(hospital){
				if(hospital.id == id){
					return true;
					/*
					if(hospital["new"]){ // Remove da lista:
						return true;
					}else{ // Continua na lista:
						hospital.deleted = true;
					}
					*/
				}
				// Continua na lista:
				return false;
			});
		},

		validateHospital:function(){
			var hospitalState = $("hospitalState");
			var hospitalCity = $("hospitalCity");
			var hospitalName = $("hospitalName");

			// Estado
			jQuery(hospitalState).search();
			if(String.isEmpty($F("hospitalState"))){
				Consulte.showErrorMessage(Bundle.getMessage("message.mandatory.field", "label.state"));
				hospitalState.activate();
				return false;
			}

			jQuery(hospitalCity).search();
			if(String.isEmpty($F("hospitalCity"))){
				Consulte.showErrorMessage(Bundle.getMessage("message.mandatory.field", "label.city"));
				hospitalCity.activate();
				return false;
			}

			// Nome do Hospital
			if(Consulte.isEmpty(hospitalName)){
				Consulte.showErrorMessage(Bundle.getMessage("message.mandatory.field", "label.hospital.name"));
				hospitalName.activate();
				return false;
			}

			jQuery(hospitalName).search();
			if(this.hospitalId == null){
				Consulte.showErrorMessage(Bundle.getMessage("message.hospital.not.registered"));
				hospitalName.activate();
				return false;
			}
			
			// Verifica se ja nao existe o hospital selecionado na lista
			if($("hospital_"+this.hospitalId) != null){
				Consulte.showErrorMessage(Bundle.getMessage("message.exist.hospital.selected"));
				hospitalName.activate();
				return false;
			}
			
			return true;
		},
        
		bindHospitalState: function(field, data){
    		Consulte.bindAutocomplete({
    			field: field,
    			id: field+"Id",
    			itemProperty: "abbreviation",
    			resultProperty: "abbreviation",
    			width: 200,
    			data: data,
    			itemProperty: function(state){
    				return state.name + " ("+state.abbreviation+")";
    			},
    			onSelect: function(item){
    				$("hospitalCity").readOnly = false;
    				$("hospitalCity").removeClassName("disableColor");
    				$("hospitalCity").value = "";
					this.listHospitalCities(item.id);
    			}.bind(this),
    			onClear: function(){
    				$("hospitalCity").readOnly = true;
    				$("hospitalCity").addClassName("disableColor");
    				Consulte.bindAutocomplete({
    					field: "hospitalCity",
    					clearedText: Bundle.getMessage("txt.select.state"),
    					onlyRemove: true, clearValue:true
    				});

    				$("hospitalName").readOnly = true;
    				$("hospitalName").addClassName("disableColor");
    				Consulte.bindAutocomplete({
    					field: "hospitalName",
    					clearedText: Bundle.getMessage("txt.select.city"),
    					onlyRemove: true, clearValue:true
    				});
    				
    			}.bind(this)
    		});        
		},
        
		bindHospitalCity:function(field, data){
	   		Consulte.bindAutocomplete({
    			field: field,
    			id: field+"Id",
    			data: data,
    			onSelect: function(item){
	   				this.listHospital(item.id);
    			}.bind(this),
    			onClear: function(){
    				Consulte.bindAutocomplete({
    					field: "hospitalName",
    					clearedText: Bundle.getMessage("txt.select.city"),
    					onlyRemove: true, clearValue:true
    				});
    			}.bind(this)
    		});        
		},

		bindHospital:function(field, data){
	   		Consulte.bindAutocomplete({
    			field: field,
    			id: field+"Id",
    			data: data,
    			onSelect: function(item){
	   				Object.extend(this.newHospitalData, item||{});
           			this.hospitalId = this.newHospitalData.id = item.id;
    			}.bind(this),
    			onClear: function(){
    				this.hospitalId = null;
    			}.bind(this)
    		});        
		},
		
		listHospitalStates:function(){
			jQuery($("hospitalState")).showAll();
		},
		
		listHospitals:function(){
			jQuery($("hospitalName")).showAll();
		},
		
		listHospitalCities:function(state){
            new Ajax.Request(window.contextPath + "/cities.generatedJS", {
                parameters: { stateId: state },
                onComplete: function(response) {
                    eval(response.responseText);
                    if(typeof(cities) != "undefined"){
                        this.bindHospitalCity("hospitalCity", cities);
                    }
                }.bind(this)
            });
		},

		listHospital:function(city){
            new Ajax.Request(window.contextPath + "/hospitals.generatedJS", {
                parameters: { cityId: city },
                onComplete: function(response) {
                    eval(response.responseText);
                    if(typeof(hospitals) != "undefined"){
                    	if(hospitals != null && hospitals.length > 0){
                    		this.bindHospital("hospitalName", hospitals);
        					$("hospitalName").readOnly = false;
        					$("hospitalName").removeClassName("disableColor");
        					$("hospitalName").value = "";
                    	}else{
                    		Consulte.showErrorMessage(Bundle.getMessage("message.error.no.hospitals"));
                    	}
                    }
                }.bind(this)
            });
		},
		/* ------------------------------- */
		
		/* ----- DADOS SITES ---- */
		/* ------------------------------- */
		saveSite: function(){
			if(this.newComplementData != null && !this.confirmSite()){
				return;
			}
			
			new Ajax.Request(contextPath + "/owner/data/saveComplement.action", {
				parameters:{
					"refreshOwnerSites": Object.toJSON({complementType:this.complementDetailType, values:$A(this.complementJSON)})
				},
				onComplete:function(response){
				Consulte.toggleDimmer("dimmerCover", false);
					if(Consulte.hasError(response) == false){
						$("content").innerHTML = response.responseText;
						this.complementJSON = null;
						if($("saveSuccessMessage") != null){
							$("saveSuccessMessage").show();
							$("topMessage").show();
						}
					}
				}
			});
		},
		
		newSite: function(){
			this.newComplementData = {
				id: null,
				name: "",
				url: "",
				"new": true
			};
			var html = $F("newSiteTemplate").interpolate(this.newComplementData);
			$("newSiteTD").innerHTML = html;
			
			if(this.siteTypeJSON && jQuery){
				this.bindSiteType("siteType", this.siteTypeJSON);
			}
			$("tr.new.add").hide();
		},
		
		confirmSite: function(){
			if(this.complementJSON == null){
				this.complementJSON = [];
			}

			if(!this.validateSite()){
				return false;
			}

			var obj = this.newComplementData;
			obj.siteTypeId = this.siteTypeId;
			obj.name = $F("siteType");
			obj.url = $F("siteURL");
			this.complementJSON.push(obj);
			
			var html = $F("showSiteTemplate").interpolate(obj);
			$("newSiteTR").insert({before:html});
			
			var array = $$(".lineMessage");
			if(array.length > 0){
				array.first().hide();
			}
			$("tr.new.add").show();
			
			$("newSiteTD").innerHTML = "";
			this.newComplementData = null;
			this.showChangeFormMessage("site");
			return true;
		},
		
		cancelSite: function(){
			$("newSite").remove();
			$("tr.new.add").show();
			this.newComplementData = null;
			
		},
		
		deleteSite: function(id){
			$("site_"+id).remove();
			this._removeSite(id);
			this.showChangeFormMessage("site");
		},
		
		_removeSite: function(id){
			this.complementJSON = this.complementJSON.reject(function(site){
				if(site.id == id){
					return true;
				}
				// Continua na lista:
				return false;
			});
		},

		validateSite:function(){
			var siteType = $("siteType");
			var siteURL = $("siteURL");

			// Tipo
			jQuery(siteType).search();
			if(String.isEmpty($F("siteType"))){
				Consulte.showErrorMessage(Bundle.getMessage("message.mandatory.field", "label.type"));
				siteType.activate();
				return false;
			}

			// Nome do Site
			if(Consulte.isEmpty(siteURL) || siteURL.value == "http://"){
				Consulte.showErrorMessage(Bundle.getMessage("message.mandatory.field", "label.url"));
				siteURL.activate();
				return false;
			}

			if(this.siteTypeId == null){
				Consulte.showErrorMessage(Bundle.getMessage("message.site.not.registered"));
				siteURL.activate();
				return false;
			}
			
			// Verifica se ja nao existe o site selecionado na lista
			if($("site_"+this.siteId) != null){
				Consulte.showErrorMessage(Bundle.getMessage("message.exist.site.selected"));
				siteURL.activate();
				return false;
			}
			
			return true;
		},
        
		bindSiteType: function(field, data){
    		Consulte.bindAutocomplete({
    			field: field,
    			id: field+"Id",
    			width: 100,
    			data: data,
    			
    			onSelect: function(item){
	   				//Object.extend(this.newComplementData, item||{});
	       			this.siteTypeId = item.id;
				}.bind(this),
				
				onClear: function(){
					this.siteTypeId = null;
				}.bind(this),
    			
    			itemProperty: function(type){
    				return type.name;
    			}
    		});        
		},
        
		listSiteTypes:function(){
			jQuery($("siteType")).showAll();
		},
		/* ------------------------------- */
		
		showChangeFormMessage: function(type){
			Consulte.showInfoMessage(Bundle.getMessage("message.data.no.save"), type+"TableMessage", type+"TxtMessage");
		},
		
		logon: function(){
			Processing.show(true);
			$("ownerForm").action = window.contextPath + "/login.action";
			$("ownerForm").submit();
		},
		
		validateMandatoryFields:function(step){
			try{
				switch(step){
					case "step1":
						Consulte.mandatory("owner.fullName", "label.full.name");
						Consulte.mandatory("owner.shortName", "label.short.name");
						
						//Valida Sexo
						var anyChecked = false;
						$("content").select("input[name='owner.gender.abbreviation']").each(function(obj){
							if(obj.checked){
								anyChecked = true;
								throw $break;
							}
						});
						if(!anyChecked){
							Consulte.showInfoMessage(Bundle.getMessage("message.mandatory.info"));
							Consulte.showErrorMessage(Bundle.getMessage("message.mandatory.field", "label.gender"));
							throw Consulte.$error;
						}

						//Valida Dt Nascimento
						var birthdate = Date.parse_DDMMYYYY($F("owner.birthdate"));
						if(birthdate != null && birthdate.getTime() >= (new Date().getTime())){
							Consulte.showErrorMessage(Bundle.getMessage("message.invalid.field", "label.birthdate"));
							throw Consulte.$error;
						}

						if($F("owner.mode") == "new"){
							//Valida CPF
							Consulte.mandatory("owner.cpf", "label.cpf");
							Consulte.validateCPF("owner.cpf");
							this.verifyCPF(false);
							var returnCPF = $("returnCPF");
							if(returnCPF.childNodes != null && 
							   returnCPF.childNodes.length > 0 && 
							   returnCPF.childNodes[0].nodeValue != ""){
								Consulte.showErrorMessage(Bundle.getMessage("message.exist.cpf", "txt.profile.owner"));
								throw Consulte.$error;
							}

							// Valida CRM:
							Consulte.mandatory("owner.crm", "label.crm.uf");
							Consulte.mandatory("owner.crmState", "label.crm.uf");
							this.verifyCRM(false);
							var returnCRM = $("returnCRM");
							if(returnCRM.childNodes != null && 
							   returnCRM.childNodes.length > 0 && 
							   returnCRM.childNodes[0].nodeValue != ""){
								Consulte.showErrorMessage(Bundle.getMessage("message.owner.crm.exists"));
								throw Consulte.$error;
							}
						}

						//Valida Especialidades
						var specialities = $H();
						anyChecked = false;
						var countChecked = 0;
						$("content").select("input[name=owner.selectedSpecialityIds]").each(function(item){
							specialities.set(item.value, item.checked);
							if(item.checked){
								anyChecked = true;
								countChecked++;
								if(countChecked>2)
									throw $break;
							}
						});
						if(countChecked > 2){
							Consulte.showErrorMessage(Bundle.getMessage("message.owner.two.speciality.actionarea", "label.speciality.plural"));
							throw Consulte.$error;
						}

						//Valida Especialidades em andamento:
						$("content").select("input[name=owner.selectedUnconcludedSpecialityIds]").each(function(item){
							if(item.checked){
								if(specialities.get(item.value) == true){
									Consulte.showErrorMessage(Bundle.getMessage("message.same.speciality.selected"));
									throw Consulte.$error;
								}
							}
						});
						
						//Valida área de atuação
						anyChecked = false;
						countChecked = 0;
						$("content").select("input[name=owner.selectedActionAreaIds]").each(function(item){
							if(item.checked){
								countChecked++;
								if(countChecked>2)
									throw $break;
							}
						});
						if(countChecked > 2){
							Consulte.showInfoMessage(Bundle.getMessage("message.mandatory.info"));
							Consulte.showErrorMessage(Bundle.getMessage("message.owner.two.speciality.actionarea", "label.area.of.action.plural"));
							throw Consulte.$error;
						}
						countChecked = 0;
						
						//Valida o CEP
						Consulte.mandatory("owner.zipCode", "label.cep");
						this.validateCep(false);
						
						//Valida userName
						Consulte.mandatory("owner.login", "label.user.name");
						Consulte.validateLogin("owner.login");
						this.verifyUserName(false);
						if($("returnUserName").childNodes != null && $("returnUserName").childNodes.length > 0 && $("returnUserName").childNodes[0].nodeValue != ""){
							Consulte.showErrorMessage(Bundle.getMessage("message.exist.username"));
							throw Consulte.$error;
						}
						
						//Valida Senha
						if($F("owner.mode") == "new"){
							Consulte.mandatory("owner.password", "label.password");
							Consulte.mandatory("owner.confirm", "label.confirm.password");
							Consulte.validatePassword("owner.password", "owner.confirm", {valuesAgainst:[$F("owner.birthdate"), $F("owner.identityNumber"), $F("owner.cpf")], clearMask:true});
						}
						
						//Valida a opção de avançar mantendo o cep informado
						if(!Consulte.userWantedToKeepInvalidCep("owner.invalidCepDiv", "owner.keepInvalidCep")){
							Consulte.showInfoMessage(Bundle.getMessage("message.cep.do.something"));
							throw Consulte.$error;
						}
					break;

					case "step2":
						//Valida Estado
						Consulte.mandatory("owner.state", "label.state");
						if($("owner.stateId").value == "" || $("owner.stateId").value == "0"){
							Consulte.showErrorMessage(Bundle.getMessage("message.invalid.field", Bundle.getMessage("label.state")));
							$("owner.state").activate();
							throw Consulte.$error;
						}
						
						//Valida Cidade
						Consulte.mandatory("owner.city", "label.city");
						if($("owner.cityId").value == "" || $("owner.cityId").value == "0"){
							Consulte.showErrorMessage(Bundle.getMessage("message.invalid.field", Bundle.getMessage("label.city")));
							$("owner.city").activate();
							throw Consulte.$error;
						}
						
						Consulte.mandatory("owner.neighborhood", "label.neighborhood");
						Consulte.mandatory("owner.street", "label.street");
						Consulte.mandatory("owner.number", "label.number");

						//Valida Telefones
						var found = false;
						var isCell = false;
						var codes   = ["owner.cellPhoneAreaCode", "owner.homePhoneAreaCode", "owner.commercialPhoneAreaCode"],
						    numbers = ["owner.cellPhoneNumber", "owner.homePhoneNumber", "owner.commercialPhoneNumber"],
						    labels  = ["label.cell.phone", "label.home.phone", "label.commercial.phone"];

						for(var phoneIndex=0, length=codes.length; phoneIndex < length; phoneIndex++){
							var areaCode = $(codes[phoneIndex]), 
								number = $(numbers[phoneIndex]);

							if(Consulte.isNotEmpty(areaCode) || Consulte.isNotEmpty(number)){
								var c = Mask.clear(areaCode.value).strip(), 
									n = Mask.clear(number.value).strip();
								if(c.length != 2){
									Consulte.showErrorMessage(Bundle.getMessage("message.invalid.field", labels[phoneIndex]));
									areaCode.activate();
									throw Consulte.$error;
								}
								if(n.length < 8){
									Consulte.showErrorMessage(Bundle.getMessage("message.invalid.field", labels[phoneIndex]));
									number.activate();
									throw Consulte.$error;
								}
								found = true;
								if(phoneIndex == 0)
									isCell = true;
							}
						}
						
						if(!found){
							Consulte.showErrorMessage(Bundle.getMessage("message.no.phone"));
							$("owner.cellPhoneAreaCode").activate();
							throw Consulte.$error;
						}
						
						// Verifica se é um numero valido de celular
						if(!String.isEmpty($F("owner.cellPhoneNumber"))){
							var digit = $F("owner.cellPhoneNumber").substr(0, 1);
							if(digit < 6 && !Consulte.showConfirmMessage(Bundle.getMessage("message.invalid.cellPhone"))){
								$("owner.cellPhoneNumber").activate();
								throw Consulte.$error;
							}
						}

						//Valida email
						Consulte.mandatory("owner.email", "label.email");
						Consulte.validateEmail("owner.email", "label.email");
						
						if(found && !isCell)
							if(!confirm(Bundle.getMessage("message.no.cellphone")))
							throw Consulte.$error;
					break;
					
					case "step3":
						//Valida Plano
						anyChecked = false;
						$("content").select("input[name=owner.accountType.abbreviation]").each(function(item){
							if(item.checked){
								anyChecked = true;
								throw $break;
							}
						});
						if(!anyChecked){
							Consulte.showInfoMessage(Bundle.getMessage("message.mandatory.info"));
							Consulte.showErrorMessage(Bundle.getMessage("message.mandatory.field", "label.account.type"));
							throw Consulte.$error;
						}
						
/*					VALIDAÇÃO REMOVIDA NE PRIMEIRA VERSÃO
						//Valida Duracao Plano
						anyChecked = false;
						$("content").select("input[name=owner.payment.duration]").each(function(item){
							if(item.checked){
								anyChecked = true;
								throw $break;
							}
						});
						if(!anyChecked){
							Consulte.showInfoMessage(Bundle.getMessage("message.mandatory.info"));
							Consulte.showErrorMessage(Bundle.getMessage("message.mandatory.field", "label.account.duration"));
							throw Consulte.$error;
						}

						
						//Valida Cartão de Crédito
						anyChecked = false;
						$("content").select("input[name=owner.payment.creditCardFlag.abbreviation]").each(function(item){
							if(item.checked){
								anyChecked = true;
								throw $break;
							}
						});
						if(!anyChecked){
							Consulte.showInfoMessage(Bundle.getMessage("message.mandatory.info"));
							Consulte.showErrorMessage(Bundle.getMessage("message.mandatory.field", "label.credit.card"));
							throw Consulte.$error;
						}

						Consulte.mandatory("owner.creditCardFullName", "label.credit.card.full.name");
						
						//Valida Dt Nascimento
						Consulte.mandatory("owner.creditCardBirthDate", "label.credit.card.birthdate");
						if(Date.parse_DDMMYYYY($F("owner.creditCardBirthDate")) == null){
							Consulte.showErrorMessage(Bundle.getMessage("message.invalid.field", "label.credit.card.birthdate"));
							throw Consulte.$error;
						}
						
						Consulte.mandatory("owner.creditCardCpf", "label.credit.card.cpf");
						Consulte.validateCPF("owner.creditCardCpf");
						Consulte.mandatory("owner.creditCardNumber", "label.credit.card.number");
						Consulte.mandatory("owner.creditCardSecurityCode", "label.credit.card.security.code");
						Consulte.mandatory("owner.creditCardValidityMonth", "label.credit.card.validity");
						Consulte.mandatory("owner.creditCardValidityYear", "label.credit.card.validity");
						
						//Valida Dt Validade Cartao
						var year = new Date().getFullYear();
						var month = new Date().getMonth();
						month = month.toPaddedString(2);
						var current = year+""+ month;
						var validity = "01/"+$F("owner.creditCardValidityMonth")+"/"+$F("owner.creditCardValidityYear");
						if(Date.parse_DDMMYYYY(validity) == null){
							Consulte.showErrorMessage(Bundle.getMessage("message.invalid.field", "label.credit.card.validity"));
							throw Consulte.$error;
						}
						validity = $F("owner.creditCardValidityYear")+$F("owner.creditCardValidityMonth");
						if(validity < current){
							Consulte.showErrorMessage(Bundle.getMessage("message.expired.credit.card.validity"));
							throw Consulte.$error;
						}
*/
					break;
				}
				return true;
			}catch(e){
				if(e != Consulte.$error) throw e;
				return false;
			}
		},

		verifyCRM: function(async, callback){
			var crm = $F("owner.crm"), crmStateId = $F("owner.crmStateId");
			if(String.isNotEmpty(crm) && String.isNotEmpty(crmStateId) && !isNaN(crmStateId)){
				Consulte.processingField("owner.crm", "returnCRM", "validateCRM.action", {crm:crm, crmStateId:crmStateId}, async, callback);
			}
		},

		verifyUserName: function(async, callback){
			var userId = (Consulte.isEmpty("owner.id")) ? null : $F("owner.id");
			Consulte.processingField("owner.login", "returnUserName", "validateUserName.action", {login:$F("owner.login"), userId:userId}, async, callback);
		},
		
		verifyCPF:function(async){
			Consulte.processingField("owner.cpf", "returnCPF", "validateCPF.action", {cpf:Mask.clear($F("owner.cpf")), userType:"owner"}, async);
		},
		
		validateCep: function(async){
			Consulte.validateCep($F("owner.zipCode"), "owner.keepInvalidCep", "owner.invalidCepDiv", async);
		},

		suggestShortNameUserName: function(){
			Consulte.suggestShortNameUserName("owner.fullName", "owner.shortName", "owner.login", "returnUserName", this.verifyUserName.bind(this));
		},
		
		clearMask:function(parameters, step){
			switch(step){
				case "step1":
					parameters["owner.cpf"] = Mask.clear(parameters["owner.cpf"]);
					parameters["owner.address.zipCode"] = Mask.clear(parameters["owner.address.zipCode"]);
					// Se o usuário não marcou o checkbox de "especialidades em andamento", limpa campos para garantir:
					if($("unconcluded.specialities.checkbox").checked == false){
						parameters["owner.selectedUnconcludedSpecialityIds"] = "";
					}
				break;
				case "step2":
					parameters["owner.phoneNumbers.phone1.areaCode"] = Mask.clear(parameters["owner.phoneNumbers.phone1.areaCode"]);
					parameters["owner.phoneNumbers.phone1.number"] = Mask.clear(parameters["owner.phoneNumbers.phone1.number"]);
					parameters["owner.phoneNumbers.phone2.areaCode"] = Mask.clear(parameters["owner.phoneNumbers.phone2.areaCode"]);
					parameters["owner.phoneNumbers.phone2.number"] = Mask.clear(parameters["owner.phoneNumbers.phone2.number"]);
					parameters["owner.phoneNumbers.phone3.areaCode"] = Mask.clear(parameters["owner.phoneNumbers.phone3.areaCode"]);
					parameters["owner.phoneNumbers.phone3.number"] = Mask.clear(parameters["owner.phoneNumbers.phone3.number"]);
				break;
				
				case "step3":
/*				VALIDAÇÃO DE PAGAMENTOS, SUPRIMIDAS NA PRIMEIRA ENTREGA			
					parameters["owner.payment.creditCardCpf"] = Mask.clear(parameters["owner.payment.creditCardCpf"]);
					parameters["owner.payment.creditCardNumber"] = Mask.clear(parameters["owner.payment.creditCardNumber"]);
*/					
				break;
			}
			return parameters;
		},

		toggleUnconcludedSpecialities: function(event){
			var checkbox = $("unconcluded.specialities.checkbox");
			var content = $("unconcluded.specialities.content");
			var label = $("unconcluded.specialities.label");

			if(event == null || Event.element(event) != checkbox){
				checkbox.checked=!checkbox.checked;
			}

			if(!checkbox.checked){
				content.hide();
				content.setStyle("background-color:white");
				label.setStyle("background-color:white");
			}else{
				content.show();
				content.setStyle("background-color:#efefef");
				label.setStyle("background-color:#efefef");
			}
		},
		
		toggleMiniMenuSummary: function(menu){
			var obj = $("minimenu"+menu);
			if(obj.visible())
				 obj.hide();
			else obj.show();
		},
		
		getContentEmail: function(){
			
		},
		
		checkCRMState: function() {
			jQuery($("owner.crmState")).search();
		},
		
    	checkState: function() {
			if(this.enableCheckState){
				var state = $("owner.state");
				var city = $("owner.city");
	
				jQuery(state).search();
				if (state.value == "") {
					city.readOnly = true;
					city.addClassName("disableColor");
					city.value = Bundle.getMessage("txt.select.state");
				} else {
					city.readOnly = false;
					city.removeClassName("disableColor");
					
					if(city.value == Bundle.getMessage("txt.select.state"))
						city.value = "";
						
					city.activate();
				}
				this.checkCity();
			}
        },

        checkCity: function(){
			if(this.enableCheckState){
				var city = $("owner.city");
				var neighborhood = $("owner.neighborhood");
				var address = $("owner.street");
				var number = $("owner.number");
				var complement = $("owner.complement");
	
				jQuery(city).search();
				if(city.value == "" || city.value == Bundle.getMessage("txt.select.state")){
					neighborhood.readOnly = true;
					neighborhood.addClassName("disableColor");
					neighborhood.value = Bundle.getMessage("txt.select.city");
					
					address.readOnly = true;
					address.addClassName("disableColor");
					address.value = Bundle.getMessage("txt.select.city");
					
					complement.readOnly = true;
					complement.addClassName("disableColor");
					complement.value = Bundle.getMessage("txt.select.city");
					
					number.readOnly = true;
					number.addClassName("disableColor");
					number.value = Bundle.getMessage("txt.select.city");
				}else{
					neighborhood.readOnly = false;
					neighborhood.removeClassName("disableColor");
					if(neighborhood.value == Bundle.getMessage("txt.select.city")) neighborhood.value="";
					
					address.readOnly = false;
					address.removeClassName("disableColor");
					if(address.value == Bundle.getMessage("txt.select.city")) address.value="";
					
					complement.readOnly = false;
					complement.removeClassName("disableColor");
					if(complement.value == Bundle.getMessage("txt.select.city")) complement.value="";
					
					number.readOnly = false;
					number.removeClassName("disableColor");
					if(number.value == Bundle.getMessage("txt.select.city")) number.value="";
					
					neighborhood.activate();
				}
			}
        },

		clearDependedField:function(){	
			if($("owner.city").value == Bundle.getMessage("txt.select.state"))
            	$("owner.city").value = "";

			if($("owner.neighborhood").value == Bundle.getMessage("txt.select.city"))
            	$("owner.neighborhood").value = "";

			if($("owner.street").value == Bundle.getMessage("txt.select.city"))
            	$("owner.street").value = "";

			if($("owner.number").value == Bundle.getMessage("txt.select.city"))
            	$("owner.number").value = "";

			if($("owner.complement").value == Bundle.getMessage("txt.select.city"))
            	$("owner.complement").value = "";

		},
		
		bindCRMState: function(field, data){
			jQuery($(field)).autocomplete(data, {
				minChars: 0,
				delay: 100,
				width: 250,
				max:data.length,
				selectFirst: false,
				matchContains: true,
				autoFill: false,
				formatItem: function(row, i, max) {
					return row.name +" ("+ row.abbreviation +")";
				},
				formatMatch: function(row, i, max) {
					return row.name.replaceSpecialChars() +" "+ row.name + " " + row.abbreviation;
				},
				formatResult: function(row) {
					return row.abbreviation;
				}
			}).result(function(event, item){
				var id = (item != null) ? item.id : "";
				$("owner.crmStateId").value = id;
			}.bind(this));
		},

		bindState:function(field, data){
			jQuery($(field)).autocomplete(data, {
				minChars: 0,
				delay: 100,
				width: 250,
				max:data.length,
				selectFirst: false,
				matchContains: true,
				autoFill: false,
				formatItem: function(row, i, max) {
					return row.name +" ("+ row.abbreviation +")";
				},
				formatMatch: function(row, i, max) {
					return row.name.replaceSpecialChars() +" "+ row.name + " " + row.abbreviation;
				},
				formatResult: function(row) {
					return row.abbreviation;
				}
			}).result(function(event, item){
				var id = (item != null) ? item.id : "";
				if(this.lastStateId != id){
					var city = $("owner.city");
					jQuery(city).unautocomplete();
					city.value = "";
					city.readOnly = true;
					if(item != null){
						this.listCities(item.id);
						$("owner.city").readOnly = false;
					}
					this.lastStateId = id;
					$("owner.stateId").value = id;
				}
			}.bind(this));
		},

		bindCity:function(field, data){
            jQuery($(field)).autocomplete(data, {
                minChars: 3,
                delay: 500,
                width: 250,
                max: data.length,
                selectFirst: false,
                matchContains: true,
                autoFill: false,
                formatItem: function(row, i, max) {
                    return row.name;
                },
                formatMatch: function(row, i, max) {
                    return row.name.replaceSpecialChars() + " " + row.name;
                },
                formatResult: function(row) {
                    return row.name;
                }
            }).result(function(event, item){
            	var id = (item != null) ? item.id : "";
            	$("owner.cityId").value = id;
            });
		},

		listCRMStates:function(){
			jQuery($("owner.crmState")).showAll();
		},
		
		listStates:function(){
			jQuery($("owner.state")).showAll();
		},
		
		setCheckedValue:function (radioObj, newValue) {
			if(!radioObj)
				return;				
			var radioLength = radioObj.length;			
			if(radioLength == undefined) {
				radioObj.checked = (radioObj.value == newValue.toString());
				return;
			}			
			for(var i = 0; i < radioLength; i++) {
				radioObj[i].checked = false;
				if(radioObj[i].value == newValue.toString()) {
					radioObj[i].checked = true;
				}
			}
		},
		
		listCities:function(state){
            new Ajax.Request(window.contextPath + "/cities.generatedJS", {
                parameters: { stateId: state },
                onComplete: function(response) {
                    eval(response.responseText);
                    if(typeof(cities) != "undefined"){
                        this.bindCity("owner.city", cities);
                    }
                }.bind(this)
            });
		}
		
		
	};
}
