encoding),"iso-8859-1"); for($last_encoded=0,$js_string="",$character=0;$character127 && $encode)) { if($character!=0) { if(!$last_encoded) $js_string.="'"; $js_string.="+"; } $js_string.="unescape('%".sprintf("%02X",$code)."')"; $last_encoded=1; } else { if($last_encoded) $js_string.="+'"; else { if($character==0) $js_string.="'"; } if($string[$character]=="'") $js_string.="\\"; $js_string.=$string[$character]; $last_encoded=0; } } if(!$last_encoded) $js_string.="'"; return($js_string); } Function EncodeHTMLString($string) { switch(strtolower($this->encoding)) { case "iso-8859-1": return(HtmlSpecialChars($string)); default: return(HtmlEntities($string)); } } Function EscapeJavascriptRegularExpressions($expression) { return(str_replace("\\.","\\\\.",str_replace("\t","\\t",str_replace("\n","\\n",str_replace("\r","\\r",$expression))))); } Function OutputError($error,$scope="") { $this->error=(strcmp($scope,"") ? $scope.": ".$error : $error); if(strcmp($function=$this->debug,"") && strcmp($this->error,"")) $function($this->error); return($this->error); } Function AddInput($arguments) { if(strcmp(GetType($arguments),"array")) return($this->OutputError("it was not specified a valid arguments array","AddInput")); $input=array(); $name=""; if(IsSet($arguments["NAME"]) && strcmp($arguments["NAME"],"")) $name=$input["NAME"]=$arguments["NAME"]; if(IsSet($arguments["ID"]) && strcmp($arguments["ID"],"")) $name=$input["ID"]=$arguments["ID"]; if(!strcmp($name,"")) return($this->OutputError("it was not specified a valid input name","AddInput")); if(IsSet($this->inputs[$name])) return($this->OutputError("it was specified the name of an already defined input",$name)); if(!IsSet($arguments["TYPE"])) return($this->OutputError("it was not defined the type of form input element",$name)); $needs_client_error_message=$needs_server_error_message=0; if(IsSet($arguments["ValidateAsEmail"])) { if(IsSet($arguments["ValidateAsEmailErrorMessage"]) && strcmp($arguments["ValidateAsEmailErrorMessage"],"")) $input["ValidateAsEmailErrorMessage"]=$arguments["ValidateAsEmailErrorMessage"]; else { $needs_client_error_message++; $needs_server_error_message++; } $input["ServerValidate"]=$input["ClientValidate"]=$input["ValidateAsEmail"]=1; } if(IsSet($arguments["ValidateAsCreditCard"])) { switch($arguments["ValidateAsCreditCard"]) { case "field": $field=(IsSet($arguments["ValidationCreditCardTypeField"]) ? $arguments["ValidationCreditCardTypeField"] : ""); $field_type=(IsSet($this->inputs[$field]) ? $this->inputs[$field]["TYPE"] : ""); switch($field_type) { case "text": case "select": break; case "radio": case "password": case "submit": case "image": case "reset": case "textarea": case "checkbox": case "hidden": default: return($this->OutputError("it was not specified valid validation credit card type field",$name)); } $input["ValidationCreditCardTypeField"]=$arguments["ValidationCreditCardTypeField"]; case "mastercard": case "visa": case "amex": case "dinersclub": case "carteblanche": case "discover": case "enroute": case "jcb": case "unknown": $input["ValidateAsCreditCard"]=$arguments["ValidateAsCreditCard"]; break; default: return($this->OutputError("it was not specified valid credit card type",$name)); } if(IsSet($arguments["ValidateAsCreditCardErrorMessage"]) && strcmp($arguments["ValidateAsCreditCardErrorMessage"],"")) $input["ValidateAsCreditCardErrorMessage"]=$arguments["ValidateAsCreditCardErrorMessage"]; else { $needs_client_error_message++; $needs_server_error_message++; } $input["ServerValidate"]=$input["ClientValidate"]=1; } if(IsSet($arguments["ValidateRegularExpression"])) { if(IsSet($arguments["ValidateRegularExpressionErrorMessage"]) && strcmp($arguments["ValidateRegularExpressionErrorMessage"],"")) $input["ValidateRegularExpressionErrorMessage"]=$arguments["ValidateRegularExpressionErrorMessage"]; else { $needs_client_error_message++; $needs_server_error_message++; } $input["ValidateRegularExpression"]=$arguments["ValidateRegularExpression"]; $input["ServerValidate"]=$input["ClientValidate"]=1; } if(IsSet($arguments["ValidateAsNotEmpty"])) { if(IsSet($arguments["ValidateAsNotEmptyErrorMessage"]) && strcmp($arguments["ValidateAsNotEmptyErrorMessage"],"")) $input["ValidateAsNotEmptyErrorMessage"]=$arguments["ValidateAsNotEmptyErrorMessage"]; else { $needs_client_error_message++; $needs_server_error_message++; } $input["ServerValidate"]=$input["ClientValidate"]=$input["ValidateAsNotEmpty"]=1; } if(IsSet($arguments["ValidateMinimumLength"])) { $minimum_length=intval($arguments["ValidateMinimumLength"]); if(strcmp(strval($minimum_length),$arguments["ValidateMinimumLength"]) || $minimum_length<=0) return($this->OutputError("it was not specified a valid minimum field length to validate",$name)); $input["ValidateMinimumLength"]=$minimum_length; if(IsSet($arguments["ValidateMinimumLengthErrorMessage"]) && strcmp($arguments["ValidateMinimumLengthErrorMessage"],"")) $input["ValidateMinimumLengthErrorMessage"]=$arguments["ValidateMinimumLengthErrorMessage"]; else { $needs_client_error_message++; $needs_server_error_message++; } $input["ServerValidate"]=$input["ClientValidate"]=1; } if(IsSet($arguments["ValidateAsEqualTo"])) { if(!strcmp($arguments["ValidateAsEqualTo"],"")) return($this->OutputError("it was not specified a valid comparision field",$name)); $input["ValidateAsEqualTo"]=$arguments["ValidateAsEqualTo"]; if(IsSet($arguments["ValidateAsEqualToErrorMessage"]) && strcmp($arguments["ValidateAsEqualToErrorMessage"],"")) $input["ValidateAsEqualToErrorMessage"]=$arguments["ValidateAsEqualToErrorMessage"]; else { $needs_client_error_message++; $needs_server_error_message++; } $input["ServerValidate"]=$input["ClientValidate"]=1; } if(IsSet($arguments["ValidateAsDifferentFrom"])) { if(!strcmp($arguments["ValidateAsDifferentFrom"],"")) return($this->OutputError("it was not specified a valid comnparision field",$name)); $input["ValidateAsDifferentFrom"]=$arguments["ValidateAsDifferentFrom"]; if(IsSet($arguments["ValidateAsDifferentFromErrorMessage"]) && strcmp($arguments["ValidateAsDifferentFromErrorMessage"],"")) $input["ValidateAsDifferentFromErrorMessage"]=$arguments["ValidateAsDifferentFromErrorMessage"]; else { $needs_client_error_message++; $needs_server_error_message++; } $input["ServerValidate"]=$input["ClientValidate"]=1; } if(IsSet($arguments["ValidateAsSet"])) { switch($arguments["TYPE"]) { case "radio": case "checkbox": break; case "select": if(IsSet($arguments["MULTIPLE"])) break; default: return($this->OutputError("it was not specified a valid field for as set validation",$name)); } $input["ValidateAsSet"]=$arguments["ValidateAsSet"]; if(IsSet($arguments["ValidateAsSetErrorMessage"]) && strcmp($arguments["ValidateAsSetErrorMessage"],"")) $input["ValidateAsSetErrorMessage"]=$arguments["ValidateAsSetErrorMessage"]; else { $needs_client_error_message++; $needs_server_error_message++; } $input["ServerValidate"]=$input["ClientValidate"]=1; } if(IsSet($arguments["ValidateAsInteger"])) { if(IsSet($arguments["ValidationLowerLimit"])) { if(strcmp(GetType($limit=$arguments["ValidationLowerLimit"]),"integer")) return($this->OutputError("it was not specified a valid lower limit value",$name)); $input["ValidationLowerLimit"]=$limit; } if(IsSet($arguments["ValidationUpperLimit"])) { if(strcmp(GetType($limit=$arguments["ValidationUpperLimit"]),"integer") || $limit<$input["ValidationLowerLimit"]) return($this->OutputError("it was not specified a valid upper limit value",$name)); $input["ValidationUpperLimit"]=$limit; } if(IsSet($arguments["ValidateAsIntegerErrorMessage"]) && strcmp($arguments["ValidateAsIntegerErrorMessage"],"")) $input["ValidateAsIntegerErrorMessage"]=$arguments["ValidateAsIntegerErrorMessage"]; else { $needs_client_error_message++; $needs_server_error_message++; } $input["ServerValidate"]=$input["ClientValidate"]=$input["ValidateAsInteger"]=1; } if(IsSet($arguments["ValidateAsFloat"])) { if(IsSet($arguments["ValidationLowerLimit"])) { $limit_type=GetType($limit=$arguments["ValidationLowerLimit"]); if(strcmp($limit_type,"double") && strcmp($limit_type,"integer")) return($this->OutputError("it was not specified a valid lower limit value",$name)); $input["ValidationLowerLimit"]=$limit; } if(IsSet($arguments["ValidationUpperLimit"])) { $limit_type=GetType($limit=$arguments["ValidationUpperLimit"]); if((strcmp($limit_type,"double") && strcmp($limit_type,"integer")) || $limit<$input["ValidationLowerLimit"]) return($this->OutputError("it was not specified a valid upper limit value",$name)); $input["ValidationUpperLimit"]=$limit; } if(IsSet($arguments["ValidationDecimalPlaces"])) { if((strcmp(GetType($places=$arguments["ValidationDecimalPlaces"]),"integer"))) return($this->OutputError("it was not specified a valid number of decimal places",$name)); $input["ValidationDecimalPlaces"]=$places; } if(IsSet($arguments["ValidateAsFloatErrorMessage"]) && strcmp($arguments["ValidateAsFloatErrorMessage"],"")) $input["ValidateAsFloatErrorMessage"]=$arguments["ValidateAsFloatErrorMessage"]; else { $needs_client_error_message++; $needs_server_error_message++; } $input["ServerValidate"]=$input["ClientValidate"]=$input["ValidateAsFloat"]=1; } if(IsSet($arguments["ValidationClientFunction"])) { if(!strcmp($arguments["ValidationClientFunction"],"")) return($this->OutputError("it was not specified a valid client validatation function",$name)); $input["ValidationClientFunction"]=$arguments["ValidationClientFunction"]; if(IsSet($arguments["ValidationClientFunctionErrorMessage"]) && strcmp($arguments["ValidationClientFunctionErrorMessage"],"")) $input["ValidationClientFunctionErrorMessage"]=$arguments["ValidationClientFunctionErrorMessage"]; else $needs_client_error_message++; $input["ClientValidate"]=1; } if(IsSet($arguments["ValidationServerFunction"])) { if(!strcmp($arguments["ValidationServerFunction"],"")) return($this->OutputError("it was not specified a valid server validation function",$name)); $input["ValidationServerFunction"]=$arguments["ValidationServerFunction"]; if(IsSet($arguments["ValidationServerFunctionErrorMessage"]) && strcmp($arguments["ValidationServerFunctionErrorMessage"],"")) $input["ValidationServerFunctionErrorMessage"]=$arguments["ValidationServerFunctionErrorMessage"]; else $needs_server_error_message++; $input["ServerValidate"]=1; } if(IsSet($arguments["ValidationErrorMessage"]) && strcmp($arguments["ValidationErrorMessage"],"")) $input["ValidationErrorMessage"]=$arguments["ValidationErrorMessage"]; else { if($needs_client_error_message>0 || $needs_server_error_message>0) return($this->OutputError("it was not specified a valid validate error message",$name)); } if(IsSet($arguments["ValidateOnlyOnClientSide"]) && $arguments["ValidateOnlyOnClientSide"] && IsSet($arguments["ValidateOnlyOnServerSide"]) && $arguments["ValidateOnlyOnServerSide"]) return($this->OutputError("it was specified to validate the input field value either only on client side and only on server side",$name)); if(!IsSet($input["ClientValidate"]) || (IsSet($arguments["ValidateOnlyOnServerSide"]) && $arguments["ValidateOnlyOnServerSide"])) $input["ClientValidate"]=0; if(IsSet($input["ServerValidate"]) && (!IsSet($arguments["ValidateOnlyOnClientSide"]) || !$arguments["ValidateOnlyOnClientSide"])) $this->server_validate=1; else $input["ServerValidate"]=0; switch(($input["TYPE"]=$arguments["TYPE"])) { case "file": if(IsSet($arguments["ACCEPT"])) $input["ACCEPT"]=$arguments["ACCEPT"]; case "text": if(IsSet($arguments["MAXLENGTH"])) $input["MAXLENGTH"]=$arguments["MAXLENGTH"]; if(IsSet($arguments["SIZE"])) $input["SIZE"]=$arguments["SIZE"]; break; case "password": if(IsSet($arguments["MAXLENGTH"])) $input["MAXLENGTH"]=$arguments["MAXLENGTH"]; if(IsSet($arguments["SIZE"])) $input["SIZE"]=$arguments["SIZE"]; if(IsSet($arguments["Encoding"])) { if(!strcmp($input["Encoding"]=$arguments["Encoding"],"")) return($this->OutputError("it was not defined a valid password encoding function",$name)); if(IsSet($arguments["EncodedField"])) { if(!strcmp($input["EncodedField"]=$arguments["EncodedField"],"")) return($this->OutputError("it was not defined a valid password encoded field",$name)); } if(IsSet($arguments["EncodingFunctionVerification"])) { if(!strcmp($input["EncodingFunctionVerification"]=$arguments["EncodingFunctionVerification"],"")) return($this->OutputError("it was not defined a valid password encoding function verification",$name)); } else $input["EncodingFunctionVerification"]=$arguments["Encoding"]; if(IsSet($arguments["EncodingFunctionScriptFile"])) { if(!strcmp($input["EncodingFunctionScriptFile"]=$arguments["EncodingFunctionScriptFile"],"")) return($this->OutputError("it was not defined a valid password encoding function script file",$name)); } } break; case "radio": case "checkbox": if(IsSet($arguments["CHECKED"]) && $arguments["CHECKED"]) $input["CHECKED"]=1; break; case "image": if(!IsSet($arguments["SRC"])) return($this->OutputError("it was not defined a valid image button source",$name)); $input["SRC"]=$arguments["SRC"]; if(IsSet($arguments["ALT"])) $input["ALT"]=$arguments["ALT"]; break; case "submit": case "reset": case "hidden": break; case "textarea": if(IsSet($arguments["ROWS"])) { $value=$arguments["ROWS"]; if(strcmp(GetType($value),"integer") || $value<=0) return($this->OutputError("it was not defined a valid number of ROWS",$name)); $input["ROWS"]=$value; } if(IsSet($arguments["COLS"])) { $value=$arguments["COLS"]; if(strcmp(GetType($value),"integer") || $value<=0) return($this->OutputError("it was not defined a valid number of COLS",$name)); $input["COLS"]=$value; } break; case "select": if(!IsSet($arguments["OPTIONS"]) || strcmp(GetType($arguments["OPTIONS"]),"array") || count($arguments["OPTIONS"])==0) return($this->OutputError("it was not defined a valid options array",$name)); for($option=0,Reset($arguments["OPTIONS"]);$optionOutputError("it was not defined a valid options array",$name)); for($option=0;$optionOutputError("it specified a selected value that is not a valid option",$name)); if(IsSet($selected[$option_value])) return($this->OutputError("it specified a repeated selected option value",$name)); $selected[$option_value]=1; } } $input["SELECTED"]=$selected; $input["MULTIPLE"]=1; } else { if(!IsSet($arguments["VALUE"]) || (strcmp(GetType($arguments["VALUE"]),"string") && strcmp(GetType($arguments["VALUE"]),"integer") && strcmp(GetType($arguments["VALUE"]),"double")) || !IsSet($options[$arguments["VALUE"]])) return($this->OutputError("it was not defined a valid input value",$name)); $input["VALUE"]=strval($arguments["VALUE"]); } $input["OPTIONS"]=$options; break; default: return($this->OutputError("it was not defined a supported input element",$name)); } if(IsSet($arguments["VALUE"])) $input["VALUE"]=$arguments["VALUE"]; if(IsSet($arguments["TABINDEX"])) $input["TABINDEX"]=$arguments["TABINDEX"]; if(IsSet($arguments["STYLE"])) $input["STYLE"]=$arguments["STYLE"]; if(IsSet($arguments["CLASS"])) $input["CLASS"]=$arguments["CLASS"]; if(IsSet($arguments["ONCHANGE"])) $input["ONCHANGE"]=$arguments["ONCHANGE"]; if(IsSet($arguments["ONCLICK"])) $input["ONCLICK"]=$arguments["ONCLICK"]; if(IsSet($arguments["Capitalization"])) { switch($arguments["Capitalization"]) { case "uppercase": case "lowercase": case "words": $input["Capitalization"]=$arguments["Capitalization"]; break; default: return($this->OutputError("it was not defined valid capitalization method attribute",$name)); } } if(IsSet($arguments["LABEL"])) { if(strlen($arguments["LABEL"])==0) return($this->OutputError("it was not defined valid input LABEL",$name)); $input["LABEL"]=$arguments["LABEL"]; } if(IsSet($arguments["ACCESSKEY"])) { if(strlen($arguments["ACCESSKEY"])==0) return($this->OutputError("it was not defined valid input ACCESSKEY",$name)); $input["ACCESSKEY"]=$arguments["ACCESSKEY"]; } if(IsSet($arguments["ExtraAttributes"])) $input["ExtraAttributes"]=$arguments["ExtraAttributes"]; if(IsSet($arguments["ClientScript"])) $input["ClientScript"]=$arguments["ClientScript"]; if(IsSet($arguments["Accessible"])) $input["Accessible"]=$arguments["Accessible"]; if(IsSet($arguments["ValidateOptionalValue"])) $input["ValidateOptionalValue"]=$arguments["ValidateOptionalValue"]; $input["SubForm"]=(IsSet($arguments["SubForm"]) ? $arguments["SubForm"] : ""); $this->inputs[$name]=$input; return(""); } Function AddDataPart($data) { $this->parts[]=$data; $this->types[]="DATA"; return(""); } Function SetInputElement($element) { if(IsSet($this->inputs[$element]["NAME"])) { $name=$this->inputs[$element]["NAME"]; if(IsSet($this->input_elements[$name])) { $input_element="elements[".$this->EncodeJavascriptString($name)."]"; if(count($this->input_elements[$name])==1) $this->inputs[$this->input_elements[$name][0]]["InputElement"]="elements[".$this->EncodeJavascriptString($this->inputs[$this->input_elements[$name][0]]["NAME"])."][0]"; $input_element.="[".count($this->input_elements[$name])."]"; $this->input_elements[$name][]=$element; } else { $input_element=$name; $this->input_elements[$name]=array($element); } $this->inputs[$element]["InputElement"]=$input_element; } else { if($this->inputs[$element]["ClientValidate"]) return($this->OutputError("it was specified an unnamed input to validate",$element)); if(IsSet($this->inputs[$element]["Encoding"])) return($this->OutputError("it was specified an unnamed input to encode",$element)); $this->inputs[$element]["InputElement"]=""; } return(""); } Function AddInputPart($input) { if(!IsSet($this->inputs[$input])) return($this->OutputError("it was not specified a valid input",$input)); if(IsSet($this->inputs[$input]["Accessible"])) { if(($read_only=!$this->inputs[$input]["Accessible"])) $type="READ_ONLY_INPUT"; else { $type="ACCESSIBLE_INPUT"; $this->accessible_parts++; } } else { $read_only=$this->ReadOnly; $type="INPUT"; } if(!$read_only) { if(strcmp($error=$this->SetInputElement($input),"")) return($error); $this->input_parts[]=$input; if($this->inputs[$input]["ClientValidate"]) $this->client_validate=1; } $this->inputs[$input]["Part"]=count($this->parts); $this->parts[]=$input; $this->types[]=$type; return(""); } Function AddInputHiddenPart($input) { if(!IsSet($this->inputs[$input])) return($this->OutputError("it was not specified a valid input",$input)); if(strcmp($error=$this->SetInputElement($input),"")) return($error); $this->inputs[$input]["Part"]=count($this->parts); $this->input_parts[]=$input; $this->parts[]=$input; $this->types[]="HIDDEN_INPUT"; $this->hidden_parts++; return(""); } Function AddLabelPart($arguments) { if(!IsSet($arguments["FOR"]) || !strcmp($label["FOR"]=$arguments["FOR"],"") || !IsSet($this->inputs[$label["FOR"]]) || !IsSet($this->inputs[$label["FOR"]]["ID"])) return($this->OutputError("it was not specified a valid label FOR input ID","AddLabelPart")); if(IsSet($arguments["LABEL"])) $label["LABEL"]=$arguments["LABEL"]; else { if(IsSet($this->inputs[$label["FOR"]]["LABEL"])) $label["LABEL"]=$this->inputs[$label["FOR"]]["LABEL"]; else $label["LABEL"]=""; } if(strlen($label["LABEL"])==0) return($this->OutputError("it was not specified a valid label",$label["FOR"])); if(IsSet($arguments["ACCESSKEY"])) $label["ACCESSKEY"]=$arguments["ACCESSKEY"]; else { if(IsSet($this->inputs[$label["FOR"]]["ACCESSKEY"])) $label["ACCESSKEY"]=$this->inputs[$label["FOR"]]["ACCESSKEY"]; else $label["ACCESSKEY"]=""; } if(strlen($label["ACCESSKEY"])==0) Unset($label["ACCESSKEY"]); else { $lower=$this->tolower_function; $key=$lower($label["ACCESSKEY"]); if(!$this->allow_used_access_keys) { if(IsSet($this->label_access_keys[$key])) return($this->OutputError("it was specified label FOR input \"".$label["FOR"]."\" that was already specified for input \"".$this->label_access_keys[$key]."\"",$label["FOR"])); } if(IsSet($this->reserved_access_keys[$key])) return($this->OutputError("it was specified label FOR input \"".$label["FOR"]."\" that is already reserved for \"".$this->reserved_access_keys[$key]."\"",$label["FOR"])); $this->label_access_keys[$key]=$label["FOR"]; } $this->parts[]=$label; $this->types[]="LABEL"; return(""); } Function AddFunction($arguments) { $name="AddFunction"; if(!IsSet($arguments["Function"]) || !strcmp($name=$arguments["Function"],"")) return($this->OutputError("it was not specified a valid function name",$name)); if(IsSet($this->functions[$name])) return($this->OutputError("it was specified an already existing function",$name)); $function=array(); switch($function["Type"]=(IsSet($arguments["Type"]) ? $arguments["Type"] : "")) { case "focus": case "select": case "select_focus": case "disable": case "enable": if(!IsSet($arguments["Element"]) || !IsSet($this->inputs[$arguments["Element"]]["InputElement"]) || !strcmp($this->inputs[$arguments["Element"]]["InputElement"],"")) return($this->OutputError("it was not specified a valid named form element to define a function",$name)); $function["Element"]=$arguments["Element"]; break; case "void": break; default: return($this->OutputError("it was not specified a valid function type",$name)); } $this->functions[$name]=$function; return(""); } Function RemoveFunction($name) { if(!IsSet($this->functions[$name])) return($this->OutputError("it was not specified an existing function name",$name)); Unset($this->functions[$name]); return(""); } Function OutputOnChangeAttribute(&$input,$function) { $onchange=""; if(IsSet($input["Capitalization"])) { switch($input["Capitalization"]) { case "uppercase": $onchange.="if(value.toUpperCase) value=value.toUpperCase() ;"; break; case "lowercase": $onchange.="if(value.toLowerCase) value=value.toLowerCase() ;"; break; case "words": $onchange.="if(value.toLowerCase && value.toUpperCase) { for(var capitalize=true, position=0, new_value='' ; positionEncodeHTMLString($input["CLASS"])."\""); if(IsSet($input["STYLE"])) $function(" style=\"".$this->EncodeHTMLString($input["STYLE"])."\""); if(IsSet($input["BORDER"])) $function(" border=\"".intval($input["border"])."\""); } Function OutputExtraAttributes(&$input,$function) { if(IsSet($input["ExtraAttributes"])) { for(Reset($input["ExtraAttributes"]),$attribute=0;$attributeEncodeHTMLString($input["ExtraAttributes"][$attribute_name])."\""); } } } Function Output($arguments) { $function="Output"; if(!IsSet($arguments["Function"]) || !strcmp($function=$arguments["Function"],"")) return($this->OutputError("it was not specified a valid output function",$function)); if($this->client_validate && !strcmp($this->ValidationFunctionName,"")) return($this->OutputError("it was not specified a valid client validation function name","Output")); if(($this->client_validate || count($this->functions)) && !strcmp($this->NAME,"")) return($this->OutputError("it was not specified a valid form name","Output")); $eol=(IsSet($arguments["EndOfLine"]) ? $arguments["EndOfLine"] : ""); $resubmit_condition=""; if(!$this->ReadOnly || $this->hidden_parts || $this->accessible_parts) { $function("
METHOD\" action=\"$this->ACTION\""); if(strcmp($this->NAME,"")) $function(" name=\"$this->NAME\""); if(strcmp($this->TARGET,"")) $function(" target=\"$this->TARGET\""); if(strcmp($this->ENCTYPE,"")) $function(" enctype=\"$this->ENCTYPE\""); if(strcmp($this->form_submitted_variable_name,"") && strcmp($this->form_submitted_test_variable_name,"") && strcmp($this->ResubmitConfirmMessage,"")) $resubmit_condition="(!".$this->form_submitted_test_variable_name." || confirm(".$this->EncodeJavascriptString($this->ResubmitConfirmMessage)."))"; if(strcmp($this->ONSUBMITTING,"")) $onsubmit=($this->client_validate ? "if(".$this->ValidationFunctionName."(this)==false) return false; ".$this->ONSUBMITTING."; return true" : "return true"); else $onsubmit=($this->client_validate ? "return ".$this->ValidationFunctionName."(this)" : "return true"); if(strcmp($this->ONSUBMIT,"")) $onsubmit=$this->ONSUBMIT."; $onsubmit"; if(strcmp($onsubmit,"")) $function(" onsubmit=\"$onsubmit\""); $function(">$eol"); } if($this->client_validate || strcmp($resubmit_condition,"") || count($this->functions)) { $jseol=(!strcmp($eol,"") ? "\n" : $eol); if(count($this->parts) && $this->client_validate) { for($script_files=$password_fields=array(),$input_part=0;$input_partinput_parts);$input_part++) { $input=$this->inputs[$this->input_parts[$input_part]]; $part_type=$this->types[$input["Part"]]; if(!strcmp($input["TYPE"],"password") && IsSet($input["Encoding"]) && (!strcmp($part_type,"INPUT") || !strcmp($part_type,"ACCESSIBLE_INPUT"))) { $password_fields[]=$this->input_parts[$input_part]; if(IsSet($input["EncodingFunctionScriptFile"]) && !IsSet($script_files[$input["EncodingFunctionScriptFile"]])) { $function("\n"); $script_files[$input["EncodingFunctionScriptFile"]]=$this->input_parts[$input_part]; } } } } $function("$eol$eol"); } for($part=0;$partparts);$part++) { switch($this->types[$part]) { case "DATA": $function($this->parts[$part]); break; case "ACCESSIBLE_INPUT": case "READ_ONLY_INPUT": case "INPUT": switch($this->types[$part]) { case "ACCESSIBLE_INPUT": $input_read_only=0; break; case "READ_ONLY_INPUT": $input_read_only=1; break; case "INPUT": $input_read_only=$this->ReadOnly; break; } $input=$this->inputs[$this->parts[$part]]; switch($input["TYPE"]) { case "textarea": if(!$input_read_only) { $function(""); break; case "select": if(!$input_read_only) { $function("$eol"); break; default: if($input_read_only) { switch($input["TYPE"]) { case "submit": case "image": case "reset": case "hidden": break; case "checkbox": case "radio": if(IsSet($input["CHECKED"])) $function(IsSet($input["VALUE"]) ? $this->EncodeHTMLString($input["VALUE"]) : "On"); break; default: if(IsSet($input["VALUE"])) $function($this->EncodeHTMLString($input["VALUE"])); break; } } else { $function("OutputPasswordValues) && IsSet($input["VALUE"])) $function(" value=\"".$this->EncodeHTMLString($input["VALUE"])."\""); case "file": if(IsSet($input["ACCEPT"])) $function(" accept=\"".$input["ACCEPT"]."\""); if(IsSet($input["MAXLENGTH"])) $function(" maxlength=\"".$input["MAXLENGTH"]."\""); if(IsSet($input["SIZE"])) $function(" size=\"".$input["SIZE"]."\""); $accessible_input=1; break; case "checkbox": case "radio": if(IsSet($input["VALUE"])) $function(" value=\"".$this->EncodeHTMLString($input["VALUE"])."\""); if(IsSet($input["CHECKED"])) $function(" checked=\"checked\""); $accessible_input=1; break; case "image": $function(" src=\"".$input["SRC"]."\""); if(IsSet($input["ALT"])) $function(" alt=\"".$this->EncodeHTMLString($input["ALT"])."\""); case "submit": if(strcmp($resubmit_condition,"")) $onclick="if(this.disabled || typeof(this.disabled)=='boolean') this.disabled=true ; ".$this->form_submitted_test_variable_name."=".$this->form_submitted_variable_name." ; ".$this->form_submitted_variable_name."=true ; ".$this->form_submitted_variable_name."=".$resubmit_condition." ; if(this.disabled || typeof(this.disabled)=='boolean') this.disabled=false"; if(IsSet($input["SubForm"])) { if(strcmp($onclick,"")) $onclick.=" ; "; $onclick.=$this->sub_form_variable_name."='".$input["SubForm"]."'"; } case "reset": $accessible_input=1; if(IsSet($input["VALUE"])) $function(" value=\"".$input["VALUE"]."\""); break; case "hidden": $function(" value=\"".(IsSet($input["VALUE"]) ? $this->EncodeHTMLString($input["VALUE"]) : "")."\""); break; } $this->OutputOnChangeAttribute($input,$function); if(IsSet($input["ONCLICK"])) { if(strcmp($onclick,"")) $onclick.=" ; "; $onclick.=$input["ONCLICK"]; } if(strcmp($onclick,"")) $function(" onclick=\"$onclick ; return true\""); if(IsSet($input["ID"])) $function(" id=\"".$input["ID"]."\""); if($accessible_input && (IsSet($input["TABINDEX"]) || strcmp($tab_index_function=$this->accessibility_tab_index,""))) $function(" tabindex=\"".(IsSet($input["TABINDEX"]) ? $input["TABINDEX"] : $tab_index_function($this->parts[$part]))."\""); if(strcmp($input["TYPE"],"hidden") && IsSet($input["ACCESSKEY"])) $function(" accesskey=\"".$input["ACCESSKEY"]."\""); $this->OutputStyleAttributes($input,$function); $this->OutputExtraAttributes($input,$function); $function(" />"); } break; } break; case "HIDDEN_INPUT": $input=$this->inputs[$this->parts[$part]]; Unset($value); switch($input["TYPE"]) { case "textarea": case "text": $value=(IsSet($input["VALUE"]) ? $this->EncodeHTMLString($input["VALUE"]) : ""); break; case "select": case "submit": case "image": case "reset": case "hidden": case "password": $value=(IsSet($input["VALUE"]) ? $input["VALUE"] : ""); break; case "checkbox": case "radio": if(IsSet($input["CHECKED"])) $value=(IsSet($input["VALUE"]) ? $this->EncodeHTMLString($input["VALUE"]) : "on"); break; } if(IsSet($value)) { $function("EncodeHTMLString($value)."\" />"); } break; case "LABEL": $label=$this->parts[$part]; if($this->ReadOnly && (!IsSet($this->inputs[$label["FOR"]]["Part"]) || $this->types[$this->inputs[$label["FOR"]]["Part"]]!="ACCESSIBLE_INPUT")) $function($this->parts[$part]["LABEL"]); else $function(""); break; } } if(!$this->ReadOnly || $this->hidden_parts || $this->accessible_parts) $function("$eol"); return(""); } Function IsSetGlobal($variable) { return(IsSet($GLOBALS[$variable])); } Function GetGlobal($variable) { return($GLOBALS[$variable]); } Function SetGlobal($variable,$value) { $GLOBALS[$variable]=$value; } Function IsSetValue($variable,$file) { global $HTTP_POST_FILES,$HTTP_POST_VARS,$HTTP_GET_VARS; return(($file ? IsSet($HTTP_POST_FILES[$variable]) : (IsSet($HTTP_GET_VARS[$variable]) || IsSet($HTTP_POST_VARS[$variable]))) || IsSet($GLOBALS[$variable])); } Function GetValue($variable,$file,$multiple=0) { global $HTTP_SERVER_VARS,$HTTP_POST_FILES,$HTTP_POST_VARS,$HTTP_GET_VARS; if($file) { if(IsSet($HTTP_POST_FILES[$variable])) return($HTTP_POST_FILES[$variable]["tmp_name"]); } switch($HTTP_SERVER_VARS["REQUEST_METHOD"]) { case "POST": if(IsSet($HTTP_POST_VARS[$variable])) { $value=$HTTP_POST_VARS[$variable]; break; } case "GET": if(IsSet($HTTP_GET_VARS[$variable])) { $value=$HTTP_GET_VARS[$variable]; break; } default: $value=(IsSet($GLOBALS[$variable]) ? $GLOBALS[$variable] : ""); break; } if($multiple && GetType($value)!="array") return(array()); if(function_exists("ini_get") && intval(ini_get("magic_quotes_gpc"))) { if($multiple) { for($key=0;$keyinputs[$input] && $this->inputs[$input]["TYPE"]=="file") { $values=(IsSet($HTTP_POST_FILES[$input]) ? $HTTP_POST_FILES[$input] : (IsSet($GLOBALS[$input]) ? $GLOBALS[$input] : array())); if(IsSet($values["name"])) return($values["name"]); } $values=array(); return(""); } Function Validate(&$verify,$sub_form="") { for($error="",$input_number=0,Reset($this->inputs);$input_numberinputs);Next($this->inputs),$input_number++) { $input=$this->inputs[Key($this->inputs)]; $default_error=(IsSet($input["ValidationErrorMessage"]) ? $input["ValidationErrorMessage"] : "error"); $input_error=""; switch($input["TYPE"]) { case "submit": case "image": case "reset": $value=""; break; default: switch($input["TYPE"]) { case "checkbox": case "radio": $value=(IsSet($input["VALUE"]) ? $input["VALUE"] : "on"); break; default: $value=(IsSet($input["VALUE"]) ? $input["VALUE"] : ""); break; } $value=($this->IsSetValue($input["NAME"],$input["TYPE"]=="file") ? $value : ""); break; } if((!strcmp($input["TYPE"],"select") || $input["ServerValidate"]) && ((!$this->ReadOnly && !IsSet($input["Accessible"])) || (IsSet($input["Accessible"]) && $input["Accessible"])) && (!strcmp($sub_form,"") || !strcmp($sub_form,$input["SubForm"]))) { switch(GetType($value)) { case "integer": case "double": $value=strval($value); case "string": break; default: $value=""; break; } if(IsSet($input["ValidateOptionalValue"]) && !strcmp($input["ValidateOptionalValue"],$value)) continue; $validations=array("ValidateAsNotEmpty","ValidateMinimumLength","ValidateRegularExpression","ValidateAsInteger","ValidateAsFloat","ValidateAsEmail","ValidateAsCreditCard","ValidateAsEqualTo","ValidateAsDifferentFrom","ValidateAsSet","ValidationServerFunction"); for($validation=0;$validationemail_regular_expression,$value)) $input_error=(IsSet($input["ValidateAsEmailErrorMessage"]) ? $input["ValidateAsEmailErrorMessage"] : $default_error); break; case "ValidateAsCreditCard": $value=ereg_replace("[- .]","",$value); $len=strlen($value); $check=0; $input_error=""; if(!strcmp($validation_type=$input["ValidateAsCreditCard"],"field")) { $type_field=$input["ValidationCreditCardTypeField"]; $validation_type=($this->IsSetValue($type_field,0) ? $this->inputs[$type_field]["VALUE"] : ""); } else $type_field=""; if($check==0 && $len<13) $check=1; else { $first=Ord($value[0])-Ord("0"); $second=Ord($value[1])-Ord("0"); $third=Ord($value[2])-Ord("0"); switch($validation_type) { case "mastercard": if($len!=16 || $first!=5 || $second<1 || $second>5) $check=1; break; case "visa": if(($len!=16 && $len!=13) || $first!=4) $check=1; break; case "amex": if($len!=15 || $first!=3 || ($second!=4 && $second!=7)) $check=1; break; case "carteblanche": case "dinersclub": if($len!=14 || $first!=3 || (($second!=0 || $third<0 || $third>5) && $second!=6 && $second!=8)) $check=1; break; case "discover": if($len!=16 || $first!=5 || $second<1 || $second>5) $check=1; break; case "enroute": if($len!=15 || (substr($value,0,4)!="2014" && substr($value,0,4)!="2149")) $check=1; break; case "jcb": if(($len!=16 || $first!=3) && ($len!=15 || (substr($value,0,4)!="2031" && substr($value,0,4)!="1800"))) $check=1; break; case "unknown": break; default: if(strcmp($type_field,"")) { $type_input=$this->inputs[$type_field]; $input_error=(IsSet($type_input["ValidationErrorMessage"]) ? $type_input["ValidationErrorMessage"] : "error"); } $check=1; break; } } if($check==0) { for($odd="0246813579",$zero=Ord("0"),$position=1;$position<=$len;$position++) { if(($digit=Ord($value[$len-$position])-$zero)>9 || $digit<0) { $check=1; break; } if(!($position % 2)) $digit=intval($odd[$digit]); $check+=$digit; } $check%=10; } if($check && !strcmp($input_error,"")) $input_error=(IsSet($input["ValidateAsCreditCardErrorMessage"]) ? $input["ValidateAsCreditCardErrorMessage"] : $default_error); break; case "ValidateRegularExpression": if(!ereg($input["ValidateRegularExpression"],$value)) $input_error=(IsSet($input["ValidateRegularExpressionErrorMessage"]) ? $input["ValidateRegularExpressionErrorMessage"] : $default_error); break; case "ValidateAsNotEmpty": if($input["TYPE"]=="file" ? (strlen($this->GetFileValues($input["NAME"],$file_values))==0 || $file_values["size"]==0) : (strlen($value)==0)) $input_error=(IsSet($input["ValidateAsNotEmptyErrorMessage"]) ? $input["ValidateAsNotEmptyErrorMessage"] : $default_error); break; case "ValidateMinimumLength": if(strlen($value)<$input["ValidateMinimumLength"]) $input_error=(IsSet($input["ValidateMinimumLengthErrorMessage"]) ? $input["ValidateMinimumLengthErrorMessage"] : $default_error); break; case "ValidateAsEqualTo": if(!$this->IsSetValue($input["ValidateAsEqualTo"],0) || strcmp($this->inputs[$input["ValidateAsEqualTo"]]["VALUE"],$value)) $input_error=(IsSet($input["ValidateAsEqualToErrorMessage"]) ? $input["ValidateAsEqualToErrorMessage"] : $default_error); break; case "ValidateAsDifferentFrom": if(!$this->IsSetValue($input["ValidateAsDifferentFrom"],0) || !strcmp($this->inputs[$input["ValidateAsDifferentFrom"]]["VALUE"],$value)) $input_error=(IsSet($input["ValidateAsDifferentFromErrorMessage"]) ? $input["ValidateAsDifferentFromErrorMessage"] : $default_error); break; case "ValidateAsSet": if(!$this->IsSetValue($input["NAME"],0)) $input_error=(IsSet($input["ValidateAsSetErrorMessage"]) ? $input["ValidateAsSetErrorMessage"] : $default_error); break; case "ValidateAsInteger": $integer_value=intval($value); if(strcmp($value,strval($integer_value)) || (IsSet($input["ValidationLowerLimit"]) && $integer_value<$input["ValidationLowerLimit"]) || (IsSet($input["ValidationUpperLimit"]) && $integer_value>$input["ValidationUpperLimit"])) $input_error=(IsSet($input["ValidateAsIntegerErrorMessage"]) ? $input["ValidateAsIntegerErrorMessage"] : $default_error); break; case "ValidateAsFloat": $float_value=doubleval($value); if(!ereg("^[+-]?[0-9]+(\\.[0-9]*)?([Ee][+-]?[0-9]+)?$",$float_value) || (IsSet($input["ValidationLowerLimit"]) && $float_value<$input["ValidationLowerLimit"]) || (IsSet($input["ValidationUpperLimit"]) && $float_value>$input["ValidationUpperLimit"])) $input_error=(IsSet($input["ValidateAsFloatErrorMessage"]) ? $input["ValidateAsFloatErrorMessage"] : $default_error); break; case "ValidationServerFunction": if(!$input["ValidationServerFunction"]($value)) $input_error=(IsSet($input["ValidationServerFunctionErrorMessage"]) ? $input["ValidationServerFunctionErrorMessage"] : $default_error); break; } if(strcmp($input_error,"")) break; } } if(!strcmp($input_error,"") && !strcmp($input["TYPE"],"select")) { if(IsSet($input["MULTIPLE"])) { if(IsSet($input["ValidateAsSet"]) && (!IsSet($input["SELECTED"]) || count($input["SELECTED"])==0)) $input_error=(IsSet($input["ValidateAsSetErrorMessage"]) ? $input["ValidateAsSetErrorMessage"] : $default_error); } else { if($this->IsSetValue($input["NAME"],0) && !IsSet($input["OPTIONS"][$this->GetValue($input["NAME"],0)]) && IsSet($input["ValidationErrorMessage"])) $input_error=$default_error; } } if(strcmp($input_error,"")) { if(!strcmp($error,"")) $error=$input_error; $verify[Key($this->inputs)]=$input["SubForm"]; } } } return($error); } Function LoadInputValues($submitted=0) { for($radio=array(),$input_number=0,Reset($this->inputs);$input_numberinputs);Next($this->inputs),$input_number++) { $key=Key($this->inputs); if(!strcmp($this->inputs[$key]["TYPE"],"radio")) { $name=$this->inputs[$key]["NAME"]; $value=(IsSet($this->inputs[$key]["VALUE"]) ? $this->inputs[$key]["VALUE"] : "on"); if(IsSet($radio[$name])) $radio[$name][$value]=$key; else $radio[$name]=array($value=>$key); } } for($this->Changes=array(),$input_number=0,Reset($this->inputs);$input_numberinputs);Next($this->inputs),$input_number++) { $key=Key($this->inputs); if((IsSet($this->inputs[$key]["Accessible"]) ? !$this->inputs[$key]["Accessible"] : $this->ReadOnly)) continue; switch($this->inputs[$key]["TYPE"]) { case "submit": case "image": case "reset": break; case "radio": $name=$this->inputs[$key]["NAME"]; if($this->IsSetValue($name,0)) { $value=$this->GetValue($name,0); $radio_value=(IsSet($this->inputs[$key]["VALUE"]) ? $this->inputs[$key]["VALUE"] : "on"); if(!strcmp(strtolower($value),strtolower($radio_value))) { if(!IsSet($this->inputs[$key]["CHECKED"])) $this->Changes[$key]=""; $this->inputs[$key]["CHECKED"]=1; } else { if(IsSet($radio[$name][$value])) { if(IsSet($this->inputs[$key]["CHECKED"])) $this->Changes[$key]=$radio_value; Unset($this->inputs[$key]["CHECKED"]); } } } break; case "checkbox": $checkbox_value=(IsSet($this->inputs[$key]["VALUE"]) ? $this->inputs[$key]["VALUE"] : "on"); if($this->IsSetValue($this->inputs[$key]["NAME"],0)) { if(!IsSet($this->inputs[$key]["CHECKED"])) $this->Changes[$key]=""; $this->inputs[$key]["CHECKED"]=1; } else { if($submitted) { if(IsSet($this->inputs[$key]["CHECKED"])) $this->Changes[$key]=$checkbox_value; Unset($this->inputs[$key]["CHECKED"]); } } break; case "select": if(IsSet($this->inputs[$key]["MULTIPLE"])) { if($submitted) { $this->Changes[$key]=$this->inputs[$key]["SELECTED"]; for($value_key=0,$this->Changes[$key];$value_keyChanges[$key]);Next($this->Changes[$key]),$value_key++) $this->Changes[$key][Key($this->Changes[$key])]=0; $value=($this->IsSetValue($key,0) ? $this->GetValue($key,0,1) : array()); $this->inputs[$key]["SELECTED"]=array(); if(GetType($value)=="array") { for($value_key=0,Reset($value);$value_keyinputs[$key]["OPTIONS"][$entry_value])) { if(IsSet($this->Changes[$key][$entry_value])) Unset($this->Changes[$key][$entry_value]); else $this->Changes[$key][$entry_value]=1; $this->inputs[$key]["SELECTED"][$entry_value]=1; } } } if(count($this->Changes[$key])==0) Unset($this->Changes[$key]); } } else { $previous_value=$this->inputs[$key]["VALUE"]; if($this->IsSetValue($key,0)) { $value=$this->GetValue($key,0); if(IsSet($this->inputs[$key]["OPTIONS"][$value])) $this->inputs[$key]["VALUE"]=$value; } if(strcmp($this->inputs[$key]["VALUE"],$previous_value)) $this->Changes[$key]=$previous_value; } break; default: if($this->IsSetValue($key,$this->inputs[$key]["TYPE"]=="file")) { $value=$this->GetValue($key,$this->inputs[$key]["TYPE"]=="file"); switch(GetType($value)) { case "string": case "integer": case "double": switch($this->inputs[$key]["TYPE"]) { case "text": case "file": case "password": if(IsSet($this->inputs[$key]["MAXLENGTH"])) { $max_length=$this->inputs[$key]["MAXLENGTH"]; if(strlen($value)>$max_length) $this->SetValue($key,$value=substr($value,0,$max_length)); } break; } if(IsSet($this->inputs[$key]["Capitalization"])) { switch($this->inputs[$key]["Capitalization"]) { case "uppercase": $function=$this->toupper_function; $this->SetValue($key,$value=$function($value)); break; case "lowercase": $function=$this->tolower_function; $this->SetValue($key,$value=$function($value)); break; case "words": $lower_function=$this->tolower_function; $upper_function=$this->toupper_function; for($word=1,$position=0;$positionSetValue($key,$value); break; } } $previous_value=(IsSet($this->inputs[$key]["VALUE"]) ? $this->inputs[$key]["VALUE"] : ""); if(strcmp($value,$previous_value)) $this->Changes[$key]=$previous_value; $this->inputs[$key]["VALUE"]=$value; break; } } } } } Function SetInputProperty($input,$property,$value) { if(!IsSet($this->inputs[$input])) return($this->OutputError("it was not specified a valid input",$input)); switch($property) { case "ACCEPT": case "ALT": case "BORDER": case "COLS": case "MAXLENGTH": case "ONCHANGE": case "ONCLICK": case "ROWS": case "SIZE": case "SRC": case "TABINDEX": case "Capitalization": case "ClientScript": case "SubForm": case "VALUE": case "STYLE": case "CLASS": break; default: return($this->OutputError("it was not specified a valid settable input property",$property)); } $this->inputs[$input][$property]=$value; return(""); } Function SetInputValue($input,$value) { return($this->SetInputProperty($input,"VALUE",$value)); } Function GetInputValue($input) { if(!IsSet($this->inputs[$input])) return($this->OutputError("it was not specified a valid input",$input)); if($this->inputs[$input]["TYPE"]=="select" && IsSet($this->inputs[$input]["MULTIPLE"])) { $value=array(); for(Reset($this->inputs[$input]["SELECTED"]),$selected=0;$selectedinputs[$input]["SELECTED"]);Next($this->inputs[$input]["SELECTED"]),$selected++) $value[]=Key($this->inputs[$input]["SELECTED"]); return($value); } return(IsSet($this->inputs[$input]["VALUE"]) ? $this->inputs[$input]["VALUE"] : ""); } Function SetCheckedState($input,$checked) { if(!IsSet($this->inputs[$input]) || ($this->inputs[$input]["TYPE"]!="radio" && $this->inputs[$input]["TYPE"]!="checkbox")) return($this->OutputError("it was not specified a valid radio or checkbox input",$input)); if($checked) $this->inputs[$input]["CHECKED"]=1; else Unset($this->inputs[$input]["CHECKED"]); return(""); } Function GetCheckedState($input) { if(!IsSet($this->inputs[$input]) || ($this->inputs[$input]["TYPE"]!="radio" && $this->inputs[$input]["TYPE"]!="checkbox")) return($this->OutputError("it was not specified a valid radio or checkbox input",$input)); return(IsSet($this->inputs[$input]["CHECKED"])); } Function GetCheckedRadio($name) { for(Reset($this->inputs);GetType($input=Key($this->inputs))=="string";Next($this->inputs)) { if(!strcmp($this->inputs[$input]["NAME"],$name)) { if($this->inputs[$input]["TYPE"]!="radio") { $this->OutputError("the input of NAME \"$name\" is not a valid radio input"); return(""); } if(IsSet($this->inputs[$input]["CHECKED"])) return($input); } } return(""); } Function GetCheckedRadioValue($name,$default="") { return(strlen($input=$this->GetCheckedRadio($name)) ? $this->inputs[$input]["VALUE"] : $default); } Function ResetFormParts() { for($input=0,Reset($this->inputs);$inputinputs);Next($this->inputs),$input++) { $input_name=Key($this->inputs); Unset($this->inputs[$input_name]["InputElement"]); Unset($this->inputs[$input_name]["Part"]); } $this->parts=$this->types=$this->input_parts=$this->input_elements=$this->functions=$this->label_access_keys=array(); $this->client_validate=0; $this->hidden_parts=$this->accessible_parts=0; } Function AddHiddenInputs($inputs) { for($input=0,Reset($inputs);$inputAddInput(array( "TYPE"=>"hidden", "NAME"=>$name, "VALUE"=>$inputs[$name] )),"")) return($error); } return(""); } Function AddHiddenInputsParts($inputs) { for($input=0,Reset($inputs);$inputSetInputValue($name,$inputs[$name]),"") || strcmp($error=$this->AddInputHiddenPart($name),"")) return($error); } return(""); } Function WasSubmitted($input="") { if(strcmp($input,"")) { if(!IsSet($this->inputs[$input])) { $this->OutputError("it was not specified an existing input",$input); return(""); } $name=(IsSet($this->inputs[$input]["NAME"]) ? $this->inputs[$input]["NAME"] : $input); if($this->inputs[$input]["TYPE"]=="image") return(($this->IsSetValue($name."_x",0) && $this->IsSetValue($name."_y",0)) ? $input : ""); return($this->IsSetValue($name,$this->inputs[$input]["TYPE"]=="file") ? $input : ""); } for($field=0,Reset($this->inputs);$fieldinputs);Next($this->inputs),$field++) { $input=Key($this->inputs); $name=(IsSet($this->inputs[$input]["NAME"]) ? $this->inputs[$input]["NAME"] : $input); switch($this->inputs[$input]["TYPE"]) { case "submit": if($this->IsSetValue($name,0)) return($input); break; case "image": if($this->IsSetValue($name."_x",0) && $this->IsSetValue($name."_y",0)) return($input); break; } } return(""); } }; Function FormAppendOutput($output) { global $form_output; $form_output.=$output; } Function FormCaptureOutput(&$form,$arguments) { global $form_output; $form_output=""; $arguments["Function"]="FormAppendOutput"; return($form->OutputError($form->Output($arguments)) ? "" : $form_output); } } ?>