(function() {

function getQueryStringVars() {
	var result = [];
	var query = window.location.search.substring(1);
	var vars = query.split("&");
	for (var i=0;i<vars.length;i++) {
		var pair = vars[i].split("=");
		if(pair.length < 2)
			continue;
		result[pair[0].toLowerCase()] = unescape(decodeURI(pair[1].replace(/\+/g, ' ')));
	}
	return result;
}

function setValue(elem, value) {
	var type = elem.nodeName.toLowerCase();
	if(type == "input") {
		elem.value = value;
	} else if(type == "select") {
		for(var i = 0; i < elem.options.length; ++i) {
			var option = elem.options[i];
			if(option.text.toLowerCase() == value || option.value.toLowerCase() == value) {
				option.selected = true;
				return;
			}
		}
	}
}

function setValuesFromQueryString()
{
	if(!document.getElementById) return;
	var query = getQueryStringVars();
	var names = "firstname,lastname,address,city,state,zipcode,email".split(',');
	for(var i = 0; i < names.length; ++i) {
		var id = names[i];
		var elem = document.getElementById(id);
		var value = query[id];
		if(elem != null &&  value != null) {
			if(!elem.nodeName)
				return;
			setValue(elem, value);
		}
	}
}

var _timer = null;

// Dean Edwards/Matthias Miller/John Resig
function init() {
  // quit if this function has already been called
  if (arguments.callee.done) return;

  // flag this function so we don't do the same thing twice
  arguments.callee.done = true;

  // kill the timer
  if (_timer) clearInterval(_timer);

  setValuesFromQueryString();
};

/* for Mozilla/Opera9 */
if (document.addEventListener) {
  document.addEventListener("DOMContentLoaded", init, false);
}

/* no special defer loaded script src="javascript:void(0)" hack for IE since it causes "secure non secure" warning, default to window.onload */

/* for Safari */
if (/WebKit/i.test(navigator.userAgent)) { // sniff
  var _timer = setInterval(function() {
    if (/loaded|complete/.test(document.readyState)) {
      init(); // call the onload handler
    }
  }, 10);
}

/* for other browsers */
window.onload = init;
})();