Your IP : 216.73.216.209


Current Path : /home/megadansyp/www/administrator/components/com_breezingforms/packages/
Upload File :
Current File : /home/megadansyp/www/administrator/components/com_breezingforms/packages/stdlib.english.xml

<?xml version="1.0" encoding="utf-8" ?>
<FacileFormsPackage id="FF" type="autoincrement" version="1.9.1 Stable (build 941)">
	<name>stdlib.english</name>
	<title>stdlib.english.xml</title>
	<version>1.0.1</version>
	<creationDate>2022-12-01 21:51:39</creationDate>
	<author>Crosstec</author>
	<authorEmail>info@crosstec.org</authorEmail>
	<authorUrl>https://crosstec.org</authorUrl>
	<description>These are the standard BreezingForms script and piece libraries.</description>
	<copyright>Crosstec</copyright>
	<script id="1">
		<package>FF</package>
		<name>ff_anychecked</name>
		<title>Any Checked</title>
		<type>Element Validation</type>
		<description>Validate that any radio button or checkbox of a group is checked.</description>
		<code>function ff_anychecked(element\x2C message)\r\n{\r\n    // get plain name\r\n   // alert(document.ff_form52[\x27ff_nm_bfQuickMode6303958[]\x27])\x3B\r\n   // alert(document.getElementById(element.id).id)\x3B\r\n    var name = \x27\x27\x3B\r\n    if(!element.name){\r\n    	if(element.length \x26\x26 element.length != 0){\r\n           name = element[0].name\x3B\r\n           var cnt = 0\x3B\r\n           for (var i = 0\x3B i \x3C element.length\x3B i++)\r\n             if (element[i].name==name) \r\n              if (element[i].checked) cnt++\x3B                      \r\n           if (cnt==0) {\r\n            ff_validationFocus(element[0].name)\x3B\r\n            if (message==\x27\x27) message = \x22Please check or select \x22+name+\x22.\x5Cn\x22\x3B\r\n            return message\x3B\r\n           } // if \r\n\r\n        } else {\r\n           return \x27\x27\x3B\r\n        }\r\n    } else {\r\n      name = element.name\x3B\r\n      if (name.substr(0\x2C6) == \x27ff_nm_\x27) name = name.substring(6\x2Cname.length-2)\x3B\r\n\r\n      // loop through elements and count selections\r\n      var cnt = 0\x3B\r\n      for (var i = 0\x3B i \x3C ff_elements.length\x3B i++)\r\n        if (ff_elements[i][2]==name) \r\n            if (ff_getElementByIndex(i).checked) cnt++\x3B\r\n\r\n      // if none selected\x2C emitt error\r\n      if (cnt==0) {\r\n        ff_validationFocus(element.name)\x3B\r\n        if (message==\x27\x27) message = \x22Please check or select \x22+name+\x22.\x5Cn\x22\x3B\r\n        return message\x3B\r\n      } // if\r\n    }\r\n    \r\n    return \x27\x27\x3B\r\n} // ff_anychecked</code>
	</script>
	<script id="2">
		<package>FF</package>
		<name>ff_checked</name>
		<title>Checked</title>
		<type>Element Validation</type>
		<description>Validate that radio button or checkbox is checked.</description>
		<code>function ff_checked(element\x2C message)\r\n{\r\n    if (element.checked) \r\n        return \x27\x27\x3B \r\n    else {\r\n        if (message==\x27\x27) message = element.name+\x22 is not checked.\x5Cn\x22\x3B\r\n        ff_validationFocus(element.name)\x3B\r\n        return message\x3B\r\n    } \r\n}</code>
	</script>
	<script id="3">
		<package>FF</package>
		<name>ff_checkedValue</name>
		<title>Get checked value</title>
		<description>Get value of the currently checked radiobutton.</description>
		<code>function ff_checkedValue(name)\r\n{\r\n    // loop through elements and find checked\r\n    for (i = 0\x3B i \x3C ff_elements.length\x3B i++)\r\n        if (ff_elements[i][2]==name) {\r\n            e = ff_getElementByIndex(i)\x3B\r\n            if (e.checked) return e.value\x3B\r\n        } // if \r\n    return \x27\x27\x3B\r\n} // ff_checkedValue</code>
	</script>
	<script id="4">
		<package>FF</package>
		<name>ff_countQuerySelections</name>
		<title>Count Query Selections</title>
		<description>Counts how many checkboxes/radiobuttons are checked/selected in a query list element</description>
		<code>function ff_countQuerySelections(name)\r\n{\r\n    var id = ff_getIdByName(name)\x3B\r\n    var cnt = ff_queryRows[id].length\x3B\r\n    var pagesize = ff_queryPageSize[id]\x3B\r\n    if (pagesize\x3E0) {\r\n        var currpage = ff_queryCurrPage[id]\x3B\r\n        var p\x3B\r\n        for (p = 1\x3B p \x3C currpage\x3B p++) cnt -= pagesize\x3B\r\n        if (cnt \x3E pagesize) cnt = pagesize\x3B\r\n    } // if\r\n    var curr\x3B\r\n    var sels = 0\x3B\r\n    for (curr = 0\x3B curr \x3C cnt\x3B curr++)\r\n        if (document.getElementById(\x27ff_cb\x27+id+\x27_\x27+curr).checked) sels++\x3B\r\n    return sels\x3B\r\n} // ff_countQuerySelections</code>
	</script>
	<script id="5">
		<package>FF</package>
		<name>ff_dollaramount2dp</name>
		<title>Dollar Amount with 2 Decimal Places</title>
		<type>Element Validation</type>
		<description>Validate that a dollar amount with two decimal places is entered.</description>
		<code>function ff_dollaramount2dp(element\x2C message)\r\n{\r\n    var ex  = /^\x5Cd+$|^\x5Cd+\x5C.\x5Cd{2}$/\x3B\r\n    if (!ex.test(element.value)) {\r\n        if (message==\x27\x27) message = element.name+\x22 must be a number with two decimal places.\x5Cn\x22\x3B\r\n        ff_validationFocus(element.name)\x3B\r\n        return message\x3B\r\n    } // if\r\n    return \x27\x27\x3B\r\n} // ff_dollaramount2dp</code>
	</script>
	<script id="6">
		<package>FF</package>
		<name>ff_expString</name>
		<title>String export</title>
		<description>Export string function: escapes special characters of a string</description>
		<code>function ff_expString(text)\r\n{\r\n    text = trim(text)\x3B\r\n    var i\x3B\r\n    var o = \x27\x27\x3B\r\n    for(i = 0\x3B i \x3C text.length\x3B i++) {\r\n        c = text.charAt(i)\x3B\r\n        switch(c) {\r\n            case \x27\x3B\x27 : o += \x27\x5C\x5Cx3B\x27\x3B break\x3B\r\n            case \x27\x2C\x27 : o += \x27\x5C\x5Cx2C\x27\x3B break\x3B\r\n            case \x27\x26\x27 : o += \x27\x5C\x5Cx26\x27\x3B break\x3B\r\n            case \x27\x3C\x27 : o += \x27\x5C\x5Cx3C\x27\x3B break\x3B\r\n            case \x27\x3E\x27 : o += \x27\x5C\x5Cx3E\x27\x3B break\x3B\r\n            case \x27\x5C\x27\x27: o += \x27\x5C\x5Cx27\x27\x3B break\x3B\r\n            case \x27\x5C\x5C\x27: o += \x27\x5C\x5Cx5C\x27\x3B break\x3B\r\n            case \x27\x22\x27 : o += \x27\x5C\x5Cx22\x27\x3B break\x3B\r\n            case \x27\x5Cn\x27: o += \x27\x5C\x5Cn\x27\x3B break\x3B\r\n            case \x27\x5Cr\x27: o += \x27\x5C\x5Cr\x27\x3B break\x3B\r\n            default: o += c\x3B\r\n        } // switch\r\n    } // for\r\n    return o\x3B\r\n} // expString</code>
	</script>
	<script id="7">
		<package>FF</package>
		<name>ff_flashupload_not_empty</name>
		<title>Flash Upload Not Empty (QuickMode only!)</title>
		<type>Element Validation</type>
		<description>Validates if a flash upload is empty or not.</description>
		<code>function ff_flashupload_not_empty(element\x2C message)\r\n{\r\n    if(typeof bfSummarizers == \x22undefined\x22) { \r\n        if(typeof bfUseErrorAlerts == \x27undefined\x27){\r\n            alert(\x22Flash upload validation only available in QuickMode!\x22)\x3B\r\n        } else {\r\n            alert(\x22Flash upload validation only available in QuickMode!\x22)\x3B\r\n        } \r\n    return \x27\x27\x3B}\r\n    if(JQuery(\x27#bfFlashFileQueue\x27+element.id.split(\x27ff_elem\x27)[1]).html() != \x27\x27) return \x27\x27\x3B\r\n    if (message==\x27\x27) message = \x22Please enter \x22+element.name+\x22.\x5Cn\x22\x3B\r\n    ff_validationFocus(element.name)\x3B\r\n    return message\x3B\r\n} // ff_valuenotempty</code>
	</script>
	<script id="8">
		<package>FF</package>
		<name>ff_getfocus</name>
		<title>Get focus</title>
		<type>Element Init</type>
		<description>Get the focus. Usually this is for the first element of the form/page.</description>
		<code>function ff_getfocus(element\x2Ccondition)\r\n{\r\n    if(!element.name){\r\n    	if(element.length \x26\x26 element.length != 0){\r\n    		element[0].focus()\x3B\r\n    	}\r\n    }else{\r\n    	element.focus()\x3B\r\n    }\r\n}</code>
	</script>
	<script id="9">
		<package>FF</package>
		<name>ff_getQuerySelectedRows</name>
		<title>Get Query Selected Rows</title>
		<description>Returns the selected rows in a 2-dimensional array</description>
		<code>function ff_getQuerySelectedRows(name)\r\n{\r\n    var id = ff_getIdByName(name)\x3B\r\n    var rcnt = ff_queryRows[id].length\x3B\r\n    var cnt = rcnt\x3B\r\n    var pagesize = ff_queryPageSize[id]\x3B\r\n    if (pagesize\x3E0) {\r\n        var currpage = ff_queryCurrPage[id]\x3B\r\n        var p\x3B\r\n        for (p = 1\x3B p \x3C currpage\x3B p++) cnt -= pagesize\x3B\r\n        if (cnt \x3E pagesize) cnt = pagesize\x3B\r\n    } // if\r\n    var curr\x2C r\x3B\r\n    var selcnt = 0\x3B\r\n    var sels = new Array\x3B\r\n    for (curr = 0\x3B curr \x3C cnt\x3B curr++) {\r\n        var elem = document.getElementById(\x27ff_cb\x27+id+\x27_\x27+curr)\x3B\r\n        if (elem.checked) {\r\n            var ident = elem.value\x3B\r\n            for (r = 0\x3B r \x3C rcnt\x3B r++)\r\n                if (ff_queryRows[id][r][0] == ident) {\r\n                    sels[selcnt++] = ff_queryRows[id][r]\x3B\r\n                    break\x3B\r\n                } // if\r\n        } // if\r\n    } // for\r\n    return sels\x3B\r\n} // ff_getQuerySelectedRows</code>
	</script>
	<script id="10">
		<package>FF</package>
		<name>ff_getQuerySelections</name>
		<title>Get Query Selected ID\x27s</title>
		<description>Returns the column values of the checked/selected checkboxes/radiobuttons in an array</description>
		<code>function ff_getQuerySelections(name)\r\n{\r\n    var id = ff_getIdByName(name)\x3B\r\n    var cnt = ff_queryRows[id].length\x3B\r\n    var pagesize = ff_queryPageSize[id]\x3B\r\n    if (pagesize\x3E0) {\r\n        var currpage = ff_queryCurrPage[id]\x3B\r\n        var p\x3B\r\n        for (p = 1\x3B p \x3C currpage\x3B p++) cnt -= pagesize\x3B\r\n        if (cnt \x3E pagesize) cnt = pagesize\x3B\r\n    } // if\r\n    var curr\x3B\r\n    var selcnt = 0\x3B\r\n    var sels = new Array\x3B\r\n    for (curr = 0\x3B curr \x3C cnt\x3B curr++) {\r\n        var elem = document.getElementById(\x27ff_cb\x27+id+\x27_\x27+curr)\x3B\r\n        if (elem.checked) \r\n            sels[selcnt++] = elem.value\x3B\r\n    } // for\r\n    return sels\x3B\r\n} // ff_getQuerySelections</code>
	</script>
	<script id="11">
		<package>FF</package>
		<name>ff_htmlvaluenotempty</name>
		<title>HTML Texteditor Not Empty</title>
		<type>Element Validation</type>
		<description>Checks if an HTML editor element is empty or not</description>
		<code>function ff_htmlvaluenotempty( element\x2C message ){\r\n    \r\n    if( typeof bf_htmltextareanames == \x22undefined\x22 ) return \x27\x27\x3B\r\n\r\n    var content = \x22\x22\x3B\r\n\r\n    for(var i = 0\x3B i \x3C bf_htmltextareanames.length\x3B i++){\r\n      if( element.name == bf_htmltextareanames[i] ) {\r\n          eval(\x22content = \x22 + bf_htmltextareas[i])\x3B\r\n          break\x3B\r\n      }\r\n    }\r\n    if (JQuery.trim(content) == \x22\x22) {\r\n        if (message==\x27\x27) message = element.name+\x22 must not be empty.\x5Cn\x22\x3B\r\n        return message\x3B\r\n    } // if\r\n    return \x27\x27\x3B\r\n}</code>
	</script>
	<script id="12">
		<package>FF</package>
		<name>ff_impString</name>
		<title>String import</title>
		<description>Import string function: unescapes c-coded characters of a string</description>
		<code>function ff_impString(text)\r\n{\r\n    var str = \x27\x27\x3B\r\n    var ss = 0\x3B\r\n    var s\x3B\r\n    var tl = text.length\x3B\r\n    var hexdigs = \x220123456789abcdefABCDEF\x22\x3B\r\n    while (ss \x3C tl) {\r\n        s = text.charAt(ss++)\x3B\r\n        if (s == \x27\x5C\x5C\x27) {\r\n            if (ss \x3C tl) s = text.charAt(ss++)\x3B else s = 0\x3B\r\n            switch (s) {\r\n                case 0   : break\x3B\r\n                case \x27e\x27 : str += \x27\x5C33\x27\x3B break\x3B\r\n                case \x27t\x27 : str += \x27\x5Ct\x27\x3B break\x3B\r\n                case \x27r\x27 : str += \x27\x5Cr\x27\x3B break\x3B\r\n                case \x27n\x27 : str += \x27\x5Cn\x27\x3B break\x3B\r\n                case \x27f\x27 : str += \x27\x5Cf\x27\x3B break\x3B\r\n                case \x27x\x27 : {\r\n                    if (ss \x3C tl) s = text.charAt(ss++)\x3B else s = 0\x3B\r\n                    var ch = \x27\x27\x3B\r\n                    while (hexdigs.indexOf(s)\x3E=0 \x26\x26 ch.length \x3C 2) {\r\n                        ch += s\x3B\r\n                        if (ss \x3C tl) s = text.charAt(ss++)\x3B else s = 0\x3B\r\n                    } // while\r\n                    while (ch.length \x3C 2) ch = \x270\x27+ch\x3B\r\n                    str += unescape(\x27%\x27+ch)\x3B\r\n                    if (s) ss--\x3B\r\n                    break\x3B\r\n                }\r\n                default:\r\n                    str += s\x3B\r\n            } // switch\r\n        } else\r\n            str += s\x3B\r\n    } // while\r\n    return str\x3B\r\n} // impString</code>
	</script>
	<script id="13">
		<package>FF</package>
		<name>ff_integer</name>
		<title>Integer Number</title>
		<type>Element Validation</type>
		<description>Validate that an integer value is entered.</description>
		<code>function ff_integer(element\x2C message)\r\n{\r\n    var ex  = /(^-?\x5Cd\x5Cd*$)/\x3B\r\n    if (!ex.test(element.value)) {\r\n        if (message==\x27\x27) message = element.name+\x22 must be integer.\x5Cn\x22\x3B\r\n        ff_validationFocus(element.name)\x3B\r\n        return message\x3B\r\n    } // if\r\n    return \x27\x27\x3B\r\n} // ff_integer</code>
	</script>
	<script id="14">
		<package>FF</package>
		<name>ff_integeramount</name>
		<title>Positive Integer</title>
		<type>Element Validation</type>
		<description>Validate that an positive integer value is entered.</description>
		<code>function ff_integeramount(element\x2C message)\r\n{\r\n    var ex  = /(^-?\x5Cd\x5Cd*$)/\x3B\r\n    if (!ex.test(element.value)) {\r\n        if (message==\x27\x27) message = element.name+\x22 must be integer.\x5Cn\x22\x3B\r\n        ff_validationFocus(element.name)\x3B\r\n        return message\x3B\r\n    } // if\r\n    return \x27\x27\x3B\r\n} // ff_integeramount</code>
	</script>
	<script id="15">
		<package>FF</package>
		<name>ff_integer_or_empty</name>
		<title>Integer or empty</title>
		<type>Element Validation</type>
		<description>Validate that either an integer value or nothing is entered.</description>
		<code>function ff_integer_or_empty(element\x2C message)\r\n{\r\n    if (element.value != \x27\x27) {\r\n        var ex  = /(^-?\x5Cd\x5Cd*$)/\x3B\r\n        if (!ex.test(element.value)) {\r\n            if (message==\x27\x27) message = element.name+\x22 must be integer.\x5Cn\x22\x3B\r\n            ff_validationFocus(element.name)\x3B\r\n            return message\x3B\r\n        } // if\r\n    } // if\r\n    return \x27\x27\x3B\r\n} // ff_integer_or_empty</code>
	</script>
	<script id="16">
		<package>FF</package>
		<name>ff_MaxCheckedInGroups</name>
		<title>MaxCheckedInGroups</title>
		<type>Element Validation</type>
		<description>Checks 5 groups with the names of \x22group1\x22 to \x22group5\x22 if they altogether have at least 1 and up to 20 max checkboxes being checked.\r\nYou can edit the amount of groups and group names by changing the Script code in the Manage Scripts section of BreezingForms and opening the \x22MaxCheckedInGroups\x22 validation for editing.</description>
		<code>function ff_MaxCheckedInGroups(element\x2C message)\r\n{ \r\n    // setup\r\n    let fields = [\x27group1\x27\x2C \x27group2\x27\x2C \x27group3\x27\x2C \x27group4\x27\x2C \x27group5\x27]\x3B\r\n    let max_checked = 20\x3B\r\n\r\n    // actual calculation\r\n    let checked_length = 0\x3B\r\n\r\n    for(let i = 0\x3B i \x3C fields.length\x3B i++){\r\n        let checkboxes = JQuery(\x22[name=\x5C\x22ff_nm_\x22+fields[i]+\x22[]\x5C\x22]:checked\x22)\x3B\r\n        checked_length += checkboxes.length\x3B\r\n    }\r\n\r\n    if (checked_length  == 0 || checked_length \x3E max_checked){\r\n        if (message==\x27\x27) message = element.name+\x22 faild in my test.\x5Cn\x22\r\n        ff_validationFocus(element.name)\x3B\r\n        return message\x3B\r\n    }\r\n    else {\r\n        return \x27\x27\x3B\r\n    }\r\n}</code>
	</script>
	<script id="17">
		<package>FF</package>
		<name>ff_nextpage</name>
		<title>Next page</title>
		<type>Element Action</type>
		<description>Switchs to the next page.</description>
		<code>function ff_nextpage(element\x2C action)\r\n{\r\n    if (ff_currentpage \x3C ff_lastpage) {\r\n        ff_switchpage(ff_currentpage+1)\x3B\r\n        self.scrollTo(0\x2C0)\x3B\r\n    }\r\n} // ff_nextpage</code>
	</script>
	<script id="18">
		<package>FF</package>
		<name>ff_page1</name>
		<title>Page 1</title>
		<type>Element Action</type>
		<description>Switches to the first page.</description>
		<code>function ff_page1(element\x2C action)\r\n{\r\n    ff_switchpage(1)\x3B\r\n} // ff_page1</code>
	</script>
	<script id="19">
		<package>FF</package>
		<name>ff_page2</name>
		<title>Page 2</title>
		<type>Element Action</type>
		<description>Switches to the second page.</description>
		<code>function ff_page2(element\x2C action)\r\n{\r\n    if (ff_lastpage \x3E= 2) ff_switchpage(2)\x3B\r\n} // ff_page2</code>
	</script>
	<script id="20">
		<package>FF</package>
		<name>ff_page3</name>
		<title>Page 3</title>
		<type>Element Action</type>
		<description>Switches to the third page.</description>
		<code>function ff_page3(element\x2C action)\r\n{\r\n    if (ff_lastpage \x3E= 3) ff_switchpage(3)\x3B\r\n} // ff_page3</code>
	</script>
	<script id="21">
		<package>FF</package>
		<name>ff_previouspage</name>
		<title>Previous page</title>
		<type>Element Action</type>
		<description>Switches to the previous page.</description>
		<code>function ff_previouspage(element\x2C action)\r\n{\r\n    if (ff_currentpage \x3E 1){\r\n        ff_switchpage(ff_currentpage-1)\x3B\r\n        self.scrollTo(0\x2C0)\x3B\r\n    }\r\n} // ff_previouspage</code>
	</script>
	<script id="22">
		<package>FF</package>
		<name>ff_real</name>
		<title>Real Number</title>
		<type>Element Validation</type>
		<description>Validate that a real number is entered.</description>
		<code>function ff_real(element\x2C message)\r\n{\r\n    var ex  = /(^-?\x5Cd\x5Cd*\x5C.?\x5Cd*$)/\x3B\r\n    if (!ex.test(element.value)) {\r\n        if (message==\x27\x27) message = element.name+\x22 must be a number.\x5Cn\x22\x3B\r\n        ff_validationFocus(element.name)\x3B\r\n        return message\x3B\r\n    } // if\r\n    return \x27\x27\x3B\r\n} // ff_real</code>
	</script>
	<script id="23">
		<package>FF</package>
		<name>ff_realamount</name>
		<title>Positive Real Number</title>
		<type>Element Validation</type>
		<description>Validate that a positive real number is entered.</description>
		<code>function ff_realamount(element\x2C message)\r\n{\r\n    var ex  = /(^\x5Cd\x5Cd*\x5C.?\x5Cd*$)/\x3B\r\n    if (!ex.test(element.value)) {\r\n        if (message==\x27\x27) message = element.name+\x22 must be a number.\x5Cn\x22\x3B\r\n        ff_validationFocus(element.name)\x3B\r\n        return message\x3B\r\n    } // if\r\n    return \x27\x27\x3B\r\n} // ff_realamount</code>
	</script>
	<script id="24">
		<package>FF</package>
		<name>ff_resetForm</name>
		<title>Reset form</title>
		<type>Element Action</type>
		<description>Reset all form inputs to the initial values.</description>
		<code>function ff_resetForm(element\x2C action)\r\n{\r\n    eval(\x27document.\x27+ff_processor.form_id).reset()\x3B\r\n} // ff_resetForm</code>
	</script>
	<script id="25">
		<package>FF</package>
		<name>ff_securitycode_entered</name>
		<title>Security code entered</title>
		<type>Element Validation</type>
		<description>Check that a security code was entered.</description>
		<code>function ff_securitycode_entered(element\x2C message)\r\n{\r\n    var ex  = /(^\x5Cd{5}$)/\x3B\r\n    if (!ex.test(element.value)) {\r\n        if (message==\x27\x27) message = \x22Security code must be entered as five digits.\x5Cn\x22\x3B\r\n        ff_validationFocus(element.name)\x3B\r\n        return message\x3B\r\n    } // if\r\n    return \x27\x27\x3B\r\n} // ff_securitycode_entered</code>
	</script>
	<script id="26">
		<package>FF</package>
		<name>ff_securitycode_ok</name>
		<title>Security code ok</title>
		<type>Element Validation</type>
		<description>Check that a valid security code was entered.</description>
		<code>function ff_securitycode_ok(element\x2C message)\r\n{\r\n\x3C?php\r\n    global $ff_seccode\x3B\r\n    if (!isset($ff_seccode)) { \r\n        mt_srand((double)microtime()*1000000)\x3B\r\n        $ff_seccode = mt_rand(10000\x2C 99999)\x3B\r\n        JFactory::getSession()-\x3Eset(\x27ff_seccode\x27\x2C $ff_seccode)\x3B\r\n    } // if\r\n    $enc = array()\x3B\r\n    mt_srand((double)microtime()*1000000)\x3B\r\n    for ($i = 0\x3B $i \x3C 256\x3B $i++) $enc[] = mt_rand(0\x2C 255)\x3B\r\n    $seccode = (string)$ff_seccode\x3B\r\n    $hash = \x27\x27\x3B\r\n    $ini = $ff_seccode % 240\x3B\r\n    for ($i = 0\x3B $i \x3C 5\x3B $i++) {\r\n        $d = $ini+intval($seccode{$i})\x3B\r\n        for ($j = 0\x3B $j \x3C 7\x3B $j++) $d = $enc[$d]\x3B\r\n        $hash .= $d\x3B\r\n        $ini = ($ini+$d) % 240\x3B\r\n    } // for\r\n    return\r\n        \x22var enc = \x22.$this-\x3EexpJsValue($enc).\x22\x3B\x5Cn\x22.\r\n        \x22var seccode = new String(element.value)\x3B\x5Cn\x22.\r\n        \x22if (seccode.length==5) {\x5Cn\x22.\r\n        \x22    var hash = \x27\x27\x3B\x5Cn\x22.\r\n        \x22    var ini = parseInt(element.value) % 240\x3B\x5Cn\x22.\r\n        \x22    var i\x2C j\x3B\x5Cn\x22.\r\n        \x22    for (i = 0\x3B i \x3C 5\x3B i++) {\x5Cn\x22.\r\n        \x22        var d = ini+parseInt(seccode.charAt(i))\x3B\x5Cn\x22.\r\n        \x22        for (j = 0\x3B j \x3C 7\x3B j++) d = enc[d]\x3B\x5Cn\x22.\r\n        \x22        hash += d\x3B\x5Cn\x22.\r\n        \x22        ini = (ini+d) % 240\x3B\x5Cn\x22.\r\n        \x22    } // for\x5Cn\x22.\r\n        \x22    if (hash == \x27$hash\x27) return \x27\x27\x3B\x5Cn\x22. \r\n        \x22} // if\x5Cn\x22.\r\n        \x22if (message==\x27\x27) message = \x5C\x22Security code is missing or wrong.\x5C\x5Cn\x5C\x22\x3B\x5Cn\x22.\r\n        \x22ff_validationFocus(element.name)\x3B\x5Cn\x22.\r\n        \x22return message\x3B\x5Cn\x22\x3B\r\n?\x3E\r\n} // ff_securitycode_ok</code>
	</script>
	<script id="27">
		<package>FF</package>
		<name>ff_selectedValues</name>
		<title>Get selected values as list</title>
		<description>Get values of selected options of a select list as list:\r\n\r\nx = ff_selectedValues(\x27myselectlist\x27)\x3B\r\n// x = green\x2Cred</description>
		<code>function ff_selectedValues(name)\r\n{\r\n    vals = \x27\x27\x3B\r\n    opts = ff_getElementByName(name).options\x3B\r\n    for (o = 0\x3B o \x3C opts.length\x3B o++)\r\n        if (opts[o].selected) {\r\n            if (vals != \x27\x27) vals += \x27\x2C\x27\x3B\r\n            vals += opts[o].value\x3B\r\n        } // if\r\n    return vals\x3B\r\n} // ff_selectedValues</code>
	</script>
	<script id="28">
		<package>FF</package>
		<name>ff_setChecked</name>
		<title>Set radiobutton checked</title>
		<description>Set a radiobutton checked/unchecked</description>
		<code>function ff_setChecked(name\x2C value\x2C checked)\r\n{\r\n    if (arguments.length\x3C3) checked = true\x3B\r\n    for (var i = 0\x3B i \x3C ff_elements.length\x3B i++)\r\n        if (ff_elements[i][2]==name) {\r\n            var e = ff_getElementByIndex(i)\x3B\r\n            if (e.value == value) {\r\n                e.checked = checked\x3B\r\n                break\x3B\r\n            } // if\r\n        } // if\r\n} // ff_setChecked</code>
	</script>
	<script id="29">
		<package>FF</package>
		<name>ff_setSelected</name>
		<title>Select options of  select list</title>
		<description>Select options in a Select List element.\r\n\r\nff_setSelected(\x27mylist\x27\x2C \x27green\x27)\x3B // select green in single or multi mode\x2C unselect all other options\r\nff_setSelected(\x27mylist\x27\x2C \x27red\x2Cgreen\x27)\x3B // select red and green in multi mode\x2C unselect all other options</description>
		<code>function ff_setSelected(name\x2C list)\r\n{\r\n    ids = list.split(\x27\x2C\x27)\r\n    opts = ff_getElementByName(name).options\x3B\r\n    for (o = 0\x3B o \x3C opts.length\x3B o++) {\r\n        state = false\x3B\r\n        for (i = 0\x3B i \x3C ids.length\x3B i++) \r\n            if (ids[i]==opts[o].value) {\r\n                state = true\x3B\r\n                break\x3B\r\n            } // if\r\n        opts[o].selected = state\x3B\r\n    } // for\r\n} // ff_setSelected</code>
	</script>
	<script id="30">
		<package>FF</package>
		<name>ff_showaction</name>
		<title>Show action</title>
		<type>Element Action</type>
		<description>Displays the element action.</description>
		<code>function ff_showaction(element\x2C action)\r\n{\r\n    if(typeof bfUseErrorAlerts == \x27undefined\x27){\r\n        alert(\x27Action \x27+action+\x27 performed by element \x27+element.id)\x3B\r\n    } else {\r\n        alert(\x27Action \x27+action+\x27 performed by element \x27+element.id)\x3B\r\n    }\r\n   \r\n}</code>
	</script>
	<script id="31">
		<package>FF</package>
		<name>ff_showelementinit</name>
		<title>Show element initialization</title>
		<type>Element Init</type>
		<description>Display the element initialization (mainly for debugging)</description>
		<code>function ff_showelementinit(element\x2Ccondition)\r\n{\r\n    if(!element.name) {\r\n    	if(element.length \x26\x26 element.length != 0){\r\n            if(typeof bfUseErrorAlerts == \x27undefined\x27){\r\n                alert(\x27Initialization of \x27+element[0].name+\x27 at \x27+condition)\x3B\r\n            } else {\r\n                alert(\x27Initialization of \x27+element[0].name+\x27 at \x27+condition)\x3B\r\n            }\r\n        }\r\n    } else {\r\n        if(typeof bfUseErrorAlerts == \x27undefined\x27){\r\n            alert(\x27Initialization of \x27+element.name+\x27 at \x27+condition)\x3B\r\n        } else {\r\n            alert(\x27Initialization of \x27+element.name+\x27 at \x27+condition)\x3B\r\n        }\r\n    }\r\n}</code>
	</script>
	<script id="32">
		<package>FF</package>
		<name>ff_showforminit</name>
		<title>Show form initialization</title>
		<type>Form Init</type>
		<description>Show when form initialization is run (for debugging)</description>
		<code>function ff_showforminit()\r\n{\r\n      if(typeof bfUseErrorAlerts == \x27undefined\x27){\r\n        alert(\x27Form initialization\x27)\x3B\r\n    } else {\r\n        alert(\x27Form initialization\x27)\x3B\r\n    }\r\n}</code>
	</script>
	<script id="33">
		<package>FF</package>
		<name>ff_showsubmitted</name>
		<title>Show submitted status</title>
		<type>Form Submitted</type>
		<description>Display submit status as user feedback.</description>
		<code>function ff_showsubmitted(status\x2C message)\r\n{\r\n    if(typeof bfUseErrorAlerts == \x27undefined\x27){\r\n        alert(message)\x3B\r\n    } else {\r\n        alert(message)\x3B\r\n    }\r\n} // ff_showsubmitted</code>
	</script>
	<script id="34">
		<package>FF</package>
		<name>ff_showvalidation</name>
		<title>Show element validation</title>
		<type>Element Validation</type>
		<description>Display element validation (for debugging)</description>
		<code>function ff_showvalidation(element\x2C message)\r\n{\r\n    if(typeof bfUseErrorAlerts == \x27undefined\x27){\r\n        alert(\x27Validation of \x27+element.name+\x22 with message: \x5Cn\x22+message)\x3B\r\n    } else {\r\n        alert(\x27Validation of \x27+element.name+\x22 with message: \x5Cn\x22+message)\x3B\r\n    }\r\n    return \x27\x27\x3B\r\n}</code>
	</script>
	<script id="35">
		<package>FF</package>
		<name>ff_submittedhome</name>
		<title>Return to homepage</title>
		<type>Form Submitted</type>
		<description>Display submit status and then return to the home page of the site.</description>
		<code>function ff_submittedhome(status\x2C message)\r\n{\r\n    if(typeof bfUseErrorAlerts == \x27undefined\x27){\r\n        alert(message+\x22\x5CnYou will be redirected to the home page now.\x22)\x3B\r\n    } else {\r\n        alert(message+\x22\x5CnYou will be redirected to the home page now.\x22)\x3B\r\n    }\r\n    ff_returnHome()\x3B\r\n} // ff_submittedhome</code>
	</script>
	<script id="36">
		<package>FF</package>
		<name>ff_unchecked</name>
		<title>Unchecked</title>
		<type>Element Validation</type>
		<description>Validate that radio button or checkbox is unchecked.</description>
		<code>function ff_unchecked(element\x2C message)\r\n{\r\n    if (!element.checked) \r\n        return \x27\x27\x3B \r\n    else {\r\n        if (message==\x27\x27) message = element.name+\x22 is checked.\x5Cn\x22\x3B\r\n        ff_validationFocus(element.name)\x3B\r\n        return message\x3B\r\n    } // if\r\n} // ff_unchecked</code>
	</script>
	<script id="37">
		<package>FF</package>
		<name>ff_url_validation</name>
		<title>Url Validation</title>
		<type>Element Validation</type>
		<description>Validates a url.</description>
		<code>function ff_url_validation(element\x2C message)\r\n{\r\n\r\n         if (element.value.trim() == \x27\x27 || !bf_isUrlValid(element.value)) {\r\n             if (message==\x27\x27) message = element.name+\x22 faild in my test.\x5Cn\x22\r\n             ff_validationFocus(element.name)\x3B\r\n             return message\x3B\r\n         } // if\r\n         return \x27\x27\x3B\r\n     } // ff_some_element_validation\r\n\r\n\r\nfunction bf_isUrlValid(url) {\r\n    return /^(https?|s?ftp):\x5C/\x5C/(((([a-z]|\x5Cd|-|\x5C.|_|~|[\x5Cu00A0-\x5CuD7FF\x5CuF900-\x5CuFDCF\x5CuFDF0-\x5CuFFEF])|(%[\x5Cda-f]{2})|[!\x5C$\x26\x27\x5C(\x5C)\x5C*\x5C+\x2C\x3B=]|:)*@)?(((\x5Cd|[1-9]\x5Cd|1\x5Cd\x5Cd|2[0-4]\x5Cd|25[0-5])\x5C.(\x5Cd|[1-9]\x5Cd|1\x5Cd\x5Cd|2[0-4]\x5Cd|25[0-5])\x5C.(\x5Cd|[1-9]\x5Cd|1\x5Cd\x5Cd|2[0-4]\x5Cd|25[0-5])\x5C.(\x5Cd|[1-9]\x5Cd|1\x5Cd\x5Cd|2[0-4]\x5Cd|25[0-5]))|((([a-z]|\x5Cd|[\x5Cu00A0-\x5CuD7FF\x5CuF900-\x5CuFDCF\x5CuFDF0-\x5CuFFEF])|(([a-z]|\x5Cd|[\x5Cu00A0-\x5CuD7FF\x5CuF900-\x5CuFDCF\x5CuFDF0-\x5CuFFEF])([a-z]|\x5Cd|-|\x5C.|_|~|[\x5Cu00A0-\x5CuD7FF\x5CuF900-\x5CuFDCF\x5CuFDF0-\x5CuFFEF])*([a-z]|\x5Cd|[\x5Cu00A0-\x5CuD7FF\x5CuF900-\x5CuFDCF\x5CuFDF0-\x5CuFFEF])))\x5C.)+(([a-z]|[\x5Cu00A0-\x5CuD7FF\x5CuF900-\x5CuFDCF\x5CuFDF0-\x5CuFFEF])|(([a-z]|[\x5Cu00A0-\x5CuD7FF\x5CuF900-\x5CuFDCF\x5CuFDF0-\x5CuFFEF])([a-z]|\x5Cd|-|\x5C.|_|~|[\x5Cu00A0-\x5CuD7FF\x5CuF900-\x5CuFDCF\x5CuFDF0-\x5CuFFEF])*([a-z]|[\x5Cu00A0-\x5CuD7FF\x5CuF900-\x5CuFDCF\x5CuFDF0-\x5CuFFEF])))\x5C.?)(:\x5Cd*)?)(\x5C/((([a-z]|\x5Cd|-|\x5C.|_|~|[\x5Cu00A0-\x5CuD7FF\x5CuF900-\x5CuFDCF\x5CuFDF0-\x5CuFFEF])|(%[\x5Cda-f]{2})|[!\x5C$\x26\x27\x5C(\x5C)\x5C*\x5C+\x2C\x3B=]|:|@)+(\x5C/(([a-z]|\x5Cd|-|\x5C.|_|~|[\x5Cu00A0-\x5CuD7FF\x5CuF900-\x5CuFDCF\x5CuFDF0-\x5CuFFEF])|(%[\x5Cda-f]{2})|[!\x5C$\x26\x27\x5C(\x5C)\x5C*\x5C+\x2C\x3B=]|:|@)*)*)?)?(\x5C?((([a-z]|\x5Cd|-|\x5C.|_|~|[\x5Cu00A0-\x5CuD7FF\x5CuF900-\x5CuFDCF\x5CuFDF0-\x5CuFFEF])|(%[\x5Cda-f]{2})|[!\x5C$\x26\x27\x5C(\x5C)\x5C*\x5C+\x2C\x3B=]|:|@)|[\x5CuE000-\x5CuF8FF]|\x5C/|\x5C?)*)?(#((([a-z]|\x5Cd|-|\x5C.|_|~|[\x5Cu00A0-\x5CuD7FF\x5CuF900-\x5CuFDCF\x5CuFDF0-\x5CuFFEF])|(%[\x5Cda-f]{2})|[!\x5C$\x26\x27\x5C(\x5C)\x5C*\x5C+\x2C\x3B=]|:|@)|\x5C/|\x5C?)*)?$/i.test(url)\x3B\r\n}</code>
	</script>
	<script id="38">
		<package>FF</package>
		<name>ff_validate_date</name>
		<title>Validate Date</title>
		<type>Element Validation</type>
		<description>Validates that the date in a textfield is correctly formatted in the  format given as prefix in the error message setup.\r\nExample format definition in the message:\r\n\r\nYYYY-MM-DD***-***The actual error message.\r\n\r\nThe middle part ***-*** indicates the separator being used (dash in this case) and also separates the format from the actual error message.\r\n\r\nCan be used with a textfield element and/or the Calendar element.</description>
		<code>function ff_validate_date(element\x2C message)\r\n{\r\n   let separator = \x27-\x27\x3B // default\r\n   let format = \x27YYYY-MM-DD\x27\x3B // default\r\n   let splitted_message = message.split(\x22***\x22)\x3B\r\n   let year_index = 0\x3B\r\n   let month_index =1\x3B\r\n   let day_index = 2\x3B\r\n   let year_length = 4\x3B\r\n   let month_length = 2\x3B\r\n   let day_length = 2\x3B\r\n\r\n   if( splitted_message.length == 3 ){\r\n       format = splitted_message[0].split(\x22 \x22)[0].trim().toUpperCase()\x3B // in case there is the time\x2C as well\x2C we want the \x22left\x22 side\x2C only\r\n       separator = splitted_message[1]\x3B\r\n       message = splitted_message[2]\x3B\r\n       let splitted_format = format.split( separator )\x3B\r\n       if(splitted_format.length == 3){\r\n           for(let i = 0\x3B i \x3C 3\x3B i++){ \r\n               if(splitted_format[i].startsWith(\x22Y\x22)){ year_index = i\x3B year_length = splitted_format[i].length\x3B }\r\n               if(splitted_format[i].startsWith(\x22M\x22)){ month_index = i\x3B month_length = splitted_format[i].length\x3B }\r\n               if(splitted_format[i].startsWith(\x22D\x22)){ day_index = i\x3B day_length = splitted_format[i].length\x3B }\r\n          }\r\n       }\r\n   }\r\n\r\n   if(message.trim() == \x27\x27){\r\n\r\n       message = \x27Element \x27 + element.name + \x27 failed my test\x27\x3B\r\n   }\r\n\r\n   if(typeof element.value == \x27undefined\x27 || element.value.trim() == \x27\x27){\r\n\r\n       return message\x3B\r\n   }\r\n\r\n   let splitted_value = element.value.split( separator )\x3B\r\n\r\n   if( splitted_value.length != 3 ){\r\n\r\n      return message\x3B\r\n   }\r\n\r\n   let new_value = splitted_value[year_index] + \x22-\x22 + splitted_value[month_index] + \x22-\x22 + splitted_value[day_index] \x3B\r\n\r\n   // Regular expression used to check if date is in correct format\r\n   let reg = new RegExp(\x22^\x5C\x5Cd{\x22+year_length+\x22}-\x5C\x5Cd{\x22+month_length+\x22}-\x5C\x5Cd{\x22+day_length+\x22}$\x22\x2C\x22g\x22)\x3B\r\n\r\n   if(reg.test(new_value))\r\n   {\r\n      let date_array = new_value.split(\x22-\x22)\x3B\r\n      let day = date_array[2]\x3B\r\n      let month = date_array[1] - 1\x3B\r\n      let year = date_array[0]\x3B\r\n\r\n      if( !bfvdate_isValid(day\x2C month\x2C year) )\r\n      {\r\n         return message\x3B\r\n      }\r\n   }\r\n   else\r\n   {\r\n      return message\x3B\r\n   }\r\n\r\n   return \x27\x27\x3B\r\n}\r\n\r\nfunction bfvdate_daysInMonth(m\x2C y) { // m is 0 indexed: 0-11\r\n    switch (m) {\r\n        case 1 :\r\n            return (y % 4 == 0 \x26\x26 y % 100) || y % 400 == 0 ? 29 : 28\x3B\r\n        case 8 : case 3 : case 5 : case 10 :\r\n            return 30\x3B\r\n        default :\r\n            return 31\r\n    }\r\n}\r\n\r\nfunction bfvdate_isValid(d\x2C m\x2C y) {\r\n    return m \x3E= 0 \x26\x26 m \x3C 12 \x26\x26 d \x3E 0 \x26\x26 d \x3C= bfvdate_daysInMonth(m\x2C y)\x3B\r\n}</code>
	</script>
	<script id="39">
		<package>FF</package>
		<name>ff_validate_date_DDMMYYYY</name>
		<title>Validate Date DD/MM/YYYY format</title>
		<type>Element Validation</type>
		<description>Validates that the date in a textfield is correctly formatted in DD/MM/YYYY format.\r\nCan be used with a textfield element and/or the Calendar element.</description>
		<code>function ff_validate_date_DDMMYYYY(element\x2C message)\r\n{\r\n   // Regular expression used to check if date is in correct format\r\n   var pattern = /[0-3][0-9]\x5C/(0|1)[0-9]\x5C/(19|20)[0-9]{2}/\x3B\r\n   if(pattern.test(element.value))\r\n   {\r\n      var date_array = element.value.split(\x27/\x27)\x3B\r\n      var day = date_array[0]\x3B\r\n\r\n      // Attention! Javascript consider months in the range 0 - 11\r\n      var month = date_array[1] - 1\x3B\r\n      var year = date_array[2]\x3B\r\n\r\n      // This instruction will create a date object\r\n      source_date = new Date(year\x2Cmonth\x2Cday)\x3B\r\n\r\n      if(year != source_date.getFullYear())\r\n      {\r\n         return message == \x27\x27 ? \x27Element \x27 + element.name + \x27 failed my test\x27 : message\x3B\r\n      }\r\n\r\n      if(month != source_date.getMonth())\r\n      {\r\n         return message == \x27\x27 ? \x27Element \x27 + element.name + \x27 failed my test\x27 : message\x3B\r\n      }\r\n\r\n      if(day != source_date.getDate())\r\n      {\r\n         return message == \x27\x27 ? \x27Element \x27 + element.name + \x27 failed my test\x27 : message\x3B\r\n      }\r\n   }\r\n   else\r\n   {\r\n      return message == \x27\x27 ? \x27Element \x27 + element.name + \x27 failed my test\x27 : message\x3B\r\n   }\r\n\r\n   return \x27\x27\x3B\r\n}</code>
	</script>
	<script id="40">
		<package>FF</package>
		<name>ff_validate_form</name>
		<title>Validate form</title>
		<type>Element Action</type>
		<description>Validates the form and displays the result.</description>
		<code>function ff_validate_form(element\x2C action)\r\n{\r\n    if(typeof bfUseErrorAlerts != \x27undefined\x27){\r\n     JQuery(\x22.bfErrorMessage\x22).html(\x27\x27)\x3B\r\n     JQuery(\x22.bfErrorMessage\x22).css(\x22display\x22\x2C\x22none\x22)\x3B\r\n    }\r\n    error = ff_validation(0)\x3B\r\n    if (error != \x27\x27) {\r\n        if(typeof bfUseErrorAlerts == \x27undefined\x27){\r\n           alert(error)\x3B\r\n        } else {\r\n           bfShowErrors(error)\x3B\r\n        }\r\n        ff_validationFocus(\x27\x27)\x3B\r\n    } else\r\n        alert(\x27All inputs are valid.\x27)\x3B\r\n} // ff_validate_form</code>
	</script>
	<script id="41">
		<package>FF</package>
		<name>ff_validate_nextpage</name>
		<title>Validate and next page</title>
		<type>Element Action</type>
		<description>Validates the current page\x2C and if everything is ok is switches to the next page.</description>
		<code>function ff_validate_nextpage(element\x2C action)\r\n{\r\n    if(typeof bfUseErrorAlerts != \x27undefined\x27){\r\n     JQuery(\x22.bfErrorMessage\x22).html(\x27\x27)\x3B\r\n     JQuery(\x22.bfErrorMessage\x22).css(\x22display\x22\x2C\x22none\x22)\x3B\r\n    }\r\n\r\n    error = ff_validation(ff_currentpage)\x3B\r\n    if (error != \x27\x27) {\r\n       if(typeof bfUseErrorAlerts == \x27undefined\x27){\r\n           alert(error)\x3B\r\n        } else {\r\n           bfShowErrors(error)\x3B\r\n        }\r\n        ff_validationFocus(\x27\x27)\x3B\r\n    } else {\r\n        ff_switchpage(ff_currentpage+1)\x3B\r\n        self.scrollTo(0\x2C0)\x3B   \r\n    }\r\n} // ff_validate_nextpage</code>
	</script>
	<script id="42">
		<package>FF</package>
		<name>ff_validate_page</name>
		<title>Validate page</title>
		<type>Element Action</type>
		<description>Validates the current page and displays the result.</description>
		<code>function ff_validate_page(element\x2C action)\r\n{\r\n    if(typeof bfUseErrorAlerts != \x27undefined\x27){\r\n     JQuery(\x22.bfErrorMessage\x22).html(\x27\x27)\x3B\r\n     JQuery(\x22.bfErrorMessage\x22).css(\x22display\x22\x2C\x22none\x22)\x3B\r\n    }\r\n    error = ff_validation(ff_currentpage)\x3B\r\n    if (error != \x27\x27) {\r\n        if(typeof bfUseErrorAlerts == \x27undefined\x27){\r\n           alert(error)\x3B\r\n        } else {\r\n           bfShowErrors(error)\x3B\r\n        }\r\n        ff_validationFocus(\x27\x27)\x3B\r\n    } else\r\n        alert(\x27All inputs are valid.\x27)\x3B\r\n} // ff_validate_page</code>
	</script>
	<script id="43">
		<package>FF</package>
		<name>ff_validate_prevpage</name>
		<title>Validate previous page</title>
		<type>Element Action</type>
		<description>Validates the current page and switches to the previous page if all is ok</description>
		<code>function ff_validate_prevpage(element\x2C action)\r\n{\r\n    if(typeof bfUseErrorAlerts != \x27undefined\x27){\r\n     JQuery(\x22.bfErrorMessage\x22).html(\x27\x27)\x3B\r\n     JQuery(\x22.bfErrorMessage\x22).css(\x22display\x22\x2C\x22none\x22)\x3B\r\n    }\r\n\r\n    error = ff_validation(ff_currentpage)\x3B\r\n    if (error != \x27\x27) {\r\n       if(typeof bfUseErrorAlerts == \x27undefined\x27){\r\n           alert(error)\x3B\r\n        } else {\r\n           bfShowErrors(error)\x3B\r\n        }\r\n        ff_validationFocus(\x27\x27)\x3B\r\n    } else{\r\n    	if(ff_currentpage \x3E 1){\r\n	 ff_switchpage(ff_currentpage-1)\x3B\r\n	 self.scrollTo(0\x2C0)\x3B\r\n        }\r\n    }\r\n} // ff_validate_prevpage</code>
	</script>
	<script id="44">
		<package>FF</package>
		<name>ff_validate_submit</name>
		<title>Validate and submit form</title>
		<type>Element Action</type>
		<description>Validates the whole form\x2C and if everything is ok it submits the form.</description>
		<code>function ff_validate_submit(element\x2C action)\r\n{\r\n    if(typeof bfUseErrorAlerts != \x27undefined\x27){\r\n     JQuery(\x22.bfErrorMessage\x22).html(\x27\x27)\x3B\r\n     JQuery(\x22.bfErrorMessage\x22).css(\x22display\x22\x2C\x22none\x22)\x3B\r\n    }\r\n    error = ff_validation(0)\x3B\r\n    if (error != \x27\x27) {\r\n\r\n        if(typeof bfUseErrorAlerts == \x27undefined\x27){\r\n           alert(error)\x3B\r\n        } else {\r\n           bfShowErrors(error)\x3B\r\n        }\r\n        ff_validationFocus()\x3B\r\n    } else\r\n        ff_submitForm()\x3B\r\n} // ff_validate_submit</code>
	</script>
	<script id="45">
		<package>FF</package>
		<name>ff_validate_submit_ajax</name>
		<title>Ajax validate and submit form</title>
		<type>Element Action</type>
		<description>Submits the form and staying on the same page by performing an ajax submit.\r\n\r\nDoes NOT work for legacy modes!</description>
		<code>let bfAjaxSubmitElement = null\x3B\r\n\r\n    function ff_validate_submit_ajax(element\x2C action)\r\n    {\r\n        \r\n        switch (action) {\r\n            case \x27click\x27:\r\n\r\n                bfAjaxSubmitElement = element\x3B\r\n\r\n\r\n                if(JQuery(\x22#bfFileQueue\x22).size() \x3E 0 \x26\x26 typeof bfAjaxObject101 == \x27undefined\x27 \x26\x26 typeof bfReCaptchaLoaded == \x27undefined\x27)\r\n                {\r\n                    bfDoFlashUploadAjax()\x3B\r\n\r\n\r\n                }else{\r\n\r\n                    ff_validate_submitAjax()\x3B\r\n                }\r\n\r\n                break\x3B\r\n            default:\x3B\r\n        } // switch\r\n    }\r\n\r\n    function ff_validate_submitAjax(){\r\n\r\n        if(typeof bfUseErrorAlerts != \x27undefined\x27){\r\n            JQuery(\x22.bfErrorMessage\x22).html(\x27\x27)\x3B\r\n            JQuery(\x22.bfErrorMessage\x22).css(\x22display\x22\x2C\x22none\x22)\x3B\r\n        }\r\n\r\n        let error = ff_validation(0)\x3B\r\n\r\n        if (error != \x27\x27) {\r\n\r\n            if(typeof bfUseErrorAlerts == \x27undefined\x27){\r\n                alert(error)\x3B\r\n            } else {\r\n                bfShowErrors(error)\x3B\r\n            }\r\n            ff_validationFocus()\x3B\r\n\r\n        } else {\r\n\r\n            ff_submitForm()\x3B\r\n\r\n        }\r\n    }\r\n\r\n    function bfDoFlashUploadAjax(element){\r\n        JQuery(\x22#bfSubmitMessage\x22).css(\x22visibility\x22\x2C\x22hidden\x22)\x3B\r\n        JQuery(\x22#bfSubmitMessage\x22).css(\x22display\x22\x2C\x22none\x22)\x3B\r\n        JQuery(\x22#bfSubmitMessage\x22).css(\x22z-index\x22\x2C\x22999999\x22)\x3B\r\n        JQuery(\x22.bfErrorMessage\x22).html(\x22\x22)\x3B\r\n        JQuery(\x22.bfErrorMessage\x22).css(\x22display\x22\x2C\x22none\x22)\x3B\r\n        for(var i = 0\x3B i \x3C bfUploaderErrorElements.length\x3B i++){\r\n            JQuery(\x22#\x22+bfUploaderErrorElements[i]).html(\x22\x22)\x3B\r\n        }\r\n        bfUploaderErrorElements = []\x3B\r\n        if(ff_validation(0) == \x22\x22){\r\n            try{\r\n                bfFlashUploadInterval = window.setInterval( bfCheckFlashUploadProgressAjax\x2C 1000 )\x3B\r\n                if(bfFlashUploadersLength \x3E 0){\r\n                    JQuery(\x22#bfFileQueue\x22).bfcenter(true)\x3B\r\n                    JQuery(\x22#bfFileQueue\x22).css(\x22visibility\x22\x2C\x22visible\x22)\x3B\r\n                    for( var i = 0\x3B i \x3C bfUploaders.length\x3B i++ ){\r\n                        bfUploaders[i].start()\x3B\r\n                    }\r\n                }\r\n            } catch(e){alert(e)}\r\n        } else {\r\n            if(typeof bfUseErrorAlerts == \x22undefined\x22){\r\n                alert(error)\x3B\r\n            } else {\r\n                bfShowErrors(error)\x3B\r\n            }\r\n            ff_validationFocus(\x22\x22)\x3B\r\n            if(document.getElementById(\x22bfSubmitButton\x22)) {\r\n                document.getElementById(\x22bfSubmitButton\x22).disabled = false\x3B\r\n            }\r\n        }\r\n    }\r\n    function bfCheckFlashUploadProgressAjax(){\r\n        if( JQuery(\x22#bfFileQueue\x22).html() == \x22\x22 ){ // empty indicates that all queues are uploaded or in any way cancelled\r\n            JQuery(\x22#bfFileQueue\x22).css(\x22visibility\x22\x2C\x22hidden\x22)\x3B\r\n            window.clearInterval( bfFlashUploadInterval )\x3B\r\n            if(typeof bfAjaxObject101 != \x27undefined\x27 || typeof bfReCaptchaLoaded != \x27undefined\x27){\r\n                ff_submitForm2()\x3B\r\n            }else{\r\n                ff_validate_submitAjax()\x3B\r\n            }\r\n            JQuery(\x22.bfFlashFileQueueClass\x22).html(\x22\x22)\x3B\r\n            if(bfFlashUploadersLength \x3E 0){\r\n                JQuery(\x22#bfSubmitMessage\x22).bfcenter(true)\x3B\r\n                JQuery(\x22#bfSubmitMessage\x22).css(\x22visibility\x22\x2C\x22visible\x22)\x3B\r\n                JQuery(\x22#bfSubmitMessage\x22).css(\x22display\x22\x2C\x22block\x22)\x3B\r\n                JQuery(\x22#bfSubmitMessage\x22).css(\x22z-index\x22\x2C\x22999999\x22)\x3B\r\n            }\r\n\r\n        }\r\n    }\r\n\r\n    function bf_ajax_submit(){\r\n\r\n        JQuery.ajax({\r\n            type: \x22POST\x22\x2C\r\n            url: JQuery(bfAjaxSubmitElement).closest(\x22form\x22).attr(\x22action\x22)\x2C\r\n            data: JQuery(bfAjaxSubmitElement).closest(\x22form\x22).serialize()\x2C\r\n            success: function(data)\r\n            {\r\n                JQuery(\x22#bfSubmitMessage\x22).css(\x22visibility\x22\x2C\x22hidden\x22)\x3B\r\n                JQuery(\x22#bfSubmitMessage\x22).css(\x22display\x22\x2C\x22none\x22)\x3B\r\n                JQuery(\x22#bfSubmitMessage\x22).css(\x22z-index\x22\x2C\x22999999\x22)\x3B\r\n\r\n                // assuming last page is thank you page\r\n                if(document.getElementById(\x22bfPage\x22 + (ff_currentpage + 1))\r\n                    \x26\x26 document.getElementById(\x22bfPage\x22 + (ff_currentpage + 1)).style.display == \x27none\x27){\r\n\r\n                    ff_switchpage(ff_currentpage + 1)\x3B\r\n\r\n                }\r\n                else{\r\n\r\n                    alert(\x27Successfully submitted\x27)\x3B\r\n                    window.location = window.location.href\x3B\r\n                }\r\n            }\r\n        })\x3B\r\n\r\n    }</code>
	</script>
	<script id="46">
		<package>FF</package>
		<name>ff_validemail</name>
		<title>Valid email</title>
		<type>Element Validation</type>
		<description>Validate entry of a valid email (syntax check only)</description>
		<code>function ff_validemail(element\x2C message)\r\n{\r\n    var check =\r\n    /^([a-zA-Z0-9_\x5C.\x5C-])+\x5C@(([a-zA-Z0-9\x5C-])+\x5C.)+([a-zA-Z0-9]{2\x2C4})+$/\x3B\r\n    if (!check.test(element.value)){\r\n        if (message==\x27\x27) message = element.name+\x22 is no valid email address.\x5Cn\x22\x3B\r\n        ff_validationFocus(element.name)\x3B\r\n        return message\x3B\r\n    } // if\r\n    return \x27\x27\x3B\r\n} // ff_validemail</code>
	</script>
	<script id="47">
		<package>FF</package>
		<name>ff_validemail_repeat</name>
		<title>Validate Email repeat</title>
		<type>Element Validation</type>
		<description>Checks if the field value is a valid email address and has a second counterpart that has an equal value.\r\nThe 2nd email field must be named \x22FIELDNAME_repeat\x22!</description>
		<code>function ff_validemail_repeat(element\x2C message)\r\n{\r\n    var check =\r\n    /^([a-zA-Z0-9_\x5C.\x5C-])+\x5C@(([a-zA-Z0-9\x5C-])+\x5C.)+([a-zA-Z0-9]{2\x2C4})+$/\x3B\r\n    if (!check.test(element.value)){\r\n        if (message==\x27\x27) message = element.name+\x22 is no valid email address.\x5Cn\x22\x3B\r\n        ff_validationFocus(element.name)\x3B\r\n        return message\x3B\r\n    } // if\r\n	\r\n    try{\r\n	    var repeat = element.name.split(\x22ff_nm_\x22)[1].split(\x22[]\x22)[0]\x3B\r\n	\r\n	    if(!ff_getElementByName(repeat + \x27_repeat\x27)){\r\n	     	if (message==\x27\x27) message = repeat+\x22 has no repeat email field.\x5Cn\x22\x3B\r\n	        ff_validationFocus(element.name)\x3B\r\n	        return message\x3B\r\n	    } else {\r\n	        if(ff_getElementByName(repeat + \x27_repeat\x27).value != element.value){\r\n	           if (message==\x27\x27) message = element.name+\x22 and \x22 + repeat + \x22_repeat do not match.\x5Cn\x22\x3B\r\n	           ff_validationFocus(repeat + \x27_repeat\x27)\x3B\r\n	           return message\x3B\r\n	        }\r\n	    }\r\n    }catch(e){\r\n        return e.description\x3B\r\n    }\r\n\r\n    return \x27\x27\x3B\r\n} // ff_validemail</code>
	</script>
	<script id="48">
		<package>FF</package>
		<name>ff_valuenotempty</name>
		<title>Value not empty</title>
		<type>Element Validation</type>
		<description>Validate that value is not empty.</description>
		<code>function ff_valuenotempty(element\x2C message)\r\n{\r\n    if (element.value!=\x27\x27) return \x27\x27\x3B \r\n    if (message==\x27\x27) message = \x22Please enter \x22+element.name+\x22.\x5Cn\x22\x3B\r\n    ff_validationFocus(element.name)\x3B\r\n    return message\x3B\r\n} // ff_valuenotempty</code>
	</script>
	<piece id="1">
		<package>FF</package>
		<name>ff_addCustomCSSFile</name>
		<title>Add custom CSS File</title>
		<type>Before Form</type>
		<description>Adds a custom css file to the form. To choose a css file\x2C execute this piece and call the function ff_addCustomCSSFile(\x27path/to/css/file\x27) with the RELATIVE (not full!) path to your joomla installation.\r\nDo not forget to call $this-\x3EexecPieceByName(\x27ff_InitLib\x27) before!\r\n\r\nExample:\r\n\r\nglobal $mainframe\x3B\r\n\r\n$this-\x3EexecPieceByName(\x27ff_InitLib\x27)\x3B\r\n$this-\x3EexecPieceByName(\x27ff_addCustomCSSFile\x27)\x3B\r\n\r\nff_addCustomCSSFile(\x27templates/\x27 . $mainframe-\x3EgetTemplate() . \x27/css/template.css\x27)\x3B</description>
		<code>function ff_addCustomCSSFile($path){\r\n	if(file_exists(JPATH_SITE . \x27/\x27 . $path)){\r\n		JFactory::getDocument()-\x3EaddStyleSheet(JURI::root() . $path)\x3B\r\n	}\r\n}</code>
	</piece>
	<piece id="2">
		<package>FF</package>
		<name>ff_Constants</name>
		<title>Constansts definitions</title>
		<type>Before Form</type>
		<description>Library constants definitions</description>
		<code>define(\x27FF_DIE\x27\x2C       \x27_ff_die_on_errors_\x27)\x3B\r\ndefine(\x27FF_DONTDIE\x27\x2C   \x27_ff_stay_alive_\x27)\x3B\r\ndefine(\x27FF_IGNOREDIE\x27\x2C \x27_ff_ignore_if_dying_\x27)\x3B\r\n\r\ndefine(\x27FF_ARRAY\x27\x2C     \x27_ff_return_as_array_\x27)\x3B\r\ndefine(\x27FF_LIST\x27\x2C      \x27_ff_return_as_list_\x27)\x3B\r\ndefine(\x27FF_SLIST\x27\x2C     \x27_ff_return_as_slist_\x27)\x3B\r\ndefine(\x27FF_DLIST\x27\x2C     \x27_ff_return_as_dlist_\x27)\x3B\r\n\r\ndefine(\x27FF_NOTRIM\x27\x2C    1)\x3B\r\ndefine(\x27FF_ALLOWHTML\x27\x2C 2)\x3B\r\ndefine(\x27FF_ALLOWRAW\x27\x2C  4)\x3B</code>
	</piece>
	<piece id="3">
		<package>FF</package>
		<name>ff_databaseToSelect</name>
		<title>ff_databaseToSelect</title>
		<type>Before Form</type>
		<description>Populates a select field with database stuff. Use like so:\r\n\r\ndatabaseToSelect($select\x2C $table\x2C $label\x2C $value\x2C $sql)\x3B\r\n\r\n$label and $value are fields you want to display as label and value in select options. $table\r\nis the name of the table you want to look for. $select is the name of the select input. $sql holds custom SQL query\x2C if supplied. If not\x2C\r\nfunction will perform a simple \x27SELECT $label\x2C $valueFROM $table\x27\x3B\r\n\r\nexample\x3B databaseToSelect(\x27mySelect\x27\x2C \x27users\x27\x2C \x27name\x27\x2C \x27ID)\x3B</description>
		<code>function ff_databaseToSelect($st\x2C $tbl\x2C $lbl\x2C $val\x2C $sql)\r\n{\r\n	$db = JFactory::getDBO()\x3B	//Get Database Object\r\n	global $ff_processor\x3B\r\n\r\n	//Create your own query here\r\n	if($sql and $sql!=\x27\x27){\r\n		$db-\x3EsetQuery($sql)\x3B\r\n	}else{\r\n		$db-\x3EsetQuery(\x22SELECT $lbl\x2C $val FROM $tbl\x22)\x3B\r\n	}\r\n	\r\n\r\n	$result = $db-\x3EloadObjectList()\x3B //load the result from the query\r\n	$values = []\x3B\r\n	foreach($result as $rrow){\r\n		$values[]=(object)array(\x27selected\x27=\x3E0\x2C\x27label\x27=\x3E$rrow-\x3E{$lbl}\x2C \x27value\x27=\x3E$rrow-\x3E{$val})\x3B\r\n	}\r\n	\r\n	unset($rrow)\x3B\r\n	\r\n	foreach($ff_processor-\x3Erows as $row)\r\n	{\r\n		if ($row-\x3Ename==$st){\r\n			$row-\x3EselectList = $values\x3B\r\n			foreach($values as $var){\r\n				$row-\x3Edata2 .= $var-\x3Eselected.\x22\x3B\x22.$var-\x3Elabel.\x22\x3B\x22.$var-\x3Evalue.\x22\x5Cn\x22\x3B\r\n			}\r\n			break\x3B\r\n		}\r\n		unset($row)\x3B\r\n	}\r\n}</code>
	</piece>
	<piece id="4">
		<package>FF</package>
		<name>ff_die</name>
		<title>Terminate form gracefully</title>
		<description>Gracefully terminates the form and shows a message plus opionally a \r\nCONTINUE button for further redirection.\r\n\r\nCall:\r\n\r\n    ff_die($message=null\x2C $action=\x27stop\x27\x2C $target=\x27\x27\x2C $params=\x27\x27\x2C $label=\x27Continue\x27)\x3B\r\n    return\x3B\r\n\r\n    $message = A message to display. If no message is provided\x2C it will\r\n               display:\r\n\r\n                    Fatal error in $formname\x2C processing stopped.\r\n\r\n    $action  = \x27stop\x27 : Dont show a CONTINUE button (default)\r\n               \x27self\x27 : Redirect to the same form\r\n               \x27form\x27 : Redirect to another form \r\n               \x27page\x27 : Redirect to another page of this site\r\n               \x27home\x27 : Redirect to homepage of the site\r\n               \x27url\x27  : Redirect to a url\r\n\r\n    $target  = Target name/url for \x27form\x27\x2C \x27page\x27 and \x27url\x27\r\n\r\n    $params  = Additional parameters for \x27self\x27 and \x27form\x27\r\n\r\n    $label   = Text for the continue button\r\n\r\nExamples:\r\n\r\n    // Display standard message without continue button\r\n    ff_die()\x3B \r\n\r\n    // Display message without continue button\r\n    ff_die(\x27Sorry\x2C cannot continue for some reason.\x27)\x3B\r\n\r\n    // Display standard message and return to same form with a parameter\r\n    ff_die(null\x2C \x27self\x27\x2C \x27\x26ff_param_foo=bar\x27)\x3B\r\n\r\n    // Redirect to another form\r\n    ff_die(\x27Guess you are hungry now...\x27\x2C \x27form\x27\x2C \x27SamplePizzaShop\x27\x2C null\x2C \x27Order\x27)\x3B\r\n\r\n    // Redirect to another site page\r\n    ff_die(\r\n        \x27Something strange has happened!\x27\x2C \r\n        \x27page\x27\x2C \r\n        \x27index.php?option=com_content\x26task=section\x26id=1\x26Itemid=2\x27\r\n    )\x3B</description>
		<code>function ff_die($message=\x27\x27\x2C $action=\x27stop\x27\x2C $target=\x27\x27\x2C $params=\x27\x27\x2C $label=\x27Continue\x27)\r\n{\r\n    global $ff_processor\x3B\r\n    if ($ff_processor-\x3Edying) return\x3B\r\n\r\n    ob_end_clean()\x3B\r\n    $form =\x26 $ff_processor-\x3Eformrow\x3B\r\n    if (!$message) \r\n        $message = \r\n            \x22\x3Cstrong\x3EFatal error in $form-\x3Ename\x2C form processing halted.\x3C/strong\x3E\x22\x3B\r\n    switch ($action) {\r\n        case \x27self\x27: $url = ff_makeSelfUrl($params)\x3B break\x3B\r\n        case \x27form\x27: $url = ff_makeFormUrl($target\x2C $params)\x3B break\x3B\r\n        case \x27page\x27: $url = ff_makePageUrl($target)\x3B break\x3B\r\n        case \x27home\x27: $url = \x22{mossite}\x22\x3B break\x3B\r\n        case \x27url\x27 : $url = $target\x3B break\x3B\r\n        default    : $url = \x27\x27\x3B\r\n    } // switch\r\n    if ($form-\x3Eclass1 != \x27\x27) echo \x27\x3Cdiv class=\x22\x27.$form-\x3Eclass1.\x27\x22\x3E\x27.nl()\x3B\r\n    echo($message.\x27\x3Cbr/\x3E\x3Cbr/\x3E\x3Cbr/\x3E\x27.nl())\x3B\r\n    if ($url) {\r\n        if (!$ff_processor-\x3Einline) echo \x27\x3Cform action=\x22#redirect\x22\x3E\x27.nl()\x3B\r\n        if ($ff_processor-\x3Einframe) $t = \x27parent\x27\x3B else $t = \x27document\x27\x3B\r\n        echo \x27\x3Cinput type=\x22button\x22 class=\x22button\x22 value=\x22\x27.$label.\x27\x22\x27.\r\n             \x27 onClick=\x22\x27.$t.\x27.location.href=\x5C\x27\x27.htmlentities($url\x2CENT_QUOTES).\x27\x5C\x27\x3B\x22\x27.\r\n             \x27/\x3E\x27.nl()\x3B\r\n        if (!$ff_processor-\x3Einline) echo \x27\x3C/form\x3E\x27.nl()\x3B\r\n    } // if\r\n    if ($form-\x3Eclass1 != \x27\x27) echo \x27\x3C/div\x3E\x27.nl()\x3B\r\n    unset($form)\x3B\r\n    ob_start()\x3B\r\n    $ff_processor-\x3Esuicide()\x3B\r\n} // ff_die</code>
	</piece>
	<piece id="5">
		<package>FF</package>
		<name>ff_DisableFormTrace</name>
		<title>Disable tracing at view time</title>
		<type>Before Form</type>
		<description>Disables tracing for use as before form piece</description>
		<code>//+trace dis</code>
	</piece>
	<piece id="6">
		<package>FF</package>
		<name>ff_DisableSubmitTrace</name>
		<title>Disable tracing at submit time</title>
		<type>Begin Submit</type>
		<description>Disables tracing for use as begin submit piece</description>
		<code>//+trace dis</code>
	</piece>
	<piece id="7">
		<package>FF</package>
		<name>ff_dying</name>
		<title>Query live status</title>
		<description>Query if form is dying</description>
		<code>//+trace max none\r\nfunction ff_dying()\r\n{\r\n    global $ff_processor\x3B \r\n    return $ff_processor-\x3Edying\x3B\r\n} // ff_dying</code>
	</piece>
	<piece id="8">
		<package>FF</package>
		<name>ff_expString</name>
		<title>String export</title>
		<description>Export string function: escapes special characters in c-codes</description>
		<code>function ff_expString($text)\r\n{\r\n    return expstring($text)\x3B\r\n} // ff_expString</code>
	</piece>
	<piece id="9">
		<package>FF</package>
		<name>ff_getPageByNameX</name>
		<title>Get page # by element name</title>
		<description>Gets the page number by the name of an element. \r\nTypically used to redirect to a certain page in a before form piece \r\nas \r\n\r\n    $this-\x3Epage = ff_getPageByName(\x27elementname\x27)\x3B</description>
		<code>function ff_getPageByName($name)\r\n{\r\n    global $ff_processor\x3B\r\n    foreach($ff_processor-\x3Erows as $row)\r\n        if ($row-\x3Ename==$name)\r\n            return $row-\x3Epage\x3B\r\n    return null\x3B\r\n} // ff_getPageByName</code>
	</piece>
	<piece id="10">
		<package>FF</package>
		<name>ff_getParam</name>
		<title>Get GET/POST parameter</title>
		<description>Direct replacement for mosGetParam. ff_getParam will attempt to filter \r\nout parameters that are targeted to another form on the same page.</description>
		<code>function ff_getParam($name\x2C $default=null\x2C $mask=0)\r\n{\r\n    global $ff_request\x3B\r\n    if (substr($name\x2C0\x2C9)==\x27ff_param_\x27) {\r\n        if (!isset($ff_request[$name])) return $default\x3B\r\n        $val = $ff_request[$name]\x3B\r\n    } else {\r\n        if (!isset($_REQUEST[$name])) return $default\x3B\r\n        $val = $_REQUEST[$name]\x3B\r\n    } // if\r\n    $dotrim = ($mask \x26 FF_NOTRIM)==0\x3B\r\n    $dostrp = ($mask \x26 FF_ALLOWHTML)==0\x3B\r\n    $addsla = ($mask \x26 FF_ALLOWRAW)==0\x3B\r\n    $remsla = ($mask \x26 FF_ALLOWRAW)!=0\x3B\r\n    if (is_array($val)) {\r\n        $cnt = count($val)\x3B\r\n        for ($v = 0\x3B $v \x3C $cnt\x3B $v++)\r\n            if (is_string($val[$v])) {\r\n                if ($dotrim) $val[$v] = trim($val[$v])\x3B\r\n                if ($dostrp) $val[$v] = strip_tags($val[$v])\x3B\r\n                if ($addsla) $val[$v] = addslashes($val[$v])\x3B\r\n                if ($remsla) $val[$v] = stripslashes($val[$v])\x3B\r\n            } // if\r\n    } else {\r\n        if (is_string($val)) {\r\n            if ($dotrim) $val = trim($val)\x3B\r\n            if ($dostrp) $val = strip_tags($val)\x3B\r\n            if ($addsla) $val = addslashes($val)\x3B\r\n            if ($remsla) $val = stripslashes($val)\x3B\r\n        } // if\r\n    } // if\r\n    return $val\x3B\r\n} // ff_getParam</code>
	</piece>
	<piece id="11">
		<package>FF</package>
		<name>ff_getSubmit</name>
		<title>Get submited data</title>
		<description>Returns submitdata either as scalar\x2C array or list. In case of list the values\r\nare returned as a string with the values concatenated by comma.\r\n\r\nExamples:\r\n\r\n// Get as scalar: Optionally pass a default value as second parameter.\r\n// If no default is provided\x2C it will return NULL if no value was submitted\r\n\r\n    $myval = ff_getSubmit(\x27myvar\x27)\x3B        // return NULL if not submitted\r\n\r\n    $myval = ff_getSubmit(\x27myvar\x27\x2C1)\x3B      // return 1 if not submitted\r\n\r\n    $myval = ff_getSubmit(\x27myvar\x27\x2C\x27foo\x27)\x3B  // return \x27foo\x27 if not submitted\r\n\r\n    ff_query(\r\n        \x22insert into #__mytable(id\x2C name) \x22.\r\n        \x22values (\x27\x22.\r\n            ff_getSubmit(\x27id\x27).\x22\x2C \x22.\r\n            ff_getSubmit(\x27name\x27\x2C\x27unknown\x27).\r\n        \x22\x27)\x22\r\n    )\x3B\r\n\r\n// Get as array: Pass FF_ARRAY as second Parameter\r\n\r\n    $myarr = $ff_getSubmit(\x27myarr\x27\x2C FF_ARRAY)\x3B\r\n\r\n    foreach ($myarr as $myval) ...\r\n\r\n// Get as list: Pass either FF_LIST\x2C FF_SLIST or FF_DLIST as 2nd parameter.\r\n\r\n    // FF_LIST will return numeric data unquoted and strings in single quotes:\r\n    //    1\x2C2\x2C\x27a\x27\x2C4\r\n\r\n    // FF_SLIST will return all data single quoted:\r\n    //    \x271\x27\x2C\x272\x27\x2C\x27a\x27\x2C\x274\x27\r\n\r\n    // FF_DLIST will return all data double quoted:\r\n    //    \x221\x22\x2C\x222\x22\x2C\x22a\x22\x2C\x224\x22\r\n\r\n    ff_query(\r\n        \x22delete from #__mytable \x22.\r\n        \x22where id in (\x22.ff_getSubmit(\x27itemlist\x27\x2CFF_LIST).\x22)\x22\r\n    )\x3B</description>
		<code>function ff_getSubmit($name\x2C $default=null)\r\n{\r\n    global $ff_processor\x3B\r\n\r\n    switch ((string)$default) {\r\n        case FF_ARRAY: $value = array()\x3B break\x3B\r\n        case FF_LIST : \r\n        case FF_SLIST:\r\n        case FF_DLIST: $value = \x27\x27\x3B break\x3B\r\n        default      : $value = $default\x3B\r\n    } // switch\r\n    foreach ($ff_processor-\x3Esubmitdata as $data)\r\n        if ($data[_FF_DATA_NAME]==$name) {\r\n            $q = \x27\x27\x3B\r\n            switch ((string)$default) {\r\n                case FF_ARRAY:\r\n                    $value[] = $data[_FF_DATA_VALUE]\x3B\r\n                    break\x3B\r\n                case FF_SLIST:\r\n                    $q = \x22\x27\x22\x3B\r\n                case FF_DLIST:\r\n                    if ($q==\x27\x27) $q = \x27\x22\x27\x3B\r\n                case FF_LIST:\r\n                    if ($q==\x27\x27 \x26\x26 !is_numeric($data[_FF_DATA_VALUE])) $q = \x22\x27\x22\x3B\r\n                    if ($value!=\x27\x27) $value.=\x27\x2C\x27\x3B\r\n                    $value .= $q.$data[_FF_DATA_VALUE].$q\x3B\r\n                    break\x3B\r\n                default:\r\n                    return $data[_FF_DATA_VALUE]\x3B\r\n            } // switch\r\n         } // if\r\n    return $value\x3B\r\n} // ff_getSubmit</code>
	</piece>
	<piece id="12">
		<package>FF</package>
		<name>ff_impString</name>
		<title>String import</title>
		<description>Import string function: unescapes c-coded characters of a string</description>
		<code>function ff_impString($text)\r\n{\r\n    return impstring($text)\x3B\r\n} // ff_impString</code>
	</piece>
	<piece id="13">
		<package>FF</package>
		<name>ff_InitLib</name>
		<title>Init Library</title>
		<type>Before Form</type>
		<description>A collection of useful functions for use in form pieces. \r\n\r\nInclude by: \r\n\r\n    $this-\x3EexecPieceByName(\x27ff_InitLib\x27)\x3B</description>
		<code>//+trace high none\r\nif (!defined(\x27FF_DIE\x27))                    $this-\x3EexecPieceByName(\x27ff_Constants\x27)\x3B\r\nif (!function_exists(\x27ff_expstring\x27))      $this-\x3EexecPieceByName(\x27ff_expstring\x27)\x3B\r\nif (!function_exists(\x27ff_makePageUrl\x27))    $this-\x3EexecPieceByName(\x27ff_makePageUrl\x27)\x3B\r\nif (!function_exists(\x27ff_makeFormUrl\x27))    $this-\x3EexecPieceByName(\x27ff_makeFormUrl\x27)\x3B\r\nif (!function_exists(\x27ff_makeSelfUrl\x27))    $this-\x3EexecPieceByName(\x27ff_makeSelfUrl\x27)\x3B\r\nif (!function_exists(\x27ff_die\x27))            $this-\x3EexecPieceByName(\x27ff_die\x27)\x3B\r\nif (!function_exists(\x27ff_dying\x27))          $this-\x3EexecPieceByName(\x27ff_dying\x27)\x3B\r\nif (!function_exists(\x27ff_redirect\x27))       $this-\x3EexecPieceByName(\x27ff_redirect\x27)\x3B\r\nif (!function_exists(\x27ff_redirectParent\x27)) $this-\x3EexecPieceByName(\x27ff_redirectParentX\x27)\x3B\r\nif (!function_exists(\x27ff_redirectPage\x27))   $this-\x3EexecPieceByName(\x27ff_redirectPage\x27)\x3B\r\nif (!function_exists(\x27ff_redirectForm\x27))   $this-\x3EexecPieceByName(\x27ff_redirectForm\x27)\x3B\r\nif (!function_exists(\x27ff_redirectSelf\x27))   $this-\x3EexecPieceByName(\x27ff_redirectSelf\x27)\x3B\r\nif (!function_exists(\x27ff_setChecked\x27))     $this-\x3EexecPieceByName(\x27ff_setCheckedX\x27)\x3B\r\nif (!function_exists(\x27ff_setSelected\x27))    $this-\x3EexecPieceByName(\x27ff_setSelectedX\x27)\x3B\r\nif (!function_exists(\x27ff_setValue\x27))       $this-\x3EexecPieceByName(\x27ff_setValueX\x27)\x3B\r\nif (!function_exists(\x27ff_getPageByName\x27))  $this-\x3EexecPieceByName(\x27ff_getPageByNameX\x27)\x3B\r\nif (!function_exists(\x27ff_getParam\x27))       $this-\x3EexecPieceByName(\x27ff_getParam\x27)\x3B\r\nif (!function_exists(\x27ff_getSubmit\x27))      $this-\x3EexecPieceByName(\x27ff_getSubmit\x27)\x3B\r\nif (!function_exists(\x27ff_impString\x27))      $this-\x3EexecPieceByName(\x27ff_impString\x27)\x3B\r\nif (!function_exists(\x27ff_expString\x27))      $this-\x3EexecPieceByName(\x27ff_expString\x27)\x3B\r\nif (!function_exists(\x27ff_securityImage\x27))  $this-\x3EexecPieceByName(\x27ff_securityImage\x27)\x3B\r\nif (!function_exists(\x27ff_select\x27))         $this-\x3EexecPieceByName(\x27ff_select\x27)\x3B\r\nif (!function_exists(\x27ff_selectValue\x27))    $this-\x3EexecPieceByName(\x27ff_selectValue\x27)\x3B\r\nif (!function_exists(\x27ff_query\x27))          $this-\x3EexecPieceByName(\x27ff_query\x27)\x3B\r\nif (!function_exists(\x27ff_markdown\x27))       $this-\x3EexecPieceByName(\x27ff_markdown\x27)\x3B</code>
	</piece>
	<piece id="14">
		<package>FF</package>
		<name>ff_makeFormUrl</name>
		<title>Make URL to other form</title>
		<description>Redirects to another facile form. \r\n\r\nCall: \r\n\r\n    $url = ff_makeFormUrl($name\x2C $params = \x27\x27)\x3B\r\n\r\nExample:\r\n\r\n    $url = ff_makeFormUrl(\r\n       \x27OtherForm\x27\x2C \r\n       \x27\x26ff_param_email=\x27.urlencode($email)\r\n    )\x3B</description>
		<code>function ff_makeFormUrl($name\x2C $params=\x27\x27)\r\n{\r\n    global $ff_processor\x2C $ff_otherparams\x3B\r\n    $url = \x27\x27\x3B\r\n    switch ($ff_processor-\x3Erunmode) {\r\n        case 2: // preview\r\n        case 1: // backend\r\n            $url .= \x27administrator/index2.php?option=com_breezingforms\x26act=run\x27.\r\n                    \x27\x26ff_name=\x27.urlencode($name)\x3B\r\n            if ($ff_processor-\x3Einframe) $url .= \x27\x26ff_frame=1\x27\x3B\r\n            if ($ff_processor-\x3Eborder) $url .= \x27\x26ff_border=1\x27\x3B\r\n            break\x3B\r\n        default: // frontend\r\n            $url .= \x27index.php?ff_name=\x27.urlencode($name)\x3B\r\n            if ($ff_otherparams[\x27option\x27] == \x27com_breezingforms\x27) {\r\n                reset($ff_otherparams)\x3B\r\n                foreach(  $ff_otherparams as $prop =\x3E $val)\r\n                    $url .= \x27\x26\x27.urlencode($prop).\x27=\x27.urlencode($val)\x3B\r\n            } else\r\n                $url .= \x27\x26option=com_breezingforms\x27\x3B\r\n            if ($ff_processor-\x3Etarget \x3E 1) $url .= \x27\x26ff_target=\x27.$ff_processor-\x3Etarget\x3B\r\n            if ($ff_processor-\x3Einframe) $url .= \x27\x26ff_frame=1\x27\x3B\r\n            if ($ff_processor-\x3Eborder) $url .= \x27\x26ff_border=1\x27\x3B\r\n            if ($ff_processor-\x3Ealign !=1) $url .= \x27\x26ff_align=\x27.$ff_processor-\x3Ealign\x3B\r\n            if ($ff_processor-\x3Etop\x3E0) $url .= \x27\x26ff_top=\x27.$ff_processor-\x3Etop\x3B\r\n    } // switch\r\n    return ff_makePageUrl($url. $params)\x3B\r\n} // ff_makeFormUrl</code>
	</piece>
	<piece id="15">
		<package>FF</package>
		<name>ff_makePageUrl</name>
		<title>Make URL to other page</title>
		<description>Builds an URL to another mambo page\r\n\r\nCall: \r\n\r\n    $url = ff_makePageUrl($params = \x27\x27)\x3B\r\n\r\nExample:\r\n\r\n    $url = ff_makePageUrl(\r\n        \x27index.php?option=com_content\x26task=blogsection\x26id=0\x26Itemid=39\x27\r\n    )\x3B</description>
		<code>function ff_makePageUrl($params=\x27\x27)\r\n{\r\n    $url = \x27{mossite}\x27\x3B\r\n    if ($params != \x27\x27) {\r\n        $len = strlen($url)\x3B\r\n        if ($len \x3E 0 \x26\x26 $url[$len-1] != \x27/\x27) $url .= \x27/\x27\x3B\r\n        $url .= $params\x3B\r\n    } // if\r\n    return $url\x3B\r\n} // ff_makePageUrl</code>
	</piece>
	<piece id="16">
		<package>FF</package>
		<name>ff_makeSelfUrl</name>
		<title>Make URL to same form</title>
		<description>Make an URL to the same form. \r\n\r\nCall: \r\n\r\n    $url = ff_makeSelfUrl($params = \x27\x27)\x3B\r\n\r\nExample:\r\n\r\n    $url = ff_makeSelfUrl(\x27\x26ff_param_email=\x27.urlencode($email))\x3B</description>
		<code>function ff_makeSelfUrl($params=\x27\x27)\r\n{\r\n    global $ff_processor\x3B\r\n    return ff_makeFormUrl($ff_processor-\x3Eformrow-\x3Ename\x2C $params)\x3B\r\n} // ff_makeSelfUrl</code>
	</piece>
	<piece id="17">
		<package>FF</package>
		<name>ff_mySetSelected</name>
		<title>Set a select list option to *selected*</title>
		<type>Before Form</type>
		<description>Sets a select list option to selected. \r\n\r\nCall: \r\n\r\n    ff_mySetSelected(\x27name\x27\x2C \x27value\x27\x2C \x27field\x27)\x3B //field can be label or value</description>
		<code>function ff_mySetSelected($name\x2C $value\x2C $field=\x27value\x27)\r\n{\r\n    global $ff_processor\x3B\r\n    foreach($ff_processor-\x3Erows as $row) {\r\n        if ($row-\x3Ename==$name){\r\n			$row-\x3Edata2 = \x27\x27\x3B\r\n			foreach($row-\x3EselectList as $var){\r\n				if($var-\x3E{$field}==$value){\r\n					$var-\x3Eselected = 1\x3B\r\n				}else{\r\n					$var-\x3Eselected = 0\x3B\r\n				}\r\n				$row-\x3Edata2 .= $var-\x3Eselected.\x22\x3B\x22.$var-\x3Elabel.\x22\x3B\x22.$var-\x3Evalue.\x22\x5Cn\x22\x3B\r\n			}\r\n			break\x3B\r\n		}\r\n        unset($row)\x3B\r\n    }\r\n}</code>
	</piece>
	<piece id="18">
		<package>FF</package>
		<name>ff_query</name>
		<title>Non-select queries against db</title>
		<description>Execute a simple db query.\r\n\r\nInclude by one of:\r\n\r\n    $this-\x3EexecPieceByName(\x27ff_InitUtilities\x27)\x3B\r\n    $this-\x3EexecPieceByName(\x27ff_SubmitUtilities\x27)\x3B\r\n    if (!function_exists(\x27ff_query\x27)) $this-\x3EexecPieceByName(\x27ff_query\x27)\x3B\r\n\r\nCall syntax:\r\n\r\n    [$newid = ] ff_query($sql [\x2C $insert = 0])\x3B\r\n\r\n    $sql:    Sql statement to call\r\n    $insert: 1 = return key of auto column when inserting rows\r\n    $newid:  The key of the new row.</description>
		<code>function ff_query($sql\x2C $insert=false\x2C $error=FF_DIE)\r\n{\r\n    global $ff_processor\x3B\r\n    $database = JFactory::getDBO()\x3B\r\n    if ($ff_processor-\x3Edying \x26\x26 $error!=FF_IGNOREDIE) return -1\x3B\r\n    $database-\x3EsetQuery($sql)\x3B\r\n    $database-\x3Equery()\x3B\r\n    if ($database-\x3EgetErrorNum()) {\r\n        $dienow = $error==FF_DIE\x3B\r\n        $error = $database-\x3Estderr()\x3B\r\n        if ($dienow) ff_die($error)\x3B\r\n    } else {\r\n        $error = null\x3B\r\n        if ($insert) return $database-\x3Einsertid()\x3B\r\n    } // if\r\n    return 0\x3B\r\n} // ff_query</code>
	</piece>
	<piece id="19">
		<package>FF</package>
		<name>ff_redirect</name>
		<title>Basic redirection</title>
		<description>Basic redirection routine supporting multiple targets and methods.\r\n\r\nCall:\r\n \r\nff_redirect($url [\x2C $target=\x27self\x27 \x2C $method=\x27post\x27])\r\n\r\n    $url    = The url to redirect to including the parameters appended.\r\n\r\n    $target = \x27top\x27\x2C \x27parent\x27\x2C \x27self\x27 or \x27blank\x27\r\n\r\n              \x27top\x27    = redirect to the top browser window\r\n              \x27parent\x27 = redirect to the parent frame\r\n              \x27self\x27   = redirect in the same frame (the default)\r\n              \x27blank\x27  = redirect to a new browser window \r\n                         (blank works with post method only)\r\n\r\n    $method = \x27post\x27 or \x27get\x27. The default is \x27post\x27.\r\n\r\n    Example:\r\n\r\n       ff_redirect(\r\n          \x27http://mysite.net/index.php?option=xxx\x26Itemid=33\x27\x2C\r\n          \x27top\x27\r\n       )\x3B</description>
		<code>function ff_redirect($url\x2C $target=\x27self\x27\x2C $method=\x27post\x27)\r\n{\r\n    global $ff_processor\x2C $ff_request\x3B\r\n    if ($ff_processor-\x3Edying) return\x3B\r\n    ob_end_clean()\x3B			//when debugging change this to ob_end_flush()\x3B\r\n    switch (strtolower($method)) {\r\n        case \x27get\x27: {\r\n            switch (strtolower($target)) {\r\n                case \x27top\x27   :\r\n                case \x27parent\x27: break\x3B\r\n                default      : $target = \x27window\x27\x3B //window \x3E document\x2C because cross browser compat\x2C or so I read\r\n            } // switch\r\n            echo \x27\x3Cscript type=\x22text/javascript\x22\x3E\x27.nl().\r\n                 \x22onload=function() { \x22.$target.\x22.location.href=\x27\x22.$url.\x22\x27\x3B }\x22.nl().\r\n                 \x27\x3C/script\x3E\x27.nl().\r\n                 \x27\x3C/body\x3E\x27.nl()\x3B\r\n            break\x3B\r\n        } // url\r\n        default: { // post\r\n            $pos = strpos($url\x2C\x27?\x27)\x3B	//find the location of \x27?\x27 after which get parameters usually start\r\n            $ff_request = array()\x3B		//create an array to set it later to hold get parameters in associative form\r\n			if($pos){					//if query parameters are supplied\x2C the whole action becomes http://whatever.com/\r\n				$action=substr($url\x2C 0\x2C $pos)\x3B\r\n			}else{						//if no \x27?\x27 detected action is equal to supplied url\x2C which is a weak check because what if pretty url?\r\n				$action = $url\x3B\r\n			}\r\n            switch (strtolower($target)) {\r\n                case \x27blank\x27 : $target = \x27 target=\x22_blank\x22\x27\x3B  break\x3B\r\n                case \x27top\x27   : $target = \x27 target=\x22_top\x22\x27\x3B    break\x3B\r\n                case \x27parent\x27: $target = \x27 target=\x22_parent\x22\x27\x3B break\x3B\r\n                default      : $target = \x27 target=\x22_self\x22\x27\x3B\r\n            } // switch\r\n			$parts = parse_url($url)\x3B 			//$url still stores are query params\x2C so we parse them\r\n			parse_str($parts[\x27query\x27]\x2C $ff_request)\x3B		//get query part and store into ff_request (defined above)\r\n            echo \x27\x3Cscript language=\x22javascript\x22 type=\x22text/javascript\x22\x3E\x27.nl(). //echo form and script that submits form on load (ajax maybe\x2C more \x27elegant\x27?)\r\n                 \x27\x3C!--\x27.nl().\r\n                 \x27onload = function() { document.ff_redirect.submit()\x3B }\x27.nl().\r\n                 \x27--\x3E\x27.nl().\r\n                 \x27\x3C/script\x3E\x27.nl().\r\n                 \x27\x3Cform action=\x22\x27.$action.\x27\x22 \x27.\r\n                  \x27method=\x22post\x22 \x27.\r\n                  \x27name=\x22ff_redirect\x22 id=\x22ff_redirect\x22 \x27.\r\n                  \x27enctype=\x22multipart/form-data\x22\x27.\r\n                  $target.\r\n                 \x27\x3E\x27.nl()\x3B\r\n            foreach ($ff_request as $key =\x3E $value){ //print out input fields which store GET parameters\r\n				echo \x27\x3Cinput type=\x22hidden\x22 name=\x22\x27.$key.\x27\x22 \x27.\x27value=\x22\x27.htmlentities(urldecode($value)).\x27\x22/\x3E\x27.nl()\x3B\r\n			}\r\n            echo \x27\x3C/form\x3E\x27.nl(). \x27\x3C/body\x3E\x27.nl()\x3B\r\n        } // post\r\n    } // switch\r\n    exit\x3B\r\n} // ff_redirect</code>
	</piece>
	<piece id="20">
		<package>FF</package>
		<name>ff_redirectForm</name>
		<title>Redirect to other form</title>
		<description>Redirects to another facile form. \r\n\r\nCall: \r\n\r\n    ff_redirectForm($name\x2C $params = \x27\x27)\x3B\r\n\r\nExample:\r\n\r\n    ff_redirectForm(\r\n        $this\x2C \r\n       \x27SecondForm\x27\x2C \r\n       \x27\x26ff_param_email=\x27.urlencode($email)\r\n    )\x3B</description>
		<code>function ff_redirectForm($name\x2C $params=\x27\x27\x2C $method=\x27post\x27)\r\n{\r\n    $url=ff_makeFormUrl($name\x2C $params)\x3B\r\n    ff_redirectParent($url\x2C $method)\x3B\r\n} // ff_redirectForm</code>
	</piece>
	<piece id="21">
		<package>FF</package>
		<name>ff_redirectPage</name>
		<title>Redirect to other page</title>
		<description>Redirects to another mambo page. \r\n\r\nCall: \r\n\r\n    ff_redirectPage($params = \x27\x27)\x3B\r\n\r\nExample:\r\n\r\n    ff_redirectPage(\r\n        \x27index.php?option=com_content\x26task=blogsection\x26id=0\x26Itemid=39\x27\r\n    )\x3B</description>
		<code>function ff_redirectPage($params=\x27\x27\x2C $method=\x27post\x27)\r\n{\r\n    ff_redirectParent(ff_makePageUrl($params)\x2C $method)\x3B\r\n} // ff_redirectPage</code>
	</piece>
	<piece id="22">
		<package>FF</package>
		<name>ff_redirectParentX</name>
		<title>Redirect to parent window</title>
		<description>Redirects to the parent window when runing in iframe\x2C otherwise to self. \r\n\r\nff_redirectParent($url [\x2C $method=\x27post\x27])\r\n\r\n    $url    = The url to redirect to including the parameters appended.\r\n\r\n    $method = \x27post\x27 or \x27url\x27. The default is \x27post\x27.\r\n\r\n    Example:\r\n\r\n       ff_redirectParent(\r\n          \x27http://mysite.net/index.php?option=xxx\x26Itemid=33\x27\x2C\r\n          \x27url\x27\r\n       )\x3B</description>
		<code>function ff_redirectParent($url\x2C $method = \x27post\x27)\r\n{\r\n    global $ff_processor\x3B\r\n    if ($ff_processor-\x3Einframe) $target = \x27parent\x27\x3B else $target = \x27self\x27\x3B \r\n    ff_redirect($url\x2C $target\x2C $method)\x3B\r\n} // ff_redirectParent</code>
	</piece>
	<piece id="23">
		<package>FF</package>
		<name>ff_redirectSelf</name>
		<title>Redirect to same form</title>
		<description>Redirects to the same form. \r\n\r\nCall: \r\n\r\n    ff_redirectSelf($params = \x27\x27)\x3B\r\n\r\nExample:\r\n\r\n    ff_redirectSelf(\x27\x26ff_param_email=\x27.urlencode($email))\x3B</description>
		<code>function ff_redirectSelf($params=\x27\x27\x2C $method=\x27post\x27)\r\n{\r\n    ff_redirectParent(ff_makeSelfUrl($params)\x2C $method)\x3B\r\n} // ff_redirectSelf</code>
	</piece>
	<piece id="24">
		<package>FF</package>
		<name>ff_securityImage</name>
		<title>Security Image</title>
		<description>Create code to display the security image</description>
		<code>global $ff_seccode\x3B\r\n\r\nif (!isset($this-\x3Erecord_id)) { $ff_seccode = null\x3B }\r\n\r\nfunction ff_securityImage()\r\n{\r\n    global $ff_comsite\x2C $ff_seccode\x3B\r\n    if (!isset($ff_seccode)) { \r\n        mt_srand((double)microtime()*1000000)\x3B\r\n        $ff_seccode = mt_rand(10000\x2C 99999)\x3B\r\n        JFactory::getSession()-\x3Eset(\x27ff_seccode\x27\x2C $ff_seccode)\x3B\r\n    } // if\r\n\r\n    return \x27\x3Cimg src=\x22\x27.JURI::root().\x27ff_secimage.php?option=com_breezingforms\x26showSecImage=true\x22 title=\x22\x22 alt=\x22\x22 /\x3E\x27\x3B\r\n} // ff_securityImage</code>
	</piece>
	<piece id="25">
		<package>FF</package>
		<name>ff_select</name>
		<title>Select rows from db</title>
		<description>Execute a select query\r\n\r\nInclude by one of:\r\n\r\n    $this-\x3EexecPieceByName(\x27ff_InitUtilities\x27)\x3B\r\n    $this-\x3EexecPieceByName(\x27ff_SubmitUtilities\x27)\x3B\r\n    if (!function_exists(\x27ff_select\x27)) $this-\x3EexecPieceByName(\x27ff_select\x27)\x3B\r\n\r\nCall syntax:\r\n\r\n    $rows = ff_select($sql)\x3B\r\n\r\n    $sql:    Sql SELECT-statement to call\r\n    $rows:   List of row objects</description>
		<code>function ff_select($sql\x2C $error=FF_DIE)\r\n{\r\n    $database = JFactory::getDBO()\x3B\r\n    $database-\x3EsetQuery($sql)\x3B\r\n    $rows = $database-\x3EloadObjectList()\x3B\r\n    if ($database-\x3EgetErrorNum()) {\r\n        $dienow = $error==FF_DIE\x3B\r\n        $error = $database-\x3Estderr()\x3B\r\n        $rows = array()\x3B\r\n        if ($dienow) ff_die($error)\x3B\r\n    } else\r\n        $error = null\x3B\r\n    return $rows\x3B\r\n} // ff_select</code>
	</piece>
	<piece id="26">
		<package>FF</package>
		<name>ff_selectValue</name>
		<title>Select single value from db</title>
		<description>Execute query to read a single value\r\n\r\nInclude by one of:\r\n\r\n    $this-\x3EexecPieceByName(\x27ff_InitUtilities\x27)\x3B\r\n    $this-\x3EexecPieceByName(\x27ff_SubmitUtilities\x27)\x3B\r\n    if (!function_exists(\x27ff_selectValue\x27)) $this-\x3EexecPieceByName(\x27ff_selectValue\x27)\x3B\r\n\r\nCall syntax:\r\n\r\n    $value = ff_selectValue($sql)\x3B\r\n\r\n    $sql:    Sql SELECT-statement to call\r\n    $value:  The value returned by the database</description>
		<code>function ff_selectValue($sql\x2C $def=null\x2C $error=FF_DIE)\r\n{\r\n    $database = JFactory::getDBO()\x3B\r\n    $database-\x3EsetQuery($sql)\x3B\r\n    $value = $database-\x3EloadResult()\x3B\r\n    if ($database-\x3EgetErrorNum()) {\r\n        $dienow = $error==FF_DIE\x3B\r\n        $error = $database-\x3Estderr()\x3B\r\n        if ($dienow) ff_die($error)\x3B\r\n    } else {\r\n        $error = null\x3B\r\n        if ($value) return $value\x3B\r\n    } // if\r\n    return $def\x3B\r\n} // ff_selectValue</code>
	</piece>
	<piece id="27">
		<package>FF</package>
		<name>ff_setCheckedX</name>
		<title>Set checkbox/radiobutton checked</title>
		<description>Set a radio button or checkbox checked. \r\n\r\nCall: \r\n\r\n    ff_setChecked(\x27name\x27\x2C \x27value\x27)\x3B</description>
		<code>function ff_setChecked($name\x2C $value)\r\n{\r\n    global $ff_processor\x3B\r\n    for ($r = 0\x3B $r \x3C $ff_processor-\x3Erowcount\x3B $r++) {\r\n        $row =\x26 $ff_processor-\x3Erows[$r]\x3B\r\n        if ($row-\x3Ename==$name \x26\x26 $row-\x3Edata1==$value)\r\n            $row-\x3Eflag1 = 1\x3B\r\n        unset($row)\x3B\r\n    } // for\r\n} // ff_setChecked</code>
	</piece>
	<piece id="28">
		<package>FF</package>
		<name>ff_setSelectedX</name>
		<title>Set a select list option to *selected*</title>
		<description>Sets a select list option to selected. \r\n\r\nCall: \r\n\r\n    ff_setSelected(\x27name\x27\x2C \x27value\x27)\x3B</description>
		<code>function ff_setSelected($name\x2C $value)\r\n{\r\n    global $ff_processor\x3B\r\n    for ($r = 0\x3B $r \x3C $ff_processor-\x3Erowcount\x3B $r++) {\r\n        $row =\x26 $ff_processor-\x3Erows[$r]\x3B\r\n        if ($row-\x3Ename==$name)\r\n            $row-\x3Edata2 =\r\n                preg_replace(\r\n                    \x27/(^|\x5Cr\x5Cn|\x5Cn)(0|1)\x3B([^\x3B]*)\x3B(\x27.$value.\x27)($|\x5Cr\x5Cn|\x5Cn)/\x27\x2C\r\n                    \x27${1}1\x3B${3}\x3B${4}${5}\x27\x2C\r\n                    $row-\x3Edata2\r\n                )\x3B\r\n        unset($row)\x3B\r\n    } // for\r\n} // ff_setSelected</code>
	</piece>
	<piece id="29">
		<package>FF</package>
		<name>ff_setValueX</name>
		<title>Set text\x2C textarea\x2C hidden value</title>
		<description>Set value of a Static Text\x2C Text\x2C Textarea or Hidden Input. \r\n\r\nCall: \r\n\r\n    ff_setValue(\x27name\x27\x2C \x27value\x27)\x3B</description>
		<code>function ff_setValue($name\x2C $value)\r\n{\r\n    global $ff_processor\x3B\r\n    for ($r = 0\x3B $r \x3C $ff_processor-\x3Erowcount\x3B $r++) {\r\n        $row =\x26 $ff_processor-\x3Erows[$r]\x3B\r\n        if ($row-\x3Ename==$name)\r\n            $row-\x3Edata1 = $value\x3B\r\n        unset($row)\x3B\r\n    } // for\r\n} // ff_setValue</code>
	</piece>
</FacileFormsPackage>