(function() {
	
	if(typeof NK == 'undefined'){
	   NK = {};
	}
	
	var REQUIRED_FIELD_TXT = "This is a required field.";
	
	var ERROR_CSS_CLASS = "error";
	
	var showError = function(el,msg){
		var div = document.createElement("DIV");
		var parent = el.parentNode;
		var span = document.createElement("SPAN");
		div.className = ERROR_CSS_CLASS;		
		span.className = ERROR_CSS_CLASS;
		span.innerHTML = msg;
		div.appendChild(span);
		if(el.tagName.toLowerCase() === "input" && 
				el.getAttribute("type").toLowerCase() === "hidden"){
			parent.appendChild(span);
		}
		else {
			parent.insertBefore(div,el.nextSibling);			
		}

	};
	
	var clearErrors = function(){
		$("." + ERROR_CSS_CLASS).remove();
	};
	
	
	var validateMSDS = function(form){
		clearErrors();
		var valid = true;
		if(form.elements.name.value.length === 0){
			showError(form.elements.name,REQUIRED_FIELD_TXT + " Please type a name.");
			valid = false;
		}
		if(form.elements["product.name"].selectedIndex <= 0){
			showError(form.elements["product.name"],"Please choose a product.");
			valid = false;
		}
		if((form.elements.file.value.length === 0 || form.elements.file.value.indexOf(".pdf") === -1) && form.elements.id.value.length === 0){
			showError(form.elements.file,"Please select a PDF document to upload.");
			valid = false;
		}
		return valid;
	};
	
	var validateCrop = function(form){
		clearErrors();
		var valid = true;
		if(form.elements.name.value.length === 0){
			showError(form.elements.name,REQUIRED_FIELD_TXT + " Please type a name.");
			valid = false;
		}
		if(form.elements.insectPests.value.length === 0){
			showError(form.elements.insectPests,"Please choose an insect pest.");
			valid = false;
		}
		if(form.elements.featured.checked){
			if(form.elements.listLogo.value.length === 0  && form.elements.id.value.length === 0){
				showError(form.elements.listLogo,"Featured crops require an image file.");
				valid = false;
			}
			if(form.elements.image.value.length === 0  && form.elements.id.value.length === 0){
				showError(form.elements.image,"Featured crops require an image file.");
				valid = false;
			}			
			if(form.elements.detail.value.length === 0){
				showError(form.elements.detail,"Featured crops require details.");
				valid = false;
			}
		}
		return valid;
	};
	
	var validatePest = function(form){
		clearErrors();
		var valid = true;
		if(form.elements.name.value.length === 0){
			showError(form.elements.name,REQUIRED_FIELD_TXT + " Pests require a name.");
			valid = false;
		}
		if(form.elements.pestType.selectedIndex <= 0){
			showError(form.elements.pestType,REQUIRED_FIELD_TXT + " Please select a pest type.");
			valid = false;
		}
		if(form.elements.scientificClassification.selectedIndex <= 0){
			showError(form.elements.scientificClassification,REQUIRED_FIELD_TXT + " Please choose a classification.");
			valid = false;
		}
		if(form.elements.crops.value.length === 0){
			showError(form.elements.crops,REQUIRED_FIELD_TXT + " Please select a crop.");
			valid = false;
		}
		if(form.elements.featured.checked){
			if(form.elements.listLogo.value.length === 0  && form.elements.id.value.length === 0){
				showError(form.elements.listLogo,REQUIRED_FIELD_TXT + " Featured pests require a list logo image.");
				valid = false;
			}
			if(form.elements.image.value.length === 0  && form.elements.id.value.length === 0){
				showError(form.elements.image,REQUIRED_FIELD_TXT + " Featured pests require an image.");
				valid = false;
			}
			if(form.elements.detail.value.length === 0){
				showError(form.elements.detail,REQUIRED_FIELD_TXT + " Featured pests require details.");
				valid = false;
			}
//			if(form.elements.lifecycle.value.length === 0){
//				showError(form.elements.lifecycle,REQUIRED_FIELD_TXT + " Featured pests require lifecycle info.");
//				valid = false;
//			}
			if(form.elements.geographicDistribution.value.length === 0){
				showError(form.elements.geographicDistribution,REQUIRED_FIELD_TXT + " Featured pests require geographic distribution info.");
				valid = false;
			}	
//			if(form.elements.damageTreatment.value.length === 0){
//				showError(form.elements.damageTreatment,REQUIRED_FIELD_TXT + " Featured pests require damage treatment info.");
//				valid = false;
//			}				
		}
		return valid;
	};
	
	var validateProduct = function(form){
		clearErrors();
		var valid = true;
		if(form.elements.name.value.length === 0){
			showError(form.elements.name,REQUIRED_FIELD_TXT);
			valid = false;
		}
		if(form.elements.type.selectedIndex <= 0){
			showError(form.elements.type,REQUIRED_FIELD_TXT + "  Please select a product type.");
			valid = false;
		}		
		if(form.elements.priority.value.length === 0){
			showError(form.elements.priority,REQUIRED_FIELD_TXT + "  Please type a numeric value for priority.");
			valid = false;			
		}
		if(form.elements.bannerContent.value.length === 0  && form.elements.id.value.length === 0){
			showError(form.elements.bannerContent,REQUIRED_FIELD_TXT + "  Please choose a banner image.");
			valid = false;			
		}
		if(form.elements.listLogoContent.value.length === 0  && form.elements.id.value.length === 0){
			showError(form.elements.listLogoContent,REQUIRED_FIELD_TXT + "  Please choose a list logo image.");			
			valid = false;			
		}
		if(form.elements.logoContent.value.length === 0  && form.elements.id.value.length === 0){
			showError(form.elements.logoContent,REQUIRED_FIELD_TXT + "  Please choose a logo image.");			
			valid = false;			
		}				
		if(form.elements.detail.value.length === 0){
			showError(form.elements.detail,REQUIRED_FIELD_TXT + "  Please add some detail text for this product.");			
			valid = false;			
		}			
		if(form.elements.crops.value.length === 0){
			showError(form.elements.crops,REQUIRED_FIELD_TXT + "  Please choose at least one crop.");			
			valid = false;			
		}			
		return valid;
	};
	
	var validatePressRelease = function(form){
		clearErrors();
		var valid = true;
		var textareawebName = tinyMCE.get('webName').getContent(); 
        if ( (textareawebName=="") || (textareawebName==null) ) {
                    showError(form.elements.webName,REQUIRED_FIELD_TXT + " Press releases require a headline.");
                    valid = false; 
        }
        else if ( (textareawebName.length>128) ) 
        {
           showError(form.elements.webName,"The value exceeds the 128 character limit by "+(textareawebName.length-128)+" characters. HTML is included in the character limit.");
           valid = false; 
        }

		if(form.elements.publicationDate.value.length === 0){
			showError(form.elements.publicationDate,REQUIRED_FIELD_TXT + " Press releases require a publication date.");
			valid = false;
		}	
		
		var textareareleasebody = tinyMCE.get('release-body').getContent(); 
            if ( (textareareleasebody=="") || (textareareleasebody==null) ) {
                    showError(form.elements.stringContent,REQUIRED_FIELD_TXT + " Press releases require some body content.");
                    valid = false; 
            }

		//if(form.elements.stringContent.value == ''){
			//showError(form.elements.stringContent,REQUIRED_FIELD_TXT + " Press releases require some body content.");
			//valid = false;
		//}		
		return valid;
	};
	
	var validateProductLabel = function(form){
		clearErrors();
		var valid = true;
		if(form.elements.name.value.length === 0){
			showError(form.elements.name,REQUIRED_FIELD_TXT + " Please type a name.");
			valid = false;
		}
		if(form.elements.tradeName.value.length === 0){
			showError(form.elements.tradeName,REQUIRED_FIELD_TXT + " Please type a trade name.");
			valid = false;
		}
		if(form.elements.activeIngredient.value.length === 0){
			showError(form.elements.activeIngredient,REQUIRED_FIELD_TXT + " Please type an active ingredient.");
			valid = false;
		}
		if(form.elements.label.selectedIndex <= 0){
			showError(form.elements.label,REQUIRED_FIELD_TXT + " Please select a label.");
			valid = false;
		}
		if(form.elements.product.selectedIndex <= 0){
			showError(form.elements.product,REQUIRED_FIELD_TXT + " Please select a product.");
			valid = false;
		}
		if(form.elements.section.selectedIndex <= 0){
			showError(form.elements.section,REQUIRED_FIELD_TXT + " Please select a section.");
			valid = false;
		}		
		if(form.elements.effectiveDate.value.length === 0){
			showError(form.elements.effectiveDate,REQUIRED_FIELD_TXT + " Please choose an effective date.");
			valid = false;
		}
		if(form.elements.expirationDate.length === 0){
			showError(form.elements.expirationDate,REQUIRED_FIELD_TXT + " Please choose an expiration date.");
			valid = false;
		}
		if(form.elements.content.value.length === 0  && form.elements.id.value.length === 0){
			showError(form.elements.content,REQUIRED_FIELD_TXT + " Please choose a PDF file.");
			valid = false;
		}
		if(form.elements.states.value.length === 0){
			showError(form.elements.states,REQUIRED_FIELD_TXT + " Please select a state.");
			valid = false;
		}
		if(form.elements.crops.value.length === 0){
			showError(form.elements.crops,REQUIRED_FIELD_TXT + " Please select a crop.");
			valid = false;
		}
		return valid;
	};
	
	
	var initTinyMCE = function () {
	  tinyMCE.init({
			mode : "textareas",
			theme : "advanced",
			width : "700"
		});
	};
	
	var initProductLabel = function(){
    	$("#effectiveDate").datepicker({showOn: "both", buttonImage: "/images/Calendar.gif", buttonImageOnly: "true" });
        $("#effectiveDate").datepicker("option", "changeMonth", true);
    	$("#expirationDate").datepicker({showOn: "both", buttonImage: "/images/Calendar.gif", buttonImageOnly: "true" });
        $("#expirationDate").datepicker("option", "changeMonth", true);
	};
	
	var initPressRelease = function(){
		$("#publicationDate").datepicker({showOn: "both", buttonImage: "/images/Calendar.gif", buttonImageOnly: "true" });
        $("#publicationDate").datepicker("option", "changeMonth", true);
    	$("#effectiveDate").datepicker({showOn: "both", buttonImage: "/images/Calendar.gif", buttonImageOnly: "true" });
        $("#effectiveDate").datepicker("option", "changeMonth", true);
    	$("#expirationDate").datepicker({showOn: "both", buttonImage: "/images/Calendar.gif", buttonImageOnly: "true" });
        $("#expirationDate").datepicker("option", "changeMonth", true);
	};
	
	NK.validateMSDS = validateMSDS;
	NK.validateCrop = validateCrop;
	NK.validatePest = validatePest;
	NK.validateProduct = validateProduct;
	NK.validatePressRelease = validatePressRelease;
	NK.validateProductLabel = validateProductLabel;
    NK.initTinyMCE = initTinyMCE;
    NK.initProductLabel = initProductLabel;
	NK.initPressRelease = initPressRelease;
	
})();
