( 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");
			
			// avoid submitting from form directly with incorrect parameters
			$("#searchRap").submit(function() {
				return false;
			});
			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");
					if($.browser.msie && ($.browser.version=='6.0' || $.browser.version=='7.0')){
						$(element).parents('table').attr("cellspacing", "4");
					} 
					$("#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"
					}
				}
			});

			$("#connectInputShowAgainList").click( function() {
				$("#connectList").css("display", "none");
				$("#connectInput").css("display", "block");
			});

			$("#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()) {
					$(this).findRap();
				}
			});

			// 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");
			});
		});
	});

	$.fn.findRap = function() {
		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", "block"); // hacking
																		// this up
					$("#connect #rap-no-result").css("display", "block");
					$("#connect").css("display", "block");
					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 <a href='#' id='connectInputShowAgain'>" + $("#searchRap #zipCode").val() + "</a></p>";
						for ( var i = 0; i < 1; i++) {
							htmlString = htmlString + "<h5>" + resultData[i].firstName + "&nbsp;" + resultData[i].lastName + "</h5><dl>" + "<dl><dd><img src='" + ctx + "/images/pic-1.jpg'/></dd><dd><br/>" + "[" + resultData[i].contactInformation.phoneNumber
									+ "]<br/>" + "Available Monday - Friday, 8 AM - 6 PM EST</dd>" + "<dd class='edit'><a class='arrow' id='connect-laydown' href='#'>Learn more about personal account specialists</a></dd></dl>"
									+ "<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></dl></dl>"
									+ "<div id='connect-personal-layout'>"
									+ "<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/>"
									+ "*Your Personal Account Specialist is an employee of TMS Health, a service partner of AstraZeneca. </div>" + "</div>";
						}
						$("#rapList").append(htmlString);
					}
					$("#connect #rap-result").css("display", "block"); // hacking
																		// this up
					$("#connect #rap-no-result").css("display", "block");
					$("#connect").css("display", "block");
				}

				$("#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");
				});
	
				$("#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);
	}
})(jQuery);