(function() {
    var myvet_widget = {
	error_el: null,
	wrapper_el: null,
	placeholder: 'Your Zip Code',
	zip_input_el: null,
	search_el: null,
	addEvent: function(obj, evType, fn, useCapture) {
	    if (obj.attachEvent) {
		var r = obj.attachEvent("on"+evType, fn);
		return r;
	    }
	    else if (obj.addEventListener) {
		obj.addEventListener(evType, fn, useCapture);
		return true;
	    }
	    else {
		alert("Unable to attach handler");
		return false;
	    }
	},
	getSrcElement: function(e) {
	    if (!e)
		e = window.event;
	    var el = e.srcElement || e.target;
	    if (el.nodeType == 3)
		el = el.parentNode;
	    return el;
	},
	reset_placeholder: function (e) {
	    var el = myvet_widget.getSrcElement(e);
	    var patt = /^\s*$/;
	    if (el.value.match(patt)) {el.value = myvet_widget.placeholder;}
	},
	unset_placeholder: function(e)  {
	    var el = myvet_widget.getSrcElement(e);
	    if (el.value == myvet_widget.placeholder) {el.value = '';}
	    myvet_widget.error_el.innerHTML = '';  
	},
	render_widget: function() {
	    var wHTML = "";
	    document.write('<link rel="stylesheet" type="text/css" href="http://www.myveterinarian.com/widgets/myvet-widget.css" /><!--[if lt IE 9]><link rel="stylesheet" href="http://www.myveterinarian.com/widgets/myvet-widget-ie-fixes.css" type="text/css" media="screen" /><![endif]-->');
	    wHTML += ('<p class="urlMyVet"><a href="http://myveterinarian.com">MyVeterinarian.com</a></p><p class="hdFindVet">Find a Veterinarian</p><form id="myvet-widget">')
	    wHTML += ('<label for="zipcode" class="hidden">Enter Zip Code</label><input type="text" id="myvet-zipcode" maxlength=15 value="'+myvet_widget.placeholder+'" placeholder="'+myvet_widget.placeholder+'"/>');
	    wHTML += ('<input type="checkbox" id="cbEmergency" value="1" /><label for="cbEmergency" class="title_cb">Veterinary Emergency</label>');
	    wHTML += ('<input type="button" id="myvet-search" value="Search"/>');
	    wHTML += ('<div id="myvet-error" class="error msg"></div>');
	    wHTML += ('</form>');
	    myvet_widget.wrapper_el.innerHTML = wHTML;
	},
	do_search: function() {
	    var utm_s;
	    var search_url;
	    var patt = /^\d{5}(-\d{4})?$/;
	    var is_emergency = document.getElementById('cbEmergency').checked;
	    var zip = myvet_widget.zip_input_el.value;
	    myvet_widget.error_el.innerHTML = ''
	    if (!zip.match(patt)) {
		myvet_widget.error_el.innerHTML = "<div><p>Please enter a valid zip code and try again.</p></div>";
		return false;
	    } else {
		utm_s=myvet_widget.wrapper_el.className;
		search_url = 'http://www.myveterinarian.com/avma/vclPublic/#page=searchResult&zipCode='+zip+'&isEmergency='+is_emergency + "&utm_source=" + utm_s + "&utm_medium=widget&utm_campaign=launch";
		window.open(search_url);
	    }
	},
	init: function() {
	    myvet_widget.wrapper_el = document.getElementById('myvet-widget-wrapper');
	    myvet_widget.render_widget();
	    myvet_widget.error_el = document.getElementById('myvet-error');
	    myvet_widget.zip_input_el = document.getElementById('myvet-zipcode');
	    myvet_widget.search_el = document.getElementById('myvet-search');
	    myvet_widget.addEvent(myvet_widget.zip_input_el, 'blur', myvet_widget.reset_placeholder, false);
	    myvet_widget.addEvent(myvet_widget.zip_input_el, 'focus', myvet_widget.unset_placeholder, false);
	    myvet_widget.addEvent(myvet_widget.search_el, 'click', myvet_widget.do_search, false);
	}
    }
    myvet_widget.init();
})();
