if (!window.SearchOwner) {

	window.SearchOwner = {

		LBEvaluate: null,
    	isCitiesAutocomplete: false,
    	initialPage: true,
    	lastStateId: "",
    	maps: [],

		init: function(initialPage, search) {
			this.initialPage = (String(initialPage).toLowerCase() == "true");
			var filter_advanced_id = String($F("filter.advanced.id")).toLowerCase();
			var basicSearch = (filter_advanced_id == "undefined" || filter_advanced_id != "true");
			this.loadAutoComplete();			
			if (!this.initialPage) {
				this.controlForm = new ControlForm(document.ownerForm, this.showInvalidFilterMessage.bind(this));
				this.controlForm.initialize();
				Consulte.setBackOptions({ url:window.contextPath + "/owner/body.action", hadBanner:true });
				this.hideOwnerFilter();
				if (basicSearch) {
					this.advancedFilter(this.initialPage);
				}
				this.checkState();
				this.checkCity();
				if(search)
					this.doList(true);
			} else {
				this.checkState();
			}

			Consulte.clearPrompt();
		},

    	initPrint: function(){
			$$("div[id^=minimap_]").each(function(element){
				element.setStyle({width:"450px", height:"350px", border:"1px solid #c0c0c0"});
				this.maps.push(new GoogleMaps(element.getAttribute("address"), element, {control:false, useLightBox:false}));
			}.bind(this));
			GoogleMaps.unload();
		},

        doList: function(resetPageIndex) {
			this.clearDependedField();

			if(resetPageIndex){
        		$("filter.pageIndex").value = 1;
        	}

        	var parameters = Form.serialize(document.ownerForm, {hash:true});
        	parameters["filter.search"] = "true";
        	new Ajax.Request(window.contextPath + "/owner/list.action", {
            	parameters: parameters,
                onComplete: function(response, reply) {
                	if (!Consulte.hasError(response)) {
                        $("searchResults").innerHTML = response.responseText.strip();
                        this.controlForm.search();
                        $('formModified').innerHTML = "";
                        Consulte.setBackURL(window.contextPath + "/owner/body.action");
                	}
                	
                }.bind(this)
            });
        	
        	this.checkState();
			this.checkCity();
			this.controlForm.initFormActual();
			$("ownerForm").focusFirstElement();
        },

        doValidate: function() {
        	var isValid = false;
			
			this.clearDependedField();
			
			$('ownerForm').getInputs('text').each(function(element) {
                if (element.value != '' || $('filter.gender').value != '') {
					isValid = true;
                    throw $break;
                }
            });
            if (isValid) {
            	if (!this.initialPage) { 
            		this.doList(true);
            	} else {
            		var form = $("ownerForm");
            		form.action = window.contextPath + "/owner/main.action";
            		form.appendChild(new Element("input", {name:"filter.search", value:"true", type:"hidden"}));
            		form.submit();
            		return;
            	}
            } else {				
				alert(Bundle.getMessage('message.no.filter'));
            }
			
			this.checkState();
			this.checkCity();
			if(this.controlForm != null){
				this.controlForm.initFormActual();
			}
			$("ownerForm").focusFirstElement();
        },

        doReset: function() {
        	ControlForm.resetForm('ownerForm', {
        		executeBlurAfterText:true,
        		hiddenNames:["filter.stateId", "filter.cityId", "filter.specialityId", "filter.healthInsuranceId"]
        	});
        	$("filter.pageIndex").value = "1";
        	if(!this.initialPage && this.controlForm != null && this.controlForm.hasBeenSearched){
        		this.showInvalidFilterMessage();
        	}
			this.checkState();
			this.checkCity();
        },

        details: function(ownerId) {
        	new Ajax.Request(window.contextPath + "/owner/details.action", {
            	parameters: {ownerId:ownerId},
        		evalScripts: false,
				onComplete: function(response){
					if(Consulte.hasError(response) == false){
						var isActive = response.getResponseHeader("X-Consulte-Owner-Active");
						if(isActive == "true"){
							$("content").innerHTML = response.responseText.strip();
							// Chama os scripts manualmente, apenas se realmente atualizar o conteúdo:
							response.responseText.evalScripts.bind(response.responseText).defer();
						}else{
							Consulte.popAjaxStack();
							alert(Bundle.getMessage("message.owner.inactive"));
						}
					}
				}.bind(this)
            });
        },
        
        advancedSearch: function() {
        	var form = $("ownerForm");
        	form.action = window.contextPath + "/owner/main.action";
        	$("filter.advanced.id").value = "true";
    		form.appendChild(new Element("input", {name:"filter.search", value:"false", type:"hidden"}));
        	form.method = "post";
        	form.submit();
        },
        
        doBack: function() {
        	if(!Consulte.back()){
	        	var parameters = Form.serialize(document.ownerForm, {hash:true});
	        	parameters["filter.search"] = true;

	        	new Ajax.Request(window.contextPath + "/owner/body.action", {
	            	parameters: parameters,
	            	evalScripts:true,
	                onComplete: function(response) {
	                    if(!Consulte.hasError(response)){
	                        $("content").innerHTML = response.responseText.strip();
	                    }
	                }.bind(this)
	            });
        	}
        },

        doViewFullDetails: function() {
        	var parameters = Form.serialize(document.ownerForm, {hash:true});
        	parameters["filter.search"] = true;

        	new Ajax.Request(window.contextPath + "/owner/fullDetails.action", {
            	parameters: parameters,
            	evalScripts:true,
                onComplete: function(response) {
                    if(!Consulte.hasError(response)){
                        $("content").innerHTML = response.responseText.strip();
                    }
                }.bind(this)
            });        	
        },
        
        doBasicSearch: function() {
        	var form = $("ownerForm");
        	var hidden = new Element("input", {name:"filter.search", value:"false", type:"hidden"});
        	
        	form.action = window.contextPath + "/owner/main.action";
        	form.appendChild(hidden);
        	form.method = "post";
        	form.submit();       
        },
        
        listStates: function() {
        	jQuery($("filter.state")).showAll();
            window.setTimeout(function() {
            	$('filter.city').readOnly = false;
            },10);
        },
        
        listHealthInsurances: function() {
        	jQuery($("filter.health.insurance")).showAll();
        }, 
        
        listSpeciality: function() {
        	jQuery($("filter.speciality")).showAll();
        },

        listAreasOfAction: function() {
        	jQuery($("filter.areaOfAction")).showAll();
        },

        listMedicalProcedures: function() {
        	jQuery($("filter.medicalProcedure")).showAll();
        },

        showQuestions: function(ownerId){
        	new Ajax.Request(window.contextPath + "/question/list.action", {
        		parameters: {
	        		"filter.userId": ownerId,
	    			"filter.userType": "owner",
	    			listType: 8,
        			returnToList: true,
        			clearPaging: true
        		},
        		evalScripts: false,
				onComplete: function(response){
					if(Consulte.hasError(response) == false){
						var totalCount = response.getResponseHeader("X-Consulte-Total-Count");
						if(String.isNotEmpty(totalCount) && !isNaN(totalCount=parseInt(totalCount, 10)) && totalCount > 0){
							$("content").innerHTML = response.responseText;
							// Chama os scripts manualmente, apenas se realmente atualizar o conteúdo:
							response.responseText.evalScripts.bind(response.responseText).defer();
						}else{
							Consulte.popAjaxStack();
							alert(Bundle.getMessage("message.no.results.published", "txt.answers"));
						}
					}
				}
			});
        },

        showHealthTips: function(ownerId){
        	new Ajax.Request(window.contextPath + "/healthTip/list.action", {
        		parameters: {
        			"filter.ownerId":ownerId,
        			clearPaging: true
        		},
        		evalScripts: false,
				onComplete: function(response){
					if(Consulte.hasError(response) == false){
						var totalCount = response.getResponseHeader("X-Consulte-Total-Count");
						if(String.isNotEmpty(totalCount) && !isNaN(totalCount=parseInt(totalCount, 10)) && totalCount > 0){
							$("content").innerHTML = response.responseText;
							// Chama os scripts manualmente, apenas se realmente atualizar o conteúdo:
							response.responseText.evalScripts.bind(response.responseText).defer();
						}else{
							Consulte.popAjaxStack();
							alert(Bundle.getMessage("message.no.results.published", "txt.health.tips"));
						}
					}
				}
			});
        },
        
        evaluate: function(){
			var grade = null;
			$("evaluationForm").select("input[type=radio]").each(function(element){
				if(element.checked){
					grade = element.value;
					throw $break;
				}
			});

			if(grade == null){
				alert(Bundle.getMessage("message.grade.required", "txt.profile.owner"));
			}else{
        		var todo = false;

	        	if($F("ownerComment").strip() == ""){
	        		if(Consulte.showConfirmMessage(Bundle.getMessage("message.no.owner.comment"))){
	        			todo = true;
	        		}
	        	}else{
	        		todo = true;
	        	}
	        		
        		if(todo){
    				new Ajax.Request(contextPath + "/owner/evaluate.action", {
    					parameters:{
    						scheduleId: $("scheduleId").value,
    						ownerId: $("ownerId").value,
    						grade: grade,
    						comment: $("ownerComment").value
    					},
    					onComplete:function(response){
    						if(Consulte.hasError(response) == false){
    							(function(){
    								alert(Bundle.getMessage("txt.rate.owner.thank.you.customer"));
    							}).defer();

    							var grade = parseInt(response.responseText, 10);
    							// A partir da tela de "Meus Médicos", não precisa atualizar a nota:
    							if($("evaluation_owner") != null){
	    							$("evaluation_owner").descendants().each(function(divStar, i){
	    								divStar = $(divStar);
	    								divStar.removeClassName("star_gold_small");
	    								divStar.removeClassName("star_gray_small");
	    								var klass = (i < grade) ? "star_gold_small": "star_gray_small";
	    								divStar.addClassName(klass);
	    							});
	    							$($("evaluation_owner").parentNode).title = "";
    							}
    							this.cancelLBEvaluate();
    						}
    					}.bind(this),
    					consulteOptions:{ ignoreForBack:true, processing:{ fullScreen:true } }
    				});
        		}
			}
        },

        showEvaluate: function(ownerId, active){
        	if(active){
    			new Ajax.Request(contextPath + "/owner/evaluate.action", {
    				parameters:{ownerId:ownerId},
    				onComplete:function(response){
    					if(Consulte.hasError(response) == false){
    						var isSplash = Consulte.getHeaderAsJSON(response, "X-Consulte-SplashScreen");
    						if(isSplash != null && isSplash == true){
    							$("content").innerHTML = response.responseText;
    						}else{
    							var lastCare = response.getResponseHeader("X-Consulte-Owner-LastCare");
    							var scheduleId = response.getResponseHeader("X-Consulte-Owner-ScheduleId");
    							var isEvaluated = response.getResponseHeader("X-Consulte-Owner-isEvaluated");
    							var daysEvaluation = response.getResponseHeader("X-Consulte-Owner-DaysEvaluation");

    							if(String.isNotEmpty(isEvaluated) && isEvaluated == "true"){
    								Consulte.showErrorMessage(Bundle.getMessage("message.exist.evaluate.owner", daysEvaluation));
    							}else{
    								if(String.isEmpty(lastCare)){
    									Consulte.showErrorMessage(Bundle.getMessage("message.cannot.evaluate.owner", daysEvaluation));
    								}else{
        								this.LBEvaluate = new LightBox(response.responseText, {title:Bundle.getMessage("label.menu.rate.owner")});
        								this.LBEvaluate.show();
        								$("lastCare").innerHTML = lastCare;
        								$("scheduleId").value = scheduleId;
    								}
    							}
    						}
    					}
    				}.bind(this)
    			});
        	}else{
        		Consulte.showErrorMessage(Bundle.getMessage("message.owner.inactive"));
        	}
        },
        
        cancelLBEvaluate: function(){
        	this.LBEvaluate.hide();
        },

        schedule: function(ownerId, active){
        	if(active){
        		CustomerSchedule.create(ownerId);
        	}else{
        		Consulte.showErrorMessage(Bundle.getMessage("message.owner.inactive"));
        	}
        },
        
        showInvalidFilterMessage: function(){
		 	$('formModified').innerHTML = Bundle.getMessage('message.form.has.changed');
        },

        hideOwnerFilter: function() {
			var objeto = "filtro_medico";
            var seta = "img_ocultar_filtros";
            var texto = "txt_ocultar_filtros";
			var bordaFiltro = "formModified";

            if ($(objeto).visible()) {
                $(objeto).hide();
				$(seta).className = "img_mostrar";
                $(texto).innerHTML = Bundle.getMessage('txt.filter.show');
				if($(bordaFiltro)){
					$(bordaFiltro).addClassName("modifyFilterHide");
					$(bordaFiltro).removeClassName("modifyHide");
				}
            } else {
                $(objeto).show();
				$(seta).className = "img_esconder";
                $(texto).innerHTML = Bundle.getMessage('txt.filter.hide');
				if($(bordaFiltro)){
					$(bordaFiltro).removeClassName("modifyFilterHide");
					$(bordaFiltro).addClassName("modifyFilter");
				}
            }
        },

        advancedFilter: function(initialPage) {
			if(!initialPage) 
				$A($$(".filtro_avancado")).each(function(item) {
				$(item).toggle();
			});
			
			if ($$(".filtro_avancado").first().getStyle("display") == "none") {
				$("texto_filtro_avancado").innerHTML = Bundle.getMessage('txt.advanced.search');
			
				if(!initialPage) 
					$("titleFilter").innerHTML = Bundle.getMessage('txt.search.owner.basic');
				
					$('filter.advanced.id').value = false;
			} else {
				$("texto_filtro_avancado").innerHTML = Bundle.getMessage('txt.simple.search'); 
				
				if(!initialPage) 				
				$("titleFilter").innerHTML = Bundle.getMessage('txt.search.owner.advanced');
				
				$('filter.advanced.id').value = true;
				this.checkCity();
			}
        },

		getContentEmail:function(){
        	return Consulte.getContentEmail("txt.owner.subject", "detail");
		},
		
		showMap: function(map, address){
			map = $(map);
     		this.LBMap = new LightBox(map.innerHTML, {title:address}); //, footer:"Clique aqui para saber como chegar através do Google Maps"});
			this.LBMap.show();
		},

		openGoogleMaps: function(address, id){
			var parameters = Object.toQueryString({ address:address, id:id });
			var width = 475, 
				height = 395,
				top = (window.screen.height - height) / 2, 
				left = (window.screen.width - width) / 2;
			var url = "http://"+location.hostname+":"+Bundle.getSystemProperty("server.http.port")+window.contextPath+"/googleMaps.action;"+Consulte.getSessionCookie()+"?"+parameters;
			var win = window.open(url, "GoogleMaps", "width="+width+", height="+height+", top="+top+", left="+left+", resizable=false, toolbar=no, location=no, personalbar=no, directories=no, scrollbars=yes, status=no, menubar=no, copyhistory=no");
		},
		
		showPrint: function(ownerId){
			Consulte.print("http://"+location.hostname+":"+Bundle.getSystemProperty("server.http.port")+window.contextPath + "/owner/print.action;"+Consulte.getSessionCookie()+"?action=print&ownerId="+ownerId);
		},
		
    	checkState: function() {
			var state = $("filter.state");
			var city = $("filter.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();
            	}
			}
        },

        checkCity: function(){
        	var city = $("filter.city");
			var neighborhood = $("filter.neighborhood");
			var street = $("filter.street");

			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");
                
                street.readOnly = true;
				street.addClassName("disableColor");
                street.value = Bundle.getMessage("txt.select.city");
			}else{				
                neighborhood.readOnly = false;
                neighborhood.removeClassName("disableColor");
				
				if(neighborhood.value == Bundle.getMessage("txt.select.city")){
					neighborhood.value = "";
					neighborhood.activate();  
				}
				
				street.readOnly = false;
                street.removeClassName("disableColor");
				
				if(street.value == Bundle.getMessage("txt.select.city"))
                	street.value = "";
			}
        },
               
        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("filter.city", cities);
                    }
                }.bind(this)
            });
		},

        bindHealthInsurances: function() {
            var data = ownersHealthInsurances;

            jQuery($("filter.health.insurance")).autocomplete(data, {
                minChars: 3,
                delay: 500,
                width: 240,
                max: data.length,
                selectFirst: true,
                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) {
                document.getElementById("filter.health.insurance.id").value = (item != null) ? item.id: "";
            });
        },

        bindAreasOfAction: function() {
            var data = medicalAreasOfAction;

            jQuery($("filter.areaOfAction")).autocomplete(data, {
                minChars: 3,
                delay: 500, width: 240,
                max: data.length,
                selectFirst: true,
                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) {
                $("filter.areaOfAction.id").value = (item != null) ? item.id: "";
            });
        },

        bindMedicalProcedures: function() {
            var data = medicalProcedures;

            jQuery($("filter.medicalProcedure")).autocomplete(data, {
                minChars: 3,
                delay: 500, width: 240,
                max: data.length,
                selectFirst: true,
                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) {
                $("filter.medicalProcedure.id").value = (item != null) ? item.id: "";
            });
        },

        bindSpecialities: function() {
            var data = specialities;

            jQuery($("filter.speciality")).autocomplete(data, {
                minChars: 3,
                delay: 500, width: 240,
                max: data.length,
                selectFirst: true,
                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) {
                document.getElementById("filter.speciality.id").value = (item != null) ? item.id: "";
            });
        },

		bindState:function(field, data){
			jQuery($(field)).autocomplete(data, {
				minChars: 2,
				delay: 100,
				width: 200,
				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){
					jQuery($("filter.city")).unautocomplete();
					$("filter.city").readOnly = true;
					if(item != null){
						this.listCities(item.id);
						$("filter.city").readOnly = false;
					}
					this.lastStateId = id;
				}
				//this.checkState();
			}.bind(this));
		},
		
		bindCity:function(field, data){
            jQuery($(field)).autocomplete(data, {
                minChars: 3,
                delay: 500,
                width: 200,
                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;
                }
            });
		},

		clearDependedField:function(){		
			if($("filter.city").value == Bundle.getMessage("txt.select.state"))
            	$("filter.city").value = "";
				
			if($("filter.neighborhood").value == Bundle.getMessage("txt.select.city"))
            	$("filter.neighborhood").value = "";	
			
			if($("filter.street").value == Bundle.getMessage("txt.select.city"))
            	$("filter.street").value = "";		
		},		

        loadAutoComplete: function() {
            this.bindState("filter.state", states);
            this.bindHealthInsurances();
            this.bindSpecialities();
            this.bindAreasOfAction();
            this.bindMedicalProcedures();
        }		
    };
}

/*Exemplo para utilização do autocomplete com AJAX/JSON
jQuery($("filter.owner.name")).autocomplete(window.contextPath+"/customer/search.action", {
    minChars: 3,
    delay: 500,
    width: $("filter.owner.name").getWidth(),
    parameterName: "filter.customerName",
    max: 30,
    selectFirst: true,
    matchContains: true,
    autoFill: false,
    parse: function(data){
		var array = (Object.isString(data) && data.isJSON()) ? data.evalJSON() : [];
		return array.map(function(row){
			var value = (row.fullName.replaceSpecialChars() + " " + row.fullName);
			return {
				data: row,
				value: value,
				result: row.fullName
			};
		});
	},
    formatItem: function(row, i, max) {
        return row.fullName + "(" + row.cpf + ")";
    }
}).result(function(event, item) {
	if(item != null){
		//alert(Object.inspect($H(item)));
	}
});
*/
