
 

var FS_INCLUDE_NAMES = 0, FS_EXCLUDE_NAMES = 1, FS_INCLUDE_IDS = 2, FS_EXCLUDE_IDS = 3, FS_INCLUDE_CLASSES = 4, FS_EXCLUDE_CLASSES = 5;

 

function getFormString( formRef, oAndPass, oTypes, oNames ) {

	if( oNames ) {

		oNames = new RegExp((( oTypes > 3 )?'\\b(':'^(')+oNames.replace(/([\\\/\[\]\(\)\.\+\*\{\}\?\^\$\|])/g,'\\$1').replace(/,/g,'|')+(( oTypes > 3 )?')\\b':')$'),'');

		var oExclude = oTypes % 2;

	}

	for( var x = 0, oStr = '', y = false; formRef.elements[x]; x++ ) {

		if( formRef.elements[x].type ) {

			if( oNames ) {

				var theAttr = ( oTypes > 3 ) ? formRef.elements[x].className : ( ( oTypes > 1 ) ? formRef.elements[x].id : formRef.elements[x].name );

				if( ( oExclude && theAttr && theAttr.match(oNames) ) || ( !oExclude && !( theAttr && theAttr.match(oNames) ) ) ) { continue; }

			}

			var oE = formRef.elements[x]; var oT = oE.type.toLowerCase();

			if( oT == 'text' || oT == 'textarea' || ( oT == 'password' && oAndPass ) || oT == 'datetime' || oT == 'datetime-local' || oT == 'date' || oT == 'month' || oT == 'week' || oT == 'time' || oT == 'number' || oT == 'range' || oT == 'email' || oT == 'url' ) {

				oStr += ( y ? ',' : '' ) + oE.value.replace(/%/g,'%p').replace(/,/g,'%c');

				y = true;

			} else if( oT == 'radio' || oT == 'checkbox' ) {

				oStr += ( y ? ',' : '' ) + ( oE.checked ? '1' : '' );

				y = true;

			} else if( oT == 'select-one' ) {

				oStr += ( y ? ',' : '' ) + oE.selectedIndex;

				y = true;

			} else if( oT == 'select-multiple' ) {

				for( var oO = oE.options, i = 0; oO[i]; i++ ) {

					oStr += ( y ? ',' : '' ) + ( oO[i].selected ? '1' : '' );

					y = true;

				}

			}

		}

	}

	return oStr;

}

 

function recoverInputs( formRef, oStr, oAndPass, oTypes, oNames ) {

	if( oStr ) {

		oStr = oStr.split( ',' );

		if( oNames ) {

			oNames = new RegExp((( oTypes > 3 )?'\\b(':'^(')+oNames.replace(/([\\\/\[\]\(\)\.\+\*\{\}\?\^\$\|])/g,'\\$1').replace(/,/g,'|')+(( oTypes > 3 )?')\\b':')$'),'');

			var oExclude = oTypes % 2;

		}

		for( var x = 0, y = 0; formRef.elements[x]; x++ ) {

			if( formRef.elements[x].type ) {

				if( oNames ) {

					var theAttr = ( oTypes > 3 ) ? formRef.elements[x].className : ( ( oTypes > 1 ) ? formRef.elements[x].id : formRef.elements[x].name );

					if( ( oExclude && theAttr && theAttr.match(oNames) ) || ( !oExclude && ( !theAttr || !theAttr.match(oNames) ) ) ) { continue; }

				}

				var oE = formRef.elements[x]; var oT = oE.type.toLowerCase();

				if( oT == 'text' || oT == 'textarea' || ( oT == 'password' && oAndPass ) || oT == 'datetime' || oT == 'datetime-local' || oT == 'date' || oT == 'month' || oT == 'week' || oT == 'time' || oT == 'number' || oT == 'range' || oT == 'email' || oT == 'url' ) {

					oE.value = oStr[y].replace(/%c/g,',').replace(/%p/g,'%');

					y++;

				} else if( oT == 'radio' || oT == 'checkbox' ) {

					oE.checked = oStr[y] ? true : false;

					y++;

				} else if( oT == 'select-one' ) {

					oE.selectedIndex = parseInt( oStr[y] );

					y++;

				} else if( oT == 'select-multiple' ) {

					for( var oO = oE.options, i = 0; oO[i]; i++ ) {

						oO[i].selected = oStr[y] ? true : false;

						y++;

					}

				}

			}

		}

	}

}

