( function($) {
	$( function() {
		// search form, hide it, search labels to modify, filter classes nocmx and error
		// $('#callUser').hide().find( 'p>label:not(.nocmx):not(.error)' ).each(
		// function() {
		// var $this = $(this);
		// var labelContent = $this.html();
		// var labelWidth ="200px";
		// // create block element with width of label
		// var labelSpan = $("<span>")
		// .css("display", "block")
		// .width(labelWidth)
		// .html(labelContent);
		// // change display to mozilla specific inline-box
		// $this.css("display", "-moz-inline-box")
		// // remove children
		// .empty()
		// // add span element
		// .append(labelSpan);
		// // show form again
		// }).end().show();
	});
	
	$( function() {
		$().ready( function() {
			// validate the comment form when it is submitted
			// validate signup form on keyup and submit
			jQuery.validator.addMethod("alphaNumericCheck", function(value, element) {
				var reg = /^[a-zA-Z0-9]+$/;
				return this.optional(element) || reg.test(value);
			}, " the format is not valid");
			
			jQuery.validator.addMethod("nameCheck", function(value, element) {
				var reg = /^[a-zA-Z '-]+$/;
				return this.optional(element) || reg.test(value);
			}, " the format is not valid");
			
			var validator = $("#searchRap").validate( {
				errorClass: "red",
				onfocusin: function(element) {
					this.lastActive = element;
					// this.settings.unhighlight &&
					// this.settings.unhighlight.call( this, element,
					// this.settings.errorClass );
				  // this.errorsFor(element).hide();
				},
				onfocusout: function(element) {
				},
				onkeyup: function(element) {
				},
				onclick: function(element) {
					//this.settings.unhighlight && this.settings.unhighlight.call( this, element, this.settings.errorClass );
					// this.errorsFor(element).hide();
				},
				highlight: function(element, errorClass) {
					$("#searchRap").find("label[for=" + element.id + "]").css('color', '#F00');
					$("#searchRap").find("label[for=" + element.id + "]").css('display', 'block');
	
					// set bg yellow
					$("#searchRap table").addClass("borderSpacing");
					$("#searchRap").find("label[for=" + element.id + "]").parent().css( {
						background: "#FEF7D0"
					});
				},
				unhighlight: function(element, errorClass) {
					$("#searchRap").find("label[for=" + element.id + "]").css('color', '#746C61');
					$("#searchRap").find("label[for=" + element.id + "]").css('display', 'block');
	
					// reset bg yellow
					$("#searchRap").find("label[for=" + element.id + "]").parent().css( {
						background: "none"
					});
				},
				check: function(element) {
					$("#searchRap").find("label[for=" + element.id + "]").css('display', 'block');
				},
				rules: {
					"firstName": {
						required: true,
						maxlength: 24,
						nameCheck: true
					},
					"lastName": {
						required: true,
						maxlength: 24,
						nameCheck: true
					},
					"zipCode": {
						required: true,
						rangelength: [5, 5],
						digits: true
					}
				},
				messages: {
					"firstName": {
						required: "Please fill in First Name.",
						maxlength: "The First Name you have entered is invalid.",
						nameCheck: "The First Name you have entered is invalid."
					},
					"lastName": {
						required: "Please fill in Last Name.",
						maxlength: "The Last Name you have entered is invalid.",
						nameCheck: "The Last Name you have entered is invalid."
					},
					"zipCode": {
						required: "Please fill in Zip Code.",
						digits: "Please enter a 5-digit Zip code.",
						rangelength: "Please enter a 5-digit Zip code."
					// phoneCheck :"Phone must be input complete"
					}
				}
			});
			
			function initConnectInnerButton() {
				$("#connectInputShowAgain").click( function() {
					$("#connect").css("display", "none");
					$("#connectInput").css("display", "block");
				});

				$("#connect-laydown").toggle( function() {
					$("#connect-personal-layout").css("display", "block");
					$("#layout-content").css("display", "block");
				}, function() {
					$("#connect-personal-layout").css("display", "none");
					$("#layout-content").css("display", "none");
				});
			}
			
			function findRep() {
				var options = {
					success: function(result) {
						//var jsonArray = eval(result);
						// jsonObj = jsonArray[0];
						if ($("#searchRap #isCall").val() == "false") {
							$("#connect #cancelConnect").css("display", "block");
							$("#connect #callConnect").css("display", "none");
						} else {
							if (result.userCall == true) {
								$("#connect #cancelConnect").css("display", "block");
								$("#connect #callConnect").css("display", "none");
								// $("#cancel").css("display","block");
								// $("#call").css("display","none");
							} else {
								$("#connect #cancelConnect").css("display", "none");
								$("#connect #callConnect").css("display", "block");
								// $("#cancel").css("display","none");
								// $("#call").css("display","block");
							}
						}
			
						if (result.success == false) {
							var htmlStr = "";
							$("#connect #rapList").html("");
							$("#connect #rap-input").css("display", "none");
							$("#connect #rap-result").css("display", "none");
							$("#connect #rap-no-result").css("display", "block");
							$("#connect").css("display", "block");
							if (result.message == "searched") {
								$("#connect #resetAfterCloseTab").val("false");
							} else {
								$("#connect #resetAfterCloseTab").val("true");
							}
							return;
						} else {
							var resultData = result.data;
							if (resultData != null) {
								$("#connect #rapList").html("");
								$("#connect #rap-input").css("display", "none");
								var link = "";
								var htmlString = "<p>Here is your Personal Account Specialist for NEXIUM (esomeprazole magnesium) in zip code " + result.searchSpecialInfo.zipCode + "</p>";
								htmlString += "<h5 style='clear:both;'>" + resultData.firstName + "&nbsp;" + resultData.lastName + "</h5>";
								htmlString += "<dl><dl>";
								htmlString += "<dd><img src='" + ctx + "/images/specialist/" + resultData.employeeId.string + ".jpg' onerror=\"onImgError(this, '" + ctx + "/images/specialist/no-image-54px.jpg')\" /></dd>";
								htmlString += "<dd><br/>[" + resultData.contactInformation.phoneNumber + "]<br/>Available Monday - Friday, 8 <span class='ampm'>am</span> - 6 <span class='ampm'>pm</span> EST</dd>";
								htmlString += "<dd class='edit'><a class='arrow' id='connect-laydown' href='#'>Learn more about personal account specialists</a></dd>";
								htmlString += "<dd>";
								htmlString += "<div id='connect-personal-layout'>";
								htmlString += "<div id='layout-content' class='layout-content' style='display:none'>Connect with your Personal Account Specialist* about any topic - from sample eligibility to clinical information and managed market updates. <br/>";
								htmlString += "*Your Personal Account Specialist is an employee of TMS Health, a service partner of AstraZeneca. </div></div>";
								htmlString += "</dd>";
								htmlString += "<dd class='edit'><a class='arrow' target='_blank' href='http://www.astrazeneca-us.com/cgi-bin/az_pi.cgi?product=nexium&country=us&popup=no'>Review full Prescribing information for NEXIUM</a></dd>";
								htmlString += "</dl></dl>";
								$("#rapList").append(htmlString);
							}
							$("#connect #rap-result").css("display", "block");
							$("#connect #rap-no-result").css("display", "none");
							$("#connect").css("display", "block");
							$("#connect #resetAfterCloseTab").val("false");
						}

						initConnectInnerButton();
			
						$("#searchRap").resetForm();
					},
					error: function(xhr, status) {
						if (xhr.status > 200 && xhr.status <= 500) {
							alert("error comminucation.");
						}
					},
					complete: function(xhr, status) {
					},
					dataType: "json"
				};

				$("#searchRap").ajaxSubmit(options);
			}

			// do initialize work
			
			$("#connectShow").click( function() {
				$('#searchRap').find("label").each( function() {
					if ($(this).attr("for") != "") {
						$(this).css("color", "#746C61");
						$(this).css("display", "block");
						if ($(this).attr("class") == "red") {
							$(this).css("display", "none");
						}
					}
				});
				
				// $("#searchRap #zipCode").attr("value","");
				// $("#searchRap #lastName").attr("value","");
				// $("#searchRap #firstName").attr("value","");
				// $("#connectInput").css("display","block");

				// $("#callUserAjax #phoneOne").attr("value","");
				// $("#callUserAjax #phoneSecond").attr("value","");
				// $("#callUserAjax #phoneThird").attr("value","");
				// $("#callUserAjax #firstName").attr("value","");
				// $("#callUserAjax #lastName").attr("value","");
				
				$('#callUserAjax').find("label").each( function() {
					if ($(this).attr("for") != "") {
						$(this).css("color", "#746C61");
						$(this).css("display", "block");
						if ($(this).attr("class") == "red") {
							$(this).css("display", "none");
						}
					}
				});
			});

			$("#searchRapBtn").click( function() {
				if (validator.form()) {
					findRep();
				}
			});

			// for enter keyboard submit
			$("#searchRap :input").each( function() {
				$(this).keypress( function(e) {
					var key = window.event ? e.keyCode : e.which;
					if (key.toString() == "13") {
						$("#searchRap #searchRapBtn").click();
					}
				});
			});

			$("#about-laydown-list").toggle( function() {
				$("#personal-layout-list").css("display", "block");
				$("#layout-content-list").css("display", "block");
			}, function() {
				$("#personal-layout-list").css("display", "none");
				$("#layout-content-list").css("display", "none");
			});
			
			initConnectInnerButton();
			
		});
	});
	
})(jQuery);