$(document).ready(function() { 
		EmailSubscribeInit();
	});

function EmailSubscribeInit() {

	if ( ! $("#EmailSubscribe").length > 0 ) {
		return false;
	}

    var s = '';
    s += '<div id="EmailSubscribeForm">' + "\n";

    s += '<div id="EmailSubscribeInputs">' + "\n";
    s += '<form action="/index.php" method="post" id="fEmailSubscribe">' + "\n";
    s += '<input type="hidden" name="m" value="join" />' + "\n";
    s += '<input type="hidden" name="view" value="process" />' + "\n";

	s += '<p id="EmailSubscribeInfo"><strong>Subscribe to our news updates:</strong></p>' + "\n";

    s += '<input type="text" name="email" id="EmailSubscribeEmail" class="prompt" value="Email" />' + "\n";
//     s += '<input type="text" name="email" id="EmailSubscribeNameGiven" class="prompt" value="Given Name" />' + "\n";
//     s += '<input type="text" name="email" id="EmailSubscribeNameFamily" class="prompt" value="Family Name" />' + "\n";
//     s += '<input type="text" name="email" id="EmailSubscribeOrganisation" class="prompt" value="Company" />' + "\n";
	s += '<input type="button" onclick="EmailSubscribeProcess(); return false;" id="EmailSubscribeSubmit" value="Join" />' + "\n";
    s += '</div>' + "\n";
    s += '<div class="clear"></div>' + "\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>Thanks - You have been added to our email updates!</span>' + "\n";
    s += '</div>' + "\n";

    $('#EmailSubscribe').html(s);

	$('#EmailSubscribeEmail').focus( function () {
			if ( this.value == 'Email') { 
				this.value=''; 
				$(this).removeClass('prompt');
			} else { 
				this.select();
			}
		});

	$('#EmailSubscribeEmail').blur( function () {
			if ( this.value == '' ) { 
				this.value = 'Email';
				$(this).addClass('prompt');
			}
		});

// 	$('#EmailSubscribeNameGiven').focus( function () {
// 			if ( this.value == 'Given Name') { 
// 				this.value=''; 
// 				$(this).removeClass('prompt');
// 			} else { 
// 				this.select();
// 			}
// 		});


// 	$('#EmailSubscribeNameGiven').blur( function () {
// 			if ( this.value == '' ) { 
// 				this.value = 'Given Name';
// 				$(this).addClass('prompt');
// 			}
// 		});

// 	$('#EmailSubscribeNameFamily').focus( function () {
// 			if ( this.value == 'Family Name') { 
// 				this.value=''; 
// 				$(this).removeClass('prompt');
// 			} else { 
// 				this.select();
// 			}
// 		});

// 	$('#EmailSubscribeNameFamily').blur( function () {
// 			if ( this.value == '' ) { 
// 				this.value = 'Family Name';
// 				$(this).addClass('prompt');
// 			}
// 		});

// 	$('#EmailSubscribeOrganisation').focus( function () {
// 			if ( this.value == 'Company') { 
// 				this.value=''; 
// 				$(this).removeClass('prompt');
// 			} else { 
// 				this.select();
// 			}
// 		});

// 	$('#EmailSubscribeOrganisation').blur( function () {
// 			if ( this.value == '' ) { 
// 				this.value = 'Company';
// 				$(this).addClass('prompt');
// 			}
// 		});

}

function EmailSubscribeValidate () {

    var valid = true;

//     if ( ! $('#EmailSubscribeOrganisation').val() || $('#EmailSubscribeOrganisation').val() == 'Company' ) {
//         $('#EmailSubscribeOrganisation').addClass('invalid');
// //         $('#EmailSubscribeOrganisation').focus();
//         valid = false;
//     } else {
//         $('#EmailSubscribeOrgansiation').removeClass('invalid');
//     }


//     if ( ! $('#EmailSubscribeNameFamily').val() || $('#EmailSubscribeNameFamily').val() == 'Family Name' ) {
//         $('#EmailSubscribeNameFamily').addClass('invalid');
//         valid = false;
//     } else {
//         $('#EmailSubscribeNameFamily').removeClass('invalid');
//     }


//     if ( ! $('#EmailSubscribeNameGiven').val() || $('#EmailSubscribeNameGiven').val() == 'Given Name' ) {
//         $('#EmailSubscribeNameGiven').addClass('invalid');
//         valid = false;
//     } else {
//         $('#EmailSubscribeNameGiven').removeClass('invalid');
//     }


    if ( ! $('#EmailSubscribeEmail').val() || ! validateEmail ( $('#EmailSubscribeEmail').val() ) ) {
        $('#EmailSubscribeEmail').addClass('invalid');
//         $('#EmailSubscribeEmail').focus();
        valid = false;
    } else {
        $('#EmailSubscribeEmail').removeClass('invalid');
    }

    return valid;

}


function EmailSubscribeProcess () {

    if ( ! EmailSubscribeValidate() ) {
        return false;
    }

	$('#fEmailSubscribe').submit();
	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;
}

