Dreamweave behaviors
I have a page in dreamweaver with a flash video clip which
was created through Photoshop. I want to have the page
automatically "go to" another page once the video clip plays. How
can I do this?
I don't know of any other way. Sorry.
Murray --- ICQ 71997575
Adobe Community Expert
(If you *MUST* email me, don't LAUGH when you do so!)
==================
http://www.dreamweavermx-templates.com
- Template Triage!
http://www.projectseven.com/go
- DW FAQs, Tutorials & Resources
http://www.dwfaq.com - DW FAQs,
Tutorials & Resources
http://www.macromedia.com/support/search/
- Macromedia (MM) Technotes
==================
"sfort" <[email protected]> wrote in message
news:f5mb7c$4qk$[email protected]..
> Thanks, but is there another way? The flash file was
created in Photoshop
> and
> it doesn't give that that option. I can't do anything
with the file in
> flash
> because it was created in Photoshop. I hoping that I
won't have to
> recreate it
> in Flash... I'm not familiar with the program.
>
Similar Messages
-
GoLive Actions to Dreamweaver Behaviors
GoLive Actions developed by actionscafé are now being
ported over to Dreamweaver Behaviors.
If you're an ex GoLive user and are holding back switching
some of your site(s) over to DW because you can't find replacement
Behaviors for actionscafé software, contact
[email protected] Priority in porting Actions over will be
given to user's needs.
Several of the most popular Actions have already been
converted. Check
http://www.actionscafe.com/info-Behaviors.html
to see what's available now.I think (I haven't read his PDF) that what he is talking
about is a library,
much like Prototype or J-Query where you insert a link to the
.js file in
your document and the use the functions that are in the
script to set
certain behaviors on your page. Dreamweaver will have
something similar in
CS4. This type of functionality is good for people who don't
know how to
write advanced scripts but want to feel like they are ;-)
Al Sparber - PVII
http://www.projectseven.com
Fully Automated Menu Systems | Galleries | Widgets
http://www.projectseven.com/go/Elevators
"Murray *ACE*" <[email protected]> wrote
in message
news:g58nr5$71l$[email protected]..
>I get that. I just don't get *it*! 8)
>
> --
> Murray --- ICQ 71997575
> Adobe Community Expert
> (If you *MUST* email me, don't LAUGH when you do so!)
> ==================
>
http://www.projectseven.com/go
- DW FAQs, Tutorials & Resources
>
http://www.dwfaq.com - DW FAQs,
Tutorials & Resources
> ==================
>
>
> "Al Sparber - PVII" <[email protected]>
wrote in message
> news:g58nee$6ht$[email protected]..
>> "Murray *ACE*"
<[email protected]> wrote in message
>> news:g58im1$1ps$[email protected]..
>>>I don't know - I still don't get it, honestly.
>>
>> Behaviors in DW are assigned to a tag. Commands are
much more powerful.
>> Actionguy can do exactly what he wants to do but
must use a command. The
>> Golive actions are archaic and no more modern than
DW behaviors except
>> for the built-in capability to create a script
library. The rest is all
>> 1999.
>>
>>
>> --
>> Al Sparber - PVII
>>
http://www.projectseven.com
>> Fully Automated Menu Systems | Galleries | Widgets
>>
http://www.projectseven.com/go/Elevators
>>
>>
> -
Dreamweaver behavior for flash player 8
Hi, I'd use to control my .swfs with the dreamweaver behavior
(control
shockwave or flash),
but since i did download the flashplayer8 the .swf do not
acept "gotoframe"
or "rewind" commands,
just "play" and "stop"...somebody can tell me where i can
find the
correction, update or javascript for this.
Thanks.You have to also set your publish settings for that version
of Flash Player. -
David Powers --- Regarding form validation with dreamweaver behaviors
I am in the chapter teaching about form validation with the Zend Framework. I have done the entire lesson with the lesson files and everything works perfectly...
but I went back to use the form valdation techniques for my own site and it is not working properly. In the book, Chapter 6 teaches how to create a user login and editing the database through the site. But in chapter seven the form validation does not build on top of this and therefore does not teach how to integrate the form validation with the registered user already set up.
I have user registration completly working on my site and everything runs fine. I am trying to add the form validation but it is all completly ignored. When I leave a field blank it simply takes me to another blank page that reads "Column 'first_name' cannot be null"
here is index.php code...
<?php require_once('Connections/CSSU_Write.php'); ?>
<?php require_once('Connections/CSSU_Read.php'); ?>
<?php require_once('script/user_registration.php');
?>
<?php
if (isset($_POST['password'])) {
$_POST['password'] = sha1($_POST['password']);
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
return $theValue;
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO sign_up (first_name, family_name, user_email, password, gender, bday_month, bday_day, bday_year) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['first_name'], "text"),
GetSQLValueString($_POST['last_name'], "text"),
GetSQLValueString($_POST['email'], "text"),
GetSQLValueString($_POST['password'], "text"),
GetSQLValueString($_POST['gender'], "text"),
GetSQLValueString($_POST['bday_month'], "text"),
GetSQLValueString($_POST['bday_day'], "text"),
GetSQLValueString($_POST['bday_year'], "text"));
mysql_select_db($database_CSSU_Write, $CSSU_Write);
$Result1 = mysql_query($insertSQL, $CSSU_Write) or die(mysql_error());
$insertGoTo = "login.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
header(sprintf("Location: %s", $insertGoTo));
?>
<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
session_start();
$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
$_SESSION['PrevUrl'] = $_GET['accesscheck'];
if (isset($_POST['email'])) {
$loginUsername=$_POST['email'];
$password=$_POST['password'];
$MM_fldUserAuthorization = "";
$MM_redirectLoginSuccess = "logoOutRedirect.php";
$MM_redirectLoginFailed = "logoOutRedirect.php";
$MM_redirecttoReferrer = false;
mysql_select_db($database_CSSU_Write, $CSSU_Write);
$LoginRS__query=sprintf("SELECT user_email, password FROM sign_up WHERE user_email=%s AND password=%s",
GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text"));
$LoginRS = mysql_query($LoginRS__query, $CSSU_Write) or die(mysql_error());
$loginFoundUser = mysql_num_rows($LoginRS);
if ($loginFoundUser) {
$loginStrGroup = "";
if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();}
//declare two session variables and assign them
$_SESSION['MM_Username'] = $loginUsername;
$_SESSION['MM_UserGroup'] = $loginStrGroup;
if (isset($_SESSION['PrevUrl']) && false) {
$MM_redirectLoginSuccess = $_SESSION['PrevUrl'];
header("Location: " . $MM_redirectLoginSuccess );
else {
header("Location: ". $MM_redirectLoginFailed );
?>
<!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>CSSU</title>
<link href="styles.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="container">
<div class="header">
<div class="logo">
<a href="index.php">
<h1/>
.CSSU { UNIVERSITY; }
</h1>
<h2>
<code><<code>!</code>-- Learn/Apply/Master --></code>
</h2>
</a>
</div>
<!-- end .header --></div>
<div class="headerBar">
<div id="nav">
<ul id="links">
<a href="#"><li>CSSU</li></a>
<a href="#"><li>Classes</li></a>
<a href="#"><li>Pricing</li></a>
<a href="#"><li>Degree</li></a>
</ul>
</div>
<form name="form2" method="POST" action="<?php echo $loginFormAction; ?>" class="form2">
<p>
<label for="email" id="email" class="loginLabel">Email:</label>
<input type="email" name="email" class="loginField" />
<label for="password" id="password" class="loginLabel">Password:</label>
<input type="password" name="password" class="loginField" />
<input type="submit" value="Log In" name="submit" class="submit login" />
</p>
</form>
</div>
<div class="container2">
<div class="sidebar1">
<h1>Sign Up</h1>
<h2>Earn an Official CSS Masters Certification!</h2>
<table>
<form name="form1" method="POST" action="<?php echo $editFormAction; ?>" class="form1">
<tr >
<td class="formLabel"><label for="firstName" id="firstNameLabel" >First Name:</label>
<span>
<?php
if ($_POST && isset($errors['first_name'])) {
echo $errors['first_name'];
?>
</span>
</td>
<td><input type="text" name="first_name" class="inputField" id="firstName" /></td>
</tr>
<tr>
<td class="formLabel"><label for="lastName" id="lastName" >Last Name:</label></td>
<td><input type="text" name="last_name" class="inputField" /></td>
</tr>
<tr>
<td class="formLabel"><label for="yourEmail" id="yourEmail" >Your Email:</label></td>
<td><input type="user_email" name="email" class="inputField" /></td>
</tr>
<tr>
<td class="formLabel"><label for="yourEmail2" id="yourEmail2">Re-enter Email:</label></td>
<td><input type="email" name="reEnter_email" class="inputField" /></td>
</tr>
<tr>
<td class="formLabel"><label for="password" id="password">New Password:</label></td>
<td><input type="password" name="password" class="inputField" /></td>
</tr>
<tr>
<td class="formLabel"><label for="gender" id="gender" class="formLabel">I am:</label></td>
<td><select name="gender" class="selectMenu selectMenu1 gender">
<option value="select">Select Sex:</option>
<option value="male" name="male">Male</option>
<option value="female" name="female">Female</option>
</select>
</td>
</tr>
<tr>
<td class="formLabel"><label for="bday">Birthday:</label></td>
<td>
<select name="bday_month" class="selectMenu selectMenu1 bday">
<option value="male">Month:</option>
<option value="January">January</option>
</select>
<select name="bday_day" class="selectMenu bday">
<option value="Day">Day:</option>
<option value="1">1</option>
</select>
<select name="bday_year" class="selectMenu bday">
<option value="Year">Year:</option>
</select>
</td>
</tr>
<tr>
<td class="submitTd" colspan="2"><input type="submit" value="Sign Up" name="submit" class="submit signup" /><td>
</tr>
<input type="hidden" name="MM_insert" value="form1" />
</form>
</table>
<!-- end .sidebar1 --></div>
<div class="content">
<h1>CSSU</h1>
<!-- end .content --></div>
<div class="footer">
<!-- end .footer --></div>
</div> <!-- end container2 -->
<!-- end .container --></div>
</body>
</html>
And here is user_registration.php code just for the first_name field...
<?php
$errors = array();
if ($_POST) {
// run the validation script
require_once('library.php');
try {
// main script goes here
$val = new Zend_Validate_Regex('/^[a-z]+[-\'a-z ]+$/i');
if (!$val->isValid($_POST['first_name'])) {
$errors['first_name'] = 'Required field, no numbers';
} catch (Exception $e) {
echo $e->getMessage();
And from here, here is the library.php code....
<?php
$library = '.../html/zend/library';
set_include_path(get_include_path() . PATH_SEPARATOR . $library);
require_once('Zend/Loader/Autoloader.php');
try {
Zend_Loader_Autoloader::getInstance();
$write = array('host' => 'hostname',
'username' => 'cssu',
'password' => 'password',
'dbname' => 'cssu');
$read = array('host' => 'hostname',
'username' => 'cssu',
'password' => 'password',
'dbname' => 'cssu');
// Comment out the next two lines if using mysqli
// and remove the comments from the last two lines
$dbWrite = new Zend_Db_Adapter_Pdo_Mysql($write);
$dbRead = new Zend_Db_Adapter_Pdo_Mysql($read);
//$dbWrite = new Zend_Db_Adapter_Mysqli($write);
//$dbRead = new Zend_Db_Adapter_Mysqli($read);
} catch (Exception $e) {
echo $e->getMessage();
I replaced some code here to protect myself, but the library.php file is completely functional and has been tested... I am sure the problem ins't in here.
Please let me know if you need any further code to help you out. I am brand new to PHP and so far everything has ran smoothly up til now. I have my Zend Framework uploaded to my server and tested that my site is connecting to it properly. Any help on this would be so so awesome! This is for a school project and I can't move on until this is resolved! Thank you so much for trying!
You can also view the issue at my website... all the files have been uploaded to the server. www.CSSU.comI am in the chapter teaching about form validation with the Zend Framework. I have done the entire lesson with the lesson files and everything works perfectly...
but I went back to use the form valdation techniques for my own site and it is not working properly. In the book, Chapter 6 teaches how to create a user login and editing the database through the site. But in chapter seven the form validation does not build on top of this and therefore does not teach how to integrate the form validation with the registered user already set up.
I have user registration completly working on my site and everything runs fine. I am trying to add the form validation but it is all completly ignored. When I leave a field blank it simply takes me to another blank page that reads "Column 'first_name' cannot be null"
here is index.php code...
<?php require_once('Connections/CSSU_Write.php'); ?>
<?php require_once('Connections/CSSU_Read.php'); ?>
<?php require_once('script/user_registration.php');
?>
<?php
if (isset($_POST['password'])) {
$_POST['password'] = sha1($_POST['password']);
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
return $theValue;
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO sign_up (first_name, family_name, user_email, password, gender, bday_month, bday_day, bday_year) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['first_name'], "text"),
GetSQLValueString($_POST['last_name'], "text"),
GetSQLValueString($_POST['email'], "text"),
GetSQLValueString($_POST['password'], "text"),
GetSQLValueString($_POST['gender'], "text"),
GetSQLValueString($_POST['bday_month'], "text"),
GetSQLValueString($_POST['bday_day'], "text"),
GetSQLValueString($_POST['bday_year'], "text"));
mysql_select_db($database_CSSU_Write, $CSSU_Write);
$Result1 = mysql_query($insertSQL, $CSSU_Write) or die(mysql_error());
$insertGoTo = "login.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
header(sprintf("Location: %s", $insertGoTo));
?>
<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
session_start();
$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
$_SESSION['PrevUrl'] = $_GET['accesscheck'];
if (isset($_POST['email'])) {
$loginUsername=$_POST['email'];
$password=$_POST['password'];
$MM_fldUserAuthorization = "";
$MM_redirectLoginSuccess = "logoOutRedirect.php";
$MM_redirectLoginFailed = "logoOutRedirect.php";
$MM_redirecttoReferrer = false;
mysql_select_db($database_CSSU_Write, $CSSU_Write);
$LoginRS__query=sprintf("SELECT user_email, password FROM sign_up WHERE user_email=%s AND password=%s",
GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text"));
$LoginRS = mysql_query($LoginRS__query, $CSSU_Write) or die(mysql_error());
$loginFoundUser = mysql_num_rows($LoginRS);
if ($loginFoundUser) {
$loginStrGroup = "";
if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();}
//declare two session variables and assign them
$_SESSION['MM_Username'] = $loginUsername;
$_SESSION['MM_UserGroup'] = $loginStrGroup;
if (isset($_SESSION['PrevUrl']) && false) {
$MM_redirectLoginSuccess = $_SESSION['PrevUrl'];
header("Location: " . $MM_redirectLoginSuccess );
else {
header("Location: ". $MM_redirectLoginFailed );
?>
<!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>CSSU</title>
<link href="styles.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="container">
<div class="header">
<div class="logo">
<a href="index.php">
<h1/>
.CSSU { UNIVERSITY; }
</h1>
<h2>
<code><<code>!</code>-- Learn/Apply/Master --></code>
</h2>
</a>
</div>
<!-- end .header --></div>
<div class="headerBar">
<div id="nav">
<ul id="links">
<a href="#"><li>CSSU</li></a>
<a href="#"><li>Classes</li></a>
<a href="#"><li>Pricing</li></a>
<a href="#"><li>Degree</li></a>
</ul>
</div>
<form name="form2" method="POST" action="<?php echo $loginFormAction; ?>" class="form2">
<p>
<label for="email" id="email" class="loginLabel">Email:</label>
<input type="email" name="email" class="loginField" />
<label for="password" id="password" class="loginLabel">Password:</label>
<input type="password" name="password" class="loginField" />
<input type="submit" value="Log In" name="submit" class="submit login" />
</p>
</form>
</div>
<div class="container2">
<div class="sidebar1">
<h1>Sign Up</h1>
<h2>Earn an Official CSS Masters Certification!</h2>
<table>
<form name="form1" method="POST" action="<?php echo $editFormAction; ?>" class="form1">
<tr >
<td class="formLabel"><label for="firstName" id="firstNameLabel" >First Name:</label>
<span>
<?php
if ($_POST && isset($errors['first_name'])) {
echo $errors['first_name'];
?>
</span>
</td>
<td><input type="text" name="first_name" class="inputField" id="firstName" /></td>
</tr>
<tr>
<td class="formLabel"><label for="lastName" id="lastName" >Last Name:</label></td>
<td><input type="text" name="last_name" class="inputField" /></td>
</tr>
<tr>
<td class="formLabel"><label for="yourEmail" id="yourEmail" >Your Email:</label></td>
<td><input type="user_email" name="email" class="inputField" /></td>
</tr>
<tr>
<td class="formLabel"><label for="yourEmail2" id="yourEmail2">Re-enter Email:</label></td>
<td><input type="email" name="reEnter_email" class="inputField" /></td>
</tr>
<tr>
<td class="formLabel"><label for="password" id="password">New Password:</label></td>
<td><input type="password" name="password" class="inputField" /></td>
</tr>
<tr>
<td class="formLabel"><label for="gender" id="gender" class="formLabel">I am:</label></td>
<td><select name="gender" class="selectMenu selectMenu1 gender">
<option value="select">Select Sex:</option>
<option value="male" name="male">Male</option>
<option value="female" name="female">Female</option>
</select>
</td>
</tr>
<tr>
<td class="formLabel"><label for="bday">Birthday:</label></td>
<td>
<select name="bday_month" class="selectMenu selectMenu1 bday">
<option value="male">Month:</option>
<option value="January">January</option>
</select>
<select name="bday_day" class="selectMenu bday">
<option value="Day">Day:</option>
<option value="1">1</option>
</select>
<select name="bday_year" class="selectMenu bday">
<option value="Year">Year:</option>
</select>
</td>
</tr>
<tr>
<td class="submitTd" colspan="2"><input type="submit" value="Sign Up" name="submit" class="submit signup" /><td>
</tr>
<input type="hidden" name="MM_insert" value="form1" />
</form>
</table>
<!-- end .sidebar1 --></div>
<div class="content">
<h1>CSSU</h1>
<!-- end .content --></div>
<div class="footer">
<!-- end .footer --></div>
</div> <!-- end container2 -->
<!-- end .container --></div>
</body>
</html>
And here is user_registration.php code just for the first_name field...
<?php
$errors = array();
if ($_POST) {
// run the validation script
require_once('library.php');
try {
// main script goes here
$val = new Zend_Validate_Regex('/^[a-z]+[-\'a-z ]+$/i');
if (!$val->isValid($_POST['first_name'])) {
$errors['first_name'] = 'Required field, no numbers';
} catch (Exception $e) {
echo $e->getMessage();
And from here, here is the library.php code....
<?php
$library = '.../html/zend/library';
set_include_path(get_include_path() . PATH_SEPARATOR . $library);
require_once('Zend/Loader/Autoloader.php');
try {
Zend_Loader_Autoloader::getInstance();
$write = array('host' => 'hostname',
'username' => 'cssu',
'password' => 'password',
'dbname' => 'cssu');
$read = array('host' => 'hostname',
'username' => 'cssu',
'password' => 'password',
'dbname' => 'cssu');
// Comment out the next two lines if using mysqli
// and remove the comments from the last two lines
$dbWrite = new Zend_Db_Adapter_Pdo_Mysql($write);
$dbRead = new Zend_Db_Adapter_Pdo_Mysql($read);
//$dbWrite = new Zend_Db_Adapter_Mysqli($write);
//$dbRead = new Zend_Db_Adapter_Mysqli($read);
} catch (Exception $e) {
echo $e->getMessage();
I replaced some code here to protect myself, but the library.php file is completely functional and has been tested... I am sure the problem ins't in here.
Please let me know if you need any further code to help you out. I am brand new to PHP and so far everything has ran smoothly up til now. I have my Zend Framework uploaded to my server and tested that my site is connecting to it properly. Any help on this would be so so awesome! This is for a school project and I can't move on until this is resolved! Thank you so much for trying!
You can also view the issue at my website... all the files have been uploaded to the server. www.CSSU.com -
Remote Rollover in Dreamweaver CS3
I want to do something like the effect achieved with the "who" and "why" buttons on this site - http://voicubojan.com/. I'm not sure what to call this to know how to search for how to do it. I have Dreamweaver CS3 and WindowsXP. Thanks for any help.
SharonIt's often called a Disjointed Rollover.
You can see from View Source in a browser that the example in the link is actually toggling the CSS class in the sidebar from display:block (visible) to display:none (hidden)
<script>
$(document).ready(function() {
$('#content').css('min-height', $(window).height() - 207);
$('#whoLink').click(function () {
$('#who').css('display', 'block');
$('#why').css('display', 'none');
$('#whyLink').click(function () {
$('#why').css('display', 'block');
$('#who').css('display', 'none');
</script>
In the Dreamweaver Behaviors panel, (Window > Behaviors), you could also explore "Set Text of Container" -
Behavior for calling static image instead of swf?
On our webpage we currently have a flash image running. We
also use a Dreamweaver behavior that takes a user without the Flash
Player installed to a separate page that has a static jpg image
instead of the Flash image.
Is there a script, behavior or method available that would
call the static jpg image instead of the Flash image for non-Flash
Player users without sending the user to a separate page?
Thanks.You can add an image tag inside the object tag. Just make
sure the image tag is the last line before the closing tag of the
object here is an example -
GoLive Actions developed by actionscafé are now being ported over to Dreamweaver Behaviors.
If you're holding back switching your site(s) over to DW because you can't find replacement Behaviors for the actionscafé software you used, contact me. Priority in porting Actions over will be given to user's needs.
Several of the most popular Actions have already been converted over. Check http://www.actionscafe.com/info-Behaviors.html to see what's available now.I use an Action from MIND Palette called ImageWindow 1.4.1, which has three parts, DetectImage, DetectTile and ImageWindow. I have over 600 photos on my website setup with this action. Any idea if those Actions can be turned into a Behavior?
I'm not in the mood to rebuild a website in DW unless the transition from Actions to Behaviors is possible with all the actions I use. This is why I have not and with not move to DW.
thanks, -
Overlaying SWF Asset with layer components - Strange behaviors.
Hi !
I am brand new at Flash Builder and Flash Catalyst.
I have been spending most of my time in Catalyst at first and realized later on that I needed some of the nice features inside of FlashBuilder.
I created a few FlashBuilder components and brought them in Catalyst in order to speed up my designing requirements.
After bringing in several SWF assets in Catalyst I stumlbed upon a few curious behavior.
1. If I load SWF assets in a same page and if they are inter mixed with components layers issued either from Photoshop or made from within Catalyst, I am unable to select most of them. Only and only if I move them away from the other components, I can actually select them. They also become available when I make a test run, which they weren't before, if they were close or under other layerrs, but stll visible.
2. Is there a reason why the names of the SWF are not visual at the layer level within Catalyst ? All I see once the SWF are loaded is the terminology SWF Asset with the Skin name Wireframe. This also seems to be creating a conflict in how the SWF components are selectable, since every time I select one of the SWF Asset, it is the one at the highest level in the layer stack that gets selected and not the one that I am attempting to select.
3. I ran once into a problem which was related to Skin name convention where I was duplicating buttons that always kept the same Skin name, which made it impossible to re-use them, since any modification would affect all of the duplicated components. Why can't Catalyst create new Skin names in order to avoid this behavior?
I am pretty happy using Catalyst and Builder, but I gotta say that some of those behaviors are putting a dent in my schedule.
Anyone would have a few words of advice ? I am especially concerned with the "perceived" impossibiliy to use more than one SWF asset within Catalyst.
Thank you.
lgOops, on looking back at my original post I can see I was not
clear on an important point. The layers that hold the three
different swf files are in Dreamweaver, one layer holds
Parks_Monuments.swf, another holds Land_Seascapes.swf and the third
holds Cityscapes.swf. As it works now you click on the appropriate
button on the left and through the use of Dreamweaver behaviors it
shows the associated swf by hiding the other two layers. BTW the
buttons are quite crude right now - no over or down states.
I realize I can't use the layers in an Actionscript to do
something but would it be possible to add a script to the down
state of a button so that it would show/hide the Dreamweaver
layers? I guess another way of doing it would be to put each swf on
a seperate page and have the script call up it's URL. Seems like
that would add a lot of overhead and duplicate uploading each time
the user switches photo categories.
Sorry for the confusion and thanks for taking the time to
give me some guidance - much appreciated.
Ed DiTomas -
What is the correct way to add behaviors to text?
I seem to be having trouble adding behaviors properly.
What I'd like to do is select a few words of text and apply a behavior to them, in particular the behavior Open Browser Window when a user clicks on the selected text. I've gotten this work in what I'm sure is not the correct way. The only way I can get it to work is if the text link also has an a href link set up (through the Properties Inspector) pointing back to this same page. Now if I simply select some text and go to add a behavior to it through the tag inspector panel a lot of my choices are greyed out. I'm not super code-savy but do I understand that these behaviors should / can only be applied to tags?
You can see samples of what I'm talking about here: http://www.philasecurities.com/luncheon_meetings.html. In the luncheon schedule, click on the "more…" links and a new, small browser window should open.
How should I be applying these correctly?
Thanks,
JohnPop-up Window in Dreamweaver (Behaviors Panel)
1. Insert an image or type some text.
2. Select it and go to the Properties Panel link field. Browse for the file or type the full URL (http://example.com).
3. Go to the Behaviors Panel and hit the plus sign to add a new behavior.
4. Select Open Browser Window.
5. Browse to file or type the URL (Yes, a 2nd time).
6. Set the height, width and other optional attributes for your pop-up window. (See link below for details)
http://help.adobe.com/en_US/dreamweaver/cs/using/WSc78c5058ca073340dcda9110b1f693f21-7b07a .html
7. Hit OK.
8. Verify that the behavior's trigger event is onClick. If it's not, click the event box to show other trigger options.
9. IMPORTANT! Go back to the Properties Panel and replace the first URL in the link field with javascript:() which makes the primary link into a null link. If you don't do this, the link will open twice: once in the pop-up window and again in the parent window.
Save your page and preview in browsers.
PS. It takes longer to explain all these steps than it does to do it.
Nancy O.
Alt-Web Design & Publishing
Web | Graphics | Print | Media Specialists
http://alt-web.com/
http://twitter.com/altweb -
I am sending English eLearning developed in Dreamweaver for
translation into Chinese. But the folks in China don't have
Dreamweaver skills. Nor can they handle an html editor without
messing up the code.
Does anyone know of a tool that will present the course
content in a user-friendly way for translation, but not show or
compromise the code? I tried Word and pages look great for
translating, but it does not save complex pages accurately. The
courses have extensive javascript, through CourseBuilder and
Dreamweaver behaviors. Appreciate any suggestions. -- JohnJohn,
If you are using DW CS3 or later, have you tried turning off
displaying
CSS styles? Use:
View > Style Rendering > Display Styles
This shows all of the content and the semantic structure of
the page,
but no CSS styles. This is a DW-only rendering mode that does
not affect
how pages look on the web.
Hope this helps,
Randy
> I am sending English eLearning developed in Dreamweaver
for translation into
> Chinese. But the folks in China don't have Dreamweaver
skills. Nor can they
> handle an html editor without messing up the code.
>
> Does anyone know of a tool that will present the course
content in a
> user-friendly way for translation, but not show or
compromise the code? I tried
> Word and pages look great for translating, but it does
not save complex pages
> accurately. The courses have extensive javascript,
through CourseBuilder and
> Dreamweaver behaviors. Appreciate any suggestions. --
John -
Javascript Open and Close window
I am creating a new website and am having problems getting
the open window and close window to work. I want this window to
open a new window (NOT a popup window used with the "onload"
option). I am using an img tag so that when you click on the image
thumbnail this new window opens. It is my understanding in order to
use the window.close option, you must have the javascript in the
header of the html document for the close to work. In the heading
of the document that contains the link to open a new window I have
the following:
<SCRIPT language="JavaScript1.2">
function popuponclick()
Cellex = window.open("products/cellex.htm",
"console","status=1,width=350,height=150");
function closepopup()
if(false == cellex.closed)
cellex.close ();
else
alert('Window already closed!');
</SCRIPT>
Then I have this in the body:
<img src="images/thumbnails/dermalogicath.jpg"
alt="Dermalogica" width="94" height="84" border="0"
/></a></td>
<td><a href="products/mdskin.htm"
onclick="window.open('products/mdskin.htm','mdskin',width=610,height=780,scrollbars=yes') ;return
false; target="_blank">
However, I'm getting script errors when opening the window on
the lines in the body Unterminated error. I have tried using the
help in Dreamweaver as well as many docs posted, but still cannot
get this to work. Once I get the script errors resolved, the when
the window opens, it will not close. I get the message that a
window is trying to be closed and do I want to close the window
which closes internet explorer entirely. I'm using IE 7.0 as well
as foxfire and have the same issue on both. If I use the
dreamweaver behaviors to call a javascript, it puts "onload" and if
I change to "onclick" then the script will not work. When I use the
behavior "open window" it still doesn't work. I'm totally lost as
to what I'm doing wrong as I have followed about 10 papers all
using the same instructions.
Hopefully some one can help me, I'm getting fustrated as this
seems to be pretty straight forward.
Thanks, vienieTry this on for size:
I have included two functions.
windowRebuild() - opens a new window, maximizes it based on the screen size, removes all toolbars, and then closes the old window.
myLocation(appName, pageName) - builds a url referencing an HTMLDB application, specfic to what server you are currently on. Very useful when you have an application on 3 different servers(dev, test, prod servers), you wouldn't want the server name hardcoded if you plan to export the app to another server.
Also, you need to be careful when using &APP_ID. I am not completely certain how that is resolved at runtime, but I've found it only works when the javascript is in the HTML Header of a page and not stored in the template of the page.
<script language="JavaScript1.1" type="text/javascript">
This functions is for internal application use.
Examples of myLocation:
url = myLocation('&APP_ID.', 'APP_PUBLIC_PAGE');
url = myLocation('MY_APP_ALIAS', 'MY_PAGE_ALIAS');
url = myLocation('184', '10');
function myLocation(myApp, myPage){
var myHost = location.host;
var newURL;
newURL = 'http://'+myHost+'/pls/htmldb/f?p='+myApp.toString()+':'+myPage.toString();
return newURL;
/* Function windowRebuild()
* This function will open a new window and close the old window.
* This function will also maximize the new window and remove all toolbars.
function windowRebuild(){
if(window.name != 'myAppWin'){
var url = myLocation('&APP_ID.', 'PAGE_ALIAS');
var myWin = window.open(url,'myAppWin','toolbar=0,scrollbars=1,menubar=0,status=1,resizable=1,location=0');
window.opener = 'x';
window.close();
if(window.name == 'myAppWin'){
window.moveTo(0,0);
window.resizeTo(screen.availWidth,screen.availHeight);
</script>Let me know if that works or you need some more explanation.
Chris -
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; -
Problem in Quick Gallery Extension
I use Quick Gallery extension to make a photo gallery on my
site with Horizontal scroller.I insert pictures in the horizontal
scroller and thn after clicking a small image then larger image
appears.The problem is that images takes too much time to appear in
the scroller n as well as whn the larger image displays.
Waiting for ur urgent reply.
Thankx
Regards,Preload the images (use the preload behavior, a standard
Dreamweaver
behavior)
Paul Davis
http://www.kaosweaver.com/
Visit us for dozens of useful Dreamweaver Extensions.
http://www.communitymx.com/
Partner at Community MX - Extend your knowledge
sahil_m wrote:
> I use Quick Gallery extension to make a photo gallery on
my site with
> Horizontal scroller.I insert pictures in the horizontal
scroller and thn after
> clicking a small image then larger image appears.The
problem is that images
> takes too much time to appear in the scroller n as well
as whn the larger image
> displays.
>
> Waiting for ur urgent reply.
> Thankx
> Regards,
> -
I inserted a horizontal nav bar using Dreamweaver behaviors
(code attached). For one user, the items under one menu item are
dropping down under anothre menu item. This happens only on certain
pages and only for one user. The navigation bar is one file that is
called in on each page. I've attached the code for the nav bar that
is called into the web pages. The dropdown items under Health and
Wellness dropdown under the Home menu item.
Can anyone help me?When you apply packages you have to select to regenerate the area the package is being applied for. But at times some objects fail to regenerate and in that case you have to implicitly regenerate it. It happens a lot for Report groups and queries.
Hope helps.
Reward if answered. -
I created a website for my video production company using Dreamweaver 8 (http://www.playroomcreative.com/production.html). I have average web design knowledge.
The sample videos of my work are all MP4 (H.264/AAC) which is compatible with Quicktime and Flash, however I am using JW Flash Player on my website because most people have Flash installed on their computers. I even have a message that prompts people to download the newest version of Flash when the video doesn’t appear.
My question is; what do I do about people that use iphones and ipads that can’t run Flash?
I would assume that I should change the way I have it now and put a Quicktime video embedded page FIRST, then use the “Check Plugin” Dreamweaver behavior to detect if they don’t have Quicktime and redirect them to the Flash video page. Then, if they don’t have the proper version of Flash they will be prompted to upgrade.
If I did it the opposite way (Flash page first that redirects to a Quicktime page when no Flash plugin is found) than the Flash page would never have a chance to offer it’s upgrade prompt if the user doesn’t have the proper version Flash.
Am I approaching this the right way?
Is there a better way (besides the use of YouTube or Vimeo type video hosting sites)?
Thanks in advance!Introduction to HTML5 Video
http://dev.opera.com/articles/view/introduction-html5-video/
Building a custom HTML5 player with CSS3 and jQuery -
http://dev.opera.com/articles/view/custom-html5-video-player-with-css3-and-jquery/
"With Google recently releasing the VP8 codec, and the WebM project coming into existence. Opera, Firefox, Chrome and IE9 all have support in final builds, developer builds, or at least support announced for this format, and Flash will be able to play VP8. This means that we will soon be able to create a single version of the video that will play in the <video> element in most browsers, and the Flash Player in those that don't support WebM natively."
Video For Everybody!
http://camendesign.com/code/video_for_everybody
Nancy O.
Alt-Web Design & Publishing
Web | Graphics | Print | Media Specialists
http://alt-web.com/
http://twitter.com/altweb
Maybe you are looking for
-
AAE- Sender ABAP Proxy to SOAP - Payload not reaching PI 7.10 SP4
Hi friends, I am developeing interface from Solman to PI to 3rd party. I configured the interface using ABAP stack and it worked fine. Then i changed the RFC destination used in SXMB_ADM to point to adapter engine so that i can use AAE. I configured
-
Automatic log-out after 20 minutes working in a layout
Hello We have an automatic log-out of the layout after 20 minutes of work. The time out is set up at 58 minutes. Does anyone know of a paramater in a 3.0B that would trigger this log-out ? Something separate from the main time-out ? Regards Fabrice
-
Firefox 4 thinks Word doc should be opened with Adobe Reader
After upgrading to Firefox 4, I clicked a link to a Word doc, and the dialog box pops asking what Firefox should do with "file.doc "which is a: Adobe Acrobat Document" and it suggests Adobe Acrobat 9.4 (default).
-
can i delete the apps that comes with the 5s phone, like itunes, weather and others that i won't be using?
-
One Column missing during print functionality
Hi All, Actuall i am using print Functionality in Apex the code is : <!-- <TD align=right><IMG height=3 alt="" src="#WORKSPACE_IMAGES#spacer.gif" width=1 border=0><BR><IMG height=15 alt="Print this" src="#WORKSPACE_IMAGES#drucken.gif" onClick="window