// JavaScript Document

/**
 *	toggle a given section contained within a collapsable-menu
 **/
function toggleExpandable( id )
{
	var e = document.getElementById( id );
	var cl = e.className;
	e.className = e.className=="expanded" ? "collapsed" : "expanded";
}


var count = 0;
function popup( path, width, height ) 
{
	count++;
	wleft = (screen.width-width)/2;
	wtop = (screen.height-height)/2;
	new_window = window.open( path,count,"width="+(width)+",height="+(height)+",left="+(wleft)+",top="+(wtop));
}

function popupVideo( pathToVideo )
{
	var path = "video.php?url=" + encodeURI(pathToVideo);
	popup( path, 320, 375 );
}

function popupAudio( pathToAudio, pathToPicture )
{
	var path = "audio.php?url=" + encodeURI(pathToAudio) + (pathToPicture ? "&picture=" + encodeURI(pathToPicture) : "");
	popup( path, 320, 306 );
}

function validateLoginForm( formid )
{
	//make sure required fields are filled in
	
	if( !(requireField('login_email') && requireField('login_password')) )
		return false;
	
	emailVal = validateField( "login_email", function(value) { return validateEmail( value ); }, "Please enter a valid e-mail address" );
	if( !emailVal )	return false;
	
	return true;
}

function validatePreRegistrationForm( formid )
{
	//make sure required fields are filled in
	
	if( !(requireField( "reg_email" )) )
		return false;
	
	emailVal = validateField( "reg_email", function(value) { return validateEmail( value ); }, "Please enter a valid e-mail address" );
	if( !emailVal )	return false;
	
	return true;
}

function validateRegistrationForm( formid )
{
	//make sure required fields are filled in
	
	if( !(	requireField( "first_name" ) &&
			requireField( "last_name" ) &&
			requireField( "billing_address" ) &&
			requireField( "billing_city" ) &&
			requireField( "billing_country" ) &&
			requireField( "billing_state" ) &&
			requireField( "billing_zip" ) &&
			requireField( "billing_phone" ) &&
			requireField( "password" ) &&
			requireField( "password_c" ) ) )
		return false;
		
	if( !ensureFieldsMatch( "password", "password_c", "Please enter the same password in both the 'Password' and 'Re-enter Password' fields" ) )
		return false;
	
	if( !document.getElementById("terms").checked )
	{
		alert( "Please accept the User Agreement before continuing." );
		return false;
	}
	
	return true;
}

function validateEmail( email )
{
	var re = /(.+)@(.+)\.(.+)/;
	return re.exec( email );
}

function validateField( elementID, validatorFunction, failMessage )
{
	element = document.getElementById( elementID );
	if( validatorFunction==null || element==null )
		return true;
	if( validatorFunction( element.value ) )
		return true;
	//element.style.borderColor = "red";
	alert( failMessage );
	return false;
}

function requireField( elementID )
{
	element = document.getElementById( elementID );
	if( element==null )
		return true;
	label = element.getAttribute( "label" );
	if( label==null )
		return true;
	failMessage = "Please enter a value for '"+label+"'";
	return validateField( elementID, function(value) { return value!=null && value!=""; }, failMessage ); 
}

function ensureFieldsMatch( elementID1, elementID2, failMessage )
{
	f1 = document.getElementById( elementID1 );
	f2 = document.getElementById( elementID2 );
	if( !( f1!=null && f2!=null && f1.value==f2.value ) )
	{
		alert( failMessage );
		return false;	
	}
	return true;
}

// popup window for guarantee
var newwindow;
function popwindow(url){
	newwindow=window.open(url,'name','height=600,width=370,scrollbars=1');
	if (window.focus) {newwindow.focus()}
}