weddingDateDropDown = function(__constructor) {
    var targetField = __constructor;
    var el = document.getElementById(__constructor);
    var monthAry = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
    var monthLimit;
    
    this.setTargetField = function(tField) {
        targetField = tField;
        el = document.getElementById(tField);
        return this;
    }

    this.defaultTo = function(wedDate) {
        if (wedDate && el) el.value = wedDate.toLowerCase();
        return this;
    }
    
    this.generateDateList = function(wedDate) {
		if (el) {
			today = new Date();
			startYear = today.getFullYear();
			startMonth = today.getMonth();
			
			for (i=0;i<monthLimit;i++) {
				displayval = monthAry[startMonth++] + ' ' + startYear;
				optionval = jQuery.trim(displayval.toLowerCase());
				
				document.getElementById(targetField).options[document.getElementById(targetField).length++] = new Option(displayval, optionval);
				if (startMonth>11) {
					startMonth=0;
					startYear++;   
				}
			}
			
			this.defaultTo(wedDate);
        }
        return this;
    }
    
    this.setMonthLimit = function(m) {
        monthLimit = m;
        return this;
    }

    this.targetUrl = function(url, queryParam) {
        if(queryParam == null) {
            queryParam = 'weddingdate';
        }
        if(url) {
            jQuery('#'+targetField ).bind('change', function(e) {
               if (document.getElementById(targetField).selectedIndex!=0) {
                   q = url.indexOf('?')>=0 ? '&' : '?';
                   document.location = url.replace(/\+/g, '%20') + q + queryParam + '=' + el.value;
                      
               } else {
                   //view all - removes the date parameter from the url
                   r = new RegExp('(&*)' + queryParam + '=(\\w+)(%|\\s)(\\d+)', 'gi');
                   document.location = document.location.href.replace(r, '');
               }
            });
        }
        return this;
    }

}