On a form w Validation, how to redirect to a custom page

Hi. I have created a form in Dreamweaver CS5 that uses spry validation successfully. Once the form is submitted, the user is redirected to the home page. But I don't want that redirect.
My question is, how can I have the validated page redirect to a custom thank you page I designed? I don't know the exact code/syntax to write to make it do what I want and, even if I had the code, I wouldn't know exactly where it should be placed. Please help if you can. Here's the source code. )BTW, when I use Dreamweaver Behaviors to add a URL redirect, it ignores the required validation and simply allows you to click the submit button and redirect.) Many thanks!
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<link href="../_css/main.css" rel="stylesheet" media="screen, projection">
<link href="../_css/forms.css" rel="stylesheet" media="screen, projection">
<title></title>
<!--[if lt IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script><![endif]-->
<script src="../SpryAssets/SpryValidationTextField.js" type="text/javascript"></script>
<link href="../SpryAssets/SpryValidationTextField.css" rel="stylesheet" type="text/css">
<script type="text/javascript">
<!-- **** I think the line of code for the redirect is here??...I just don't know how to write the code to redirect to the page I want ***** -->
function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
</script>
</head>
<body>
<header id="pageHeader">
<a href="../index.htm"><img src="../_images/logo.gif" width="170" height="91" alt="HMN logo" id="logo"></a>
<img src="../_images/tagline.png" width="296" height="92" alt="HMN tagline" id="tagline">
</header>
<nav id="mainNav">
<ul>
<li><a href="../index.htm">Home</a></li>
<li><a href="../press.htm">Press</a></li>
<li><a href="../about.htm">About</a></li>
<li><a href="../contact.htm">Contact</a></li>
</ul>
</nav>
<br class="clear">
<div class="headerContact">
</div>
<article>
  <!-- The file webformmailer.php sits on the web server at godaddy.com in case that matters -->
<section id="Request">
<p id="intro">To request your link for the downloadable <span id="highlight">Media Kit</span>, please provide the following information:</p>
<form name="Request" method="post" action="../../webformmailer.php"> <p id="formCaption">Fields marked with * are required.</p>
  <p><span id="sprytextfield1">
    <label for="first_name">First Name:*</label>
    <input type="text" name="first_name" id="first_name">
    <span class="textfieldRequiredMsg">(required)</span></span></p>
  <p><span id="sprytextfield2">
    <label for="last_name">Last Name:*</label>
    <input type="text" name="last_name" id="last_name">
    <span class="textfieldRequiredMsg">(required)</span></span></p>
  <p><span id="sprytextfield3">
    <label for="company">Company:*</label>
    <input type="text" name="company" id="company">
    <span class="textfieldRequiredMsg">(required)</span></span></p>
  <p>
    <label for="address">Address:</label>
    <input type="text" name="address" id="address">
  </p>
  <p>
    <label for="address_2">Address 2:</label>
    <input type="text" name="address_2" id="address_2">
  </p>
  <p>
    <label for="city">City:</label>
    <input type="text" name="city" id="city">
  </p>
  <p>
    <label for="state">State:</label>
    <input type="text" name="state" id="state">
  </p>
  <p>
    <label for="zip">Zip:</label>
    <input type="text" name="zip" id="zip">
  </p>
  <p><span id="sprytextfield4">
  <label for="email">Email:*</label>
  <input type="text" name="email" id="email">
  <span class="textfieldRequiredMsg">(required)</span><span class="textfieldInvalidFormatMsg">Invalid format.</span></span> </p>
  <p>
  <input name="submit" type="image" id="submit" onClick="MM_goToURL('parent','media_kit_download.htm');return document.MM_returnValue" src="../_images/btn_submit.png">
  </p>
  <p> </p>
</form>
<p>
</p>
</div>
</div>
</section>
</article>
<script type="text/javascript">
var sprytextfield1 = new Spry.Widget.ValidationTextField("sprytextfield1", "none", {validateOn:["blur"]});
var sprytextfield2 = new Spry.Widget.ValidationTextField("sprytextfield2", "none", {validateOn:["blur"]});
var sprytextfield3 = new Spry.Widget.ValidationTextField("sprytextfield3", "none", {validateOn:["blur"]});
var sprytextfield4 = new Spry.Widget.ValidationTextField("sprytextfield4", "email", {validateOn:["blur"]});
</script>
</body>
</html>

Thanks for replying. The  URL you've bolded is actually the correct page I'd like the redirect to go to when the form is successfully submitted after validation. But for some reason, that URL request is being ignored and the redirect brings me back to the index page in the root directory. I don't see anywhere in the code that makes the request to do that. Unless that's a default behavior if I've gotten the redirect wrong?
I don't know if this is helpful, but there is also a .js file that Dreamweaver created and attached to the above HTML source file. The .js file appears to have all the spry code validation including code for features and widgets I'm not even using. I searched through the code several times trying to identify where there might be a redirect to the index page but didn't recognize anything that made sense to me. Here is the complete, unedited file:
// SpryValidationTextField.js - version 0.38 - Spry Pre-Release 1.6.1
// Copyright (c) 2006. Adobe Systems Incorporated.
// All rights reserved.
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//   * Redistributions of source code must retain the above copyright notice,
//     this list of conditions and the following disclaimer.
//   * Redistributions in binary form must reproduce the above copyright notice,
//     this list of conditions and the following disclaimer in the documentation
//     and/or other materials provided with the distribution.
//   * Neither the name of Adobe Systems Incorporated nor the names of its
//     contributors may be used to endorse or promote products derived from this
//     software without specific prior written permission.
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
(function() { // BeginSpryComponent
if (typeof Spry == "undefined") window.Spry = {}; if (!Spry.Widget) Spry.Widget = {};
Spry.Widget.BrowserSniff = function()
    var b = navigator.appName.toString();
    var up = navigator.platform.toString();
    var ua = navigator.userAgent.toString();
    this.mozilla = this.ie = this.opera = this.safari = false;
    var re_opera = /Opera.([0-9\.]*)/i;
    var re_msie = /MSIE.([0-9\.]*)/i;
    var re_gecko = /gecko/i;
    var re_safari = /(applewebkit|safari)\/([\d\.]*)/i;
    var r = false;
    if ( (r = ua.match(re_opera))) {
        this.opera = true;
        this.version = parseFloat(r[1]);
    } else if ( (r = ua.match(re_msie))) {
        this.ie = true;
        this.version = parseFloat(r[1]);
    } else if ( (r = ua.match(re_safari))) {
        this.safari = true;
        this.version = parseFloat(r[2]);
    } else if (ua.match(re_gecko)) {
        var re_gecko_version = /rv:\s*([0-9\.]+)/i;
        r = ua.match(re_gecko_version);
        this.mozilla = true;
        this.version = parseFloat(r[1]);
    this.windows = this.mac = this.linux = false;
    this.Platform = ua.match(/windows/i) ? "windows" :
                    (ua.match(/linux/i) ? "linux" :
                    (ua.match(/mac/i) ? "mac" :
                    ua.match(/unix/i)? "unix" : "unknown"));
    this[this.Platform] = true;
    this.v = this.version;
    if (this.safari && this.mac && this.mozilla) {
        this.mozilla = false;
Spry.is = new Spry.Widget.BrowserSniff();
Spry.Widget.ValidationTextField = function(element, type, options)
    type = Spry.Widget.Utils.firstValid(type, "none");
    if (typeof type != 'string') {
        this.showError('The second parameter in the constructor should be the validation type, the options are the third parameter.');
        return;
    if (typeof Spry.Widget.ValidationTextField.ValidationDescriptors[type] == 'undefined') {
        this.showError('Unknown validation type received as the second parameter.');
        return;
    options = Spry.Widget.Utils.firstValid(options, {});
    this.type = type;
    if (!this.isBrowserSupported()) {
        //disable character masking and pattern behaviors for low level browsers
        options.useCharacterMasking = false;
    this.init(element, options);
    //make sure we validate at least on submit
    var validateOn = ['submit'].concat(Spry.Widget.Utils.firstValid(this.options.validateOn, []));
    validateOn = validateOn.join(",");
    this.validateOn = 0;
    this.validateOn = this.validateOn | (validateOn.indexOf('submit') != -1 ? Spry.Widget.ValidationTextField.ONSUBMIT : 0);
    this.validateOn = this.validateOn | (validateOn.indexOf('blur') != -1 ? Spry.Widget.ValidationTextField.ONBLUR : 0);
    this.validateOn = this.validateOn | (validateOn.indexOf('change') != -1 ? Spry.Widget.ValidationTextField.ONCHANGE : 0);
    if (Spry.Widget.ValidationTextField.onloadDidFire)
        this.attachBehaviors();
    else
        Spry.Widget.ValidationTextField.loadQueue.push(this);
Spry.Widget.ValidationTextField.ONCHANGE = 1;
Spry.Widget.ValidationTextField.ONBLUR = 2;
Spry.Widget.ValidationTextField.ONSUBMIT = 4;
Spry.Widget.ValidationTextField.ERROR_REQUIRED = 1;
Spry.Widget.ValidationTextField.ERROR_FORMAT = 2;
Spry.Widget.ValidationTextField.ERROR_RANGE_MIN = 4;
Spry.Widget.ValidationTextField.ERROR_RANGE_MAX = 8;
Spry.Widget.ValidationTextField.ERROR_CHARS_MIN = 16;
Spry.Widget.ValidationTextField.ERROR_CHARS_MAX = 32;
/* validation parameters:
*  - characterMasking : prevent typing of characters not matching an regular expression
*  - regExpFilter : additional regular expression to disalow typing of characters
*        (like the "-" sign in the middle of the value); use for partial matching of the currently typed value;
*         the typed value must match regExpFilter at any moment
*  - pattern : enforce character on each position inside a pattern (AX0?)
*  - validation : function performing logic validation; return false if failed and the typedValue value on success
*  - minValue, maxValue : range validation; check if typedValue inside the specified range
*  - minChars, maxChars : value length validation; at least/at most number of characters
Spry.Widget.ValidationTextField.ValidationDescriptors = {
    'none': {
    'custom': {
    'integer': {
        characterMasking: /[\-\+\d]/,
        regExpFilter: /^[\-\+]?\d*$/,
        validation: function(value, options) {
            if (value == '' || value == '-' || value == '+') {
                return false;
            var regExp = /^[\-\+]?\d*$/;
            if (!regExp.test(value)) {
                return false;
            options = options || {allowNegative:false};
            var ret = parseInt(value, 10);
            if (!isNaN(ret)) {
                var allowNegative = true;
                if (typeof options.allowNegative != 'undefined' && options.allowNegative == false) {
                    allowNegative = false;
                if (!allowNegative && value < 0) {
                    ret = false;
            } else {
                ret = false;
            return ret;
    'real': {
        characterMasking: /[\d\.,\-\+e]/i,
        regExpFilter: /^[\-\+]?\d(?:|\.,\d{0,2})|(?:|e{0,1}[\-\+]?\d{0,})$/i,
        validation: function (value, options) {
            var regExp = /^[\+\-]?[0-9]+([\.,][0-9]+)?([eE]{0,1}[\-\+]?[0-9]+)?$/;
            if (!regExp.test(value)) {
                return false;
            var ret = parseFloat(value);
            if (isNaN(ret)) {
                ret = false;
            return ret;
    'currency': {
        formats: {
            'dot_comma': {
                characterMasking: /[\d\.\,\-\+\$]/,
                regExpFilter: /^[\-\+]?(?:[\d\.]*)+(|\,\d{0,2})$/,
                validation: function(value, options) {
                    var ret = false;
                    //2 or no digits after the comma
                    if (/^(\-|\+)?\d{1,3}(?:\.\d{3})*(?:\,\d{2}|)$/.test(value) || /^(\-|\+)?\d+(?:\,\d{2}|)$/.test(value)) {
                        value = value.toString().replace(/\./gi, '').replace(/\,/, '.');
                        ret = parseFloat(value);
                    return ret;
            'comma_dot': {
                characterMasking: /[\d\.\,\-\+\$]/,
                regExpFilter: /^[\-\+]?(?:[\d\,]*)+(|\.\d{0,2})$/,
                validation: function(value, options) {
                    var ret = false;
                    //2 or no digits after the comma
                    if (/^(\-|\+)?\d{1,3}(?:\,\d{3})*(?:\.\d{2}|)$/.test(value) || /^(\-|\+)?\d+(?:\.\d{2}|)$/.test(value)) {
                        value = value.toString().replace(/\,/gi, '');
                        ret = parseFloat(value);
                    return ret;
    'email': {
        characterMasking: /[^\s]/,
        validation: function(value, options) {
            var rx = /^[\w\.-]+@[\w\.-]+\.\w+$/i;
            return rx.test(value);
    'date': {
        validation: function(value, options) {
            var formatRegExp = /^([mdy]+)[\.\-\/\\\s]+([mdy]+)[\.\-\/\\\s]+([mdy]+)$/i;
            var valueRegExp = this.dateValidationPattern;
            var formatGroups = options.format.match(formatRegExp);
            var valueGroups = value.match(valueRegExp);
            if (formatGroups !== null && valueGroups !== null) {
                var dayIndex = -1;
                var monthIndex = -1;
                var yearIndex = -1;
                for (var i=1; i<formatGroups.length; i++) {
                    switch (formatGroups[i].toLowerCase()) {
                        case "dd":
                            dayIndex = i;
                            break;
                        case "mm":
                            monthIndex = i;
                            break;
                        case "yy":
                        case "yyyy":
                            yearIndex = i;
                            break;
                if (dayIndex != -1 && monthIndex != -1 && yearIndex != -1) {
                    var maxDay = -1;
                    var theDay = parseInt(valueGroups[dayIndex], 10);
                    var theMonth = parseInt(valueGroups[monthIndex], 10);
                    var theYear = parseInt(valueGroups[yearIndex], 10);
                    // Check month value to be between 1..12
                    if (theMonth < 1 || theMonth > 12) {
                        return false;
                    // Calculate the maxDay according to the current month
                    switch (theMonth) {
                        case 1:    // January
                        case 3: // March
                        case 5: // May
                        case 7: // July
                        case 8: // August
                        case 10: // October
                        case 12: // December
                            maxDay = 31;
                            break;
                        case 4:    // April
                        case 6: // June
                        case 9: // September
                        case 11: // November
                            maxDay = 30;
                            break;
                        case 2: // February
                            if ((parseInt(theYear/4, 10) * 4 == theYear) && (theYear % 100 != 0 || theYear % 400 == 0)) {
                                maxDay = 29;
                            } else {
                                maxDay = 28;
                            break;
                    // Check day value to be between 1..maxDay
                    if (theDay < 1 || theDay > maxDay) {
                        return false;
                    // If successfull we'll return the date object
                    return (new Date(theYear, theMonth - 1, theDay));   //JavaScript requires a month between 0 and 11
            } else {
                return false;
    'time': {
        validation: function(value, options) {
            //    HH:MM:SS T
            var formatRegExp = /([hmst]+)/gi;
            var valueRegExp = /(\d+|AM?|PM?)/gi;
            var formatGroups = options.format.match(formatRegExp);
            var valueGroups = value.match(valueRegExp);
            //mast match and have same length
            if (formatGroups !== null && valueGroups !== null) {
                if (formatGroups.length != valueGroups.length) {
                    return false;
                var hourIndex = -1;
                var minuteIndex = -1;
                var secondIndex = -1;
                //T is AM or PM
                var tIndex = -1;
                var theHour = 0, theMinute = 0, theSecond = 0, theT = 'AM';
                for (var i=0; i<formatGroups.length; i++) {
                    switch (formatGroups[i].toLowerCase()) {
                        case "hh":
                            hourIndex = i;
                            break;
                        case "mm":
                            minuteIndex = i;
                            break;
                        case "ss":
                            secondIndex = i;
                            break;
                        case "t":
                        case "tt":
                            tIndex = i;
                            break;
                if (hourIndex != -1) {
                    var theHour = parseInt(valueGroups[hourIndex], 10);
                    if (isNaN(theHour) || theHour > (formatGroups[hourIndex] == 'HH' ? 23 : 12 )) {
                        return false;
                if (minuteIndex != -1) {
                    var theMinute = parseInt(valueGroups[minuteIndex], 10);
                    if (isNaN(theMinute) || theMinute > 59) {
                        return false;
                if (secondIndex != -1) {
                    var theSecond = parseInt(valueGroups[secondIndex], 10);
                    if (isNaN(theSecond) || theSecond > 59) {
                        return false;
                if (tIndex != -1) {
                    var theT = valueGroups[tIndex].toUpperCase();
                    if (
                        formatGroups[tIndex].toUpperCase() == 'TT' && !/^a|pm$/i.test(theT) ||
                        formatGroups[tIndex].toUpperCase() == 'T' && !/^a|p$/i.test(theT)
                        return false;
                var date = new Date(2000, 0, 1, theHour + (theT.charAt(0) == 'P'?12:0), theMinute, theSecond);
                return date;
            } else {
                return false;
    'credit_card': {
        characterMasking: /\d/,
        validation: function(value, options) {
            var regExp = null;
            options.format = options.format || 'ALL';
            switch (options.format.toUpperCase()) {
                case 'ALL': regExp = /^[3-6]{1}[0-9]{12,18}$/; break;
                case 'VISA': regExp = /^4(?:[0-9]{12}|[0-9]{15})$/; break;
                case 'MASTERCARD': regExp = /^5[1-5]{1}[0-9]{14}$/; break;
                case 'AMEX': regExp = /^3(4|7){1}[0-9]{13}$/; break;
                case 'DISCOVER': regExp = /^6011[0-9]{12}$/; break;
                case 'DINERSCLUB': regExp = /^3(?:(0[0-5]{1}[0-9]{11})|(6[0-9]{12})|(8[0-9]{12}))$/; break;
            if (!regExp.test(value)) {
                return false;
            var digits = [];
            var j = 1, digit = '';
            for (var i = value.length - 1; i >= 0; i--) {
                if ((j%2) == 0) {
                    digit = parseInt(value.charAt(i), 10) * 2;
                    digits[digits.length] = digit.toString().charAt(0);
                    if (digit.toString().length == 2) {
                        digits[digits.length] = digit.toString().charAt(1);
                } else {
                    digit = value.charAt(i);
                    digits[digits.length] = digit;
                j++;
            var sum = 0;
            for(i=0; i < digits.length; i++ ) {
                sum += parseInt(digits[i], 10);
            if ((sum%10) == 0) {
                return true;
            return false;
    'zip_code': {
        formats: {
            'zip_us9': {
                pattern:'00000-0000'
            'zip_us5': {
                pattern:'00000'
            'zip_uk': {
                characterMasking: /[\dA-Z\s]/,
                validation: function(value, options) {
                    //check one of the following masks
                    // AN NAA, ANA NAA, ANN NAA, AAN NAA, AANA NAA, AANN NAA
                    return /^[A-Z]{1,2}\d[\dA-Z]?\s?\d[A-Z]{2}$/.test(value);
            'zip_canada': {
                characterMasking: /[\dA-Z\s]/,
                pattern: 'A0A 0A0'
            'zip_custom': {}
    'phone_number': {
        formats: {
            //US phone number; 10 digits
            'phone_us': {
                pattern:'(000) 000-0000'
            'phone_custom': {}
    'social_security_number': {
        pattern:'000-00-0000'
    'ip': {
        characterMaskingFormats: {
            'ipv4': /[\d\.]/i,
            'ipv6_ipv4': /[\d\.\:A-F\/]/i,
            'ipv6': /[\d\.\:A-F\/]/i
        validation: function (value, options) {
            return Spry.Widget.ValidationTextField.validateIP(value, options.format);
    'url': {
        characterMasking: /[^\s]/,
        validation: function(value, options) {
            //fix for ?ID=223429 and ?ID=223387
            /* the following regexp matches components of an URI as specified in http://tools.ietf.org/html/rfc3986#page-51 page 51, Appendix B.
                scheme    = $2
                authority = $4
                path      = $5
                query     = $7
                fragment  = $9
            var URI_spliter = /^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;
            var parts = value.match(URI_spliter);
            if (parts && parts[4]) {
                //encode each component of the domain name using Punycode encoding scheme: http://tools.ietf.org/html/rfc3492
                var host  = parts[4].split(".");
                var punyencoded = '';
                for (var i=0; i<host.length; i++) {
                    punyencoded = Spry.Widget.Utils.punycode_encode(host[i], 64);
                    if (!punyencoded) {
                        return false;
                    } else {
                        if (punyencoded != (host[i] + "-")) {
                            host[i] = 'xn--' + punyencoded;
                host = host .join(".");
                //the encoded domain name is replaced into the original URL to be validated again later as URL
                value = value.replace(URI_spliter, "$1//" + host + "$5$6$8");
            //fix for ?ID=223358 and ?ID=223594
            //the following validates an URL using ABNF rules as defined in http://tools.ietf.org/html/rfc3986 , Appendix A., page 49
            //except host which is extracted by match[1] and validated separately
             * userinfo=    (?:(?:[a-z0-9\-\._~\!\$\&\'\(\)\*\+\,\;\=:]|%[0-9a-f]{2,2})*\@)?
             * host=            (?:((?:(?:[a-z0-9][a-z0-9\-]*[a-z0-9]|[a-z0-9])\.)*(?:[a-z][a-z0-9\-]*[a-z0-9]|[a-z])|(?: \[[^\]]*\]))
             * pathname=    (?:\/(?:[a-z0-9\-\._~\!\$\&\'\(\)\*\+\,\;\=\:\@]|%[0-9a-f]{2,2})*)*
             * query=            (?:\?(?:[a-z0-9\-\._~\!\$\&\'\(\)\*\+\,\;\=\:\@\/\?]|%[0-9a-f]{2,2})*)?
             * anchor=        (?:\#(?:[a-z0-9\-\._~\!\$\&\'\(\)\*\+\,\;\=\:\@\/\?]|%[0-9a-f]{2,2})*)?
            var regExp = /^(?:https?|ftp)\:\/\/(?:(?:[a-z0-9\-\._~\!\$\&\'\(\)\*\+\,\;\=:]|%[0-9a-f]{2,2})*\@)?(?: ((?:(?:[a-z0-9][a-z0-9\-]*[a-z0-9]|[a-z0-9])\.)*(?:[a-z][a-z0-9\-]*[a-z0-9]|[a-z])|(?:\[[^ \]]*\]))(?:\:[0-9]*)?)(?:\/(?:[a-z0-9\-\._~\!\$\&\'\(\)\*\+\,\;\=\:\@]|%[0-9a-f]{2,2})*)*( ?:\?(?:[a-z0-9\-\._~\!\$\&\'\(\)\*\+\,\;\=\:\@\/\?]|%[0-9a-f]{2,2})*)?(?:\#(?:[a-z0-9\-\._ ~\!\$\&\'\(\)\*\+\,\;\=\:\@\/\?]|%[0-9a-f]{2,2})*)?$/i;
            var valid = value.match(regExp);
            if (valid) {
                //extract the  address from URL
                var address = valid[1];
                if (address) {
                    if (address == '[]') {
                        return false;
                    if (address.charAt(0) == '[' ) {
                        //IPv6 address or IPv4 enclosed in square brackets
                        address = address.replace(/^\[|\]$/gi, '');
                        return Spry.Widget.ValidationTextField.validateIP(address, 'ipv6_ipv4');
                    } else {
                        if (/[^0-9\.]/.test(address)) {
                            return true;
                        } else {
                            //check if hostname is all digits and dots and then check for IPv4
                            return Spry.Widget.ValidationTextField.validateIP(address, 'ipv4');
                } else {
                    return true;
            } else {
                return false;
2.2.1. Preferred
x:x:x:x:x:x:x:x, where the 'x's are the hexadecimal values of the eight 16-bit pieces of the address.
Examples:
    FEDC:BA98:7654:3210:FEDC:BA98:7654:3210
    1080:0:0:0:8:800:200C:417A
Note that it is not necessary to write the leading zeros in an
individual field, but there must be at least one numeral in every
field (except for the case described in 2.2.2.).
2.2.2. Compressed
The use of "::" indicates multiple groups of 16-bits of zeros.
The "::" can only appear once in an address.  The "::" can also be
used to compress the leading and/or trailing zeros in an address.
    1080:0:0:0:8:800:200C:417A --> 1080::8:800:200C:417A
    FF01:0:0:0:0:0:0:101 --> FF01::101
    0:0:0:0:0:0:0:1 --> ::1
    0:0:0:0:0:0:0:0 --> ::
2.5.4 IPv6 Addresses with Embedded IPv4 Addresses
    IPv4-compatible IPv6 address (tunnel IPv6 packets over IPv4 routing infrastructures)
    ::0:129.144.52.38
    IPv4-mapped IPv6 address (represent the addresses of IPv4-only nodes as IPv6 addresses)
    ::ffff:129.144.52.38
The text representation of IPv6 addresses and prefixes in Augmented BNF (Backus-Naur Form) [ABNF] for reference purposes.
[ABNF http://tools.ietf.org/html/rfc2234]
      IPv6address = hexpart [ ":" IPv4address ]
      IPv4address = 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT
      IPv6prefix  = hexpart "/" 1*2DIGIT
      hexpart = hexseq | hexseq "::" [ hexseq ] | "::" [ hexseq ]
      hexseq  = hex4 *( ":" hex4)
      hex4    = 1*4HEXDIG
Spry.Widget.ValidationTextField.validateIP = function (value, format)
    var validIPv6Addresses = [
        //preferred
        /^(?:[a-f0-9]{1,4}:){7}[a-f0-9]{1,4}(?:\/\d{1,3})?$/i,
        //various compressed
        /^[a-f0-9]{0,4}::(?:\/\d{1,3})?$/i,
        /^:(?::[a-f0-9]{1,4}){1,6}(?:\/\d{1,3})?$/i,
        /^(?:[a-f0-9]{1,4}:){1,6}:(?:\/\d{1,3})?$/i,
        /^(?:[a-f0-9]{1,4}:)(?::[a-f0-9]{1,4}){1,6}(?:\/\d{1,3})?$/i,
        /^(?:[a-f0-9]{1,4}:){2}(?::[a-f0-9]{1,4}){1,5}(?:\/\d{1,3})?$/i,
        /^(?:[a-f0-9]{1,4}:){3}(?::[a-f0-9]{1,4}){1,4}(?:\/\d{1,3})?$/i,
        /^(?:[a-f0-9]{1,4}:){4}(?::[a-f0-9]{1,4}){1,3}(?:\/\d{1,3})?$/i,
        /^(?:[a-f0-9]{1,4}:){5}(?::[a-f0-9]{1,4}){1,2}(?:\/\d{1,3})?$/i,
        /^(?:[a-f0-9]{1,4}:){6}(?::[a-f0-9]{1,4})(?:\/\d{1,3})?$/i,
        //IPv6 mixes with IPv4
        /^(?:[a-f0-9]{1,4}:){6}(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{1,3})?$/i,
        /^:(?::[a-f0-9]{1,4}){0,4}:(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{1,3})?$/i,
        /^(?:[a-f0-9]{1,4}:){1,5}:(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{1,3})?$/i,
        /^(?:[a-f0-9]{1,4}:)(?::[a-f0-9]{1,4}){1,4}:(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{1,3})?$/i,
        /^(?:[a-f0-9]{1,4}:){2}(?::[a-f0-9]{1,4}){1,3}:(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{1,3})?$/i,    
        /^(?:[a-f0-9]{1,4}:){3}(?::[a-f0-9]{1,4}){1,2}:(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{1,3})?$/i,
        /^(?:[a-f0-9]{1,4}:){4}(?::[a-f0-9]{1,4}):(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{1,3})?$/i
    var validIPv4Addresses = [
        //IPv4
        /^(\d{1,3}\.){3}\d{1,3}$/i
    var validAddresses = [];
    if (format == 'ipv6' || format == 'ipv6_ipv4') {
        validAddresses = validAddresses.concat(validIPv6Addresses);
    if (format == 'ipv4' || format == 'ipv6_ipv4') {
        validAddresses = validAddresses.concat(validIPv4Addresses);
    var ret = false;
    for (var i=0; i<validAddresses.length; i++) {
        if (validAddresses[i].test(value)) {
            ret = true;
            break;
    if (ret && value.indexOf(".") != -1) {
        //if address contains IPv4 fragment, it must be valid; all 4 groups must be less than 256
        var ipv4 = value.match(/:?(?:\d{1,3}\.){3}\d{1,3}/i);
        if(!ipv4) {
            return false;
        ipv4 = ipv4[0].replace(/^:/, '');
        var pieces = ipv4.split('.');
        if (pieces.length != 4) {
            return false;
        var regExp = /^[\-\+]?\d*$/;
        for (var i=0; i< pieces.length; i++) {
            if (pieces[i] == '') {
                return false;
            var piece = parseInt(pieces[i], 10);
            if (isNaN(piece) || piece > 255 || !regExp.test(pieces[i]) || pieces[i].length>3 || /^0{2,3}$/.test(pieces[i])) {
                return false;
    if (ret && value.indexOf("/") != -1) {
        // if prefix-length is specified must be in [1-128]
        var prefLen = value.match(/\/\d{1,3}$/);
        if (!prefLen) return false;
        var prefLenVal = parseInt(prefLen[0].replace(/^\//,''), 10);
        if (isNaN(prefLenVal) || prefLenVal > 128 || prefLenVal < 1) {
            return false;
    return ret;
Spry.Widget.ValidationTextField.onloadDidFire = false;
Spry.Widget.ValidationTextField.loadQueue = [];
Spry.Widget.ValidationTextField.prototype.isBrowserSupported = function()
    return Spry.is.ie && Spry.is.v >= 5 && Spry.is.windows
        ||
    Spry.is.mozilla && Spry.is.v >= 1.4
        ||
    Spry.is.safari
        ||
    Spry.is.opera && Spry.is.v >= 9;
Spry.Widget.ValidationTextField.prototype.init = function(element, options)
    this.element = this.getElement(element);
    this.errors = 0;
    this.flags = {locked: false, restoreSelection: true};
    this.options = {};
    this.event_handlers = [];
    this.validClass = "textfieldValidState";
    this.focusClass = "textfieldFocusState";
    this.requiredClass = "textfieldRequiredState";
    this.hintClass = "textfieldHintState";
    this.invalidFormatClass = "textfieldInvalidFormatState";
    this.invalidRangeMinClass = "textfieldMinValueState";
    this.invalidRangeMaxClass = "textfieldMaxValueState";
    this.invalidCharsMinClass = "textfieldMinCharsState";
    this.invalidCharsMaxClass = "textfieldMaxCharsState";
    this.textfieldFlashTextClass = "textfieldFlashText";
    if (Spry.is.safari) {
        this.flags.lastKeyPressedTimeStamp = 0;
    switch (this.type) {
        case 'phone_number':options.format = Spry.Widget.Utils.firstValid(options.format, 'phone_us');break;
        case 'currency':options.format = Spry.Widget.Utils.firstValid(options.format, 'comma_dot');break;
        case 'zip_code':options.format = Spry.Widget.Utils.firstValid(options.format, 'zip_us5');break;
        case 'date':
            options.format = Spry.Widget.Utils.firstValid(options.format, 'mm/dd/yy');
            break;
        case 'time':
            options.format = Spry.Widget.Utils.firstValid(options.format, 'HH:mm');
            options.pattern = options.format.replace(/[hms]/gi, "0").replace(/TT/gi, 'AM').replace(/T/gi, 'A');
            break;
        case 'ip':
            options.format = Spry.Widget.Utils.firstValid(options.format, 'ipv4');
            options.characterMasking = Spry.Widget.ValidationTextField.ValidationDescriptors[this.type].characterMaskingFormats[ options.format];
            break;
    //retrieve the validation type descriptor to be used with this instance (base on type and format)
    //widgets may have different validations depending on format (like zip_code with formats)
    var validationDescriptor = {};
    if (options.format && Spry.Widget.ValidationTextField.ValidationDescriptors[this.type].formats) {
        if (Spry.Widget.ValidationTextField.ValidationDescriptors[this.type].formats[options.format] ) {
            Spry.Widget.Utils.setOptions(validationDescriptor, Spry.Widget.ValidationTextField.ValidationDescriptors[this.type].formats[options.format]) ;
    } else {
        Spry.Widget.Utils.setOptions(validationDescriptor, Spry.Widget.ValidationTextField.ValidationDescriptors[this.type]);
    //set default values for some parameters which were not aspecified
    options.useCharacterMasking = Spry.Widget.Utils.firstValid(options.useCharacterMasking, false);
    options.hint = Spry.Widget.Utils.firstValid(options.hint, '');
    options.isRequired = Spry.Widget.Utils.firstValid(options.isRequired, true);
    options.additionalError = Spry.Widget.Utils.firstValid(options.additionalError, false);
    if (options.additionalError)
        options.additionalError = this.getElement(options.additionalError);
    //set widget validation parameters
    //get values from validation type descriptor
    //use the user specified values, if defined
    options.characterMasking = Spry.Widget.Utils.firstValid(options.characterMasking, validationDescriptor.characterMasking);
    options.regExpFilter = Spry.Widget.Utils.firstValid(options.regExpFilter, validationDescriptor.regExpFilter);
    options.pattern = Spry.Widget.Utils.firstValid(options.pattern, validationDescriptor.pattern);
    options.validation = Spry.Widget.Utils.firstValid(options.validation, validationDescriptor.validation);
    if (typeof options.validation == 'string') {
        options.validation = eval(options.validation);
    options.minValue = Spry.Widget.Utils.firstValid(options.minValue, validationDescriptor.minValue);
    options.maxValue = Spry.Widget.Utils.firstValid(options.maxValue, validationDescriptor.maxValue);
    options.minChars = Spry.Widget.Utils.firstValid(options.minChars, validationDescriptor.minChars);
    options.maxChars = Spry.Widget.Utils.firstValid(options.maxChars, validationDescriptor.maxChars);
    Spry.Widget.Utils.setOptions(this, options);
    Spry.Widget.Utils.setOptions(this.options, options);
Spry.Widget.ValidationTextField.prototype.destroy = function() {
    if (this.event_handlers)
        for (var i=0; i<this.event_handlers.length; i++) {
            Spry.Widget.Utils.removeEventListener(this.event_handlers[i][0], this.event_handlers[i][1], this.event_handlers[i][2], false);
    try { delete this.element; } catch(err) {}
    try { delete this.input; } catch(err) {}
    try { delete this.form; } catch(err) {}
    try { delete this.event_handlers; } catch(err) {}
    try { this.selection.destroy(); } catch(err) {}
    try { delete this.selection; } catch(err) {}
    var q = Spry.Widget.Form.onSubmitWidgetQueue;
    var qlen = q.length;
    for (var i = 0; i < qlen; i++) {
        if (q[i] == this) {
            q.splice(i, 1);
            break;
Spry.Widget.ValidationTextField.prototype.attachBehaviors = function()
    if (this.element) {
        if (this.element.nodeName == "INPUT") {
            this.input = this.element;
        } else {
            this.input = Spry.Widget.Utils.getFirstChildWithNodeNameAtAnyLevel(this.element, "INPUT");
    if (this.input) {
        if (this.maxChars) {
            this.input.removeAttribute("maxLength");
        this.putHint();
        this.compilePattern();
        if (this.type == 'date') {
            this.compileDatePattern();
        this.input.setAttribute("AutoComplete", "off");
        this.selection = new Spry.Widget.SelectionDescriptor(this.input);
        this.oldValue = this.input.value;
        var self = this;
        this.event_handlers = [];
        this.event_handlers.push([this.input, "keydown", function(e) { if (self.isDisabled()) return true; return self.onKeyDown(e || event); }]);
        this.event_handlers.push([this.input, "keypress", function(e) { if (self.isDisabled()) return true; return self.onKeyPress(e || event); }]);
        if (Spry.is.opera) {
            this.event_handlers.push([this.input, "keyup", function(e) { if (self.isDisabled()) return true; return self.onKeyUp(e || event); }]);
        this.event_handlers.push([this.input, "focus", function(e) { if (self.isDisabled()) return true; return self.onFocus(e || event); }]);
        this.event_handlers.push([this.input, "blur", function(e) { if (self.isDisabled()) return true; return self.onBlur(e || event); }]);
        this.event_handlers.push([this.input, "mousedown", function(e) { if (self.isDisabled()) return true; return self.onMouseDown(e || event); }]);
        var changeEvent =
            Spry.is.mozilla || Spry.is.opera || Spry.is.safari?"input":
            Spry.is.ie?"propertychange":
            "change";
        this.event_handlers.push([this.input, changeEvent, function(e) { if (self.isDisabled()) return true; return self.onChange(e || event); }]);
        if (Spry.is.mozilla || Spry.is.safari) {
            //oninput event on mozilla does not fire ondragdrop
            this.event_handlers.push([this.input, "dragdrop", function(e) { if (self.isDisabled()) return true; self.removeHint();return self.onChange(e || event); }]);
        } else if (Spry.is.ie){
            //ondrop&onpropertychange crash on IE
            this.event_handlers.push([this.input, "drop", function(e) { if (self.isDisabled()) return true; return self.onDrop(e || event); }]);
        for (var i=0; i<this.event_handlers.length; i++) {
            Spry.Widget.Utils.addEventListener(this.event_handlers[i][0], this.event_handlers[i][1], this.event_handlers[i][2], false);
        // submit
        this.form = Spry.Widget.Utils.getFirstParentWithNodeName(this.input, "FORM");
        if (this.form) {
            // if no "onSubmit" handler has been attached to the current form, attach one
            if (!this.form.attachedSubmitHandler && !this.form.onsubmit) {
                this.form.onsubmit = function(e) { e = e || event; return Spry.Widget.Form.onSubmit(e, e.srcElement || e.currentTarget) };
                this.form.attachedSubmitHandler = true;                
            if (!this.form.attachedResetHandler) {
                Spry.Widget.Utils.addEventListener(this.form, "reset", function(e) { e = e || event; return Spry.Widget.Form.onReset(e, e.srcElement || e.currentTarget) }, false);
                this.form.attachedResetHandler = true;                
            // add the currrent widget to the "onSubmit" check queue;
            Spry.Widget.Form.onSubmitWidgetQueue.push(this);
Spry.Widget.ValidationTextField.prototype.isDisabled = function() {
    return this.input && (this.input.disabled || this.input.readOnly) || !this.input;
Spry.Widget.ValidationTextField.prototype.getElement = function(ele)
    if (ele && typeof ele == "string")
        return document.getElementById(ele);
    return ele;
Spry.Widget.ValidationTextField.addLoadListener = function(handler)
    if (typeof window.addEventListener != 'undefined')
        window.addEventListener('load', handler, false);
    else if (typeof document.addEventListener != 'undefined')
        document.addEventListener('load', handler, false);
    else if (typeof window.attachEvent != 'undefined')
        window.attachEvent('onload', handler);
Spry.Widget.ValidationTextField.processLoadQueue = function(handler)
    Spry.Widget.ValidationTextField.onloadDidFire = true;
    var q = Spry.Widget.ValidationTextField.loadQueue;
    var qlen = q.length;
    for (var i = 0; i < qlen; i++)
        q[i].attachBehaviors();
Spry.Widget.ValidationTextField.addLoadListener(Spry.Widget.ValidationTextField.processLoa dQueue);
Spry.Widget.ValidationTextField.addLoadListener(function(){
    Spry.Widget.Utils.addEventListener(window, "unload", Spry.Widget.Form.destroyAll, false);
Spry.Widget.ValidationTextField.prototype.setValue = function(newValue) {
    this.flags.locked = true;
    this.input.value = newValue;
    this.flags.locked = false;
    this.oldValue = newValue;
    if (!Spry.is.ie) {
        this.onChange();
* save the state of the input (selection and value) so we can revert to it
* should call this just before modifying the input value
Spry.Widget.ValidationTextField.prototype.saveState = function()
    this.oldValue = this.input.value;
    this.selection.update();
Spry.Widget.ValidationTextField.prototype.revertState = function(revertValue)
    if (revertValue != this.input.value) {
        this.input.readOnly = true;
        this.input.value = revertValue;
        this.input.readOnly = false;
        if (Spry.is.safari && this.flags.active) {
            this.input.focus();
  if (this.flags.restoreSelection) {
    this.selection.moveTo(this.selection.start, this.selection.end);
    this.redTextFlash();
Spry.Widget.ValidationTextField.prototype.removeHint = function()
    if (this.flags.hintOn) {
        this.input.value = "";
        this.flags.hintOn = false;
        this.removeClassName(this.element, this.hintClass);
        this.removeClassName(this.additionalError, this.hintClass);
Spry.Widget.ValidationTextField.prototype.putHint = function()
    if(this.hint && this.input && this.input.type == "text" && this.input.value == "") {
        this.flags.hintOn = true;
        this.input.value = this.hint;
        this.addClassName(this.element, this.hintClass);
        this.addClassName(this.additionalError, this.hintClass);
Spry.Widget.ValidationTextField.prototype.redTextFlash = function()
    var self = this;
    this.addClassName(this.element, this.textfieldFlashTextClass);
    setTimeout(function() {
        self.removeClassName(self.element, self.textfieldFlashTextClass)
    }, 100);
Spry.Widget.ValidationTextField.prototype.doValidations = function(testValue, revertValue)
    if (this.isDisabled()) return false;
    if (this.flags.locked) {
        return false;
    if (testValue.length == 0 && !this.isRequired) {
        this.errors = 0;
        return false;
    this.flags.locked = true;
    var mustRevert = false;
    var continueValidations = true;
    if (!this.options.isRequired && testValue.length == 0) {
        continueValidations = false;
    var errors = 0;
    var fixedValue = testValue;
    //characterMasking - test if all characters are valid with the characterMasking (keyboard filter)
    if (this.useCharacterMasking && this.characterMasking) {
        for(var i=0; i<testValue.length; i++) {
            if (!this.characterMasking.test(testValue.charAt(i))) {
                errors = errors | Spry.Widget.ValidationTextField.ERROR_FORMAT;
                fixedValue = revertValue;
                mustRevert = true;
                break;
    //regExpFilter - character mask positioning (additional mask to restrict some characters only in some position)
    if (!mustRevert && this.useCharacterMasking && this.regExpFilter) {
        if (!this.regExpFilter.test(fixedValue)) {
            errors = errors | Spry.Widget.ValidationTextField.ERROR_FORMAT;
            mustRevert = true;
    //pattern - testValue matches the pattern so far
    if (!mustRevert && this.pattern) {
        var currentRegExp = this.patternToRegExp(testValue.length);
        if (!currentRegExp.test(testValue)) {
            errors = errors | Spry.Widget.ValidationTextField.ERROR_FORMAT;
            mustRevert = true;
        } else if (this.patternLength != testValue.length) {
            //testValue matches pattern so far, but it's not ok if it does not have the proper length
            //do not revert, but should show the error
            errors = errors | Spry.Widget.ValidationTextField.ERROR_FORMAT;
    if (fixedValue == '') {
        errors = errors | Spry.Widget.ValidationTextField.ERROR_REQUIRED;
    if (!mustRevert && this.pattern && this.useCharacterMasking) {
        var n = this.getAutoComplete(testValue.length);
        if (n) {
            fixedValue += n;
    if(!mustRevert && this.minChars !== null  && continueValidations) {
        if (testValue.length < this.minChars) {
            errors = errors | Spry.Widget.ValidationTextField.ERROR_CHARS_MIN;
            continueValidations = false;
    if(!mustRevert && this.maxChars !== null && continueValidations) {
        if (testValue.length > this.maxChars) {
            errors = errors | Spry.Widget.ValidationTextField.ERROR_CHARS_MAX;
            continueValidations = false;
    //validation - testValue passes widget validation function
    if (!mustRevert && this.validation && continueValidations) {
        var value = this.validation(fixedValue, this.options);
        if (false === value) {
            errors = errors | Spry.Widget.ValidationTextField.ERROR_FORMAT;
            continueValidations = false;
        } else {
            this.typedValue = value;
    if(!mustRevert && this.validation && this.minValue !== null && continueValidations) {
        var minValue = this.validation(this.minValue.toString(), this.options);
        if (minValue !== false) {
            if (this.typedValue < minValue) {
                errors = errors | Spry.Widget.ValidationTextField.ERROR_RANGE_MIN;
                continueValidations = false;
    if(!mustRevert && this.validation && this.maxValue !== null && continueValidations) {
        var maxValue = this.validation(this.maxValue.toString(), this.options);
        if (maxValue !== false) {
            if( this.typedValue > maxValue) {
                errors = errors | Spry.Widget.ValidationTextField.ERROR_RANGE_MAX;
                continueValidations = false;
    //an invalid value was tested; must make sure it does not get inside the input
    if (this.useCharacterMasking && mustRevert) {
        this.revertState(revertValue);
    this.errors = errors;
    this.fixedValue = fixedValue;
    this.flags.locked = false;
    return mustRevert;
Spry.Widget.ValidationTextField.prototype.onChange = function(e)
    if (Spry.is.opera && this.flags.operaRevertOnKeyUp) {
        return true;
    if (Spry.is.ie && e && e.propertyName != 'value') {
        return true;

Similar Messages

  • How to redirect users to Custom Page on InfoView logoff

    Post Author: Srinivas123
    CA Forum: WebIntelligence Reporting
    How to redirect the users on InfoView logoff to a custom page, instead of the default logon.aspx.   

    Hello Senana,
    Assuming you're using wwv_flow_custom_auth_std.login to log in, and p_flow_page is set to "[your app id]:1" try placing the following line just before your call to wwv_flow_custom_auth_std.login:
    :FSP_AFTER_LOGIN_URL := null;This should force user to page 1 after log-in.
    Hope this helps,
    John

  • How to redirect user from login page to "Set Challenge question" page

    How to redirect user from login page to "Set Challenge question" page (NOT custom page) after 3 un successful password attempts?
    Meaning when user types wrong password 3 times they will be redirected to set Challenge question page. If user answers the challenge question then password reset page should be appeared other wise (after remaining 3 un successeful challenge question answers) account should be locked out.
    thanks for your help.

    hi sandeep
    Thanks for your answer. Let me ellaborate more on the requirement here.
    - Password Policy and Lost Password management are set up in the identity system
    - Configure login tries allowed= 5. Verify accout is lock out after 5 unsucessful login.
    This is what need to achieve.
    1) If a user attempts to login 3(not 5) times using an incorrect login credential he/she should be redirected to set challenge question (security question) page.
    2) Then if the user attempts (remaining) 2 times incorrect challenge answer then his/her account should be locked out.
    3) If he/she answers the challenge answer correctly then he/she should be redirected to password reset page.
    Is this possible?

  • Adobe pro - print settings: How do i make a custom page size list, which i can copy to my other comp

    Adobe pro - print settings: How do i make a custom page size list, which i can copy to my other computers who have adobe pro installed?

    your right.. i ment acrobat pro :-)
    my problem is that i use the PDF printer to export CAD drawings as PDF´s.
    As it is now, there are some pre-defined page sizes in the print settings, and i know i can add custom pages manually one at a time.
    What i want is to copy the list of my danish standard page sizes, and use them on my other versions of acrobat.
    Its like 70 different sizes, and i have them made manually on my current computer, but i hope its possible to copy the list to other computers.
    Maby its some script where i can define the sizes, and then copy to another computer. Im just not that much of a computer genius :-)
    Hope i got through this without to many spelling mistakes...
    Thanks for helping.

  • How do I create a custom page set up

    How do I create a custom page set up

    Seb,
    You can use the dropdown list in the File>Document Setup>Artboard; Custom is at the top (hidden at first view).

  • After Spry validation how to redirect to a "you have successfully register" page

    I am helping a friend set up a webpage for her business.  You can see the website here www.themessagetext.com.  I used a Spry validation for the phone number and the checkbox.  One the validation is verified, I want the user to be redirected to a page that says that they have successfully register.  Right now it takes you to an ugly page.  It looks like an error page, but it says that you have successfully register.
    I am using Internet Explorer 7.  I am also using CS4 Dreamweaver.  I am also usingSpryValidationCheckbox.css - version 0.4 - Spry Pre-Release 1.6.1 and SpryValidationTextField.css - version 0.4 - Spry Pre-Release 1.6.1
    I am new to web design.  So if you can be as specific as possible I would appreciate it.  I don't even know where in the code it tells the form after it is submitted to redirect to this certain page. 

    Sorry I did post the wrong code for the wrong page.  Here is the code for the right page.  The more I thought about it I figured it was a design problem.  Should I post it somewhere else since this form is for Spry.
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>The Message Text</title>
    <style type="text/css">
    <!--
    body {
    margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
    padding: 0;
    text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
    color: #550459;
    background: #383737;
    font-family: "Times New Roman", Times, serif;
    .oneColElsCtr #container {
    width: 1024px;
    background: #FFFFFF;
    text-align: left; /* this overrides the text-align: center on the body element. */
    margin-top: 0px;
    margin-right: auto;
    margin-left: auto;
    margin-bottom: 0px;
    height: 100%;
    .oneColElsCtr #mainContent {
    background-color: #FFF;
    height: 100%;
    color: #550459;
    font-size: 10px;
    font-weight: bold;
    .oneColElsCtr #container #mainContent table tr td #Table_01 tr td #web_registration_form #just_submit {
    font-family: "Times New Roman", Times, serif;
    font-size: 16px;
    font-weight: bold;
    color: #550459;
    margin: 0px;
    padding: 0px;
    font-style: italic;
    height: 23px;
    vertical-align: baseline;
    border: 2px solid #999;
    background-color: #CCC;
    text-align: center;
    -->
    </style>
    <script src="SpryAssets/SpryValidationCheckbox.js" type="text/javascript"></script>
    <script src="SpryAssets/SpryValidationTextField.js" type="text/javascript"></script>
    <script type="text/javascript">
    <!--
    function MM_openBrWindow(theURL,winName,features) { //v2.0
      window.open(theURL,winName,features);
    //-->
    </script>
    <link href="SpryAssets/SpryValidationCheckbox.css" rel="stylesheet" type="text/css" />
    <link href="SpryAssets/SpryValidationTextField.css" rel="stylesheet" type="text/css" />
    </head>
    <body class="oneColElsCtr">
    <div id="container">
      <div id="mainContent">
       <table id="Table_01" width="1024" height="869" border="0" cellpadding="0" cellspacing="0">
    <tr>
      <td colspan="11">
       <img src="images/websitenew.gif" width="1024" height="176" alt=""></td>
    </tr>
    <tr>
      <td colspan="3" rowspan="2">
       <img src="images/websitenew-03.gif" width="112" height="379" alt=""></td>
      <td colspan="2">
       <img src="images/websitenew_03.gif" width="38" height="19" alt=""></td>
      <td colspan="6" rowspan="2">
       <img src="images/websitenew-05.gif" width="874" height="379" alt=""></td>
    </tr>
    <tr>
      <td colspan="2">
       <img src="images/websitenew-06.gif" width="38" height="360" alt=""></td>
    </tr>
    <tr>
      <td rowspan="4">
       <img src="images/websitenew-07.gif" width="58" height="313" alt=""></td>
      <td colspan="3">
       <a href="contact_us.html">
        <img src="images/websitenew_07.gif" width="79" height="18" border="0" alt=""></a></td>
      <td colspan="2" rowspan="2">
       <img src="images/websitenew-09.gif" width="15" height="53" alt=""></td>
      <td>
       <a href="#">
        <img src="images/websitenew_09.gif" width="168" height="18" border="0" alt=""onclick="MM_openBrWindow('terms_and_conditions_pop_up.html','','width=400,height=60 0')"></a></td>
      <td rowspan="2">
       <img src="images/websitenew-11.gif" width="17" height="53" alt=""></td>
      <td>
       <a href="#">
        <img src="images/websitenew_11.gif" width="108" height="18" border="0" alt=""onclick="MM_openBrWindow('privacy_policy_pop_up.html','','scrollbars=yes,resizable= yes,width=400')"></a></td>
      <td colspan="2" rowspan="2">
       <img src="images/websitenew-13.gif" width="579" height="53" alt=""></td>
    </tr>
    <tr>
      <td colspan="3">
       <img src="images/websitenew-14.gif" width="79" height="35" alt=""></td>
      <td>
       <img src="images/websitenew-15.gif" width="168" height="35" alt=""></td>
      <td>
       <img src="images/websitenew-16.gif" width="108" height="35" alt=""></td>
    </tr>
    <tr>
      <td rowspan="2">
       <img src="images/websitenew-17.gif" width="2" height="260" alt=""></td>
      <td colspan="8" background="images/websitenew-18.gif" width="527" height="247" valign="top" alt="">
              <form action="http://platform.3cinteractive.com/web_registration.php " method="post" name="web_registration_form" id="web_registration_form" onsubmit="" >
       <input id="username" name="username" type="hidden" value="VGn5S7PDQkBwb7csFvX2JA=="/>
          <input id="password" name="password" type="hidden" value="ee7CQE1n8XALlcHYtpSV0Hm+lRNppZrVAe573Vysrq0="/>
          <input id="trigger_id" name="trigger_id" type="hidden" value="78354" />
          <span id="sprytextfield1">
             <input name="phone_number" id="phone_number" size="30"  />
             <span class="textfieldRequiredMsg">A value is required.</span><span class="textfieldInvalidFormatMsg">Must be 10 digits</span></span>
          <input id="just_submit" name="just_submit" type="submit"  value="Submit" />
    <br />
                        (Do Not Include Dashes)
                        <br />
                  <span id="sprycheckbox1">
                    <label>
                          <input type="checkbox" name="agre" id="agre" />
                        By selecting this box, I agree to <a href="#" onclick="MM_openBrWindow('terms_and_conditions_pop_up.html','','width=400,height=600')">t erms and conditions</a></label>
                        <span class="checkboxRequiredMsg">Please select box.</span></span>
                    </form>
            </td>
      <td rowspan="2">
       <img src="images/websitenew-19.gif" width="437" height="260" alt=""></td>
    </tr>
    <tr>
      <td colspan="8">
       <img src="images/websitenew-20.gif" width="527" height="13" alt=""></td>
    </tr>
    <tr>
      <td>
       <img src="images/spacer.gif" width="58" height="1" alt=""></td>
      <td>
       <img src="images/spacer.gif" width="2" height="1" alt=""></td>
      <td>
       <img src="images/spacer.gif" width="52" height="1" alt=""></td>
      <td>
       <img src="images/spacer.gif" width="25" height="1" alt=""></td>
      <td>
       <img src="images/spacer.gif" width="13" height="1" alt=""></td>
      <td>
       <img src="images/spacer.gif" width="2" height="1" alt=""></td>
      <td>
       <img src="images/spacer.gif" width="168" height="1" alt=""></td>
      <td>
       <img src="images/spacer.gif" width="17" height="1" alt=""></td>
      <td>
       <img src="images/spacer.gif" width="108" height="1" alt=""></td>
      <td>
       <img src="images/spacer.gif" width="142" height="1" alt=""></td>
      <td>
       <img src="images/spacer.gif" width="437" height="1" alt=""></td>
    </tr>
    </table></td>
          </tr>
        </table>
      </div>
    </div>
    <script type="text/javascript">
    <!--
    var sprycheckbox1 = new Spry.Widget.ValidationCheckbox("sprycheckbox1");
    var sprytextfield1 = new Spry.Widget.ValidationTextField("sprytextfield1", "phone_number", {format:"phone_custom", pattern:"0000000000"});
    //-->
    </script>
    </body>
    </html>

  • How to redirect to a different page when a browser's Back button is clicked

    In my application a user logs-in and searches on the form provided. Now
    If a I click on browser's Back Button I see a message saying Page Has Expired, now at this point if I click on the browsers refresh button it shows me the page again.I want if browser back button is clicked and then Refresh button is clicked I don't want to show the same page rather redirect to a different page and invalidate the session. Is there a way clicking on browser back button I redirect to a different page.I have the following code on top of each jsp pages:
    response.setHeader("Cache-Control","no-cache"); //forces caches to obtain a new copy of the page from the origin server
    response.setHeader("Cache-Control","no-store"); //directs caches not to store the page under any circumstance
    response.setDateHeader("Expires", 0); //causes the proxy cache to see the page as "stale"
    response.setHeader("Pragma","no-cache"); //HTTP 1.0 backward compatibilityAny help is appreciated. Thanks

    There's no way to know when the back button is clicked, so I don't see how you can do anything about it. Since that message comes from a page which was created by a POST form submission, you can put some unique value in a hidden field that let's the server side record and if it gets it again (from the reload) then it can ignore the form data and redirect.

  • How to redirect users to certain page on login

    Hello All,
    I need to redirect users to page 1 after login even if they use a direct URL pointing to some other page. How do i achieve this?
    Ex:
    User logs in using URL:
    http://localhost:port/apex/f?p=101:10:1818843916449354::NO:::should redirect him to below page instead of 10:
    http://localhost:port/apex/f?p=101:1:2314843916462565::NO:::Appreciate your reply.
    Thanks and Regards,
    Senana

    Hello Senana,
    Assuming you're using wwv_flow_custom_auth_std.login to log in, and p_flow_page is set to "[your app id]:1" try placing the following line just before your call to wwv_flow_custom_auth_std.login:
    :FSP_AFTER_LOGIN_URL := null;This should force user to page 1 after log-in.
    Hope this helps,
    John

  • How to redirect the first web page?

    Hey everyone. Does anyone know how to set up a firewall or router so that when an IP is first assigned, the very first web page that they pull up (port 80 request) is automatically redirected to a web page. But only on the first web page, so that they can go ahead and surf other subsequent pages after they view the splash screen.

    Actually, what I mean is similar to when you log into your hotel's Wifi. Whenever you open up a browser, you get redirected to some splash page where you have to accept some terms and conditions. I have a Linksys 3G CDMA router and I want it to put up a splash page whenever someone first logs in and opens up a browser.

  • How do I make a custom page size in Acrobat X pro?

    I downloaded a gigantic trial version of Acrobat X pro to create a full PDF book cover. I was
    unable to figure out how to make the program do anything at all. The help file and forums did
    not give me the information I needed. Eventually I was able to use 4 other programs in
    combination to create a .doc version of the cover but now I need to turn it into a PDF.
    Can somebody please tell me how to, or how to find out how to, create a custom page size in
    Acrobat X Pro and import a Word document into that page size.
    Alternatively perhaps someone could tell me where I can download an earlier, hopefully more
    usable, version of Acrobat.

    As you have discovered, Acrobat is not a creation or editing tool. It is a program to create a final archive of a document from another application that is readable on most platforms. There have been several tools added to Acrobat to provide more functionality for forms and such, but it was never intended for the creation process.
    Now that you have created your cover in WORD, an appropriate place to create it, you would simply print the page to the Adobe PDF printer. You should change the printer in WORD before the conversion and check the page to be sure that it is still what you wanted. This check is needed for versions prior to OFFICE 2007 that used printer metrics by default. Since OFFICE 2007, printer metrics have been turned off by default.
    If the page does not come out correctly (like is 8.5X11 letter or an A-4 page), then enter the printer properties before printing and set a custom page size there to match your WORD document. I assume the WORD document has the desired size. The printer property change is like putting the correct paper in the printer before printing. Sometimes it seems to sense the application setting, and yet at other times is seems to need to be set.

  • How to redirect to an html page on submit

    I have this form and I would like when people click the submit btn, to be redirected to an html landing page. I'm not sure if I need to modify the php or the action script or both. Does anyone know how to do this?
    Thank you
    here is the code for both
    import flash.net.URLVariables; import flash.net.URLRequest;  /* Mouse Click Event Clicking on the specified symbol instance executes a function in which you can add your own custom code.  Instructions: 1. Add your custom code on a new line after the line that says "// Start your custom code" below. The code will execute when the symbol instance is clicked. */   submit.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler);  function fl_MouseClickHandler(event:MouseEvent):void {            if (eMail.text == ""){           eMail.text = "Please enter in your email address";            }      else{           // Start your custom code      // create a variable container      var allVars:URLVariables = new URLVariables();      allVars.eMail = eMail.text;      allVars.bead = bead.selected;      allVars.jewelry = jewelry.selected;      allVars.onlineNewsletter = onlineNewsletter.selected;      allVars.sandiegoNewsletter = sandiegoNewsletter.selected;      //send info to URL      var mailAddress:URLRequest = new URLRequest("http://www.southsunbeads.com/media/flash/form.php");      mailAddress.data = allVars;      mailAddress.method = URLRequestMethod.POST;      sendToURL(mailAddress);           thankyou.text = "Thank you!";      }       eMail.text = "";         bead.selected = false;         jewelry.selected = false;         onlineNewsletter.selected = false;         sandiegoNewsletter.selected = false; }

    <?php
    // Create local variables from the Flash ActionScript posted variables
    $senderEmail     = $_POST['eMail'];
    $senderNewsletter1 = $_POST['bead'];
    $senderNewsletter2 = $_POST['jewelry'];
    $senderNewsletter3 = $_POST['onlineNewsletter'];
    $senderNewsletter4 = $_POST['sandiegoNewsletter'];
    // Strip slashes on the Local typed-in variables for security and run any php based error check here
    $senderEmail     = stripslashes($eMail);
    $senderMessage   = stripslashes($senderMessage);
    // IMPORTANT - Change these lines to be appropriate for your needs - IMPORTANT !!!!!!!!!!!!!!!!!!
    $to = "[email protected]";            
    $from = "$senderEmail";
    $subject = "Our customers from facebook and social networking";
    // Modify the Body of the message however you like
    $message = "Results from the form:
    eMail: $senderEmail
    Bead deal of the day: $senderNewsletter1
    Jewelry deal of the day: $senderNewsletter2
    online Newsletter: $senderNewsletter3
    San Diego Newsletter: $senderNewsletter4
    Their Message is below:
    $senderMessage";
    // Build $headers Variable
    $headers = "From: $from\r\n";
    $headers .= "Content-type: text\r\n";
    $to = "$to";
        // Send the email
        mail($to, $subject, $message, $headers);
        // Assemble the message that goes back to Flash
        // The flash ActionScript is looking for a return variable of "return_msg" there is no sendername in my form, can be just change to generic message
        $my_msg = "Thanks $senderName, all data has been sent.";
        // Print the data back to flash who is patiently waiting for it in the onCompleteHandler
        print "return_msg=$my_msg";
    // Exit script   
    exit();
    ?>
    import flash.net.URLVariables;
    import flash.net.URLRequest;
    /* Mouse Click Event
    Clicking on the specified symbol instance executes a function in which you can add your own custom code.
    Instructions:
    1. Add your custom code on a new line after the line that says "// Start your custom code" below.
    The code will execute when the symbol instance is clicked.
    submit.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler);
    function fl_MouseClickHandler(event:MouseEvent):void
        if (eMail.text == ""){
            eMail.text = "Please enter in your email address";
        else{
            // Start your custom code
        // create a variable container
        var allVars:URLVariables = new URLVariables();
        allVars.eMail = eMail.text;
        allVars.bead = bead.selected;
        allVars.jewelry = jewelry.selected;
        allVars.onlineNewsletter = onlineNewsletter.selected;
        allVars.sandiegoNewsletter = sandiegoNewsletter.selected;
        //send info to URL
        var mailAddress:URLRequest = new URLRequest("http://www.southsunbeads.com/media/flash/form.php");
        mailAddress.data = allVars;
        mailAddress.method = URLRequestMethod.POST;
        sendToURL(mailAddress);
            thankyou.text = "Thank you!";
         eMail.text = "";
            bead.selected = false;
            jewelry.selected = false;
            onlineNewsletter.selected = false;
            sandiegoNewsletter.selected = false;

  • How to redirect to a custom view in 10g

    Hi All,
    Getting a bit of a headache on this one. I am migrating from 5.7 to 10g and in the project some emails are generated with a link to a custom view. Also I have a submit button in a jsp that redirects to a view. This was easy then (/servlet/controller?viewName=myview&from=1 or similar) but a bit more involved now I guess.
    I had a look at WAPI and can see how to run an activity in an instance, or indeed an application but cant figure out how to display my view.
    Any ideas ?
    cheers
    Tony

    Any thoughts would help on this one.
    Effectively I want a url, or wapi call that takes the user directly to the workspace, with work items at a particular view (not inbox). Defaulting everyone to that view isnt a goer and neither is launching an activity.
    I guess it is possible as the workspace does it when clicking the view dropdown.
    cheers
    Tony

  • How to redirect to same oaf page on "Submit"

    Hi,
    I had a requirement that i need to call a procedure when "SUBMIT" button is clicked to validate the data on the review page. For this i need to extend the seeded controller (NavigationCO on "oracle.apps.per.selfservice.review.webui"). In the seeded controller on submit button click it's redirecting to the final confirmation page. But now i need to validate the data on Submit button click and throw an exception if the data is invalid. If the data is valid i need the same seeded controller code to be executed.
    For testing purpose i tried to the following code to throw an exception when submit button is clicked. I tried using the following code but its displaying an error on click submit.
    public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
    if (pageContext.getParameter("HrSubmit") != null) {
    super.processFormRequest(pageContext, webBean);
    pageContext.forwardImmediatelyToCurrentPage(null,true, "Y");
    throw new OAException("XXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
    }else{
    super.processFormRequest(pageContext, webBean);
    Please help me out its very urgent.

    I tried to use the below code and tried to redirect it to the same page but its throwing an error.
    ERROR: You cannot complete this task because you accessed this page using the browser's navigation buttons (the browser Back button, for example).
    To proceed, please select the Home link at the top of the application page to return to the main menu. Then, access this page again using the application's navigation controls (menu, links, and so on) instead of using the browser's navigation controls like Back and Forward.
    package xxcal.oracle.apps.per.selfservice.review.webui;
    import oracle.apps.fnd.framework.webui.OAPageContext;
    import oracle.apps.fnd.framework.webui.beans.OAWebBean;
    import oracle.apps.per.selfservice.review.webui.NavigationCO;
    import oracle.apps.fnd.framework.OAException;
    import oracle.apps.fnd.framework.webui.OAWebBeanConstants;
    import com.sun.java.util.collections.HashMap;
    public class xxcalNavigationCO extends NavigationCO {
    public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
    if (pageContext.getParameter("HrSubmit") != null)
    pageContext.setForwardURLToCurrentPage(null,
    false,
    OAWebBeanConstants.ADD_BREAD_CRUMB_NO,
    OAException.INFORMATION);
    /*pageContext.setForwardURLToCurrentPage("OA.jsp?page=/oracle/apps/per/selfservice/review/webui/ReviewPG",
    null,
    OAWebBeanConstants.KEEP_MENU_CONTEXT,
    null,
    null,
    true, // Retain AM
    OAWebBeanConstants.ADD_BREAD_CRUMB_YES, // Show breadcrumbs
    OAWebBeanConstants.IGNORE_MESSAGES); */
    super.processRequest(pageContext, webBean);
    Can anyone help me with this issue.

  • How to redirect the portal Logon page..IMP

    Hi Frndz..
    I want to know how i can change the Portal default logon page, means when ur giving url on browser like
    http://host:port/irj/portal it  will directs us to default portal logon page that we r familiar.
    As per my requirement when we call the url ( http://host:port/irj/portal) it should call a custom JSP(fancy screen with AJAX&XML) page that i made ,   from this page i need to access portal .
    So i want  to  use this custom JSP page as my portal logon page .
    Thanks in Advance
    Regards
    Rajesh

    Hi Check the following,
    http://help.sap.com/erp2005_ehp_04/helpdata/EN/62/601e1eebf54ca6a97e2873c8c63517/content.htm
    Siddharth

  • How to redirect to an error page when database is down

    We have build an struts/jsp-application with JDeveloper 10g and ADF. If the connection to the database fails, we get a plain page with header "500 Internal Server Error" and the exception and a stack trace. Of course we want to catch this exception and redirect the user to an error page with all of the standard design elements of our site and with a textual description of the error of our one choice.
    Our attempts to solve this includes adding error-page tags with error-code and exception-type:
    <error-page>
    <exception-type>javax.servlet.jsp.JspTagException</exception-type>
    <location>error.jsp</location>
    </error-page>
    <error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>error.jsp</location>
    </error-page>
    <error-page>
    <exception-type>oracle.jbo.JboException</exception-type>
    <location>error.jsp</location>
    </error-page>
    <error-page>
    <exception-type>oracle.jbo.DMLException</exception-type>
    <location>error.jsp</location>
    </error-page>
    <error-page>
    <exception-type>java.sql.SQLException</exception-type>
    <location>error.jsp</location>
    </error-page>
    <error-page>
    <error-code>500</error-code>
    <location>error.jsp</location>
    </error-page>
    Are there other ways to do this, or are there things we have forgotten to do, that has to be done for this solution to work.
    We have also tried try and catch in a variety of the lifecycle methods in the DataAction subclass for the page, but none of these are ever called. It seems the error happens before the first lifecyle method starts. We can't figure out where to catch this exception.
    In other cases the web.xml mechanism seems to work.

    Try the Global Exception Mechanism within Struts...

Maybe you are looking for

  • Dreamweaver & Microsoft Office cannot open files on target disk

    I've set up my Macbook in Target Disk Mode and connect it via Thunderbolt cable to my iMac. (I'm trying to use the Macbook as a storage drive so I can use the iMac's screen, keyboard & mouse but not use up the hard drive space.) I'm able to access fo

  • IMac and ATV2?

    My mom has a new iMac and I want to set her up with ATV2 for Netflix and iTunes movies. She does not have a WiFi DSL router. Can I use the iMac's WiFi to enable ATV2 connectivity or do I need to get an Airport Express? Thanks, Kevin

  • Project Plan cost report - not showing any output.

    Dear Experts, I have created several projects and done the planning.  I have used work centers and activity types for manpower cost planning. Also created some PRs against the project. When I goto the network activities and select the line item in th

  • Budget Return to the Investment Program (module IM)

    Hi All, I need your advice regarding my case : *. My company use PS (project and allocate the budget in WBS) and also Investment program. *. There are some unused budget in 2005 and 2005 as well as some PR/PO in 2005,2006 (open commitment). They want

  • URL-Redirect configuration differences

    Hi, I'm currently in the process of configuring a pair of 11506's, as part of the installation I'd need to configure a number of URL re-directs (http to https), I (thought) I'd the configuration in place, but looking at some documentation on cisco.co