var crcTable;
function crc32table(str){
	if(!crcTable){
		crcTable = new Array(256);
		var j,k;
		for(var i=0;i<256;i++){
			j=i;
			for(k=0;k<8;k++){
				j=(j&1)?(0xEDB88320^(j>>1)):(j>>1);
			}
			crcTable[i] = j;
		}
	}
	var n,c = 0xFFFFFFFF;
	for(n=0;n<str.length;n++) c = crcTable[(c^str.charCodeAt(n))&0xff]^(c>>8);
	return c^0xffffffff;
}

function crc32elements(frm){
	var v='';
	var i,el=frm.elements;
	for(i=0;i<el.length;i++){
		if(!el[i].name || el[i].name=="MODULE" || el[i].name=="PARAMS" || typeof el[i].nocrc!='undefined' || el[i].readOnly) continue;
		if(el[i].tagName=="INPUT"){
			switch(el[i].type){
				case 'text':
				case 'file':
				case 'image':
				//case 'hidden':
				case 'password':
					v+=el[i].value;
					break;

				case 'radio':
				case 'checkbox':
					v+=(el[i].checked?1:0);
					break;
			}
		}else if(el[i].tagName=="TEXTAREA" || el[i].tagName=="SELECT"){
			v+=el[i].value;
		}
	}
	v=1+crc32table(v);
	return v;
}

function OnFormChange(frm){
	//if(!frm.CRC) return false;
	if(frm.CRC==crc32elements(frm)) return false;
	return true;
}

function OnFormWait(frm){
	if(isNS) return;

	var el=document.getElementById('WaitFormSubmit');
	if(el){
		var elh=document.getElementById('HideFormSubmit');
		if(!elh) elh=frm;
		elh.style.display='none';
		el.style.display='';
		CursorWait();
	}
}
