/**
*
* Project: Team Sales Agent Main Site
* Page: includes/main_site.js
* Version: 1.0
* First Created: 09/09/2011
* Last Update: 09/10/2011
* Created by: Scott Hicks
* Copyright (c) 2011 Ebolt Media
*
*/

var MainSite = Class.create({
	initialize: function()
	{
		hideProgress = '';

		banner_transition = '';
		which_banner = 0;
		total_banners = 0;
		current_banner = 1;
		last_banner = 0;

		arrayBannerLink = new Array();
		arrayBannerLink[1] = 'features/';
		arrayBannerLink[2] = 'solutions/';
		arrayBannerLink[3] = 'features/';
		arrayBannerLink[4] = 'contact/';

		http_url = 'http://www.teamsalesagent.com/';
		image_shown = 0;
	},



	// banner transition
	bannerTransition: function()
	{
		var i = 1;
		while ( document.getElementById('banner_' + i) )
		{
			i++;
		}

		total_banners = (i - 1);
		banner_transition = setTimeout("main_site.nextBanner()", 11000);
	},
	nextBanner: function()
	{
		clearTimeout(banner_transition);
		banner_transition = '';

		last_banner = current_banner;
		current_banner++;

		if ( current_banner > total_banners )
		{
			current_banner = 1;
		}

		Effect.Appear('banner_' + current_banner);
		Effect.Fade('banner_' + last_banner), { duration: 0.5 };

		banner_transition = setTimeout("main_site.nextBanner()", 11000);
	},
	bannerLink: function(which_one)
	{
		window.location = arrayBannerLink[which_one];
	},
	goForwardBanner: function()
	{
		main_site.nextBanner();
	},
	goBackBanner: function()
	{
		clearTimeout(banner_transition);
		banner_transition = '';

		last_banner = current_banner;
		current_banner--;

		if ( current_banner < 1 )
		{
			current_banner = 4;
		}

		Effect.Appear('banner_' + current_banner);
		Effect.Fade('banner_' + last_banner), { duration: 0.5 };

		banner_transition = setTimeout("main_site.nextBanner()", 11000);
	},



	// clear top contact
	clearField: function(which_one)
	{
		if ( which_one == 'first_name' )
		{
			if ( document.getElementById('demo_first_name').value == 'First Name' )
			{
				document.getElementById('demo_first_name').value = '';
			}
		}
		else if ( which_one == 'last_name' )
		{
			if ( document.getElementById('demo_last_name').value == 'Last Name' )
			{
				document.getElementById('demo_last_name').value = '';
			}
		}
		else if ( which_one == 'phone' )
		{
			if ( document.getElementById('demo_phone').value == 'Phone Number' )
			{
				document.getElementById('demo_phone').value = '';
			}
		}
		else if ( which_one == 'email' )
		{
			if ( document.getElementById('demo_email').value == 'E-Mail' )
			{
				document.getElementById('demo_email').value = '';
			}
		}
		else if ( which_one == 'company_name' )
		{
			if ( document.getElementById('demo_company_name').value == 'Company Name' )
			{
				document.getElementById('demo_company_name').value = '';
			}
		}
	},
	checkField: function(which_one)
	{
		if ( document.getElementById('demo_first_name').value == '' )
		{
			document.getElementById('demo_first_name').value = 'First Name';
		}
		else if ( document.getElementById('demo_last_name').value == '' )
		{
			document.getElementById('demo_last_name').value = 'Last Name';
		}
		else if ( document.getElementById('demo_phone').value == '' )
		{
			document.getElementById('demo_phone').value = 'Phone Number';
		}
		else if ( document.getElementById('demo_email').value == '' )
		{
			document.getElementById('demo_email').value = 'E-Mail';
		}
		else if ( document.getElementById('demo_company_name').value == '' )
		{
			document.getElementById('demo_company_name').value = 'Company Name';
		}
	},



	// progress box
	hideProgressBox: function()
	{
		Element.hide('progress_box');
	},
	progressBox: function(text, stay_visible)
	{
		clearTimeout(hideProgress); // clear any existing timeouts
		hideProgress = ''

		Element.show('progress_box');

		$('progress_text').innerHTML = text;

		var new_width_half = (document.getElementById('progress_text').offsetWidth / 2);
		document.getElementById('progress_box').style.marginLeft = '-' + (120 + new_width_half) + 'px';
		document.getElementById('progress_box').style.marginRight = new_width_half + 'px';

		document.getElementById('progress_box').style.position = 'absolute';
		document.getElementById('progress_box').style.top = '27px';

		if ( !stay_visible )
		{
			hideProgress = setTimeout("main_site.hideProgressBox()", 24000);
		}
	},
	validEmail: function(email_address)
	{
		var ampIndex = email_address.indexOf("@");
		var afterAmp = email_address.substring((ampIndex + 1), email_address.length);

		var dotIndex = afterAmp.indexOf("."); // dot before ampersand only
		dotIndex = dotIndex + ampIndex + 1; // determine dot position in entire string (not just after amp portion)
		afterAmp = email_address.substring((ampIndex + 1), dotIndex); // afterAmp will be portion of string from ampersand to dot
		var afterDot = email_address.substring((dotIndex + 1), email_address.length); // afterDot will be portion of string from dot to end of string
		var beforeAmp = email_address.substring(0,(ampIndex));
		//old regex did not allow subdomains and dots in names
		//var email_regex = /^[\w\d\!\#\$\%\&\'\*\+\-\/\=\?\^\_\`\{\|\}\~]+(\.[\w\d\!\#\$\%\&\'\*\+\-\/\=\?\^\_\`\{\|\}\~])*\@(((\w+[\w\d\-]*[\w\d]\.)+(\w+[\w\d\-]*[\w\d]))|((\d{1,3}\.){3}\d{1,3}))$/;
		var email_regex = /^\w(?:\w|-|\.(?!\.|@))*@\w(?:\w|-|\.(?!\.))*\.\w{2,3}/
		if ((email_address.indexOf("@") != "-1") && (email_address.length > 5) && (afterAmp.length > 0) && (beforeAmp.length > 1) && (afterDot.length > 1) && (email_regex.test(email_address)) ) // index of -1 means "not found"
		{
			return true;
		}
		else
		{
			return false;
		}
	},



	// submit demo contact
	submitDemoContact: function(type)
	{
		if ( !type )
		{
			var type = 0;
		}

		if ( type == 'captcha' )
		{
			document.forms['demo_contact'].submit();
		}
		else
		{
			main_site.progressBox('Loading...', 1);
			Element.hide('demo_submit');

			var demo_first_name = ( document.getElementById('demo_first_name').value == 'First Name' ? '' : ( !main_site.isEntryFilled(document.getElementById('demo_first_name').value) ? '' : escape(encodeURIComponent(document.getElementById('demo_first_name').value)) ) );
			var demo_last_name = ( document.getElementById('demo_last_name').value == 'Last Name' ? '' : ( !main_site.isEntryFilled(document.getElementById('demo_last_name').value) ? '' : escape(encodeURIComponent(document.getElementById('demo_last_name').value)) ) );
			var demo_phone = ( document.getElementById('demo_phone').value == 'Phone Number' ? '' : ( !main_site.isEntryFilled(document.getElementById('demo_phone').value) ? '' : escape(encodeURIComponent(document.getElementById('demo_phone').value)) ) );
			var demo_email = ( document.getElementById('demo_email').value == 'E-Mail' ? '' : ( !main_site.isEntryFilled(document.getElementById('demo_email').value) ? '' : escape(document.getElementById('demo_email').value) ) );
			var demo_email_check = ( document.getElementById('demo_email').value == 'E-Mail' ? '' : ( !main_site.isEntryFilled(document.getElementById('demo_email').value) ? '' : escape(document.getElementById('demo_email').value) ) );
			var demo_email_send = ( document.getElementById('demo_email').value == 'E-Mail' ? '' : ( !main_site.isEntryFilled(document.getElementById('demo_email').value) ? '' : escape(encodeURIComponent(document.getElementById('demo_email').value)) ) );
			var demo_company_name = ( document.getElementById('demo_company_name').value == 'Company Name' ? '' : ( !main_site.isEntryFilled(document.getElementById('demo_company_name').value) ? '' : escape(encodeURIComponent(document.getElementById('demo_company_name').value)) ) );

			if ( demo_first_name != '' && demo_last_name != '' && demo_phone != '' && demo_email != '' && demo_company_name != '' && main_site.validEmail(demo_email_check) )
			{
				main_site.grayOut(true);
				Element.show('show_captcha');
				main_site.hideProgressBox();
				document.getElementById('captcha-form').focus();
			}
			else
			{
				Element.show('demo_submit');
				if ( demo_first_name == '' )
				{
					main_site.progressBox('First name is required.');
					document.getElementById('demo_first_name').focus();
				}
				else if ( demo_last_name == '' )
				{
					main_site.progressBox('Last name is required.');
					document.getElementById('demo_last_name').focus();
				}
				else if ( demo_phone == '' )
				{
					main_site.progressBox('Phone number is required.');
					document.getElementById('demo_phone').focus();
				}
				else if ( demo_email == '' )
				{
					main_site.progressBox('E-Mail address is required.');
					document.getElementById('demo_email').focus();
				}
				else if ( !main_site.validEmail(demo_email_check) )
				{
					main_site.progressBox('Invalid E-Mail address.');
					document.getElementById('demo_email').focus();
				}
				else if ( demo_company_name == '' )
				{
					main_site.progressBox('Company name is required.');
					document.getElementById('demo_company_name').focus();
				}

				return false;
			}
		}
	},
	submitContact: function()
	{
		main_site.progressBox('Loading...', 1);
		Element.hide('contact_submit');

		var contact_company_name = ( !main_site.isEntryFilled(document.getElementById('contact_company_name').value) ? '' : escape(encodeURIComponent(document.getElementById('contact_company_name').value)) );
		var contact_website = ( !main_site.isEntryFilled(document.getElementById('contact_website').value) ? '' : escape(encodeURIComponent(document.getElementById('contact_website').value)) );
		var contact_name = ( !main_site.isEntryFilled(document.getElementById('contact_name').value) ? '' : escape(encodeURIComponent(document.getElementById('contact_name').value)) );
		var contact_phone = ( !main_site.isEntryFilled(document.getElementById('contact_phone').value) ? '' : escape(encodeURIComponent(document.getElementById('contact_phone').value)) );
		var contact_email = ( !main_site.isEntryFilled(document.getElementById('contact_email').value) ? '' : escape(document.getElementById('contact_email').value) );
		var contact_email_send = ( !main_site.isEntryFilled(document.getElementById('contact_email').value) ? '' : escape(encodeURIComponent(document.getElementById('contact_email').value)) );
		var contact_email2 = ( !main_site.isEntryFilled(document.getElementById('contact_email2').value) ? '' : escape(document.getElementById('contact_email2').value) );

		var contact_newsletter = ( document.getElementById('contact_newsletter1').checked == true ? 'Subscribe' : ( document.getElementById('contact_newsletter2').checked == true ? 'No Thanks' : '' ) );

		if ( contact_company_name != '' && contact_website != '' && contact_name != '' && contact_phone != '' && contact_email != '' && contact_email2 != '' && ( contact_email == contact_email2 ) && contact_newsletter != '' && main_site.validEmail(contact_email) )
		{
			document.getElementById('contact_newsletter').value = contact_newsletter;
			document.forms['contact_form'].submit();
		}
		else
		{
			Element.show('contact_submit');
			if ( contact_company_name == '' )
			{
				main_site.progressBox('Company name is required.');
				document.getElementById('contact_company_name').focus();
			}
			else if ( contact_website == '' )
			{
				main_site.progressBox('Website URL is required.');
				document.getElementById('contact_website').focus();
			}
			else if ( contact_name == '' )
			{
				main_site.progressBox('Name is required.');
				document.getElementById('contact_name').focus();
			}
			else if ( contact_phone == '' )
			{
				main_site.progressBox('Phone number is required.');
				document.getElementById('contact_phone').focus();
			}
			else if ( contact_email == '' )
			{
				main_site.progressBox('E-Mail address is required.');
				document.getElementById('contact_email').focus();
			}
			else if ( !main_site.validEmail(contact_email) )
			{
				main_site.progressBox('Invalid E-Mail address.');
				document.getElementById('contact_email').focus();
			}
			else if ( contact_email2 == '' )
			{
				main_site.progressBox('Confirm your E-Mail address.');
				document.getElementById('contact_email2').focus();
			}
			else if ( contact_email != contact_email2 )
			{
				main_site.progressBox('E-Mail address\' do not match.');
				document.getElementById('contact_email').focus();
			}
			else if ( contact_newsletter == '' )
			{
				main_site.progressBox('Newsletter is required.');
				document.getElementById('contact_newsletter1').focus();
			}

			return false;
		}
	},
	onlyOneContactOption: function(which_one)
	{
		document.getElementById('contact_newsletter' + ( which_one == 1 ? 2 : 1 )).checked = false;
	},


	isEntryFilled: function(value)
	{
		// remove all spaces
		value = value.replace(/ /gi, '');

		return ( value == '' ? 0 : 1 );
	},



	viewImage: function(id)
	{
		if ( image_shown == 0 )
		{
			Element.show('large_image_' + id);
			image_shown = 1;
		}
		else
		{
			Element.hide('large_image_' + id);
			image_shown = 0;
		}
	},
	grayOut: function(vis, options)
	{
		var options = options || {};
		var zindex = 99998;
		var opacity = options.opacity || 70;
		var opaque = (opacity / 100);
		var bgcolor = options.bgcolor || '#000000';
		var dark = document.getElementById('darkenScreenObject');
		if ( !dark ) {
			var tbody = document.getElementsByTagName("body")[0];
			var tnode = document.createElement('div');
			tnode.style.position = 'absolute';
			tnode.style.top = '0px';
			tnode.style.left = '0px';
			tnode.style.overflow = 'hidden';
			tnode.style.display = 'none';
			tnode.id = 'darkenScreenObject';
			tbody.appendChild(tnode);
			dark = document.getElementById('darkenScreenObject');
		}

		if ( vis )
		{
			if( document.body && ( document.body.scrollWidth || document.body.scrollHeight ) )
			{
				var pageWidth = document.body.scrollWidth + 'px';
				var pageHeight = document.body.scrollHeight + 'px';
			}
			else if ( document.body.offsetWidth )
			{
				var pageWidth = document.body.offsetWidth + 'px';
				var pageHeight = document.body.offsetHeight + 'px';
			}
			else
			{
				var pageWidth = '100%';
				var pageHeight = '100%';
			}
			dark.style.opacity = opaque;
			dark.style.MozOpacity = opaque;
			dark.style.filter = 'alpha(opacity='+opacity+')';
			dark.style.zIndex = zindex;
			dark.style.backgroundColor = bgcolor;
			dark.style.width = pageWidth;
			dark.style.height = pageHeight;
			dark.style.display = 'block';
		}
		else
		{
			dark.style.display = 'none';
		}
	}
});

// call the class
var main_site = new MainSite();

Event.observe(window, 'load', function()
{
	if (  document.getElementById('view_main_site') )
	{
		main_site.bannerTransition();
	}
});
