Archive for October, 2007

Scripting Java Applets and Plug-ins Netscape was the (Photography web hosting)

Saturday, October 27th, 2007

Scripting Java Applets and Plug-ins Netscape was the first to implement the facility enabling JavaScript scripts, Java applets, and plug-ins to communicate with each other under one technology umbrella, called LiveConnect (first implemented in NN3). Microsoft met the challenge and implemented a large part of that technology for IE4/Windows, but of course without using the Netscapetrademarked name for the technology. The name is a convenient way to refer to the capability, so you find it used throughout this chapter applying to both NN and IE browsers that support such facilities. This chapter focuses on the scripting side of LiveConnect: approaching applets and plug- ins from scripts and accessing scripts from Java applets. Except for the part about talking to scripts from inside a Java applet, I don t assume you have any knowledge of Java programming. The primary goal here is to help you understand how to control applets and plug-ins (including ActiveX controls in IE/Windows) from your scripts. If you re in a position to develop specifications for applets, you also learn what to ask of your Java programmers. But if you are also a Java applet programmer, you learn the necessary skills to get your applets in touch with HTML pages and scripts. LiveConnect Overview Before you delve too deeply into the subject, you should be aware that LiveConnect features are not available in all mod ern browsers, much to the chagrin of many. The following browsers do not support this technology: . IE/Macintosh (at least through Version 5) . NN4.6 (due to an oversight when the version was released) . NN6.0 (work is afoot to include it in later versions) 44 CHAPTER …. In This Chapter Communicating with Java applets from scripts Accessing scripts and objects from Java applets Controlling scriptable plug-ins ….
We recommend you use shared web hosting services, because many users agree that it is cheap, reliable and customer-satisfying webhost.

1176 Part V . Putting JavaScript to Work (Web hosting support)

Friday, October 26th, 2007

1176 Part V . Putting JavaScript to Work The application scenario for the form is the entry of data into a company s con tractor database. Some fields are required, and the date field must be cross-con firmed with a second entry of the same data. If the form passes its final validation prior to submission, the form reloads and you see a readout of the form data that would have been submitted from the previous form had the ACTION been set to a server CGI program URI. Plan for Data Validation I devoted this entire chapter to the subject of data validation because it represents the one area of error checking that almost all JavaScript authors should be concerned with. If your scripts (client-side or server-side) perform processing on user entries, you want to prevent script errors at all costs. …
You need excellent and relaible webhost company to host your web applications? Then pay a visit to Inexpensive Web Hosting services.

Web hosting servers - 1175Chapter 43 .Data-Entry Validation Because successful validations return

Friday, October 26th, 2007

1175Chapter 43 .Data-Entry Validation Because successful validations return true, you can nest consecutive validation tests so that the most nested statement of the construction is return true because all validations have succeeded. The form s onSubmit event handler is as follows: onSubmit= return checkForm(this) And the following code fragment is an example of a checkForm()function. A separate isDateFormat()validation function called here checks whether the field contains an entry in the proper format meaning that it has likely survived the range checking and format shifting of the real-time validation check. function checkForm(form) { if (parent.validate(window, form.birthdate, isDateFormat )) { if (parent.validate(window, form.phone, isPhone )) { if (parent.validate(window, form.name, isNotEmpty )) { return true } } } return false } If any one validation fails, the field is given focus and its content is selected (controlled by the individual validation function). In addition, the checkForm()function returns false. This, in turn, cancels the form submission. Try it out Listing 43-17 is a definition for a frameset that not only loads the validation routines described in this section, but also loads a page with a form that exercises the validations in real-time and batch mode just prior to submission. The form appears earlier in this chapter in Figure 43-1. Listing 43-17: Frameset for Trying validation.js GiantCo Contractor Database
Note: In case you are looking for affordable and reliable webhost to host and run your j2ee application check Vision J2ee Web Hosting services.

1174 Part V . Putting JavaScript to Work (Crystaltech web hosting)

Thursday, October 25th, 2007

1174 Part V . Putting JavaScript to Work For the secondary field entry branch, the script assembles a reference to the primary field by stripping away the final five characters of the secondary field s name. I can use the lastIndexOf() string method instead of the longer way involving the string s length; but after experiencing so many platform-specific problems with lastIndexOf() in Navigator, I decided to play it safe. Finally, the two values are compared, with an appropriate alert displayed if they don t match. Listing 43-16: Cross-Confirmation Validation // checks an entry against a parallel, duplicate entry to // confirm that correct data has been entered // Parallel field name must be the main field name plus _xcfm function isConfirmed() { var inputStr = gField.value // flag for whether field under test is primary (true) or confirmation field var primary = (gField.name.indexOf( _xcfm ) == -1) if (primary) { // clear the confirmation field if primary field is changed var xcfmField = window.frames[gFrame.name].document.forms[0].elements[gField.name + _ xcfm ] var xcfmValue = xcfmField.value if (inputStr != xcfmValue) { xcfmField.value = return true } } else { var xcfmField = window.frames[gFrame.name].document.forms[0].elements[gField.name.substring(0,(g Field.name.length-5))] var xcfmValue = xcfmField.value if (inputStr != xcfmValue) { alert( The main and confirmation entry field contents do not match. Both fields must have EXACTLY the same content to be accepted by the database. ) gField.focus() gField.select() return false } } return true } Last-minute check Every validation event handler is designed to return trueif the validation succeeds. This comes in handy for the batch validation that performs one final check of the entries triggered by the form s onSubmitevent handler. This event handler calls a checkForm() function and passes the form control object as a parameter. That parameter helps create a reference to the form element that is passed to each validation function.
If you are searching for cheap webhost for your web application, please visit MySQL5 Web Hosting services.

1173Chapter 43 .Data-Entry Validation // check the entered (Free web hosting services)

Thursday, October 25th, 2007

1173Chapter 43 .Data-Entry Validation // check the entered February date for too high a value function checkLeapMonth(mm,dd,yyyy) { if (yyyy % 4 > 0 && dd > 28) { alert( February of + yyyy + has only 28 days. ) return false } else if (dd > 29) { alert( February of + yyyy + has only 29 days. ) return false } return true } This is a rather extensive date-validation routine, but it demonstrates how thorough you must be when a database relies on accurate entries. The more prompting and assistance you can give to users to ferret out problems with invalid entries, the happier those users will be. Cross-confirmation fields The final validation type that I cover here is probably not a common request, but it demonstrates how the dispatch mechanism created at the outset expands so easily to accommodate this enhanced client request. The situation is that some fields (mostly dates in this application) are deemed critical pieces of data because this data triggers other processes from the database. As a further check to ensure entry of accurate data, a number of values are set up for entry twice in separate fields and the fields have to match exactly. In many ways, this mirrors the two passes you are often requested to make when you set a password: enter two copies and let the computer compare them to make sure you typed what you intended to type. I established a system that places only one burden on the many programmers working on the forms: while you can name the primary field anything you want (to help alignment with database column names, for example), you must name the secondary field the same plus _xcfm which stands for cross-confirm. Then, pass the isConfirmedvalidation name to the validate()function after the date range validation name, as follows: onChange= parent.validate(window, this, isM5_P10Date , isConfirmed ) In other words, after the entered value is initially checked against a required date range, the isConfirmed()validation function compares the fully vetted, properly formatted date in the current field against its parallel entry. Listing 43-16 shows the one function in validations.js that handles the confirmation in both directions. After assigning a copy of the entry field value to the inputStr variable, the function next sets a Boolean flag (primary) that lets the rest of the script know if the entry field is the primary or secondary field. If the string _xcfm is missing from the field name, then the entry field is the primary field. For the primary field branch, the script assembles the name of the secondary field and compares the content of the secondary field s value against the inputStr value. If they are not the same, the user is entering a new value into the primary field, and the script empties the secondary field to force reentry to verify that the user enters the proper data.
Searching for affordable and reliable webhost to host and run your web applications? Go to our java web server services and you will be pleased.

Multiple domain web hosting - 1172 Part V . Putting JavaScript to Work

Wednesday, October 24th, 2007

1172 Part V . Putting JavaScript to Work if (!checkMonthLength(mm,dd)) { gField.focus() gField.select() return false } if (mm == 2) { if (!checkLeapMonth(mm,dd,yyyy)) { gField.focus() gField.select() return false } } The final task is to reassemble the date components into a format that the database wants for its date storage and stuff it into the form field. If the user enters an all-number or hyphen-delimited date, it is automatically reformatted and displayed as a slash-delimited, four-digit-year date. // put the Informix-friendly format back into the field gField.value = monthDayFormat(mm) + / + monthDayFormat(dd) + / + yyyy return true } A utility function invoked multiple times in the previous function converts a single- digit month or day number to a string that might have a leading zero: // convert month or day number to string, // padding with leading zero if needed function monthDayFormat(val) { if (isNaN(val) || val == 0) { return 01 } else if (val < 10) { return 0 + val } return + val } Listing 43-15: Functions to Check Month Lengths // check the entered month for too high a value function checkMonthLength(mm,dd) { var months = new Array( , January , February , March , April , May , June , July , August , September , October , November , December ) if ((mm == 4 || mm == 6 || mm == 9 || mm == 11) && dd > 30) { alert(months[mm] + has only 30 days. ) return false } else if (dd > 31) { alert(months[mm] + has only 31 days. ) return false } return true }
Searching for affordable and reliable webhost to host and run your web applications? Go to our java web server services and you will be pleased.

1171Chapter 43 .Data-Entry Validation if (!minYear) { // (Web hosting reseller)

Wednesday, October 24th, 2007

1171Chapter 43 .Data-Entry Validation if (!minYear) { // function called with specific day range parameters var dateStr = new String(monthDayFormat(mm) + / + monthDayFormat(dd) + / + yyyy) var testDate = new Date(dateStr) if (testDate.getTime() < (today.getTime() + (minDays * 24 * 60 * 60 * 1000))) { alert( The most likely range for this entry begins + minDays + days from today. ) } if (testDate.getTime() > today.getTime() + (maxDays * 24 * 60 * 60 * 1000)) { alert( The most likely range for this entry ends + maxDays + days from today. ) } You can also pass hard-wired, four-digit years as parameters. The following branch compares the entered year against the range specified by those passed year values. } else if (minYear && maxYear) { // function called with specific year range parameters if (yyyy < minYear || yyyy > maxYear) { // entered year is outside of range passed from calling function alert( The most likely range for this entry is between the years + minYear + and + maxYear + . If your source data indicates a date outside this range, then enter that date. ) } } else { For year parameters passed as positive or negative year differences, I begin processing by getting the four-digit year for today s date. Then I compare the entered year against the passed range values. If the entry is outside the desired range, an alert reveals the preferred year range within which the entry should fall. But the function does not return any value here because an out-of-range value is not critical for this application. // default year range (now set to (this year - 100) and (this year + 25)) var thisYear = today.getYear() if (thisYear < 100) { thisYear += 1900 } if (yyyy < minYear || yyyy > maxYear) { alert( It is unusual for a date entry to be before + minYear + or after + maxYear + . Please verify this entry. ) } } One more important validation is to make sure that the entered date is valid for the month and year. Therefore, the various date components are passed to functions to check against month lengths, including the special calculations for the varying length of February. Listing 43-15 shows these functions. The alert messages they display are smart enough to inform the user what the maximum date is for the entered month and year.
If you are searching for cheap webhost for your web application, please visit MySQL5 Web Hosting services.

1170 Part V . Putting JavaScript to Work (Web design course)

Wednesday, October 24th, 2007

1170 Part V . Putting JavaScript to Work The parseInt() functions reveal whether any entry is not a number by returning NaN, so I check whether any of the three values is not a number. If so, then an alert signals the formatting problem and supplies acceptable models. if (isNaN(mm) || isNaN(dd) || isNaN(yyyy)) { // there is a non-numeric character in one of the component values alert( The date entry is not in an acceptable format.nnYou can enter dates in the following formats: mmddyyyy, mm/dd/yyyy, or mm-dd-yyyy. ) gField.focus() gField.select() return false } Next, I perform some gross range validation on the month and date to make sure that months are entered from 1 to 12 and dates from 1 to 31. I take care of aligning exact month lengths later. if (mm < 1 || mm > 12) { // month value is not 1 thru 12 alert( Months must be entered between the range of 01 (January) and 12 (December). ) gField.focus() gField.select() return false } if (dd < 1 || dd > 31) { // date value is not 1 thru 31 alert( Days must be entered between the range of 01 and a maximum of 31 (depending on the month and year). ) gField.focus() gField.select() return false } // validate year, allowing for checks between year ranges // passed as parameters from other validation functions Before getting too deep into the year validation, I convert any two-digit year within the specified range to its four-digit equivalent. if (yyyy < 100) { // entered value is two digits, which we allow for 1930-2029 if (yyyy >= 30) { yyyy += 1900 } else { yyyy += 2000 } } var today = new Date() I designed this function to work with a pair of year ranges or date ranges (so many days before and/or after today). If the function is passed date ranges, then the first two parameters must be passed as null. This first batch of code works with the date ranges (because the minYearparameter is null).
We highly recommend you visit web and email hosting services if you need stable and cheap web hosting platform for your web applications.

1169Chapter 43 (Web design service) .Data-Entry Validation Listing 43-14: Primary Date

Tuesday, October 23rd, 2007

1169Chapter 43 .Data-Entry Validation Listing 43-14: Primary Date Validation Function // date field validation (called by other validation functions that specify minYear/maxYear) function isDate(minYear,maxYear,minDays,maxDays) { var inputStr = gField.value To make it easier to work with dates supplied with delimiters, I first convert hyphen delimiters to slash delimiters. The pre-regular expression replaceString() function is the same one described in Chapter 34; it is located in the utility functions part of the validations.js file. // convert hyphen delimiters to slashes while (inputStr.indexOf( - ) != -1) { inputStr = replaceString(inputStr, - , / ) } For validating whether the gross format is OK, I check whether zero or two delimiters appear. If the value contains only one delimiter, then the overall formatting is not acceptable. The error alert shows models for acceptable date-entry formats. var delim1 = inputStr.indexOf( / ) var delim2 = inputStr.lastIndexOf( / ) if (delim1 != -1 && delim1 == delim2) { // there is only one delimiter in the string alert( The date entry is not in an acceptable format.nnYou can enter dates in the following formats: mmddyyyy, mm/dd/yyyy, or mm-dd-yyyy. (If the month or date data is not available, enter 01 in the appropriate location.) ) gField.focus() gField.select() return false } If there are two delimiters, I tear apart the string into components for month, day, and year. Because two-digit entries can begin with zeros, I make sure the parseInt() functions specify base-10 conversions. if (delim1 != -1) { // there are delimiters; extract component values var mm = parseInt(inputStr.substring(0,delim1),10) var dd = parseInt(inputStr.substring(delim1 + 1,delim2),10) var yyyy = parseInt(inputStr.substring(delim2 + 1, inputStr.length),10) For no delimiters, I tear apart the string and assume two-digit entries for the month and day and two or four digits for the year. } else { // there are no delimiters; extract component values var mm = parseInt(inputStr.substring(0,2),10) var dd = parseInt(inputStr.substring(2,4),10) var yyyy = parseInt(inputStr.substring(4,inputStr.length),10) }
Please visit Domain Name Hosting services for high quality webhost to host and run your jsp applications.

1168 Part V . Putting JavaScript to (Web design portfolio) Work

Monday, October 22nd, 2007

1168 Part V . Putting JavaScript to Work Listing 43-13: Date Range Validations // Date Minus 90/Minus 20 function isM90_M20Date() { if (gField.value.length == 0) return true var thisYear = getTheYear() return isDate((thisYear - 90),(thisYear - 20)) } // Date Minus 70/Minus 0 function isM70_0Date() { if (gField.value.length == 0) return true var thisYear = getTheYear() return isDate((thisYear - 70),(thisYear)) } // Date Minus 5/Plus 10 function isM5_P10Date() { if (gField.value.length == 0) return true var thisYear = getTheYear() return isDate((thisYear - 5),(thisYear + 10)) } The naming convention I create for the functions includes the two range components relative to the current date. A letter M means the range boundary is minus a number of years from the current date; P means the range is plus a number of years. If the boundary should be the current year, a zero is used. Therefore, the isM5_P10Date() function performs range checking for boundaries between 5 years before and 10 years after the current year. Before performing any range checking, each function makes sure there is some value to validate. If the field entry is empty, the function returns true. This is fine here because dates are not required when the data is unknown. Next, the functions get the current four-digit year. The code here had to work originally with browsers that did not have the getFullYear()method available yet. Therefore, the Y2K fix described in Chapter 36 was built into the application: function getTheYear() { var thisYear = (new Date()).getYear() thisYear = (thisYear < 100)? thisYear + 1900: thisYear return thisYear } The final call from the range validations is to a common isDate() function, which handles not only the date range validation but also the validation for valid dates (for example, making sure that September has only 30 days). Listing 43-14 shows this monster-sized function. Because of the length of this function, I interlace commentary within the code listing.
If you are in need for cheap and reliable webhost to host your website, we recommend http web server services.