var InfoCode=function() {
	var re= /(?:\D|\b)\d{7}(?!\d)/g; // 7 Digit Numbers
	var cleanre= /\d+/g; // And rid ourselves of Non-digits
	var hadkitnumbers=false;
	var informed=false;
	var kitnumbers;
	var informers=[]; // The fields to which we add classes when a kitnumber is in play
	var requiredfields={};
	var allrequired=false;

	var commframe;

function getKitnumbers(field) {
	var value=(typeof(field)=='object' ? field.value : field);
	var matches;
	if (!typeof(value)=='string') { return; }
	if (matches=value.match(re)) {
		kitnumbers=matches.join(',').match(cleanre);
		return(true);
	} else {
		return(false);
	}
}

function commentsFocused() {
	document.getElementById('comments').style.zIndex=29;
}

function editComments() {
	document.getElementById('responseform').style.display="none";
	document.getElementById('infoform').style.display="inline";
}

function gotoComments() {
	document.forms['theinfoform'].comments.focus();
	commentsFocused();
}

function validateSubmission() {
	var force=document.forms['theinfoform'].force.value;
	checkRequired();
	if (allrequired==false) { return false; } // Prevent submission
	try { pageTracker._trackPageview('/inforequest/validated'); } catch(e) { }
	if (force=='0') {
		return(interactiveSubmit()); 
		return false;
	} else { return true; }
}

function getIFrameDocument(frameid) {
	// if contentDocument exists, W3C compliant (Mozilla) 
	var rv;
	if (document.getElementById(frameid).contentDocument){ 
		rv = document.getElementById(frameid).contentDocument; 
	} else { // IE 
		rv = document.frames[frameid].document; 
	} 
	return rv;
}

function interactiveSubmit() {
	try {
		var commdoc=getIFrameDocument('commframe');
		commdoc.write('<html><head>' +
			'<script type="text/javascript"> '+
			'</script></head><body><form action="/cgi-bin/sendinforequest.cgi" method="post"><input type="hidden" name="name"><input type="hidden" name="comments"><input type="hidden" name="email"><input type="hidden" name="interactive" value="1"></body></html>');
		commdoc.close();

		var screenform=document.forms['theinfoform'];
		var submitform=commdoc.forms[0];
		submitform['name'].value=screenform['name'].value;
		submitform['email'].value=screenform['email'].value;
		submitform['comments'].value=screenform['comments'].value;
		screenform['force'].value='2'; // Only try JS code once, so if they want to continue, they may
		submitform.submit();
	} catch(e) { return true; }
	return false;
}

function sayThanks() {
	top.location.href="/radon/radon_thanks.html";
}

function formResponse(elem,suggested) {
	var respform=document.getElementById('responseform');
	var respelem=document.getElementById('response');
	respelem.innerHTML=elem.innerHTML;
	respform.style.display='inline';
	document.getElementById('infoform').style.display='none';
	document.forms['theinfoform']['suggested'].value=suggested;
	
}

function changedRequired(field) {
	if (typeof(field)!='object' || typeof(field.value)!='string') { return; }

	var field_invalid='rflabel_invalid';
	var field_ok='rflabel_ok';
	var setclass=field_ok;

	if (field.value.length==0) { setclass=field_invalid; }
	else if ( field.id=='email' ) {
		if ( field.value.search(/^[\w\._]+@\w+\.[\w\.]*\w\w+$/ ) ) {
			setclass=field_invalid;
		}
	}
	document.getElementById(field.id+'_label').className= setclass;
}

function fieldChanged(field) {
	var has=getKitnumbers(field);
	if (has==hadkitnumbers) { return; } // No Change
	hadkitnumbers=has;

	for (lcv=informers.length-1; lcv>=0; lcv--) {
		if ( informers[lcv]!=null) {
			informers[lcv].className= ( has ? 'haskits' : '');
		}
	}
}

function checkRequired() {
	var fieldid;
	var field;
	var label;
	var fix=[];
	allrequired=true;
	for (fieldid in requiredfields) {
		try {
			if (requiredfields.hasOwnProperty(fieldid)) {
				if (!requiredfields[fieldid].status) { continue; }
				else {
					field=document.getElementById(fieldid);
					label=document.getElementById(fieldid+'_label');
					if (label.className!='rflabel_ok') { changedRequired(field); }
					if (label.className!='rflabel_ok') { fix.push(field); }
				}
			}
		} catch(e) { }
	}
	if (fix.length) {
		allrequired=false;
		fix[0].focus();
	}
}

function init(params) {
	if (typeof(params)!='object') { return; }
	var cur;

	commframe=document.getElementById('commframe');

	document.forms['theinfoform'].onsubmit=validateSubmission;
	document.forms['theinfoform'].force.value='0'; // We don't force if javascript is enabled

	if (! (typeof(params.informers)=='object' && params.informers.length)) { return; }
	var lcv;
	cur=params.informers;
	for (lcv=cur.length-1; lcv>=0; lcv--) {
		informers.push(document.getElementById(cur[lcv]));
	}
	if (params.focus) {
		var elem=document.getElementById(params.focus);
		elem.focus();
	}
	if (typeof(params.required)=='object') {
		cur=params.required;
		for (lcv=cur.length-1; lcv>=0; lcv--) {
			requiredfields[cur[lcv]]={ status:-1 } // -1 :Unchecked, 0:Good, 1:Invalid
		}
	} else { allrequired=true; }
}

function lookupKitInfo() {
}

	return {
		fieldChanged:fieldChanged,
		checkRequired:checkRequired,
		changedRequired:changedRequired,
		init:init,
		formResponse:formResponse,
		sayThanks:sayThanks,
		editComments:editComments,
		gotoComments:gotoComments,
		commentsFocused:commentsFocused
	}
}();

