Special Edition UsingJavascript Mcfedries download pdf https://ebookultra.com/download/special-edition-using-javascript- mcfedries/ Visit ebookultra.com today to download the complete set of ebook or textbook!
2.
We have selectedsome products that you may be interested in Click the link to download now or visit ebookultra.com for more options!. DHTML Utopia Modern Web Design Using JavaScript DOM 1st edition Edition Stuart Langridge https://ebookultra.com/download/dhtml-utopia-modern-web-design-using- javascript-dom-1st-edition-edition-stuart-langridge/ Pro Android Web Apps Develop for Android Using HTML5 CSS3 JavaScript 1st Edition Damon Oehlman https://ebookultra.com/download/pro-android-web-apps-develop-for- android-using-html5-css3-javascript-1st-edition-damon-oehlman/ IPhone 3G portable genius Paul Mcfedries https://ebookultra.com/download/iphone-3g-portable-genius-paul- mcfedries/ Microsoft Windows Vista Unleashed Paul Mcfedries https://ebookultra.com/download/microsoft-windows-vista-unleashed- paul-mcfedries/
3.
The Essential Guideto HTML5 Using Games to Learn HTML5 and JavaScript 1st Edition Jeannie Meyer (Auth.) https://ebookultra.com/download/the-essential-guide-to-html5-using- games-to-learn-html5-and-javascript-1st-edition-jeannie-meyer-auth/ iPad Portable Genius 1st Edition Paul Mcfedries https://ebookultra.com/download/ipad-portable-genius-1st-edition-paul- mcfedries/ Excel 2010 Simplified 1st Edition Paul Mcfedries https://ebookultra.com/download/excel-2010-simplified-1st-edition- paul-mcfedries/ What Really Works in Special and Inclusive Education Using evidence based teaching strategies 1st Edition David Mitchell https://ebookultra.com/download/what-really-works-in-special-and- inclusive-education-using-evidence-based-teaching-strategies-1st- edition-david-mitchell/ Stepping Out Using Games and Activities to Help Your Child With Special Needs 1st Edition Sarah Newman https://ebookultra.com/download/stepping-out-using-games-and- activities-to-help-your-child-with-special-needs-1st-edition-sarah- newman/
5.
Special Edition UsingJavascript Mcfedries Digital Instant Download Author(s): McFedries, Paul ISBN(s): 9780789725769, 0789725762 Edition: Special Ed File Details: PDF, 10.95 MB Year: 2001 Language: english
6.
Contents at aGlance I Getting Started with JavaScript 1 An Overview of JavaScript 11 2 Creating Your First Scripts 17 II Programming Fundamentals 3 Understanding Variables 39 4 Working with Functions 51 5 Building JavaScript Expressions 71 6 Controlling Your Code I: Testing 101 7 Controlling Your Code II: Looping 111 8 Working with Objects 127 9 Handling Events 141 10 Working with Arrays 165 11 Interacting with the User 197 12 Debugging Your Code 207 III Basic Objects 13 Dealing with Dates and Times: The Date Object 223 14 Working with Numbers: The Math Object 243 15 Manipulating Text: The String Object 265 16 Controlling the Browser: The Navigator Object 297 IV Working with Browser Windows 17 Understanding the Window Object 319 18 Opening, Moving, and Sizing Windows 337 19 JavaScript Surfing: The Location and History Objects 361 20 Manipulating Frames 377 21 JavaScript Project: Setting Up a Password-Protected Page 405 V Working with the Document Object 22 Understanding the Document Object 427 23 Programming Links, Anchors, and Image Maps 447 24 Working with Images and Mouseovers 467 25 Creating and Using Cookies 495 26 JavaScript Project: Creating a Navigation Tree 523 VI Working with Forms 27 Understanding the Form Object 549 28 Programming Form Fields 569 29 Performing Form Validation 605 30 JavaScript Project: Creating a Shopping Cart 637 VII Working with Dynamic HTML 31 A Brief Overview of Dynamic HTML 673 32 Version 5 DHTML: The W3C’s Document Object Model 683 33 Version 4 DHTML: Proprietary Object Models 721 34 Cross-Browser Solutions: Detection and Generic Functions 731 35 Cross-Browser DHTML Examples 769 VIII Appendixes A JavaScript Tools for Debugging Scripts 831 B JavaScript Reserved Words and Keywords 849 C Working with Regular Expressions 853 Index 873 Using JavaScript Paul McFedries 201 W. 103rd Street Indianapolis, Indiana 46290
Contents Introduction 1 What YouNeed to Know 3 How the Book Is Structured 3 Where’s the Code? 6 Conventions Used in This Book 6 I Getting Started with JavaScript 1 An Overview of JavaScript 11 JavaScript: Controlling the Machine 12 What Is a Programming Language? 12 Is JavaScript Hard to Learn? 14 What Can You Do with JavaScript? 14 What Can’t You Do with JavaScript? 15 Cross-Browser Concerns 16 2 Creating Your First Scripts 17 What Do You Need to Get Started? 18 The Text Editor 18 The Browser 19 Basic Script Construction 20 The <script> Tag 20 Where Do You Put the Tag? 22 Example #1: Displaying a Message to the User 22 More JavaScript Examples 24 Example #2: Writing Data to the Page 24 Example #3: A JavaScript Function 26 Example #4: Handling a JavaScript Event 28 Adding Comments to Your Code 29 Creating External JavaScript Files 30 Debugging and Troubleshooting Script Problems 32 II Programming Fundamentals 3 Understanding Variables 39 What Is a Variable? 40 Declaring a Variable 40 Storing a Value in a Variable 41 Using Variables in Statements 42 Naming Variables: Rules and Best Practices 44 Rules for Naming Variables 44 Ideas for Good Variable Names 44 Understanding Literal Data Types 45 Working with Numeric Literals 46 Working with String Literals 47 Understand Boolean Literals 49 4 Working with Functions 51 What Is a Function? 52 The Structure of a Function 52 Where Do You Put a Function? 53 Using a Function 54 Passing Values to Functions 56 Returning a Value from a Function 60 Understanding Local Versus Global Variables 61 Working with Local Scope 62 Working with Global Scope 64
9.
Using Recursive Functions65 Debugging and Troubleshooting Script Problems 68 Avoiding Infinite Recursion 68 5 Building JavaScript Expressions 71 What Is an Expression? 72 Understanding Expression Structure 72 Building Numeric Expressions 73 A Quick Look at the Arithmetic Operators 73 Using the Addition (+) Operator 74 Using the Increment (++) Operator 75 Using the Subtraction and Negation (-) Operators 76 Using the Decrement (--) Operator 78 Using the Multiplication (*) Operator 79 Using the Division (/) Operator 79 Using the Modulus (%) Operator 80 Using the Arithmetic Assignment Operators 81 Building String Expressions 82 Building Comparison Expressions 84 The Comparison Operators 84 Using the Equal (==) Operator 85 Using the Not Equal (!=) Operator 85 Using the Greater Than (>) Operator 86 Using the Less Than (<) Operator 86 Using the Greater Than Or Equal (>=) Operator 86 Using the Less Than or Equal (<=) Operator 86 The Comparison Operators and Data Conversion 87 Using the Identity (===) Operator 88 Using the Non-Identity (!==) Operator 88 Special Edition Using JavaScript iv Using Strings in Comparison Expressions 88 Using the Conditional (?:) Operator 89 Building Logical Expressions 91 The Logical Operators 91 Using the AND (&&) Operator 91 Using the OR (||) Operator 92 Using the NOT (!) Operator 93 Advanced Notes On the && and || Operators 94 Understanding Operator Precedence 96 The Order of Precedence 96 Controlling the Order of Precedence 97 6 Controlling Your Code I: Testing 101 Using if() to Make True/False Decisions 102 Using if()...else to Handle a false Result 103 Making Multiple Decisions 105 Using the AND (??) and OR (||) Operators 105 Nesting Multiple if() Statements 106 Using the switch() Statement 107 Debugging and Troubleshooting Script Problems 110 7 Controlling Your Code II: Looping 111 What Is Looping and Why Does Your Code Need It? 112 Using while() Loops 113 Using for() Loops 115 Using do...while() Loops 118
10.
Controlling Loop Execution:break and continue 120 Exiting a Loop: Using the break Statement 120 Bypassing Loop Statements: Using the continue Statement 123 Debugging and Troubleshooting Script Problems 124 8 Working with Objects 127 What Is an Object? 128 The JavaScript Object Hierarchy 129 The Window Object and Its Hierarchy 129 Other Built-In JavaScript Objects 131 Manipulating Object Properties 132 Referencing a Property 132 Some Objects Are Properties 134 Changing the Value of a Property 134 Using for()...in to Loop Through Object Properties 135 Working with Object Methods 137 Activating a Method 138 Using with() to Shorten Object Expressions 139 9 Handling Events 141 Understanding Events 142 Constructing Event Handlers 142 Step 1: Add the Event Handler Setup Attribute 142 Step 2: Set the Value of the Attribute 143 Setting Up Event Handlers as Object Properties 145 Using this to Refer to an Event’s Object 146 v Contents Using the JavaScript Events 147 Handling When an Object Gets and Loses the Input Focus 148 The Change Event: Handling Modified Form Data 152 Handling Keyboard Events 153 Handling Mouse Events 156 Debugging and Troubleshooting Script Problems 163 10 Working with Arrays 165 What Is an Array? 166 Declaring an Array 167 Populating an Array with Data 168 Declaring and Populating an Array at the Same Time 170 Using a Loop to Populate an Array 170 Using a Loop to Work with Array Data 172 Creating Multidimensional Arrays 173 Using the Array Object 176 The Array Object’s Properties 176 The Array Object’s Methods 178 Debugging and Troubleshooting Script Problems 189 11 Interacting with the User 197 Why Interact at All? 198 Displaying Messages Using the alert() Method 198 How the Alert Boxes Appear in Different Browsers 199 Asking Questions Using the confirm() Method 201 Getting Input Using the prompt() Method 202 How the Prompt Boxes Appear in Different Browsers 203
11.
Debugging and TroubleshootingScript Problems 205 Don’t Overdo It 205 12 Debugging Your Code 207 What Is a Bug? 208 Understanding the Various Types of Errors 208 Syntax Errors 208 Runtime Errors 209 Logic Errors 209 A Debugging Strategy 210 Look for the Top 10 Most Common Errors 210 Display Expression Values 212 Display the Values of Object Properties 216 More Debugging Strategies 217 The Top 10 Most Common JavaScript Error Messages 217 III Basic Objects 13 Dealing with Dates and Times: The Date Object 223 Understanding JavaScript Dates 224 Arguments Used with the Date Object 224 Working with the Date Object 225 Specifying the Current Date and Time 225 Specifying Any Date and Time 225 Extracting Information About a Date 227 Converting getMonth() into a Month Name 230 Converting getDay() into a Day Name 232 Special Edition Using JavaScript vi Setting the Date 233 Determining the Day of the Week for Any Date 234 Performing Date Calculations 236 Determining a Person’s Age 236 Performing Complex Date Calculations 237 Calculating an Age In Weeks, Days, and So On 237 Calculating the Days Between Two Dates 239 Other Date Object Methods 240 14 Working with Numbers: The Math Object 243 How JavaScript Handles Numbers 244 A Quick Look at the Number Object 245 Converting Between Strings and Numbers 246 The parseInt() Function 247 The parseFloat() Function 247 The eval() Function 248 The Math Object 249 Properties of the Math Object 249 Methods of the Math Object 250 Rounding Numbers 251 Rounding a Number to a Specified Number of Decimals 252 Performing Financial Calculations 253 Generating Random Numbers 260 15 Manipulating Text: The String Object 265 Strings and the String Object 266 Determining the Length of a String 266
12.
String Object Methods268 Formatting Strings 268 Finding Substrings 271 Methods That Extract Substrings 274 A Few More String Object Methods 281 Programming a Library of Common String Functions 283 Extracting Characters from the Left: The left() Method 284 Extracting Characters from the Right: The right() Method 284 Trimming Extra Spaces: The trim() Method 285 Converting a String to Title Case: The titleCase() Method 287 Replacing One Substring with Another 289 Formatting a Number with Thousands Separators 291 Padding a Number with Zeros 293 16 Controlling the Browser: The Navigator Object 297 About the Navigator Object 298 Determining the User’s Browser Information 304 Determining the Browser Name 304 Determining the Browser Version 305 Understanding the userAgent Property 307 Determining the Browser Name, Part 2 309 Determining the Operating System 311 Putting It All Together: The Browser Sniffer 313 vii Contents IV Working with Browser Windows 17 Understanding the Window Object 319 Revisiting the Window Object Hierarchy 320 Referencing the Window Object 321 Window Dimensions and the Screen Object 322 Displaying Messages In the Status Bar 325 Displaying a Custom Link Message 325 Setting Up a Default Status Bar Message 327 Working with JavaScript Timeouts and Intervals 328 Using a Timeout to Perform a Future Action Once 328 Using an Interval to Perform a Future Action Repeatedly 331 Emulating setInterval() with setTimeout() 332 Creating a Scrolling Status Bar Message 333 18 Opening, Moving, and Sizing Windows 337 Opening a Window 338 The JavaScript Way: The window.open() Method 338 The Simplest window.open() Method Syntax 338 Controlling the Size and Position of the New Window 341 Displaying Toolbars, Menu Bars and Other Window “Chrome” 344 Referencing the Page That Opened a Window 347 Closing a Window 349
13.
Moving a Window351 Moving a Window to a Specific Spot 351 Moving a Window by a Specified Amount 355 Resizing a Window 359 Resizing a Window to a Specific Size 359 Resizing a Window by a Specified Amount 360 19 JavaScript Surfing: The Location and History Objects 361 Surfing Under Script Control 362 Using the Location Property to Change the Displayed Page 362 Location Object Properties: 365 Surfing Using the Location Object’s Properties 365 Using search to Pass a Parameter to Another Web Page 369 Methods of the Location Object 372 Programmed Surfing with the History Object 374 Methods of the History Object 375 20 Manipulating Frames 377 Understanding Frame References 378 Parent-to-Child References 379 Child-to-Parent References 380 Child-to-Child References 381 Referencing Nested Frames 383 The top Property 391 Programming Frames 392 Loading a Page into a Frame 392 Updating Multiple Frames with One Link 393 Navigating to the Top and Bottom of a Frame 394 Special Edition Using JavaScript viii ”Deframing” a Page: Getting Out of Someone Else’s Frames 395 ”Reframing” a Page: Putting a Child Page Back Inside a Frameset 397 Working with Another Frame’s Variables and Functions 399 Synchronizing Frame Loading 401 21 JavaScript Project: Setting Up a Password- Protected Page 405 Web Page Security Issues 406 A First Attempt at Password Protection 406 Prompting for a Password 406 Converting the Password and Filename into Codes 408 The First Real Solution: A Trick for Hiding the Password 411 Trying Out the Trick 411 Making the Script a Bit More User- Friendly 412 Solving the “404 Not Found” Problem 413 Handling Multiple Users and Passwords 418 Debugging and Troubleshooting Script Problems 423 V Working with the Document Object 22 Understanding the Document Object 427 Structure of the Document Object 428 Properties of the Document Object 428 Changing Document Colors 430 Using Color Names 431 Using RGB Values 434
14.
Methods of theDocument Object 437 Writing Data to the Page 437 Writing to a Document at Startup 438 Writing Browser-Specific Code 440 Writing to a Document In Another Window 442 23 Programming Links and Anchors 447 Working with the Link Object 448 Using Functions in Place of URLs in a Link 448 Referencing a Link Object 449 Link Object Properties 449 Link Object Events 455 Working with the Anchor Object 462 Referencing an Anchor Object 462 Anchor Object Properties 462 24 Working with Images and Mouseovers 467 Working with the Image Object 468 Referencing an Image Object 468 Properties of the Image Object 469 Changing the Image Source 470 Cycling Through a Series of Images 470 Creating a “Running” Digital Clock 472 Preloading Images 475 Preloading Images for Animation 476 Loading an Image into a Custom-Sized Window 479 Handling Image Object Events 481 Creating Mouseover Effects 487 The Simplest Mouseover 487 Preloading Mouseover Images 490 Using a Text Link Mouseover to Change an Image 492 ix Contents 25 Creating and Using Cookies 495 Saving State: The Need for Truly Global Variables 496 What is a Cookie? 496 Advantages of Cookies 497 Disadvantages of Cookies 498 Setting Cookie Data 499 The Simplest Case: Setting the Cookie Name and Value 499 Getting the Cookie Value 500 Handling Multiple Cookies 501 Adding an Expiration Date 504 Specifying the Path 505 Setting Other Cookie Data 506 Handling All the Cookie Parameters 507 Deleting a Cookie 510 Advanced Cookie Operations 511 Storing Multiple Values in a Single Cookie 511 Encoding Cookie Values 513 Encrypting Cookie Values 516 Debugging and Troubleshooting Script Problems 520 Building a Stronger Key 520 26 JavaScript Project: Creating a Navigation Tree 523 The Need for Navigation 524 Stage 1: Designing and Creating the Menu Objects 525 Stage 2: Writing a Basic Menu 530 Stage 3: Expanding and Collapsing the Menu Items 534 Stage 3: Expanding and Collapsing the Menu Items 535 Stage 4: Adding Graphics and Other Interface Enhancements 538
15.
VI Working withForms 27 Understanding the Form Object 549 Structure of the Form Object 550 Referencing a Form Object 550 Form Object Properties 551 Understanding Form Fields 551 Referencing a Form Field 552 Common Form Field Properties 553 Looping Through Form Fields 554 Passing Form and Field Objects to a Function 555 Programming Buttons 556 Accepting or Rejecting a Submit 556 Accepting or Rejecting a Reset 559 Using a Button to Process Other Code 560 Forcing a Submit or Reset: The sub- mit() and reset() Methods 562 Restricting the Number of Form Submissions 564 28 Programming Form Fields 569 Now For Some Real Form Programming 570 Programming Text Fields 570 The Text Object 570 The Textarea Object 571 The Password Object 572 The FileUpload Object 572 The Hidden Object 573 Getting a Text Field Value 574 Setting a Text Field Value 576 A More Ambitious Example: A Mortgage Calculator 578 Making a Text Field Read-Only 582 Special Edition Using JavaScript x Programming Checkboxes 585 Getting the Checkbox State 586 Setting the Checkbox State 586 Using a Checkbox to Disable Form Fields 587 Controlling the Number of Activated Checkboxes 588 Programming Radio Buttons 590 Referencing Radio Buttons 591 Getting a Radio Button State 592 Setting the Radio Button State 594 Programming Selection Lists 594 The Select Object 595 The Option Object 595 Referencing an Option In a Selection List 596 Getting the Currently Selected List Option 596 Getting Multiple Selected Options 597 Setting the Selected List Option 598 Creating a Navigation List 599 Modifying a List On-the-Fly 601 29 Performing Form Validation 605 The Need for Browser-Based Validation 606 Displaying the Form Data for Confirmation 607 Making Form Fields Mandatory 612 First, a Trick: Adding Custom Properties to an Object 613 Checking for Empty Fields 615 Checking for Fields that Contain Only Whitespace Characters 617 Validating the Field Data Type 618 Checking for Alphabetic Data 619 Checking for Integer Data 620 Checking for Signed Integer Data 621 Checking for Floating-Point Data 622
16.
Checking for InvalidData 624 Checking a Numeric Range 625 Removing Extraneous Characters from a Field 628 Checking Alphanumeric Data Against a Mask 631 Checking an E-mail Address 634 30 JavaScript Project: Creating a Shopping Cart 637 Making the Move to E-Commerce 638 Creating the Project Data 638 Designing the Data 638 Creating the Database Using JavaScript 640 An Overview of the Project 644 Customizing This Project for Your Own Use 646 Setting Up Your Store 646 Understanding the Shopping Cart 649 Using the Shopping Cart 650 Creating the Cart On-the-Fly Using JavaScript 650 The Shopping Cart’s Buttons 653 Understanding the Personal Details Page 655 Initializing the Personal Details Page 658 Validating the Personal Details 660 Understanding the Credit Card Details Page 662 Writing the Invoice 662 Initializing and Validating the Credit Card Details 666 xi Contents VII Working with Dynamic HTML 31 A Brief Overview of Dynamic HTML 673 The Need for Truly Dynamic Pages 674 Dynamic HTML: Scripting for Control Freaks 674 DHTML Today: A Mess! 675 The Big DHTML Picture 676 An Introduction to the Document Object Model 676 The DOM: A Hierarchy of Nodes 679 32 Version 5 DHTML: The W3C’s Document Object Model 683 Dealing with Nodes in the DOM 684 Specifying a Node 684 Getting Node Information 687 Working with Elements 688 Working with Tag Attributes 691 Working with Styles 694 Working with Text Nodes 697 An Example: A Text Fader 699 Changing the Structure of the Document Hierarchy 704 Creating an Element 704 Creating a Text Node 705 Appending a Child Node 705 Inserting a Child Node 709 Replacing a Child Node 713 Cloning a Child Node 715 Removing a Child Node 718
17.
33 Version 4DHTML: Proprietary Object Models 721 The Pre-DOM Dark Ages 722 The Internet Explorer 4 DHTML Document Object Model 722 Specifying Elements 723 Getting and Setting Tag Attribute Values 725 Other DHTML DOM and W3C DOM Equivalents 725 Working with Text 726 The Netscape Navigator 4 Document Object Model 727 Programming Layers 728 34 Cross-Browser Solutions: Detection and Generic Functions 731 Cross-Browser Issues 732 What Does “Cross-Browser” Mean? 732 Handling Different Browsers 733 Detecting the User’s Browser 735 Using Browser Version Detection 735 Using Object Detection 737 Creating a Custom Object Front-End 739 Examining the Object 739 Cross-Browser Style References 741 Creating the Custom Objects 742 Using a Custom Object 746 Defining the Custom Object Methods 746 Other Cross-Browser Functions 763 Special Edition Using JavaScript xii 35 Cross-Browser DHTML Examples 769 Some Notes Before We Begin 770 Cross-Browser DHTML Text Examples 770 A Cross-Browser Tooltip 770 Scrolling Text Horizontally 773 Scrolling Text Vertically 785 Cross-Browser DHTML Image Examples 794 Creating a Logo That Stays in Place as the User Scrolls 794 Setting Up a Cross-Browser DHTML Slide Show 796 VIII Appendixes A JavaScript Tools for Debugging Scripts 831 Using the Microsoft Script Debugger 832 Pausing a Script 832 Stepping Through a Script 836 Monitoring Script Values 837 Executing Statements in the Command Window 838 Using Netscape’s JavaScript Debugger 838 Pausing a Script 839 Stepping Through a Script 844 Monitoring Script Values 845 B JavaScript Reserved Words and Keywords 849 JavaScript Reserved Words 850 JavaScript Keywords 850
18.
C Working withRegular Expressions 853 Pattern Matching the String Object Way 854 Pattern Matching the Regular Expression Way 854 Building Regular Expressions 854 Special Symbols Used in Regular Expressions 855 Summarizing the Regular Expression Symbols 863 Example: Matching an E-mail Address 864 xiii Contents Using Regular Expressions in Your JavaScript Code 865 Checking the Pattern Using the test() Method 866 The search() Method 868 The replace() Method 870 Index 873
19.
Special Edition UsingJavaScript xiv About the Author Paul McFedries is the president of Logophilia Limited, a technical writing company. He has been programming since he was a teenager in the mid-1970s, has programmed every- thing from mainframes to desktops to bar code scanners, and has worked with many differ- ent languages, including Fortran, assembly language, C++, and of course, JavaScript. Paul has written over three dozen books that have sold more than two million copies worldwide, including Windows 98 Unleashed, VBA for Office 2000 Unleashed, The Complete Idiot’s Guide to Windows Me, and The Complete Idiot’s Guide to Creating a Web Page. Paul encourages all readers to drop by his Web site: www.mcfedries.com If you have any comments about the book, please send them to the following address: UsingJavaScript@mcfedries.com Note, however, that due to time constraints, Paul regrets that he cannot provide JavaScript technical support or custom programming.
20.
Dedication To Gypsy Acknowledgments Robert Pirsig,in Zen and the Art of Motorcycle Maintenance, wrote that “a person who sees Quality and feels it as he works, is a person who cares.” If this book is a quality product (and I immodestly think that it is), it’s because the people at Que editorial cared enough to make it so. So a round of hearty thanks is in order for all the good people who worked on this project. You’ll find them all listed near the front of the book, but I’d like to extend special kudos to the folks I worked with directly: Dean Miller, Development Editor Sean Dixon, Project Editor Heather McNeill, and Technical Editor Jim O’Donnell. And, last but proverbially not least, I’d like to thank all the thousands of readers of my Web page book who sent me their JavaScript suggestions and experiences. I couldn’t have written this book without you.
2 Introduction When theWeb first came to the attention of the world’s non-geeks back in the mid-1990s, the vastness and variety of its treasures were a wonder to behold. However, it didn’t take long before a few courageous and intrepid souls dug a little deeper into this phenomenon and discovered something truly phenomenal: they could make Web pages, too! Why was that so amazing? Well, think back to those old days and think, in particular, of what it meant to create what we now call content. Think about television shows, radio pro- grams, magazines, newspapers, books, and the other media of the time. The one thing they all had in common was that their creation was a decidedly uncommon thing. It required a team of professionals, a massive distribution system, and a lot of money. The Web appeared to change all that because learning HTML was within the grasp of any- body who could feed himself, it had a built-in massive distribution system (the Internet), and it required little or no money. For the first time in history, content was democratized and was no longer defined as the sole province of governments and mega-corporations. Then reality set in. People soon realized that merely building a Web site wasn’t enough to attract “eyeballs,” as the marketers say. A site had to have interesting, useful, or fun content, or people would stay away in droves. Not only that, but this good content had to be combined with a solid site design, which meant that Web designers needed a thorough knowledge of HTML and good design skills. But, alas, eventually even all that was not enough. To make their Web sites work with the world’s different browsers, to make their sites easy to navigate, and to give their sites those extra bells and whistles that surfers had come to expect, something more than content, HTML, and design was needed. That missing link was JavaScript. What we’ve all learned the hard way over the past few years is that you simply can’t put together a world-class Web site unless you have some scripting prowess in your site design toolkit. You need to know how to script your way out of the basic problems that afflict most sites, and how to use scripts to go beyond the inherent limitations of HTML. And it isn’t enough just to copy the generic scripts that are available on the Web and paste them into your pages. First of all, most of those scripts are very poorly written, and second of all they invariably need some customization to work properly on your site. My goal in this book is to show you how to create your own JavaScript programs that are suited to your site and your content. My aim is to show you that JavaScript isn’t hard to learn, and that even the most inveterate non-programmer can learn how to put together scripts that will amaze their friends (and themselves).
23.
3 How the Bookis Structured What You Need to Know This book is not a primer on creating Web pages or on using the World Wide Web. This is a JavaScript book, pure and simple. This means I assume you already know the following: ■ How to operate a basic text editor, and how to get around the operating system and file system on your computer. ■ How to use your Web browser. ■ The basic HTML tags and attributes, particularly those that comprise the HTML 4 standard. ■ The basic style sheet rules and attributes, particularly those that comprise the Cascading Style Sheets 2 standard. “I’ve Never Programmed Before!” If you’ve never done a stitch of computer programming before, even if you’re not quite sure what programming really is, don’t worry about it for a second because I had you in mind when I wrote this book. For too many years programming has been the property of “hack- ers” and other technowizards. That made some sense because the programming languages they were using—with bizarre names such as C++ and Fortran—were exceedingly difficult to learn, and even harder to master. JavaScript, however, is different. It’s nowhere near as hard to learn as those for-nerds-only languages. I honestly believe that anyone can become a savvy and successful JavaScript pro- grammer, and this book is, I hope, the proof of that assertion. Just follow along, examine my scripts carefully (particularly those in the first few chapters), and practice what you learn, and you will master JavaScript. “I Have Programmed Before!” What if you’ve done some programming in the past? For example, you might have dipped a toe or two in the JavaScript waters already, or you might have dabbled with Basic, Visual Basic, or some other language. Will this book be too basic for you? No, not at all. My other main goal in this book is to provide you with a ton of examples of truly useful scripts that you can customize and incorporate into your own site. The book’s first few chapters start slowly to avoid scaring off those new to this programming business. But once we get past the basics, I introduce you to lots of great techniques and tricks that will take your pro- gramming skills to a higher level. How the Book Is Structured If you’re looking for lots of JavaScript history, theory and long-winded explanations of con- cepts, I’m sorry but you won’t find it here. My philosophy throughout this book is “It’s the
24.
4 Introduction code, stupid!”I explain what needs to be explained and then I move on without further ado (or without any ado at all) to examples and scripts that do more to illuminate a concept that any verbose explanations I could muster (and believe me, I can muster verbosity with the best). How you approach this book depends on your current level of JavaScript expertise (or lack thereof): ■ If you’re just starting out, begin at the beginning with Chapter 1 and work at your own pace sequentially through to Chapter 12. This will give you all the knowledge you need to pick and choose what you want to learn throughout the rest of the book. ■ If you know a bit of JavaScript already, you can probably get away with taking a fast look at Chapter 2, and then working quickly through the material in Part II. You’ll then be ready to branch out and explore the rest of the book as you see fit. ■ If you’re a relatively experienced JavaScript programmer, you might want to first skim through Part II. I’ve got a few tricks in there that you might find interesting. After that, feel free to consider the rest of the book a kind of scripting smorgasbord that you can sample as your programming taste buds dictate. Just so you know what to expect and to help you plan your forays into the book, the next few sections summarize the content of the book’s eight parts. Part I—Getting Started with JavaScript This short section includes just two chapters. Chapter 1, “An Overview of JavaScript,” gives you the big JavaScript picture and explains why JavaScript is such a fundamental tool for Web designers. If you’re new to programming, you’ll appreciate my explanation of just what a programming language is. Chapter 2, “Creating Your First Scripts,” gets down to the coding brass tacks by showing you how to add scripts to your pages and by taking you step-by-step through the process of creating a few simple scripts. Part II—Programming Fundamentals Part II, with ten chapters in all, is the longest section of the book. That’s appropriate because the aim of these chapters is to provide you with a solid JavaScript foundation. And if there’s a single secret to becoming a successful programmer it’s this: Learn the basics well. The more comfortable you are with things like variables, functions, and expressions (the topics of Chapters 3 through 5), the easier time you’ll have grasping higher-level topics. Other chapters in Part II cover things such as controlling your JavaScript code, objects (one of the most important JavaScript concepts), events, and arrays. I also show you some impor- tant techniques for getting your scripts to interact with your site visitors and how to trouble- shoot (debug in programming lingo) script problems.
25.
5 How the Bookis Structured Part III—Using JavaScript’s Basic Objects The four chapters in Part III tackle four indispensable JavaScript objects. The Date object (Chapter 13, “Dealing with Dates and Times: The Date Object”) enables you to work with dates and times. For example, you can create simple JavaScript clocks, you can figure out the number of days from now until some date in the future, and lots more. The Math object (Chapter 14, “Working with Numbers: The Math Object”) enables you to perform lots of interesting calculations, including doing useful financial calculations such as comput- ing loan payments and figuring out the future value of an investment. The String object (Chapter 15, “Manipulating Text: The String Object”) is one of the most commonly used JavaScript objects because your scripts work with text all the time. Finally, the Navigator object (Chapter 16, “Controlling the Browser: The Navigator Object”) enables you to fig- ure out some interesting information about the browser that a site visitor is using (such as the name of the browser, its version number, and what operating system it’s running on). Part IV—Working with Browser Windows Your scripting moves into a higher gear here in Part IV. That’s because these five chapters show you how to use JavaScript to manipulate the user’s actual browser window. You’ll learn how to display messages in the status bar, how to get the dimensions of the window, how to open new windows, and how to close them when they’ve served their purpose. I also show you how to send the browser to a specified page and how to fiddle with frames via JavaScript. I close with a full-chapter project that shows you various methods for using JavaScript to set up a password-protected Web page. Part V—Working with the Document Object The Document object refers to the Web page that’s displayed in the browser, and the five chapters in Part V show you a fistful of ways to work with these documents. You learn how to change document colors, work with links, and even how to write tags and text to a docu- ment, on-the-fly! If you can’t wait to learn how to do those fun “mouseover” effects that are featured on many sites, then Chapter 24, “Working with Images and Mouseovers,” is the place to go. I also show you how to work with cookies, and I close with another project: a navigation “tree” that makes it easy for visitors to get from here to there on your site. Part VI—Working with Forms One of the most common uses for JavaScript code is to work with forms, and that’s just what you’ll learn in the four chapters that comprise Part VI. I show you how to control form submission from your code and how to work with all the field types (text boxes, check boxes, radio buttons, select lists, and so on). There’s also an entire chapter on form valida- tion that shows you how to do things such as ensure a field is filled in, check for valid phone numbers and email addresses, and lots more. I also take you through a complete shopping cart script.
Dann ersteig' icheinen Berg und horche Neu gestärkt der Gottheit heilgem Ruf'; Er giebt jenen Sonnen Licht und Strahlen, Er erweckt aus Nacht die todte Welt. Und enthüllt die Frucht aus festen Schalen, Schmilzt den hohen Schnee vom Saatenfeld. O! wohl möchte ich auf deinen Bergen Meiner Tage letzten einmal sehn! Möchte dort, beim Lied der ersten Lerchen, Einst hinab zu meinen Vätern gehn; In der Heimath Grabe schlaf' ich süsser, Da noch weint man eine Thräne mir! – Doch der schwache Mensch weiß nichts gewisser Leider, als: daß er nichts wisse hier! –
28.
Fußnoten 1 Merkels Erdbeschreibungvon Sachsen wird hier rühmlichst ausgenommen. Auch ist meine Absicht ganz verschieden von dem Zwecke jenes Werkes. – D. Lehmanns Schauplatz entspricht derselben, aber er enthält zu viel Aberglauben, ist zu weitschweifig, und sehr selten zu bekommen. 2 Daher erinnere man sich, daß ich nicht für Erzgebirger schreibe. Ihnen diene dieses zur Beherzigung, um voreilige Urtheile zu unterdrücken! – 3 Alle Erzgebirger mögen hier an den Edlen von Bodenhausen bei Leipzig denken!! – Er hat viele hundert Scheffel Getraide den armen Erzgebirgern geschenkt. – 4 So nennt man in der dasigen Gegend die Unterjugel; in den ältern Zeiten wurde daselbst blaue Farbe gemacht, daher stammet diese Benennung. 5 Eine bekannte Silbergrube. 6 Man sagt gewöhnlich Berg, und versteht darunter Haus, Bier und Gesellschaft. Wenn der Johanngeorgenstädter also sagt: ich gehe auf den Berg, – so heißt dieses: ich gehe zum böhmischen Biere. – 7 Halde nennt der Bergmann die vor den Stollen und Gruben aufgeschütteten großen Haufen des kleinern und größern Gesteins, welches herausgeschafft worden ist. 8 So heißt die Oeffnung eines mannshohen, schmalen unterirrdischen Ganges, den man Stolln nennt. 9 Auf Halden darf man sie nicht schütten, dieses kann das Bergamt wegen besonderer Gesetze nicht gestatten. 10 Ueber die Maschinerie eines solchen Pochwerks belehre man sich aus bergwissenschaftlichen Büchern, weil eine solche Beschreibung nicht hierher gehört. – 11 Ueberhaupt verändert sich im Gebirge die Gegend fast mit jedem Schritte, den man gethan hat; immer neue Aussichten, und Gegenstände.
29.
12 So werdendie Wege genannt, welche zu den Zechen führen. Da im Winter oft wegen des hohen Schnees und im Sturme sonst sich die Bergleute verirrten und manche vielleicht gar erfroren: so ließ das Bergamt Alleen an diesen Steigen anpflanzen, welche im Winter den früh oder Abends anfahrenden Bergleuten zur Leitung dienen sollten. Sie nehmen sich sehr gut aus und dienen zur Verschönerung der Gegend. Leider wurden sie von ruchlosen Menschen verletzt und beschädigt, daß mehrere Bäume eingegangen sind. – 13 So heißt derjenige Ofen, wo der rohe Eisenstein zuerst geschmelzt wird. Dieser Ofen ist gewöhnlich von ziemlicher Höhe; der gepochte Eisenstein wird oben hinein geschüttet, wo eine fürchterliche Gluth herrscht, welche zwei Blasebälge, von dem Wasser getrieben, anfachen. Des Nachts erleuchtet die Flamme, welche ellenhoch aus diesem Ofen weht, den Himmel und die Gegend, welches einen schauerlichen Anblick gewährt und an die Vulkane Italiens erinnert. 14 Der Krieg unterbrach den Bau; vermuthlich wird er fortgesetzt werden. 15 Ich weiß nicht, ob er noch lebt; im Jahre 1806. lebte er noch. 16 So ist der eine Name erklärt. Auch sagt man in der Gegend umher nur schlechtweg: »'s Felsel.« Warum man auch Teufelskanzel sage, will ich nachher erklären. 17 Ich habe mich sehr gewundert über den größten Theil der obergebirgischen Jugend, in Rücksicht des flinken und geschwinden Kletterns auf Felsen und steile Berge. Die Gemsenjäger in Savoyen müssen nicht geschickter und schneller die Felsen ersteigen, als manche Knaben im obern Erzgebirge. 18 Seit einigen Jahren wird viel Holz abgeschlagen, wodurch dieses schöne Thal lichter und freundlicher und die Luft selbst weit milder wird; denn in jenen Forsten herrscht auch in den heißesten Tagen eine auffallende Kälte. 19 Freilich wird oft sehr gewüstet; aber ich würde ein schönes Capital haben, wenn ich alles das Holz bezahlt erhielt, was dort verfault. – 20 So nennt man diese Felsen, weil man den Steinmassen, die auf einander geschichtet scheinen, eine Aehnlichkeit mit einem beliebten Backwerk, – Hefenklößen – gefunden hat. An hohen
30.
Festtagen, vorzüglich anFastnacht werden sie in dasiger Gegend häufig gebacken. 21 Wenn ich nicht irre, gehören diese Häuser zum Hammerwerke Breitenhof. 22 Rechts drüben nämlich liegt eine Eisensteingrube, der Schimmel genannt, bei welcher eine große Wasserkunst im Gange ist, man sieht auch die Gestänge derselben deutlich. – Wenn nun das große Rad, welches die ganze Maschine in Bewegung setzt, einmal um sich herum ist, so tönt jedesmal die kleine Glocke; diese Einrichtung hat den Nutzen: daß man gleich hören kann, wenn an der Maschine etwas zu Bruche gegangen. 23 So nennt man die von hoher Waldung leeren, freien Plätze in einem Walde. 24 Verzeihen Sie, meine busenenthüllten Damen! 25 Verzeiht, ihr ästhetischen, duftenden Seelen, mit Lorgnette und Hahnenkamm. 26 Man sehe die erste Anmerkung. 27 Es sind hier mehrere Pochwerke, welche alle über einander liegen, das eines dem andern das Wasser zuführt. 28 Welcher aus so manchen Reisebeschreibungen hervorblickt. 29 So viel Auerhähne soll es sonst daselbst gegeben haben, daß man zur Falzzeit weit und breit habe das Geschrei hören können. Jetzt hört man aber wenig oder gar nichts. – 30 Um wegen der nächtlichen Kälte auf dem Berge uns von innen zu wärmen. 31 Es war vielmehr ein Loch. 32 Leidigen Andenkens! – 33 Der gemeine Mann in dortiger Gegend sagt nicht Ameisen, sondern Sahgwammesen. – 34 Dieß thun die Wildschützen aber nie, man darf nur thun, als sieht und kennt man sie nicht. Ein gewisser Steiger in J. merkte, daß des Nachts sich in der verschlossenen Kaue seiner Zeche Wildschützen aufhielten. Er schrieb daher an die Thüre: daß sie ihm auch etwas schenken sollten. Wenig Tage drauf fand er eine delicate, frische Hirschkeule. In der Kaue hiengen mehrere eiserne Geräthschaften, nie fehlte etwas; aber einst vermißte der
31.
Steiger doch eineAxt und schrieb sein Mißfallen darüber an die Thür. Am folgenden Tage fand er eine neue, weit bessere Axt wieder in der Kaue. Und so giebt es viele Beispiele dieser Art. – 35 M. s. Jean Pauls Briefe und bevorstehender Lebenslauf. S. 29. 36 Dessen im zweiten Theile wird erwähnt werden. Gemeiniglich nennt man ihn Piehlberg. 37 Obige Novantike steht in den Freyberger gemeinnützigen Nachrichten (4r Jahrg. 1803. N. 31. S. 269.-275.) woraus sie hier mit Bewilligung des Hrn. Verlegers abgedruckt ist. Der Auersberg wird hier von einer andern Seite bestiegen und der gefühlvolle Leser sieht hieraus, daß meine Schilderungen des Obererzgebirges der Natur und Wahrheit getreu und nicht übertrieben sind. 38 Die höchste Koppe des Fichtelbergs im Bayreuthischen. 39 Und wenn der Schnee in den Hohlwegen so hoch liegen soll, kann man voraussetzen, daß diese noch tiefer seyn müssen; also vielleicht 40–50 Ellen, was sind denn 10 Ellen? – Die hat man bald geschrieben! – 40 Dites encore, que la neige n'est pas blanche! 41 Man sagt in der Gegend gewöhnlich Olbernhau; ich weiß nicht welches richtig ist, übrigens thut dies nichts zur Sache. 42 Ich habe nicht gesehen, oder gehört, daß er bei Unterblauenthal abgeleitet sey, wie man in Merkels Erdbeschr. 1r Bd. S. 175. ließt. 43 Man verzeihe mir diesen gewagten Ausdruck, vielleicht dient er, die Sache anschaulicher zu machen. 44 Der Berg nämlich, worauf die Stadt liegt, heißt der Schneeberg. Sonst schrieb sich auch das Bergamt: »das Bergamt uffm Schneeberg.« – 45 Vor kurzem hörte ich, daß diese Bürgergesellschaft sich einer Auflösung nahe. Dieß wäre wahrhaftig sehr zu bedauern! – 46 So nennt man diese Gebirgsseite überhaupt, hinter welcher der Filzteich liegt. 47 Es gehörte sonst, wenn ich nicht irre, dem verstorbenen Bergmeister Beyer in Schneeberg. – 48 Er gehört dem Rathe zu Schneeberg.
32.
49 Bei dieserGelegenheit will ich erinnern, daß man in den Wäldern des Erzgebirges beim Herab- oder Hinaufsteigen hoher Berge sich wegen der dürren Nadeln sehr vorsehe. Stiefeln mit Absätzen, lederne Handschuhe und einen starken Stock mit einem Stachel muß man nothwendig haben. – 50 In d. Gegend spricht man gewöhnl. Schorl oder da Schuhel. 51 Man muß sich mit Feuerzeug und einem Lichte versehen haben, damit man innen sich umsehen kann. 52 Ich erwähne der Geschichte nicht erst wieder, da sie einem jeden Sachsen bekannt seyn muß. 53 Dabei erinnere ich mich des Lutherbrunnens bei Wittenberg, und des Brockens. – 54 Einen solchen Stangenberg, aber weit höher und steiler, giebt es auch bei Johanngeorgenstadt. 55 Diese etwas weitläufige Wegbeschreibung geschieht um der Fremden willen. 56 Die gemeinen Leute in dortiger Gegend nennen diese Zeche: s' weiße Zeug. – 57 Der ehemalige böse Weg ist jetzt in eine sehr schöne Chaussee verwandelt. 58 Wu ass Bornkinnel baschärt hod – nach gebirgischer Mundart. Bornkinnel ist so viel, als gebornes Kindlein. 59 »Johannes, stich nicht so derb, sonst stichst du mir ja die Leber ganz und gar durch« – Halter, welches Wort in ganz Böhmen, Oesterreich und Baiern national ist, bedeutet soviel als: halt ich dafür. 60 An einigen Orten zu einer andern Stunde. 61 Dies sind runde Flaschen von sehr dünnem Glase mit hellem Wasser angefüllt, hinter welche das Lämpchen gestellt und dadurch ein klarer Schein auf das Spitzenmuster verbreitet wird. 62 Halbe, ganze und Doppelschläge sind Kunstausdrücke beim Spitzenklöppeln. 63 Diese kleinen Mörser heißen Böller. 64 Auch beim Vogelstellen sind termini technici; es gehört zur kleinen Jagd.
33.
65 Nach gebirgischerMundart: drr Reitzugfink, 2) drr Stillitz, 3) drr Hamfling, 4) da Lerch, 5) drr Zessig, 6) drr Quacker, 7) da Zipp, 8) drr Grünerts. 66 Es kommt dieses Wort vermuthlich von Rutschen her. 67 Wulenden soviel als: an welchem Ende, wo, wohin, woher. 68 Dieß läßt sich schwer übersetzen; vermuthlich ist es das verstümmelte Katharina, Kretchen. Es bedeutet lustige, schelmische Personen. 69 Zscherper heißt ein kurzes starkes Messer mit einem beinernen Hefte, welches der Bergmann beim Anfahren anstecken hat. Er ißt und schnitzt damit.
34.
Weitere Anmerkungen zurTranskription. Offensichtliche Fehler wurden stillschweigend korrigiert. Unterschiedliche Schreibweisen wurden beibehalten. Korrekturen: Einleitung: Silberkieseibachs → Silberkieselbachs am weichen Ufer des Silberkieselbachs S. 14: Mauren → Mauern Man trifft diese Mauern um die Felder S. 49: zieht → sieht tief und klein unter sich sieht S. 67: Drocknes → Trocknes und man sah Trocknes und Erde S. 80: umherblinkte → umherblickte mit welchen frohen Gefühlen ich umherblickte S. 101: Felsern → Felsen mit allerlei Wäldern und Felsen belebten Gebirge S. 158: dem → einem auf irgend einem Kloben S. 165 ergänzt: wird man den Sinn verstehen. wie aus den Anmerkungen, wird man den Sinn verstehen.
35.
*** END OFTHE PROJECT GUTENBERG EBOOK INTERESSANTE WANDERUNGEN DURCH DAS SÄCHSISCHE OBER-ERZGEBIRGE *** Updated editions will replace the previous one—the old editions will be renamed. Creating the works from print editions not protected by U.S. copyright law means that no one owns a United States copyright in these works, so the Foundation (and you!) can copy and distribute it in the United States without permission and without paying copyright royalties. Special rules, set forth in the General Terms of Use part of this license, apply to copying and distributing Project Gutenberg™ electronic works to protect the PROJECT GUTENBERG™ concept and trademark. Project Gutenberg is a registered trademark, and may not be used if you charge for an eBook, except by following the terms of the trademark license, including paying royalties for use of the Project Gutenberg trademark. If you do not charge anything for copies of this eBook, complying with the trademark license is very easy. You may use this eBook for nearly any purpose such as creation of derivative works, reports, performances and research. Project Gutenberg eBooks may be modified and printed and given away—you may do practically ANYTHING in the United States with eBooks not protected by U.S. copyright law. Redistribution is subject to the trademark license, especially commercial redistribution. START: FULL LICENSE
PLEASE READ THISBEFORE YOU DISTRIBUTE OR USE THIS WORK To protect the Project Gutenberg™ mission of promoting the free distribution of electronic works, by using or distributing this work (or any other work associated in any way with the phrase “Project Gutenberg”), you agree to comply with all the terms of the Full Project Gutenberg™ License available with this file or online at www.gutenberg.org/license. Section 1. General Terms of Use and Redistributing Project Gutenberg™ electronic works 1.A. By reading or using any part of this Project Gutenberg™ electronic work, you indicate that you have read, understand, agree to and accept all the terms of this license and intellectual property (trademark/copyright) agreement. If you do not agree to abide by all the terms of this agreement, you must cease using and return or destroy all copies of Project Gutenberg™ electronic works in your possession. If you paid a fee for obtaining a copy of or access to a Project Gutenberg™ electronic work and you do not agree to be bound by the terms of this agreement, you may obtain a refund from the person or entity to whom you paid the fee as set forth in paragraph 1.E.8. 1.B. “Project Gutenberg” is a registered trademark. It may only be used on or associated in any way with an electronic work by people who agree to be bound by the terms of this agreement. There are a few things that you can do with most Project Gutenberg™ electronic works even without complying with the full terms of this agreement. See paragraph 1.C below. There are a lot of things you can do with Project Gutenberg™ electronic works if you follow the terms of this agreement and help preserve free future access to Project Gutenberg™ electronic works. See paragraph 1.E below.
38.
1.C. The ProjectGutenberg Literary Archive Foundation (“the Foundation” or PGLAF), owns a compilation copyright in the collection of Project Gutenberg™ electronic works. Nearly all the individual works in the collection are in the public domain in the United States. If an individual work is unprotected by copyright law in the United States and you are located in the United States, we do not claim a right to prevent you from copying, distributing, performing, displaying or creating derivative works based on the work as long as all references to Project Gutenberg are removed. Of course, we hope that you will support the Project Gutenberg™ mission of promoting free access to electronic works by freely sharing Project Gutenberg™ works in compliance with the terms of this agreement for keeping the Project Gutenberg™ name associated with the work. You can easily comply with the terms of this agreement by keeping this work in the same format with its attached full Project Gutenberg™ License when you share it without charge with others. 1.D. The copyright laws of the place where you are located also govern what you can do with this work. Copyright laws in most countries are in a constant state of change. If you are outside the United States, check the laws of your country in addition to the terms of this agreement before downloading, copying, displaying, performing, distributing or creating derivative works based on this work or any other Project Gutenberg™ work. The Foundation makes no representations concerning the copyright status of any work in any country other than the United States. 1.E. Unless you have removed all references to Project Gutenberg: 1.E.1. The following sentence, with active links to, or other immediate access to, the full Project Gutenberg™ License must appear prominently whenever any copy of a Project Gutenberg™ work (any work on which the phrase “Project
39.
Gutenberg” appears, orwith which the phrase “Project Gutenberg” is associated) is accessed, displayed, performed, viewed, copied or distributed: This eBook is for the use of anyone anywhere in the United States and most other parts of the world at no cost and with almost no restrictions whatsoever. You may copy it, give it away or re-use it under the terms of the Project Gutenberg License included with this eBook or online at www.gutenberg.org. If you are not located in the United States, you will have to check the laws of the country where you are located before using this eBook. 1.E.2. If an individual Project Gutenberg™ electronic work is derived from texts not protected by U.S. copyright law (does not contain a notice indicating that it is posted with permission of the copyright holder), the work can be copied and distributed to anyone in the United States without paying any fees or charges. If you are redistributing or providing access to a work with the phrase “Project Gutenberg” associated with or appearing on the work, you must comply either with the requirements of paragraphs 1.E.1 through 1.E.7 or obtain permission for the use of the work and the Project Gutenberg™ trademark as set forth in paragraphs 1.E.8 or 1.E.9. 1.E.3. If an individual Project Gutenberg™ electronic work is posted with the permission of the copyright holder, your use and distribution must comply with both paragraphs 1.E.1 through 1.E.7 and any additional terms imposed by the copyright holder. Additional terms will be linked to the Project Gutenberg™ License for all works posted with the permission of the copyright holder found at the beginning of this work. 1.E.4. Do not unlink or detach or remove the full Project Gutenberg™ License terms from this work, or any files
40.
containing a partof this work or any other work associated with Project Gutenberg™. 1.E.5. Do not copy, display, perform, distribute or redistribute this electronic work, or any part of this electronic work, without prominently displaying the sentence set forth in paragraph 1.E.1 with active links or immediate access to the full terms of the Project Gutenberg™ License. 1.E.6. You may convert to and distribute this work in any binary, compressed, marked up, nonproprietary or proprietary form, including any word processing or hypertext form. However, if you provide access to or distribute copies of a Project Gutenberg™ work in a format other than “Plain Vanilla ASCII” or other format used in the official version posted on the official Project Gutenberg™ website (www.gutenberg.org), you must, at no additional cost, fee or expense to the user, provide a copy, a means of exporting a copy, or a means of obtaining a copy upon request, of the work in its original “Plain Vanilla ASCII” or other form. Any alternate format must include the full Project Gutenberg™ License as specified in paragraph 1.E.1. 1.E.7. Do not charge a fee for access to, viewing, displaying, performing, copying or distributing any Project Gutenberg™ works unless you comply with paragraph 1.E.8 or 1.E.9. 1.E.8. You may charge a reasonable fee for copies of or providing access to or distributing Project Gutenberg™ electronic works provided that: • You pay a royalty fee of 20% of the gross profits you derive from the use of Project Gutenberg™ works calculated using the method you already use to calculate your applicable taxes. The fee is owed to the owner of the Project Gutenberg™ trademark, but he has agreed to donate royalties under this paragraph to the Project Gutenberg Literary Archive Foundation. Royalty
41.
payments must bepaid within 60 days following each date on which you prepare (or are legally required to prepare) your periodic tax returns. Royalty payments should be clearly marked as such and sent to the Project Gutenberg Literary Archive Foundation at the address specified in Section 4, “Information about donations to the Project Gutenberg Literary Archive Foundation.” • You provide a full refund of any money paid by a user who notifies you in writing (or by e-mail) within 30 days of receipt that s/he does not agree to the terms of the full Project Gutenberg™ License. You must require such a user to return or destroy all copies of the works possessed in a physical medium and discontinue all use of and all access to other copies of Project Gutenberg™ works. • You provide, in accordance with paragraph 1.F.3, a full refund of any money paid for a work or a replacement copy, if a defect in the electronic work is discovered and reported to you within 90 days of receipt of the work. • You comply with all other terms of this agreement for free distribution of Project Gutenberg™ works. 1.E.9. If you wish to charge a fee or distribute a Project Gutenberg™ electronic work or group of works on different terms than are set forth in this agreement, you must obtain permission in writing from the Project Gutenberg Literary Archive Foundation, the manager of the Project Gutenberg™ trademark. Contact the Foundation as set forth in Section 3 below. 1.F. 1.F.1. Project Gutenberg volunteers and employees expend considerable effort to identify, do copyright research on, transcribe and proofread works not protected by U.S. copyright
42.
law in creatingthe Project Gutenberg™ collection. Despite these efforts, Project Gutenberg™ electronic works, and the medium on which they may be stored, may contain “Defects,” such as, but not limited to, incomplete, inaccurate or corrupt data, transcription errors, a copyright or other intellectual property infringement, a defective or damaged disk or other medium, a computer virus, or computer codes that damage or cannot be read by your equipment. 1.F.2. LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for the “Right of Replacement or Refund” described in paragraph 1.F.3, the Project Gutenberg Literary Archive Foundation, the owner of the Project Gutenberg™ trademark, and any other party distributing a Project Gutenberg™ electronic work under this agreement, disclaim all liability to you for damages, costs and expenses, including legal fees. YOU AGREE THAT YOU HAVE NO REMEDIES FOR NEGLIGENCE, STRICT LIABILITY, BREACH OF WARRANTY OR BREACH OF CONTRACT EXCEPT THOSE PROVIDED IN PARAGRAPH 1.F.3. YOU AGREE THAT THE FOUNDATION, THE TRADEMARK OWNER, AND ANY DISTRIBUTOR UNDER THIS AGREEMENT WILL NOT BE LIABLE TO YOU FOR ACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE OR INCIDENTAL DAMAGES EVEN IF YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH DAMAGE. 1.F.3. LIMITED RIGHT OF REPLACEMENT OR REFUND - If you discover a defect in this electronic work within 90 days of receiving it, you can receive a refund of the money (if any) you paid for it by sending a written explanation to the person you received the work from. If you received the work on a physical medium, you must return the medium with your written explanation. The person or entity that provided you with the defective work may elect to provide a replacement copy in lieu of a refund. If you received the work electronically, the person or entity providing it to you may choose to give you a second opportunity to receive the work electronically in lieu of a refund.
43.
If the secondcopy is also defective, you may demand a refund in writing without further opportunities to fix the problem. 1.F.4. Except for the limited right of replacement or refund set forth in paragraph 1.F.3, this work is provided to you ‘AS-IS’, WITH NO OTHER WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PURPOSE. 1.F.5. Some states do not allow disclaimers of certain implied warranties or the exclusion or limitation of certain types of damages. If any disclaimer or limitation set forth in this agreement violates the law of the state applicable to this agreement, the agreement shall be interpreted to make the maximum disclaimer or limitation permitted by the applicable state law. The invalidity or unenforceability of any provision of this agreement shall not void the remaining provisions. 1.F.6. INDEMNITY - You agree to indemnify and hold the Foundation, the trademark owner, any agent or employee of the Foundation, anyone providing copies of Project Gutenberg™ electronic works in accordance with this agreement, and any volunteers associated with the production, promotion and distribution of Project Gutenberg™ electronic works, harmless from all liability, costs and expenses, including legal fees, that arise directly or indirectly from any of the following which you do or cause to occur: (a) distribution of this or any Project Gutenberg™ work, (b) alteration, modification, or additions or deletions to any Project Gutenberg™ work, and (c) any Defect you cause. Section 2. Information about the Mission of Project Gutenberg™
44.
Project Gutenberg™ issynonymous with the free distribution of electronic works in formats readable by the widest variety of computers including obsolete, old, middle-aged and new computers. It exists because of the efforts of hundreds of volunteers and donations from people in all walks of life. Volunteers and financial support to provide volunteers with the assistance they need are critical to reaching Project Gutenberg™’s goals and ensuring that the Project Gutenberg™ collection will remain freely available for generations to come. In 2001, the Project Gutenberg Literary Archive Foundation was created to provide a secure and permanent future for Project Gutenberg™ and future generations. To learn more about the Project Gutenberg Literary Archive Foundation and how your efforts and donations can help, see Sections 3 and 4 and the Foundation information page at www.gutenberg.org. Section 3. Information about the Project Gutenberg Literary Archive Foundation The Project Gutenberg Literary Archive Foundation is a non- profit 501(c)(3) educational corporation organized under the laws of the state of Mississippi and granted tax exempt status by the Internal Revenue Service. The Foundation’s EIN or federal tax identification number is 64-6221541. Contributions to the Project Gutenberg Literary Archive Foundation are tax deductible to the full extent permitted by U.S. federal laws and your state’s laws. The Foundation’s business office is located at 809 North 1500 West, Salt Lake City, UT 84116, (801) 596-1887. Email contact links and up to date contact information can be found at the Foundation’s website and official page at www.gutenberg.org/contact
45.
Section 4. Informationabout Donations to the Project Gutenberg Literary Archive Foundation Project Gutenberg™ depends upon and cannot survive without widespread public support and donations to carry out its mission of increasing the number of public domain and licensed works that can be freely distributed in machine-readable form accessible by the widest array of equipment including outdated equipment. Many small donations ($1 to $5,000) are particularly important to maintaining tax exempt status with the IRS. The Foundation is committed to complying with the laws regulating charities and charitable donations in all 50 states of the United States. Compliance requirements are not uniform and it takes a considerable effort, much paperwork and many fees to meet and keep up with these requirements. We do not solicit donations in locations where we have not received written confirmation of compliance. To SEND DONATIONS or determine the status of compliance for any particular state visit www.gutenberg.org/donate. While we cannot and do not solicit contributions from states where we have not met the solicitation requirements, we know of no prohibition against accepting unsolicited donations from donors in such states who approach us with offers to donate. International donations are gratefully accepted, but we cannot make any statements concerning tax treatment of donations received from outside the United States. U.S. laws alone swamp our small staff. Please check the Project Gutenberg web pages for current donation methods and addresses. Donations are accepted in a number of other ways including checks, online payments and
46.
credit card donations.To donate, please visit: www.gutenberg.org/donate. Section 5. General Information About Project Gutenberg™ electronic works Professor Michael S. Hart was the originator of the Project Gutenberg™ concept of a library of electronic works that could be freely shared with anyone. For forty years, he produced and distributed Project Gutenberg™ eBooks with only a loose network of volunteer support. Project Gutenberg™ eBooks are often created from several printed editions, all of which are confirmed as not protected by copyright in the U.S. unless a copyright notice is included. Thus, we do not necessarily keep eBooks in compliance with any particular paper edition. Most people start at our website which has the main PG search facility: www.gutenberg.org. This website includes information about Project Gutenberg™, including how to make donations to the Project Gutenberg Literary Archive Foundation, how to help produce our new eBooks, and how to subscribe to our email newsletter to hear about new eBooks.
47.
Welcome to ourwebsite – the ideal destination for book lovers and knowledge seekers. With a mission to inspire endlessly, we offer a vast collection of books, ranging from classic literary works to specialized publications, self-development books, and children's literature. Each book is a new journey of discovery, expanding knowledge and enriching the soul of the reade Our website is not just a platform for buying books, but a bridge connecting readers to the timeless values of culture and wisdom. With an elegant, user-friendly interface and an intelligent search system, we are committed to providing a quick and convenient shopping experience. Additionally, our special promotions and home delivery services ensure that you save time and fully enjoy the joy of reading. Let us accompany you on the journey of exploring knowledge and personal growth! ebookultra.com