// JavaScript Document

function fadeInCurrent() {
	$("div.progress div.current div div").css("visibility","visible").fadeIn("fast",fadeOutCurrent)
}

function fadeOutCurrent() {
	$("div.progress div.current div div").fadeOut("slow",fadeInCurrent)
}



function setup_fields() {
	
	// setup bookmark button 
	
	
	
 	
	var title = "SCI Brand Survey"; 
	var url = location.href


	if (window.sidebar||window.external) { 
		
		$("div.bookmark-button").css("display","block").find("div").hover(function() {$(this).addClass("hover")},function() {$(this).removeClass("hover")}).click(function() {
			if(window.sidebar) { // Mozilla Firefox Bookmark
				window.sidebar.addPanel(title, url,"");
			}
			else if( window.external ) { // IE Favorite
				window.external.AddFavorite( url, title); 
			}
		})
	}
	
	
	$("div.textarea-container").click(function() {
											   
		$(this).find("textarea").focus()
	
	})
 

	
	
	
	
	$("input[@name=jscript]").attr("value","enabled")
	
	
	if($.browser.safari) {
		
		$("div.textarea-container").css({border:"0px",padding:"0px","background-color":"transparent","text-align":"left"})
		
		
	}
	
	
	$("div.radio-grid td input").parent().append('<img src="/images/tick.gif"/>')
	
	
	
	checkSelected($("label input").parent())
	resetRadioGrid($("div.radio-grid table"))
	
	
	$("div.radio-grid input[@type=radio]").click(radio_grid_clicked)
	$("div.radio-grid tr").hover(
		function() {$(this).addClass("hover")}
		,
		function() {$(this).removeClass("hover")}
	)
	
	
	
	
	
	$(".checkbox-group label , .radio label").click(
		function(event) {
	
			//alert(event.target.tagName)
			
			
			var inp = $(this).children("input:radio,input:checkbox")
			var inpClass = inp.attr("class")
			
			
			if(inpClass) {
				
				if(!$(this).is(".selected")) {
					if(inpClass.indexOf("limit-")>-1) {
						var mx = parseInt(inpClass.substr(inpClass.indexOf("limit-")+6))
						
						if(!isNaN(mx)) {
							if($(this).parent().find("label.selected").size()>=mx) {
								return false
							}
						}
					}
				}
			}
			
			
			
			var ch = inp.attr("checked")
			if(event.target.tagName.toLowerCase()!="input") {
				event.preventDefault()
				if(ch) {
				
					inp.removeAttr("checked")
					
					
					
					//alert(inp.attr("checked"))
					
				}
				else {
					
					inp.attr("checked",true)
					
					if(inp.is(".act-as-radio")) {
						
						$(this).siblings().find("input:checkbox").attr("checked",false)
						
					}
					
					else {
						$(this).parent().find("input.act-as-radio").attr("checked",false)
					}
					
					//alert(inp.attr("checked"))
					
				}
			}
			checkSelected($(this).parent().children())
			
		}
	)
	
	
	
	$(".checkbox-group label , .radio label").hover(
		function(e) {
			$(this).addClass("hover");
		}
		,
		function(e) {
			$(this).removeClass("hover");
		}
	)
	
	
	var questionValid = true
	
	$("#surveyform").submit(survey_validate)

	
	$(".multi-radio-option input").click(checkMultiRadio)
	checkMultiRadio()
	
}




function checkSelected(labels) {
	
	
	
	labels.each(
		function() {
			
			var inp = $(this).find(":radio , :checkbox")
			
			if(inp.attr("checked")) {
				
				$(this).addClass("selected")
				$(this).addClass("tint")
				
				if(inp.is(".other")) {
					
					
					if($(this).find("input.other-text").size()<1) {
						$(this).append('<input name="'+inp.attr("name")+'_other" class="other-text"/>')
						setOtherInputs()
						var oText = $(this).find("input.other-text")
						/*
						var activeElement = oText.parent().find(":checkbox , :radio")
						if(activeElement.is(".has-altered")) {oText.attr("value",activeElement.attr("value"))}
						*/
						
						oText.attr("value",oText.parents("fieldset").find(".other-hidden").attr("value"))
						
						
						oText.focus()
					}
					
					
				}
			
			}
			
			else {
				$(this).find("input.other-text").remove()
				$(this).removeClass("selected")
				$(this).removeClass("tint")
			}
	
		}
	)
	
	
	
	
	
	
	$("input.hide-parts").each(function(){
	
		var partsClassIndex = this.className.indexOf("hp-")
		if(partsClassIndex>-1) {
			
			var partsClass = this.className.substring(partsClassIndex+3,this.className.indexOf(" ",partsClassIndex))
			var parts = partsClass.split("-")
			
			for(var i=0;i<parts.length;i++) {
				$("fieldset.part"+parts[i]).css("display",this.checked ? "none" : "block")
			}
																						   
																						   
		}
			
	
	})
	
}


function checkMultiRadio() {
	
	
	$("div.multi-radio-option").each(function() {
											  
		var ch = false
		
		var opt = $(this)
		
		$(this).find("input").each(function() {
											
			if($(this).attr("checked")) {ch=true}									
											
		}).hover(
			
			function() {
				opt.addClass("hover")
			}
			,
			function() {
				opt.removeClass("hover")
				
			}
			
		)
		
		if(ch) {$(this).addClass("tint")}
		else {$(this).removeClass("tint")}
											  
	})	
	
	
	
	
}



function setOtherInputs() {
	
	$("input.other-text").click(
		function(event) {
			event.preventDefault()		
		}
	)
	
	
	$("input.other-text").change(
		function(event) {
			var activeElement = $(this).parent().find(":checkbox , :radio")
			activeElement.addClass("has-altered").attr("value",$(this).attr("value") ? $(this).attr("value") : "something else")
			
			$(this).parents("fieldset").find(".other-hidden").attr("value",$(this).attr("value"))
		}
	)
	
}




function radio_grid_clicked() {
	
	$(this).parent().siblings().children("input[@type=radio]").attr("checked",false)
	
	resetRadioGrid($(this).parents("div.radio-grid table"))
	
}



function resetRadioGrid(table) {
	table.find("td").removeClass("taken").removeClass("selected").removeClass("tint")
	table.find("tr").removeClass("taken").removeClass("tint")
	
	table.find("input[@type=radio]").each(
		function() {
			
			if($(this).attr("checked")) {
				$(this).parent().addClass("selected")
				$(this).parents("tr").addClass("taken").addClass("tint")
				$(this).parents("tr").find("td").addClass("taken")
				
				
				var columnTDs = $(this).parents("table").find("input[@name="+$(this).attr("name")+"]").parent()
				columnTDs.addClass("taken")
				columnTDs.removeClass("incomplete")
				
			}
			
		}
	)
	
	var unTaken = table.find("td").not($(".taken , .blank"))
	
	
	if(unTaken.size()==1) {
		unTaken.find("input:radio").attr("checked",true)
		resetRadioGrid(table)
	}
	
}




function survey_validate(e) {
	questionValid = true
	$(this).find(".checkbox-group-group,.radio-group").each(
		function() {
			var cl = $(this).attr("class")
			var required = parseInt(cl.substr(cl.indexOf("required-")+9))
			
			if(!isNaN(required)) {
				var limit = parseInt(cl.substr(cl.indexOf("limit-")+6))
				limit = isNaN(limit) ? 1 : limit
				
				var selected = $(this).find("label.selected").size()
				
				if(selected<required) {
					
					
					var part = $(this).parents("fieldset").find("legend b").text()
					
					part = part ? "for part "+part+" " : ""
					
					
					if(required==limit) {
						if(required==1) {
							alert("please select an option "+part+"before proceeding")
						}
						else {
							alert("please select "+required+" options "+part+"before proceeding")
						}
					}
					
					else {
						
						if(required==1) {
							alert("please select at least 1 option "+part+"before proceeding")
						}
						
						else {
							alert("please select at least "+required+" options "+part+"before proceeding")
						}
					}
					
					questionValid = false
					
					
				}
				
			}
		}
	)
	
	
	if(questionValid) {
		
		
		var incomplete = $("div.radio-grid :radio").parent().not(".taken")
		
		questionValid = incomplete.size()<1
		incomplete.addClass("incomplete")
		
		if(!questionValid) {
			alert("please select an option for each column")
		}
	
	}
	
	
	if(questionValid) {
		
		$(this).find("textarea").each(
			function() {
				var cl = $(this).attr("class")
				try{
					var required = parseInt(cl.substr(cl.indexOf("required-")+9))
				}
				catch(e) {}
				
				if(!isNaN(required)) {
					if(this.value.length<required) {
						
						var part = $(this).parents("fieldset").find("legend b").text()
					
						part = part ? " part "+part+" " : " all parts "
						
						questionValid = false
						
						alert("please ensure that you complete"+part+"of this question") 
						
					}
			
				}
			}
		)
		
	}
	
	if(questionValid) {
		$(this).find(".other-text").each(
			function() {
				
				
				if(!this.value) {
					alert("please specify your answer")
					this.focus()
					questionValid=false
				}
				
				
			}
			
		)
	}
	
	
	if(questionValid) {
		
		$(this).find(".check-check").each(
			function() {
				
				
				if(!this.value) {
					
					var partIndex = this.className.substr(this.className.indexOf("ch-ch-")+6,1)
					var thisPart = $(this).parents("fieldset")
					
					if(thisPart.css("display")!="none") {
					
						var thisPartIndex = thisPart.attr("class").substr(thisPart.attr("class").indexOf("part")+4,1)
						
						questionValid=false
						
						var checks = $(this.form).find("fieldset.part"+partIndex+" input:checkbox").each(function() {
						
							if(this.checked) {questionValid=true}
																												  
						})
						
						if(!questionValid) {
							alert("please make a selection in part " + partIndex +" or briefly explain your answer in part "+thisPartIndex)
						}
					}
					
					
				}
				
				
			}
			
		)
		
		
	}
	
	
	
	return questionValid
	
	
}











$(setup_fields)


/* - flash current 

$(function() {
	$("div.progress div.current div div").css("visibility","hidden")
	fadeInCurrent()
})

*/


