//
// !COPYRIGHT!
//                      Copyright (c) 2008 Teleformix LLC
//                       All Rights Reserved
// 
// 
// THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF TELEFORMIX LLC
// 
// The copyright notice above does not evidence any
// actual or intended publication of such source code.
// 
// This document contains trade secret data and proprietary information of
// Teleformix, LLC and should be treated as confidential.  No part of this 
// information may be copied, or disclosed in part or in whole as permitted 
// by Teleformix LLC
// 
// Copyright (c) 1998-2008 by Teleformix, LLC.
// All Rights Reserved
// 
// $Id: validation.js,v 1.1 2008/07/02 19:19:27 pdiverde Exp $
// !!
//

function errorMessage (errorNotFound, message_1, message_2)
{
	var errorTxtMessage = message_1;
	if (!errorNotFound)
	{
		errorTxtMessage = message_1 + message_2 + '<br>';
	}
	return errorTxtMessage;
}	

function shippingValidate()
{
	var errorNotFound;
	var elementValue;
	var errorTxtMessage = '';
	
	elementValue 	= document.getElementById("quantity").value;
	errorNotFound 	= (isInt(elementValue) && (elementValue > 0));
	errorTxtMessage = errorMessage(	errorNotFound, 
									errorTxtMessage, 
									'Please enter the desired quantity');
		
	elementValue 	= document.getElementById("ship_fname1").value;
	errorNotFound 	= ( !isBlank( elementValue) );
	errorTxtMessage = errorMessage(	errorNotFound, 
									errorTxtMessage, 
									'Please enter your first name');
	
	if ( errorNotFound )
	{
		errorNotFound 	= (elementValue.length > 1);
		errorTxtMessage = errorMessage(	errorNotFound, 
										errorTxtMessage, 
										'First name should be at least 2 characters long');
	}
	
	elementValue 	= document.getElementById("ship_lname1").value;
	errorNotFound 	= ( !isBlank( elementValue ) );
	errorTxtMessage = errorMessage(	errorNotFound, 
									errorTxtMessage, 
									'Please enter your last name');
	
	if ( errorNotFound )
	{
		errorNotFound 	= (elementValue.length > 1);
		errorTxtMessage = errorMessage(	errorNotFound, 
										errorTxtMessage, 
										'Last name should be at least 2 characters long');	
	}	
	
	elementValue 	= document.getElementById("ship_addressline1").value;
	errorNotFound 	= ( !isBlank( elementValue ) );
	errorTxtMessage = errorMessage(	errorNotFound, 
									errorTxtMessage, 
									'Please enter your address');
	
	if ( errorNotFound )
	{
		errorNotFound 	= (elementValue.length > 1);
		errorTxtMessage = errorMessage( errorNotFound, 
										errorTxtMessage, 
										'Street address should be at least 2 characters long');
	}
	
	elementValue 	= document.getElementById("ship_city").value;
	errorNotFound 	= ( !isBlank(elementValue) );
	errorTxtMessage = errorMessage(errorNotFound, errorTxtMessage, 'Please enter your city');
	
	if ( errorNotFound )
	{
		errorNotFound = (elementValue.length > 1);
		errorTxtMessage = errorMessage(errorNotFound, 
									   errorTxtMessage, 
									   'City name should be at least 2 characters long');
	}
	
	elementValue 	= document.getElementById("ship_state").value;
	errorNotFound 	= ( isValidState( elementValue ) );
	errorTxtMessage = errorMessage(errorNotFound, 
								   errorTxtMessage, 
								   'Please enter your state');

	elementValue 	= document.getElementById("ship_postal").value;
	errorNotFound 	= (isInt(elementValue));
	errorTxtMessage = errorMessage(errorNotFound, 
								   errorTxtMessage, 
								   'Please enter a correct zip code');
	
	if ( errorNotFound )
	{
		errorNotFound 	= ( elementValue.length == 5 );
		errorTxtMessage = errorMessage(errorNotFound, 
									   errorTxtMessage, 
									   'Zip code should be 5 characters long');
	}
	
	elementValue 	= document.getElementById("email").value;
	errorNotFound 	= ( isEmail( elementValue ) );
	errorTxtMessage = errorMessage(errorNotFound, 
								   errorTxtMessage, 
								   'Please enter your e-mail address');
	
	elementValue 	= 	document.getElementById("ship_phone1").value +
						document.getElementById("ship_phone2").value + 
						document.getElementById("ship_phone3").value;
	errorNotFound 	= ( isValidPhoneNumber( elementValue ) );
	errorTxtMessage = errorMessage(errorNotFound, 
								   errorTxtMessage, 
								   'Please enter your phone number');
	
	if (errorTxtMessage.length == 0 )
	{
		insertOrder();
		document.getElementById("cc_orderform").submit();
	}
	else 
	{
		document.getElementById("errorMessage").innerHTML = errorTxtMessage;
	}	
	
}

function billingValidate()
{
	var errorNotFound;
	var elementValue;
	var errorTxtMessage = '';
	
	elementValue 	= document.getElementById("fname1").value;
	errorNotFound 	= ( !isBlank( elementValue ) );
	errorTxtMessage = errorMessage(errorNotFound, 
								   errorTxtMessage, 
								   'Please enter your first name');
	
	if ( errorNotFound )
	{
		errorNotFound 	= ( elementValue.length > 1 );
		errorTxtMessage = errorMessage(errorNotFound, 
									   errorTxtMessage, 
									   'First name should be at least 2 characters long');
	}
	
	elementValue 	= document.getElementById("fname2").value;
	errorNotFound 	= ( !isBlank( elementValue ) );
	errorTxtMessage = errorMessage(errorNotFound, 
								   errorTxtMessage, 
								   'Please enter your last name');
	
	if ( errorNotFound )
	{
		errorNotFound 	= ( elementValue.length > 1 );
		errorTxtMessage = errorMessage(errorNotFound, 
									   errorTxtMessage, 
									   'Last name should be at least 2 characters long');	
	}	
	
	elementValue 	= document.getElementById("addressline1").value;
	errorNotFound 	= ( !isBlank( elementValue ) );
	errorTxtMessage = errorMessage(errorNotFound, 
								   errorTxtMessage, 
								   'Please enter your address');
	
	if ( errorNotFound )
	{
		errorNotFound 	= ( elementValue.length > 1 );
		errorTxtMessage = errorMessage(errorNotFound, 
									   errorTxtMessage, 
									   'Street address should be at least 2 characters long');
	}
	
	elementValue 	= document.getElementById("city").value;
	errorNotFound 	= ( !isBlank( elementValue ) );
	errorTxtMessage = errorMessage(errorNotFound, 
								   errorTxtMessage, 
								   'Please enter your city');
	
	if ( errorNotFound )
	{
		errorNotFound 	= ( elementValue.length > 1 );
		errorTxtMessage = errorMessage(errorNotFound, 
									   errorTxtMessage, 
									   'City name should be at least 2 characters long');
	}
	
	elementValue 	= document.getElementById("state").value;
	errorNotFound 	= ( isValidState( elementValue ) );
	errorTxtMessage = errorMessage(errorNotFound, 
								   errorTxtMessage, 
								   'Please enter your state');

	elementValue 	= document.getElementById("postal").value;
	errorNotFound 	= ( isInt( elementValue ) );
	errorTxtMessage = errorMessage(errorNotFound, 
								   errorTxtMessage, 
								   'Please enter a correct zip code');
	
	if ( errorNotFound )
	{
		errorNotFound 	= ( elementValue.length == 5 );
		errorTxtMessage = errorMessage(errorNotFound, 
									   errorTxtMessage, 
									   'Zip code should be 5 characters long');
	}
	
	elementValue 	= document.getElementById("email").value;
	errorNotFound 	= ( isEmail( elementValue ) );
	errorTxtMessage = errorMessage(errorNotFound, 
								   errorTxtMessage, 
								   'Please enter your e-mail address');
	
	elementValue = 	document.getElementById("phone1").value +
					document.getElementById("phone2").value + 
					document.getElementById("phone3").value;
	errorNotFound = ( isValidPhoneNumber( elementValue ) );
	errorTxtMessage = errorMessage(errorNotFound, 
								   errorTxtMessage, 
								   'Please enter your phone number');
	
	if ( errorTxtMessage.length == 0 )
	{
		document.getElementById("cc_orderform").submit();
	}
	else 
	{
		document.getElementById("errorMessage").innerHTML = errorTxtMessage;
	}	
	
}

function paymentValidate()
{
	var errorNotFound;
	var errorTxtMessage = '';
	
	var ccnum 	= document.getElementById("cnumber").value;
	var cctype 	= document.getElementById("ctype").value;
	
	errorNotFound 	= ( isCardMatch( cctype, ccnum ) );
	errorTxtMessage = errorMessage(errorNotFound, 
								   '', 
								   'Please enter a valid credit card information');
	
	if ( errorNotFound)
	{
		document.getElementById("cc_orderform").submit();
	}
	else
	{
		document.getElementById("errorMessage").innerHTML = errorTxtMessage;
	}
}

var isNN = (navigator.appName.indexOf("Netscape")!=-1);
function autoTab(input,len, e) {
    var keyCode = (isNN) ? e.which : e.keyCode; 
    var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
    if(input.value.length >= len && !containsElement(filter,keyCode)) {
    input.value = input.value.slice(0, len);
    input.form[(getIndex(input)+1) % input.form.length].focus();
    }

    function containsElement(arr, ele) {
    var found = false, index = 0;
    while(!found && index < arr.length)
    if(arr[index] == ele)
    found = true;
    else
    index++;
    return found;
    }

    function getIndex(input) {
    var index = -1, i = 0, found = false;
    while (i < input.form.length && index == -1)
    if (input.form[i] == input)index = i;
    else i++;
    return index;
    }
    return true;
    }
	
function systemDef(navigatorProp, searchFor, returnName)
{
  this.navigatorProp = navigatorProp;
  this.searchFor     = searchFor;
  this.returnName    = returnName;
}

function systemDetect()
{
var platform = []; 
    platform[0] = new systemDef(navigator.userAgent, 'Win', 'Windows');
	platform[1] = new systemDef(navigator.userAgent, 'Mac', 'Macintosh');
	platform[2] = new systemDef(navigator.userAgent, 'Linux', 'Linux');
	 
var browser = [];	
	browser[0] = new systemDef(navigator.userAgent, 'Safari', 'Safari');
	browser[1] = new systemDef(navigator.userAgent, 'MSIE', 'Internet Explorer');
	browser[2] = new systemDef(navigator.userAgent, 'Opera', 'Opera');
	browser[3] = new systemDef(navigator.userAgent, 'KDE', 'Konqueror');
	browser[4] = new systemDef(navigator.userAgent, 'Firefox', 'Firefox');
	browser[5] = new systemDef(navigator.userAgent, 'Netscape', 'Netscape');

var userPlatform, userPlatformVer, userBrowser, userBrowserVer;
var tempVer = '';
var index = '';
var usrSystem = {
	'platform'		: '',
	'platformVer' 	: 0,
	'browser'		: '',
	'browserVer'	: 0
};

	for ( var i = 0; i < platform.length; i++ )
	{
		if ( (platform[i].navigatorProp).indexOf(platform[i].searchFor) > -1 )
		{
			usrSystem.platform = platform[i].returnName;
		}
		if (usrSystem.platform == 'Windows')
		{
			try 
			{
				tempVer = (platform[i].navigatorProp).indexOf("Windows NT");

				if (tempVer == -1)
				{
					tempVer = 0;
				}
				else 
				{
					tempVer = (platform[i].navigatorProp).substring(tempVer+11,tempVer+14);
					try
					{
						tempVer = parseFloat(tempVer);
					}
					catch (ex)
					{
						tempVer = 0;
					}
				}
			}
			catch (ex)
			{
				tempVer = 0;
			}
		}
	
	}

	usrSystem.platformVer = tempVer;	

	tempVer = 0;
	for ( var i = 0; i < browser.length; i++ )
	{
		index = (browser[i].navigatorProp).indexOf(browser[i].searchFor);
		if ( index > -1)
		{
			usrSystem.browser = browser[i].returnName;
			tempVer = (browser[i].navigatorProp).substring(index+browser[i].searchFor.length+1,index+browser[i].searchFor.length+2);
			try 
			{
				tempVer = parseInt(tempVer);
			}
			catch (ex)
			{
				tempVer = 0;
			}
		usrSystem.browserVer = tempVer;	
		}
	}	
	return(usrSystem);
}

var info = systemDetect();

function errorsDef(platform, browser, criticalVer, criticalVer2, isZero,  isLessCrit, isMoreCrit)
{
  this.platform 	= platform;
  this.browser    	= browser;
  this.criticalVer 	= criticalVer;
  this.criticalVer2 = criticalVer2
  this.isZero		= isZero;
  this.isLessCrit 	= isLessCrit;
  this.isMoreCrit 	= isMoreCrit;
}

function brCompatible()
{

var  setSystem = []; 
     setSystem[0] = new errorsDef('oldWindows', 'Internet Explorer', 6, 5, 'veryOldSystem', 'oldSystem', 'oldSystem');
	 setSystem[1] = new errorsDef('oldWindows', 'Firefox', 2, 1, 'veryOldSystem', 'oldSystem', 'newSystem');
	 setSystem[2] = new errorsDef('oldWindows', 'Safari', 5, 4, 'veryOldSystem', 'oldSystem', 'oldSystem');
	 setSystem[3] = new errorsDef('oldWindows', 'Netscape', 6, 5, 'veryOldSystem', 'veryOldSystem', 'oldSystem');
	 setSystem[4] = new errorsDef('oldWindows', 'Opera', 9, 8, 'veryOldSystem', 'veryOldSystem', 'oldSystem');
     setSystem[5] = new errorsDef('newWindows', 'Internet Explorer', 6, 5, 'veryOldSystem', 'oldSystem', 'newSystem');
	 setSystem[6] = new errorsDef('newWindows', 'Firefox', 2, 2, 'veryOldSystem', 'oldSystem', 'newSystem');
	 setSystem[7] = new errorsDef('newWindows', 'Safari', 5, 4, 'veryOldSystem', 'oldSystem', 'newSystem');
	 setSystem[8] = new errorsDef('newWindows', 'Netscape', 6, 5, 'veryOldSystem', 'veryOldSystem', 'oldSystem');
	 setSystem[9] = new errorsDef('newWindows', 'Opera', 9, 8, 'veryOldSystem', 'veryOldSystem', 'newSystem');	 
     setSystem[10] = new errorsDef('Macintosh', 'Internet Explorer', 6, 6, 'veryOldSystem', 'veryOldSystem', 'veryOldSystem');
	 setSystem[11] = new errorsDef('Macintosh', 'Firefox', 2, 2, 'veryOldSystem', 'oldSystem', 'newSystem');
	 setSystem[12] = new errorsDef('Macintosh', 'Safari', 5, 4, 'veryOldSystem', 'oldSystem', 'newSystem');
	 setSystem[13] = new errorsDef('Macintosh', 'Opera', 9, 8, 'veryOldSystem', 'oldSystem', 'newSystem');
	
	var systemIs = 'veryOldSystem';

	if (info.platform == 'Windows')
	{
		if (info.platformVer == '')
		{
			systemIs = "veryOldSystem";
		}
		if (Number(info.platformVer) > 5)
		{
			info.platform = 'newWindows';
		}
		else
		{
			info.platform = 'oldWindows';
		}
	}
		
	for ( var i=0; i < setSystem.length; i++ )
	{
		if ( (info.platform == setSystem[i].platform ) && 
			 ( info.browser == setSystem[i].browser) )
		{

			if ( Number(info.browserVer) < setSystem[i].criticalVer2 )
			{
				systemIs = setSystem[i].isZero;
			}
			else if ( Number(info.browserVer) < setSystem[i].criticalVer2 )
			{
				systemIs = setSystem[i].isZero;
			}
			else if ( Number(info.browserVer) >= setSystem[i].criticalVer )
			{
				systemIs = setSystem[i].isMoreCrit;
			}
			else 
			{
				systemIs = setSystem[i].isLessCrit;
			}
		} 
	}
	return (systemIs);
}
