ddg = function () {
	var delimiter = '^';
	
	var addEvent = function(obj,evt,fn) {
		if (obj.addEventListener) {
			obj.addEventListener(evt,fn,false);
		} else if (obj.attachEvent) {
			obj.attachEvent('on'+evt,fn);
		}
	};
	
	var createCookie = function(name,value) {
	    document.cookie = name+"="+value;
	};

	var readCookie = function(name) {
	    var nameEQ = name + "=";
	    var ca = document.cookie.split(';');
	    for(var i=0;i < ca.length;i++) {
	        var c = ca[i];
	        while (c.charAt(0) === ' ') {
				c = c.substring(1,c.length);
			}
	        if (c.indexOf(nameEQ) === 0) {
				return c.substring(nameEQ.length,c.length);
			}
	    }
	    return null;
	};

	var map = function (arr, func) {
		var i;
		for (i = 0; i < arr.length; i += 1) {
			func(arr[i], i);
		}
	};
	
	var addTextAnswer = function (parent, elType, elValue, elClass) {
		var el = document.createElement(elType);
		el.appendChild(document.createTextNode(elValue));
		el.className = elClass;
		parent.appendChild(el);
	};
	
	var addMoreMedications = function () {
		var drugTable = document.getElementById('drug-list').getElementsByTagName('table')[0];
		var medRow = document.getElementById('med-row');
		
		var tr = document.createElement('tr');
		var td1 = document.createElement('td');
		var td2 = document.createElement('td');
		
		var input1 = document.createElement('input');
		var input2 = document.createElement('input');
		input1.type = 'text';
		input2.type = 'text';
		
		td1.appendChild(input1);
		td2.appendChild(input2);
		
		tr.appendChild(td1);
		tr.appendChild(td2);
		
		drugTable.getElementsByTagName('tbody')[0].appendChild(tr);
	};
	
	var printForm = function () {
		var drugList = document.getElementById('drug-list');
		var counter = 0;
		var medList = false;
		var medQue = [];
		
		if (window.opener && window.opener.location.href.match('pdsol_') && document.cookie) {
			
			// Load the doctor questions
			map(document.getElementById('doctor-questions').getElementsByTagName('div'), function (currQ, num) {
				var doctorQuestionAnswers = readCookie('doctorQuestions').split(delimiter);
				var longAnswers = readCookie('longAnswers').split(delimiter);
				var currA = doctorQuestionAnswers[num];
				if (currQ.className.match('question')) {
					if (currA !== 'none') {
						currQ.className += ' answered';
						document.getElementById(currA).parentNode.className = 'answer-label';
					}
					
					if (longAnswers[num] === 'none') {
						currQ.className += ' no-lines';
					} else if (longAnswers[num] === 'show-lines') {
						currQ.className += ' show-lines';
					} else {
						addTextAnswer(currQ, 'p', longAnswers[num], 'long-answer');
					}
				}
			});
			
			// Load the questions the user has selected
			map(readCookie('userQuestions').split(delimiter), function (item) {
				if (item) {
					document.getElementById('user-question-intro').style.display = 'block';
					document.getElementById(item).parentNode.style.display = 'block';
				}
			});
			
			
			var meds = readCookie('medications').split(delimiter);
			
			if (meds) {
				for (var i = 0; i < meds.length; i += 2) {
					if (meds[i] !== 'blank') {
						var tr = document.createElement('tr');
						var td1 = document.createElement('td');
						var td2 = document.createElement('td');

						td1.appendChild(document.createTextNode(meds[i]));
						td2.appendChild(document.createTextNode(meds[i + 1]));

						tr.appendChild(td1);
						tr.appendChild(td2);
						
						medQue.push(tr);

						drugList.getElementsByTagName('table')[0].appendChild(tr);
						
						medList = true;
					}
				}
			}
			
			if (medList === true) {
				drugList.innerHTML = '<table><tr><th>Medication name</th><th>Amount you take each day</th></tr></table>';
				for (i = 0; i < medQue.length; i +=1) {
					drugList.getElementsByTagName('table')[0].appendChild(medQue[i]);
				}
			} else {
				drugList.innerHTML = '<table class="empty"><tr><th>Medication name</th><th>Amount you take each day</th></tr><tr><td colspan="2"><img src="images/lines.gif"><img src="images/lines.gif"></td></tr></table>';
			}
			

		}
	};
	
	var handleSubmit = function () {
		
		// User selected questions
		var selectedQuestions = function () {
			var arr = [];
			
			map(document.getElementById('user-questions').getElementsByTagName('input'), function (item) {
				if (item.type === 'checkbox' && item.checked) {
					arr.push(item.id);
				}
			});
			
			return arr;
		}();
		
		var doctorQuestionAnswers = function () {
			var arr = [];
			
			map(document.getElementById('doctor-questions').getElementsByTagName('div'), function (item) {
				var radios;
				var answer = 'none';
				
				if (item.className.match('question')) {
					radios = item.getElementsByTagName('input');
					
					if (radios.length > 0) {
						map(radios, function (radio) {
							if (radio.checked) {
								answer = radio.id;
							}
						});
					} else {
						answer = 'none';
					}
					arr.push(answer);
				}
			});
			return arr;
		}();
		
		var longAnswers = function () {
			var arr = [];
			
			map(document.getElementById('doctor-questions').getElementsByTagName('div'), function (item) {
				var textareas = item.getElementsByTagName('textarea');
				var inputs = item.getElementsByTagName('input');
				
				if (item.className.match('radio-other')) {
					for (var i = 0; i < inputs.length; i += 1) {
						if (inputs[i].className === 'other') {
							if (inputs[i].checked && textareas[0].value) {
								arr.push(textareas[0].value);
							} else if (inputs[i].checked) {
								arr.push('show-lines');
							} else {
								arr.push('none');
							}
						}
					}
				} else if (item.className.match('textarea') && textareas[0].value) {
					arr.push(textareas[0].value);
				} else if (item.className.match('textarea')) {
					arr.push('show-lines');
				} else if (item.className.match('radio-supplemental')) {
					if (!inputs[1].checked && textareas[0].value) {
						arr.push(textareas[0].value);
					} else if (!inputs[1].checked) {
						arr.push('show-lines');
					} else {
						arr.push('none');
					}
				} else {
					arr.push('none');
				}
			});
			return arr;
		}();
		
		var medications = function () {
			var arr = [];
			
			map(document.getElementById('drug-list').getElementsByTagName('input'), function (item) {
				if (item.value) {
					arr.push(item.value);
				} else {
					arr.push('blank');
				}
			});
			return arr;
		}();
		
		
		if (selectedQuestions) {
			createCookie('userQuestions', selectedQuestions.join(delimiter), 1);
		}
		
		if (medications) {
			createCookie('medications', medications.join(delimiter), 1);
		}
		
		createCookie('longAnswers', longAnswers.join(delimiter), 1);
		createCookie('doctorQuestions', doctorQuestionAnswers.join(delimiter), 1);
		
		window.open(window.location, 'printwindow', 'resizable,width=800,height=800,scrollbars');
		return false;
		
	};
	
	var init = function () {
		addEvent(window, 'load', function () {
			var message = 'The functionality on this page requires cookies. ' + 
			              'Please enable cookies in your web browser for this site and refresh the page.';
			var messageContainer = document.getElementById('message-container');
			
			document.getElementById('add-more').onclick = function () {
				addMoreMedications();
				return false;
			}
			
			document.getElementById('ddg-form').onsubmit = handleSubmit;
			
			createCookie('test','test');
			if (!readCookie('test')) {
				messageContainer.appendChild(document.createTextNode(message));
				messageContainer.className = 'warning-message';
			}
			
			printForm();
		});
	};
	
	return {init: init};
}();

ddg.init();