function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

function getElementsByAttribute(oElm, strTagName, strAttributeName, strAttributeValue){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	var oAttributeValue = (typeof strAttributeValue != "undefined")? new RegExp("(^|\\s)" + strAttributeValue + "(\\s|$)") : null;
	var oCurrent;
	var oAttribute;
	for(var i=0; i<arrElements.length; i++){
		oCurrent = arrElements[i];
		oAttribute = oCurrent.getAttribute && oCurrent.getAttribute(strAttributeName);
		if(typeof oAttribute == "string" && oAttribute.length > 0){
			if(typeof strAttributeValue == "undefined" || (oAttributeValue && oAttributeValue.test(oAttribute))){
				arrReturnElements.push(oCurrent);
			}
		}
	}
	return arrReturnElements;
}


function array_unique(ar){
  var sorter = {};
  for(var i=0,j=ar.length;i<j;i++){
    sorter[ar[i]] = ar[i];
  }
  ar = [];
  for(var i in sorter){
    ar.push(i);
  }
  return ar;
}
var survey = {
	config: {
		fireForm : true
	},
	displayError : function(){
		alert( "You may only select an option once." );
	},
	cantEqual : function( theNames ){
		var theElements;
		var theChosen = new Array();
		var duplicate = false;
		for (var i=0; i < theNames.length; i++) {
			theElements = getElementsByAttribute( document.body, "input", "name", theNames[i] );
			for (var j=0; j < theElements.length; j++) {
				if ( theElements[j].checked == true ){
					theChosen.push( theElements[j].value );
				}
			};
		};
		var uniqued = array_unique(theChosen);
		if (uniqued.length != theChosen.length){
			duplicate = true;
		}

		if (duplicate == true) {
			survey.config.fireForm = false;
		};
	},
	trigger : function(){
		survey.config.fireForm = true;
		survey.cantEqual( ["1month", "2month", "3month"] );
		survey.cantEqual( ["1time", "2time", "3time", "4time"] );
		survey.cantEqual( ["1day", "2day", "3day"] );
		survey.cantEqual( ["1city", "2city", "3city", "4city", "5city"] );
		survey.cantEqual( ["1halfday", "2halfday"] );
		if (survey.config.fireForm == false){
			survey.displayError();
		}
	},
	init: function(){
		var theForm = document.getElementById("survey");
		theForm.onsubmit = (function(){
			survey.trigger();
			return survey.config.fireForm;
		})
	}
}
addLoadEvent(survey.init);
