// this will be set to true in html if IE
var isIE = false;

// cross-browser event registration:
function addEvent(obj,type,fn){
	if(obj.attachEvent){
		obj['e'+type+fn] = fn;
		obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
		obj.attachEvent( 'on'+type, obj[type+fn] );
	}else{
		obj.addEventListener( type, fn, false );
	}
}

// document.getElementById() shortcut:
function $(elId){ return document.getElementById(elId); }

addEvent(window,"load",initializeDoctorDiscussionGuide);

var ddg;
var formPageIdPrefix = "formP";
var paginationIdPrefix = "pagination";
var preloadImages = [];

function initializeDoctorDiscussionGuide(){
	ddg = $("infoCollectionContainer");
	ddg.pages = 4;
	ddg.currentPage = 1;
	// add event listeners to buttons:
	$("BtnPrevious").onclick = prevPage;
	$("BtnNext").onclick = nextPage;
	$("BtnNext").style.display = "block"; // set so that value can be read later
	
	makeRolloverImage($("BtnPrevious"));
	makeRolloverImage($("BtnNext"));
	makeRolloverImage($("BtnFinish"));
	makeRolloverImage($("printBtnFooterImg"));
	makeRolloverImage($("printBtnHeaderImg"));
	
	$("BtnFinish").onclick = showFormResults;
	
	// set up 'auto check' functionality for 'other' checkboxes:
	$("form1_question1_choice4_text").onclick = function(){ $("form1_question1_choice4").checked = true; }
	$("form1_question1_choice4_text").onblur = function(){ if($("form1_question1_choice4_text").value == ""){ $("form1_question1_choice4").checked = false; } }

	$("form1_question2_choice6_text").onclick = function(){ $("form1_question2_choice6").checked = true; }
	$("form1_question2_choice6_text").onblur = function(){ if($("form1_question2_choice6_text").value == ""){ $("form1_question2_choice6").checked = false; } }

	$("form1_question3_choice6_text").onclick = function(){ $("form1_question3_choice6").checked = true; }
	$("form1_question3_choice6_text").onblur = function(){ if($("form1_question3_choice6_text").value == ""){ $("form1_question3_choice6").checked = false; } }

	$("form1_question4_choice4_text").onclick = function(){ $("form1_question4_choice4").checked = true; }
	$("form1_question4_choice4_text").onblur = function(){ if($("form1_question4_choice4_text").value == ""){ $("form1_question4_choice4").checked = false; } }

	$("form1_question5_choice5_text").onclick = function(){ $("form1_question5_choice5").checked = true; }
	$("form1_question5_choice5_text").onblur = function(){ if($("form1_question5_choice5_text").value == ""){ $("form1_question5_choice5").checked = false; } }


	$("form2_question1_choice8_text").onclick = function(){ $("form2_question1_choice8").checked = true; }
	$("form2_question1_choice8_text").onblur = function(){ if($("form2_question1_choice8_text").value == ""){ $("form2_question1_choice8").checked = false; } }

	// print buttons event handlers:
	$("printBtnHeader").onclick = printWindow;
	$("printBtnFooter").onclick = printWindow;
	// pagination buttons handlers:
	$("paginationIndicationBtn_1").onclick = function(){ showPage(1); return false; }
	$("paginationIndicationBtn_2").onclick = function(){ showPage(2); return false; }
	$("paginationIndicationBtn_3").onclick = function(){ showPage(3); return false; }
	$("paginationIndicationBtn_4").onclick = function(){ showPage(4); return false; }
}


function makeRolloverImage(imgObj){
	imgObj.srcOriginal = imgObj.src;
	imgObj.srcOver = imgObj.getAttribute("src-over");
	imgObj.onmouseover = function(){ this.src = this.srcOver; }
	imgObj.onmouseout = function(){ this.src = this.srcOriginal; }
	// preload it:
	var newImage = document.createElement("img");
	newImage.src = imgObj.srcOver;
	preloadImages.push(newImage);
}


function printWindow(){
	window.print();
}

function nextPage(){
	var newPage = ddg.currentPage + 1;
	if(newPage>ddg.pages){
		newPage = 1;
	}
	showPage(newPage);
}

function prevPage(){
	var newPage = ddg.currentPage - 1;
	if(newPage<1){
		return;
	}
	showPage(newPage);
}

function showFormResults(){
	// hide form header, show print-view header:
	$("ddg_header_form").className = "printview";
	$("ddg_header_print_view").style.display = "block";

	// update class of form container:
	$("infoCollectionContainer").className = "printview";

	// update diplay prop of form containers:
	$("formP1").style.display = "block";
	$("formP2").style.display = "block";
	$("formP3").style.display = "block";
	$("formP4").style.display = "block";

	// unhide print-view footer:
	$("ddg_footer_print_view").style.display = "block";
	
	// unhide answers:
	unhideAnswers();

	// strange bug in IE: will not display correctly unless the section of the page is redrawn AFTER this function completes execution:
	if(isIE){
		$("infoCollectionContainer").style.display = "none";
		var ieUnhidTimeout = setTimeout(function(){
			$("infoCollectionContainer").style.display = "block";
			document.location = "#ddg_header_print_view";
		},1);
	}else{
		document.location = "#ddg_header_print_view";
	}
}

function showPage(pNum){
	// hide other form pages and pagination images:
	for(var i=1; i <= ddg.pages; i++){
		$(formPageIdPrefix+i).style.display = "none";
		$(paginationIdPrefix+i).style.display = "none";
	}
	// show new form page and pagination image:
	$(formPageIdPrefix+pNum).style.display = "block";
	$(paginationIdPrefix+pNum).style.display = "block";
	// if last page, hide 'next' btn and show 'finish' button:
	if(pNum===ddg.pages){
		// hide 'next'
		$("BtnNext").style.display = "none";
		// show 'finish'
		$("BtnFinish").style.display = "block";
	}else{
		// show 'next'
		if($("BtnNext").style.display != "block"){
			$("BtnNext").style.display = "block";
		}
		// hide 'finish'
		$("BtnFinish").style.display = "none";
	}
	
	// if first page, hide 'prev' button, else show:
	if(pNum==1){
		$("BtnPrevious").style.display = "none";
	}else{
		$("BtnPrevious").style.display = "block";
	}
	
	// update ddg status:
	ddg.currentPage = pNum;
	// jump to top of form:
	document.location = "#infoCollectionContainer";
}

function unhideAnswers(){
	var container = $("infoCollectionContainer");
	var labelElements = container.getElementsByTagName("label");
	
	for(var i = 0; i < labelElements.length; i++){
		var formEl = $(labelElements[i].htmlFor);
		var elType = formEl.getAttribute("type");

		if(elType == "radio" || elType == "checkbox"){
			if(formEl.checked){
				// odd cases:
				if(formEl.id == "form1_question1_choice4"){ labelElements[i].innerHTML = $("form1_question1_choice4_text").value; }
				if(formEl.id == "form1_question2_choice6"){ labelElements[i].innerHTML = $("form1_question2_choice6_text").value; }
				if(formEl.id == "form1_question3_choice6"){ labelElements[i].innerHTML = $("form1_question3_choice6_text").value; }
				if(formEl.id == "form1_question4_choice4"){ labelElements[i].innerHTML = $("form1_question4_choice4_text").value; }
				if(formEl.id == "form1_question5_choice5"){ labelElements[i].innerHTML = $("form1_question5_choice5_text").value; }
				if(formEl.id == "form2_question1_choice8"){ labelElements[i].innerHTML = $("form2_question1_choice8_text").value; }

				labelElements[i].style.display = "block";
			}
		}else{
			if(elType == "text"){
				// is it empty?
				if(formEl.value != ""){
					// if label has display-value-here attribute, then put value into label
					if(labelElements[i].getAttribute("display-value-here")){
						// prepend value or just insert it?
						if(labelElements[i].getAttribute("prepend-value")){
							labelElements[i].innerHTML = formEl.value + " " + labelElements[i].innerHTML;
						}else{
							labelElements[i].innerHTML = formEl.value;
						}
					}
					// unhide label:
					labelElements[i].style.display = "block";
				}
			}
		}
	}
}




