function AttachEvent(obj,evt,fnc,useCapture){
if (!useCapture) useCapture=false;
if (obj.addEventListener){
obj.addEventListener(evt,fnc,useCapture);
return true;
} else if (obj.attachEvent) return obj.attachEvent("on"+evt,fnc);
else{
MyAttachEvent(obj,evt,fnc);
obj['on'+evt]=function(){ MyFireEvent(obj,evt) };
}
} 
function MyAttachEvent(obj,evt,fnc){
if (!obj.myEvents) obj.myEvents={};
if (!obj.myEvents[evt]) obj.myEvents[evt]=[];
var evts = obj.myEvents[evt];
evts[evts.length]=fnc;
}

function MyFireEvent(obj,evt){
if (!obj || !obj.myEvents || !obj.myEvents[evt]) return;
var evts = obj.myEvents[evt];
for (var i=0,len=evts.length;i<len;i++) evts();
}

function escapeFormFields(){
	var f; 
	var j;
	var forms = document.forms;
	var i;
	var fl = forms.length;
	var els;
	var el;
	var elsL;
	for (i=0;i<fl;i++){
		//don't intefere with google searches
		f = forms[i];
		fn = f.name;
		
		if (fn != 'googleform'){
			els = f.elements;
			elsL = els.length
			for(j=0;j<elsL;j++){
				el = els[j];
				switch(el.type){
					case 'text':
					case 'textarea':
						el.value = el.value.replace(/'/g, '`')
						break;
					case 'select-one':
						el.options[el.selectedIndex].value = el.value.replace(/'/g, '`')
						break;
					default:
						//alert(el.elements.length);
						break;
				}
			}
		}
	}
}

checkForms = function (){
	var f; 
	var fn;
	var forms = document.forms;
	var i=0;
	var fl = forms.length;
	var strF;
	for (i=0;i<fl;i++){
		//don't intefere with google searches
		f = forms[i];
		fn = f.name;
		if (fn != 'googleform'){
			//alert(i)
			AttachEvent(f,'submit',escapeFormFields,false);
		}
	}
}

if(window.addEventListener){ // Mozilla, Netscape, Firefox
	window.addEventListener('load', checkForms, false);
} else { // IE
	window.attachEvent('onload', checkForms);
}	

