$(document).ready(function() { 
		SearchInit();
		EmailSubscribeInit();
	});

function SearchInit() {
	$('#search-query').focus( function () {
			if ( this.value == 'Enter Keywords') { 
				this.value='';
			} else { 
				this.select();
			}
		});

	// 		$('#search-query').blur( function () {
	// 				if ( this.value == '' ) { 
	// 					this.value = 'Enter Keywords';
	// 				}
	// 			});

	$('#search-submit').click( function () {
			if ( $('#search-query').val() == 'Enter Keywords' || $('#search-query').val() == '' ) { 
				$('#search-query').focus();
				return false;
			}
		});

}

function EmailSubscribeInit() {

	if ( ! $("#EmailSubscribe").length > 0 ) {
		return false;
	}

    var s = '';
    s += '<div id="EmailSubscribeForm">' + "\n";

    s += '<div id="EmailSubscribeInputs">' + "\n";
    s += '<form action="" method="post">' + "\n";
    s += '<input type="text" name="email" id="EmailSubscribeEmail" value="Email" />' + "\n";
    s += '<input type="button" onclick="EmailSubscribeProcess(); return false;" id="EmailSubscribeSubmit" value="Subscribe" />' + "\n";
    s += '</div>' + "\n";
    s += '<div class="clear"></div>' + "\n";

	s += '<p id="EmailSubscribeInfo">Enter your address to receive our weekly Latest Additions email</p>' + "\n";
	s += '<p id="EmailSubscribeError"></p>' + "\n";

    s += '</form>' + "\n";
    s += '</div>' + "\n";

    s += '<div id="EmailSubscribeProcessing">' + "\n";
    s += '<span>Saving your details...</span>' + "\n";
    s += '</div>' + "\n";

    s += '<div id="EmailSubscribeProcessed">' + "\n";
    s += '<span>You have been added to our weekly Latest Additions email list!</span>' + "\n";
    s += '</div>' + "\n";

    $('#EmailSubscribe').html(s);

	$('#EmailSubscribeEmail').focus( function () {
			if ( this.value == 'Email') { 
				this.value=''; 
			} else { 
				this.select();
			}
		});

	$('#EmailSubscribeEmail').blur( function () {
			if ( this.value == '' ) { 
				this.value = 'Email';
			}
		});

}

function EmailSubscribeValidate () {

    var valid = true;

    if ( ! $('#EmailSubscribeEmail').val() || ! validateEmail ( $('#EmailSubscribeEmail').val() ) ) {
        $('#EmailSubscribeEmail').addClass('email-subscribe-invalid');
        $('#EmailSubscribeEmail').focus();
		$('#EmailSubscribeInfo').hide();
		$('#EmailSubscribeError').html('Please enter a valid email address').show();
		setTimeout ( "$('#EmailSubscribeEmail').removeClass('email-subscribe-invalid'); $('#EmailSubscribeError').fadeOut(250, function() {$('#EmailSubscribeInfo').fadeIn(250);});", 3000 );
        valid = false;
    } else {
        $('#EmailSubscribeEmail').removeClass('email-subscribe-invalid');
		$('#EmailSubscribeError').html('');
    }

    return valid;

}


function EmailSubscribeProcess () {

    if ( ! EmailSubscribeValidate() ) {
        return false;
    }

    var request = {
        m: 'email_subscribe',
        rpc: 'email_subscribe',
        email: $('#EmailSubscribeEmail').val()
    };

    $('#EmailSubscribeForm').fadeOut( function() {
			$('#EmailSubscribeProcessing').fadeIn( function () {
					$.post( '/index.php', request, function ( response ) {
							$('#EmailSubscribeProcessing').fadeOut( function () {
									$('#EmailSubscribeProcessed').fadeIn( 250 );
									setTimeout ( "EmailSubscribeInit();", 5000 );
								});
						});
				});
			return false;
		} );
}

/*
 * helpers
 */

function log(s) {
	$('#log').html(s);
}

function validateEmail(str) {

	var at="@";
	var dot=".";
	var lat=str.indexOf(at);
	var lstr=str.length;
	var ldot=str.indexOf(dot);
	if (str.indexOf(at)==-1) {
		return false; 
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr) {
		return false;
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr) {
		return false;
	}

	if (str.indexOf(at,(lat+1))!=-1) {
		return false;
	}

	if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot) {
		return false;
	}

	if (str.indexOf(dot,(lat+2))==-1) {
		return false;
	}
		
	if (str.indexOf(" ") != -1) {
		return false;
	}

	return true;
}
