/* Copyright 2007 Veer West LLC - http://www.formassembly.com
 * populate a web form with querystring parameters.
 */
new function(_) {
	
	var populateForms = function() {
		var params = getParameters();
		var forms  = document.getElementsByTagName('FORM');
		for (var i=0;i<forms.length;i++) {
			populateForm(forms[i],params);
		}
	}
	var populateForm = function(f, values) {
	    if(!f['tfa_dbFormId']) {
	    	// skip non-formassembly.com forms
	    	return;
	    } 
		
		if(wFORMS && wFORMS.getBehaviorInstance) {
			var _bs = wFORMS.getBehaviorInstance(f,'switch');
			var _bc = wFORMS.getBehaviorInstance(f,'calculation');
		}
		
	    for(var fieldName in values) {
	    	var fld = f.elements[fieldName];
	    	if(fld) {
	    		if(fld.tagName) {
			    	if((fld.tagName=='INPUT' && (fld.type=='text' || fld.type=='hidden' || fld.type=='password'))
			    	          ||(fld.tagName=='TEXTAREA'));
			    		fld.value = values[fieldName]; 
			    	if(fld.tagName=='INPUT' && fld.type=='checkbox') {
			    		fld.checked = values[fieldName]?true:false;
			    	}
			    	if(fld.tagName=='SELECT') {
			    		fld.value = values[fieldName];
			    	}
					if(_bs) { // trigger switch behavior if appropriate.
						_bs.run(null,fld);
					}
					if(_bc) { // trigger calculation behavior if appropriate.
						_bc.run(null,fld);
					}
	    		} else {
	    			// radio group    			
		    		for (i=0;i<fld.length;i++) {
						if (fld[i].value==values[fieldName]) {
							fld[i].checked = true;
							if(_bs) { // trigger switch behavior if appropriate.
								_bs.run(null,fld[i]);
							}
							if(_bc) { // trigger calculation behavior if appropriate.
								_bc.run(null,fld[i]);
							}
							break;						
						}
					}
		    	}
	    	}
	    }  
	}
	var getParameters = function() {
		var param = Array();
		var q = document.location.search;
		if(q.length==0) 
			return;
	    var v = q.split('?')[1].split('&');
	    for(var i=0;i<v.length;i++) {
	    	param[v[i].split('=')[0]] = v[i].split('=')[1];
	    }
	    return param;
	} 
	
	var _addEvent = function(obj, type, fn) {
	
		if(!obj) { return; }
		
		if (obj.attachEvent) {
			obj['e'+type+fn] = fn;
			obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
			obj.attachEvent( 'on'+type, obj[type+fn] );
		} else if(obj.addEventListener) {			
			obj.addEventListener( type,fn, false );
		} else {
			var originalHandler = obj["on" + type]; 
			if (originalHandler) { 
			  obj["on" + type] = function(e){originalHandler(e);fn(e);}; 
			} else { 
			  obj["on" + type] = fn; 
			} 
		}
	}
	_addEvent(window,'load',populateForms);	
	
}();