//
//	'*******************************************
//	'	Copyright and Version Information		
//	'		WmSC Shopping Cart Software			
//	'		WebMyStyle.com						
//	'		Copyright 2004-5					
//	'											
//	'		js.js								
//	'		v0.2.1, akclint, 6/22/2005			
//	'											
//	'*******************************************
//
//	'***********************************************************************************
//	'	File Information:																
//	'																					
//	'	This file contains the group of javascript based functions and validation 
//	'	needed throughout the cart software.							
//	'																					
//	'	Revision History:																
//	'																					
//	'	6/22/205 - akclint																
//	'		Updated to version 2.0														
//	'																					
//	'***********************************************************************************
//
	//****************************************************************
	//  openPopup Funciton
	//		This will open a popup tool or window
	//****************************************************************
	function openPopup(sURL, sName, sStyle) {
		var nw = window.open(sURL, sName, sStyle)
		nw.focus();
	}

	//****************************************************************
	//  showImage Funciton
	//		Opens a popup for displaying the selected image
	//****************************************************************
	function showImage(i) {
		if (i) {
			if (i != "") {
				var si = window.open("images/" + i, "ShowImage", "WIDTH=500,HEIGHT=500");
				si.focus();
			}
		}
	}
	//****************************************************************
	//  Clean Field and Capitalize
	//****************************************************************
	function cleanField(field, type, submitpage) {
		var ValidStates='AK,AL,AR,AZ,CA,CO,CT,DC,DE,FL,GA,HI,IA,ID,IL,IN,KS,KY,LA,MA,MD,ME,MI,MN,MO,MS,MT,NC,ND,NE,NH,NJ,NM,NV,NY,OH,OK,OR,PA,RI,SC,SD,TN,TX,UT,VA,VT,WA,WI,WV,WY';
		var ValidDates='0123456789/';
		var idx;
		var temp='';
		var Error='';

		if (field.value.length == 0)
		     return true;

		temp=field.value.toLowerCase();
		if (type.toLowerCase() == 'state') {
			field.value=field.value.toUpperCase();
			temp=field.value;
			if (field.value.length != 2||ValidStates.search( temp ) == '-1' ) {
				Error='Please enter a valid State Abbreviation';
			} else {
				return true;
		     }
		} else if (type.toLowerCase() == 'email') {
			field.value = cleanDomain(field.value, true);
		
			if (field.value.search('@') != -1) {
				for (idx=0; idx < field.value.length; idx++) {
					if (field.value.substring(idx,idx+1) == '.') {
						return true;
					}
				}
			}
			Error='Please enter a valid Email address, or leave blank if not available';
		} else if (type.toLowerCase() == 'username'||type.toLowerCase() == 'password') {
			if (field.value.length < 6) {
				Error='User Name and Passwords must be at least 6 characters.';
			} else {
				return true;
			}
		} else if (type.toLowerCase() == 'date') {
			if (field.value.length != 10&&field.value.length != 9&&field.value.length != 8) {
				Error='Dates must be in the format of MM/DD/YYYY.';
			} else if (parseInt(field.value.substring(0, field.value.indexOf('/')-1)) < 0||parseInt(field.value.substring(0, field.value.indexOf('/')-1)) > 12) {
				Error='Dates must be in the format of MM/DD/YYYY.';
			}

			for (idx=0; idx < field.value.length; idx++) {
				if (ValidDates.search(field.value.substring(idx, idx+1)) == -1) {
					Error='Dates must be in the format of MM/DD/YYYY.';
				}
			}
		} else if (type.toLowerCase() == 'mmyyyy') {
			if (field.value.length != 7&&field.value.length != 6) {
				Error='Dates must be in the format of MM/YYYY.';
			} else if (field.value.search('/') == -1) {
				Error='Dates must be in the format of MM/YYYY.';
			}
			for (idx=0; idx < field.value.length; idx++) {
				if (ValidDates.search(field.value.substring(idx, idx+1)) == -1) {
					Error='Dates must be in the format of MM/YYYY.';
				}
			}
		}

		if (Error == '') {
			for (idx=0; idx < field.value.length; idx ++ ) {
				if (idx == 0) {
				     temp=field.value.substring(0,1).toUpperCase();
				} else {
					if (field.value.substring(idx,idx+1) == ' ') {
						temp+=' '+field.value.substring(idx+1,idx+2).toUpperCase();
						idx++;
					} else {
						temp+=field.value.substring(idx,idx+1);
					}
				}
			}
			field.value=temp;
			return true;
		} else {
			alert(Error);
			field.value='';
			field.focus();
			field.select();
			return false;
		}
	}

	//****************************************************************
	//  Validation for Number Fields
	//****************************************************************
	function validateNum(field, type, theDefault) {
		var numbers='0123456789';
		var foundDec=false;
		var newstring='';
		var Error='';
		var temp='';

		//************************************************************
		//	Exit if the field value is empty and there is no Default
		//************************************************************
		if (field.value.length == 0&&theDefault == null) { return false; }

		//************************************************************
		//	Remove all characters except numbers
		//************************************************************
		for ( var i=0; i < field.value.length; i++ ) {
			temp=''+field.value.substring( i, i+1 );

			//************************************************************
			//	Check for type decimal and ignore first decimal found
			//************************************************************
		     if (type == 'decimal'&&temp == '.'&&foundDec == false) {
				newstring+=temp;
				foundDec=true;
			} else if (type != 'decimal'&&temp == '.') {
				break;
			} else {
				if (numbers.indexOf( temp ) != '-1' ) newstring+=temp;
			}
		}

		//************************************************************
		//	Check various types for proper length
		//************************************************************
		if ((newstring.length != 10)&&type == 'Phone') {
			Error='Please enter a valid 10 digit Phone Number.';
		} else if (field.value.length != 5&&type == 'Zip') {
			Error='Please enter a valid 5 Digit Zip Code.';
		} else if (field.value.length != 4&&type == 'ss') {
			Error='Please enter all 4 digits of the number.';
		} else if (field.value.length != 9&&type == 'ss9') {
			Error='Please enter all 9 digits of the number.';
		} else if (newstring.length == 0&&type == 'number'&&theDefault == null) {
			Error='Please enter a valid number.';
		}

		//************************************************************
		//	Check for error and show, or format types
		//************************************************************
		if ( Error != '' ) {
			alert(Error);
			field.focus();
			field.select();
			return false;
		} else if (type == 'Phone') {
			temp='(';
			temp+=newstring.substring(0,3);
			temp+=')';
			temp+=newstring.substring(3,6);
			temp+='-';
			temp+=newstring.substring(6,10);
			field.value=temp;
		} else if (type == 'ss9') {
			if (field.value.length == 9) {
				temp=field.value.substring(0,3);
				temp+='-';
				temp+=field.value.substring(3,5)
				temp+='-';
				temp+=field.value.substring(5)
				field.value=temp;
			}
		} else if (newstring.length == 0&&theDefault != null) {
			field.value=theDefault;
		} else {
			field.value=newstring;
		}
		return true;
	}

	function checkCC(asCardNumber, asCardType) {
		//****************************************************************************
		//																			//
		// 	Performs a Mod 10 check to make sure the credit card number				//
		// 	appears valid.  The following numbers can be used as dummy data:		//
		//																			//
		//		 Visa:                  430-00000-00000								//
		// 		 American Express:      372-00000-00000								//
		// 		 Mastercard:            521-00000-00000								//
		// 		 Discover:              620-00000-00000								//
		//																			//
		//****************************************************************************
		var lsNumber = "";  	// Credit card number stripped of all spaces, dashes, etc.
    	var lsChar = "";    	// an individual character
	    var lnTotal = 0;    	// Sum of all calculations
    	var lnDigit = 0;    	// A digit found within a credit card number
	    var lnPosition = 0; 	// identifies a character position in a string
    	var lnSum = 0;      	// Sum of calculations for a specific set
	
		var lnNumbers = "0123456789";

		if (asCardType == -1) { return false; }
	
		//	Remove any hypens or other chars
		for (lnPosition=0; lnPosition<asCardNumber.length; lnPosition++) {
			lsChar = asCardNumber.substring(lnPosition, lnPosition + 1);
			if (lnNumbers.indexOf(lsChar) > -1) { lsNumber += lsChar; }
		}
    
		//	Check for valid length
    	if (lsNumber.length < 13) { return false; }
	    if (lsNumber.length > 16) { return false; }
    
		//	Check for valid start of card number
		if (asCardType == 0) { 			//Visa
			if (lsNumber.substring(0,1) != 4) { return false; }
		} else if (asCardType == 3) {	//Amex
			if (lsNumber.substring(0,2) != 37) { return false; }
		} else if (asCardType == 1) {	//MC
			if (lsNumber.substring(0,1) != 5) { return false; }
		} else if (asCardType == 2) {	//Discover
			if (lsNumber.substring(0,1) != 6) { return false; }
	    } else {
			return false;
		}
    
	    //	Pad left with 0's for cards less than 16 numbers
		while (lsNumber.length < 16) {
			lsNumber = "0" + lsNumber;
		}
		
		//	Check credit card number
		for (lnPosition=1; lnPosition<17; lnPosition ++) {
			lnDigit = lsNumber.substring(lnPosition - 1, lnPosition);
			lnMultiplier = 1 + (lnPosition % 2);
			lnSum = lnDigit * lnMultiplier;
			
			if (lnSum > 9) { lnSum -= 9; }
			lnTotal += lnSum;
		}
		
		if ((lnTotal % 10) == 0) {
			return true;
		} else {
			return false;
		}
	}
	
	function cleanDomain(x,isEmail) {
		var invalids = ";/?:@&=+$,()|\^[]'<>#%";
		var temp = "";
		var y = "";
		
		for (var i=0; i<x.length; i++) {
			y = x.substring(i,i+1);
			if (invalids.indexOf(y) > -1) {
				if (!isEmail || (isEmail && y != "@")) { y = ""; }
			}
			if (y != '"') { temp += y; }
		}
		return temp;
	}
	
	function checkDomain(d) {
		if (d == "") { return true; }
		
		if (d.indexOf(".") == -1) {
			alert("Please enter a valid domain in the format of mydomain.com, or leave this field blank (unless it is required).");
			return false;
		}
		
		return true;
	}
	
	//****************************************************************
	//  Page Specific Stuff
	//****************************************************************
	
	function updateCart() {
		var f = document.forms[0];
		var c = "";
		
		for (i=0; i<f.length;i++) {
			if (f[i].name.substring(0,4) == "Qty_") {
				p = parseInt(f[i].name.substring(4,f[i].name.length));
				q = f[i].value;
				
				if (q > 0) {
					c += q + "~" + p + ",";
					p = -1;
					q = -1;
				}
			}
		}
		f.Items.value = c;
		f.submit();
	}
	
	function shopMore() {
		var f = document.forms[0];

		f.Action.value = "";
		f.i.value = "";
		f.submit();
	}

	function checkOut() {
		top.location.href = "data/sendcart.asp";
	}

	function removeItem(s) {
		var f = document.forms[0];
		var i = f.Items.value;
		var t = s;
		var iStart = -1;
		var iEnd = -1;
		var p = "~" + s;
		
		if (confirm("Are you sure you want to remove this product?")) {
			if (i.indexOf(p + ",") > -1 || (i.indexOf(p) == i.length - p.length)) {
				iEnd = i.indexOf(p) + p.length;
				for (j=iEnd;j>-1;j--) {
					if (i.substring(j,1) == "," || j == 0) {
						iStart = j;
						break;
					}
				}
				
				if (iEnd > -1 && iStart > -1) {
					t = i.substring(0, iStart);
					t2 = i.substring(iEnd, i.length);
					i = t + t2;
				}
			}
			if (i.length == 0) {
				f.Items.value = "*";
			} else {
				f.Items.value = i;
			}
			f.submit();
		}
	}
