function validateForm() {

	var list = getElement('isbnNumbers').value.trim();

	if (list == "") { alert('You must enter at least one ISBN or EAN to run a search.'); return false;}

	return true;	
}

var firstSearch = true;
$(document).ready(function(e) {
	
//	$('#slideshow').cycle({
//		fx: 'fade'
//	});

	// It's possible, with caching, that the images could
	//  be loaded *before* this code runs.  So:
	var is_image_loaded = function(img) {
		// IE
		if(!img.complete) {
			return false;
		}
		// Others
		if(typeof img.naturalWidth != "undefined" && img.naturalWidth == 0) {
			return false;
		}
		return true;
	};
	
	var first_slide = $('#slideshow img:first');
	if (is_image_loaded(first_slide.get(0))) {
		$('#loading').hide();
		$('#slideshow').cycle({fx: 'fade'});
	} else {
		first_slide.load(function(e) {
			$('#loading').hide();
			$('#slideshow').fadeIn().cycle({fx: 'fade'});
		});
		$('#slideshow').hide();
		// I'll handwave the display of a loading indicator, since
		// it's covered in the tutorial linked in the question.
		$('#loading').show();
	}	
	
	$('#socialSearchBar .search').focus(function(e) {
		if (firstSearch) $(this).val('');
		firstSearch = false;
	});
	
	$('#frmSiteSearch').submit(function(e) {
		if (isISBN($('#socialSearchBar .search').val())) {			
			alert('The seach bar is for searching the site. If you wish to sell a book please type the ISBN(s) into the box below!');
			return false;
		}
		
		return true;
	});
});

function isISBN(val) {
	
	// Set default variables and cleanup ISBN
	var isbn10exp = /^\d{9}[0-9X]$/;
	var isbn13exp = /^\d{13}$/;
	var total     = 0;

		// Get candidate ##
		isbnnum = val.replace(/[-\s]/g,"").toUpperCase();
		isbnlen = isbnnum.length;		
		total   = 0;
		
		// Check if this is either a valid 10 or 13 character ISBN
		if (!(isbn10exp.test(isbnnum)) && !(isbn13exp.test(isbnnum))) {
			return false;
		}

		// Validate & convert a 10-digit ISBN
		if (isbnlen == 10) {

			// Test for 10-digit ISBNs:
			// Formulated number must be divisible by 11
			// 0234567899 is a valid number
			for (var x=0; x<9; x++) {
				total = total+(isbnnum.charAt(x)*(10-x));
			}

			// check digit
			z = isbnnum.charAt(9);
			if (z == "X") { z = 10; }

			// validate ISBN
			if ((total+z*1) % 11 != 0) { // modulo function gives remainder
				return false;
			}
			
			return true; // is valid ISBN-10
		}
		
		// Validate & convert a 13-digit ISBN
		else {
			// Test for 13-digit ISBNs
			// 9780234567890 is a valid number
			for (var x=0; x<12; x++) {
				if ((x % 2) == 0) { y = 1; }
				else { y = 3; }
				total = total+(isbnnum.charAt(x)*y);
			}

			// check digit
			z = isbnnum.charAt(12);

			// validate ISBN
			if ((10 - (total % 10)) % 10 != z) { // modulo function gives remainder
				return false;
			}			
			
			return true; 

		}
		

	return true;
		
}// end isISBN


function validInfo() {

	var err = 0;

	var fName    = String(getElement('from_name').value).trim();
	var fPhone   = String(getElement('from_phone').value).trim();
	var fEmail   = String(getElement('from_email').value).trim();
	var fMessage = String(getElement('from_message').value).trim();
	var fConfirm = String(getElement('confirm').value).trim();

	// Check for confirm
	if (String(fConfirm).length != 5) err = 5;

	// Check for message
	if (String(fMessage).length == 0) err = 4;

	// Check for email
	if (!validEmail(fEmail)) err = 3;

	// Check for name
	if (String(fPhone).length < 7) err = 2;	

	// Check for name
	if (String(fName).length < 2) err = 1;	
	
	// Process errors
	switch(err) {
		
		case 1: // no name
	        getElement('userMessage').innerHTML = '<span style="color:#F00;">You must provide a name.</span>';
			getElement('btn_sendMessage').disabled = true;								
		break;		

		case 2: // no phone number
	        getElement('userMessage').innerHTML = '<span style="color:#F00;">You must provide a phone number.</span>';
			getElement('btn_sendMessage').disabled = true;								
		break;		

		case 3: // invalid email
	        getElement('userMessage').innerHTML = '<span style="color:#F00;">You must provide a valid email address.</span>';
			getElement('btn_sendMessage').disabled = true;								
		break;		

		case 4: // no message
	        getElement('userMessage').innerHTML = '<span style="color:#F00;">You haven\'t typed a message.</span>';
			getElement('btn_sendMessage').disabled = true;								
		break;		
		
		case 5: // no confirm value
	        getElement('userMessage').innerHTML = '<span style="color:#F00;">You haven\'t copied image verification into box.</span>';
			getElement('btn_sendMessage').disabled = true;								
		break;		

		case 0:
	        getElement('userMessage').innerHTML = '<span style="color:#008726;font-weight:700;">Click to send!</span>';
			getElement('btn_sendMessage').disabled = false;								
			return true;
	}

	return false;
}

function sendMessage() { 
	
    // Create new XMLHttpRequest
    bHttp = getXMLHttp();
    if (bHttp == null) {
        // Submit form for normal processing
        alert("You must have a modern browser (IE 6+ or Firefox 1+) to run this feature");
        return;
    }

    // Setup url to be called
    var url = WS_WEB_ROOT + "pages/ajax_actions/contact_processing.php";
    var params = 'op=contactUs';
    
	params += '&from_name='    + getElement('from_name').value;
	params += '&from_phone='   + getElement('from_phone').value;
	params += '&from_email='   + getElement('from_email').value;
	params += '&from_message=' + getElement('from_message').value;
	params += '&confirm='      + getElement('confirm').value;
    params += '&AJAX_IWF_CALLER=true';
	
    // Define state change handler
    bHttp.onreadystatechange = function() {

            var response,status,errCode,file;

            if (bHttp.readyState==4 || bHttp.readyState=="complete") { // xmlHTTP request has returned

                if (bHttp.status == 200) {

                    //alert(bHttp.responseText);
                    response = bHttp.responseXML.documentElement;
                    errCode  = response.getElementsByTagName('errCode')[0].firstChild.data;

					switch(errCode) {
						

						case "1" : // chash not in session
						case "2" : // Incorrect confirmation code
					        getElement('userMessage').innerHTML = '<span style="color:#F00;font-weight:700;">Message not sent. Incorrect confirmation code.</span>';
							getElement('btn_sendMessage').disabled = true;		
							reloadVerify();						
						break;
						
						default : // no error, message sent
					        getElement('userMessage').innerHTML = '<span style="color:#000;font-weight:700;">Message Sent!</span>';
							getElement('btn_sendMessage').disabled = true;
							clearForm();																		
					
					}//end switch on error

                    c_hideProcessing();
                    c_hideCover();                    

                }// async request has returned completed
            }//xmlHTTP request back
    }//end state change handler

    c_showCover();
    c_showProcessing();	

    // Show processing
    bHttp.open("POST",url,true);
    bHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
    bHttp.send(params);

    return false;
	
}

function clearForm() {

	getElement('from_name').value    = '';
	getElement('from_phone').value   = '';
	getElement('from_email').value   = '';
	getElement('from_message').value = '';
	getElement('confirm').value      = '';

	// Reload verify image each time form is cleared
	reloadVerify();	
}

function reloadVerify() {
	
	var vBox = getElement('verifyBox');
	vBox.innerHTML = '';

	var msg  = document.createTextNode("Enter the text from the image below:");
	
	var vImg = document.createElement('img');
	vImg.setAttribute('src','system/files/verifyThis.php?' + (new Date()).getTime());
	vImg.setAttribute('class','floatRight verifyImage');
	vImg.className = 'floatRight verifyImage';
	
	var input = document.createNamedElement('input','confirm');
	input.setAttribute('id','confirm');
	input.setAttribute('type','text');
	input.setAttribute('onkeyup','validInfo()');
	
	vBox.appendChild(msg);
	vBox.appendChild(vImg);
	vBox.appendChild(input);
	
}

