//=====================================================================||
//               NOP Design JavaScript Shopping Cart                   ||
//                                                                     ||
// For more information on SmartSystems, or how NOPDesign can help you ||
// Please visit us on the WWW at http://www.nopdesign.com              ||
//                                                                     ||
// Javascript portions of this shopping cart software are available as ||
// freeware from NOP Design under the GPL.  You must keep this comment ||
// unchanged in your code.  For more information contact               ||
// Scott@NopDesign.com                                                 ||
//                                                                     ||
// JavaScript Shop Module, V.3.0.2                                     ||
//=====================================================================||



<!-- Original:  Randy Bennett (rbennett@thezone.net) -->
<!-- Web Site:  http//home.thezone.net/~rbennett/utility/javahead.htm -->

<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->

<!-- Begin
function setVariables() {
imgwidth=63;  // logo width, in pixels
imgheight=31;  // logo height, in pixels
if (navigator.appName == "Netscape") {
horz=".left";
vert=".top";
docStyle="document.";
styleDoc="";
innerW="window.innerWidth";
innerH="window.innerHeight";
offsetX="window.pageXOffset";
offsetY="window.pageYOffset";
}
else {
horz=".pixelLeft";
vert=".pixelTop";
docStyle="";
styleDoc=".style";
innerW="document.body.clientWidth";
innerH="document.body.clientHeight";
offsetX="document.body.scrollLeft";
offsetY="document.body.scrollTop";
   }
}
function checkLocation() {
objectXY="branding";
var availableX=eval(innerW);
var availableY=eval(innerH);
var currentX=eval(offsetX);
var currentY=eval(offsetY);
x=availableX-(imgwidth+30)+currentX;
y=availableY-(imgheight+20)+currentY;
evalMove();
setTimeout("checkLocation()",10);
}
function evalMove() {
eval(docStyle + objectXY + styleDoc + horz + "=" + x);
eval(docStyle + objectXY + styleDoc + vert + "=" + y);
}





function checkForm(thisForm, checkForCreditCard)  {

        bFormError = false;		//Boolean variable to store form state
        bIsValidCard = false;	//Boolean variable to store CC state
        strErrorList = ""; 		//String list of missing/errorsum fields

        if( thisForm.FIRST.value==''  ) {bFormError = true;  strErrorList += "First Name, ";}
        if( thisForm.LAST.value==''   ) {bFormError = true;  strErrorList += "Last Name, ";}
        if( thisForm.COMPANY.value=='') {bFormError = true;  strErrorList += "Company Name, ";}
        if( thisForm.ADDRESS.value=='') {bFormError = true;  strErrorList += "Address, ";}
        if( thisForm.CITY.value==''   ) {bFormError = true;  strErrorList += "City, ";}
        if( thisForm.STATE.value==''  ) {bFormError = true;  strErrorList += "State, ";}
        if( thisForm.ZIP.value==''    ) {bFormError = true;  strErrorList += "Zip, ";}
        if( thisForm.PHONE.value==''  ) {bFormError = true;  strErrorList += "Phone, ";}
        if( thisForm.ACCOUNT.value=='') {bFormError = true;  strErrorList += "Credit Card Number, ";}
        if( thisForm.MONTH.value==''  ) {bFormError = true;  strErrorList += "Month, ";}
        if( thisForm.YEAR.value==''   ) {bFormError = true;  strErrorList += "Year, ";}
        if( thisForm.RESALE.value=='' ) {bFormError = true;  strErrorList += "Resale Number ";}

        if( bFormError == true ) {
                alert("I'm sorry, but you had one or more missing or invalid entries.\n"
                     +"Please check the following fields: \n\n"
                     +strErrorList
                     +"\n\n");
                return false;
        }

//Check for valid Visa
                if (((thisForm.ACCOUNT.value.length == 16) || (thisForm.ACCOUNT.value.length == 13)) &&
                (thisForm.ACCOUNT.value.substring(0,1) == 4))
                                bIsValidCard = true;

//Check for valid MasterCard
					firstdig = thisForm.ACCOUNT.value.substring(0,1);
                 seconddig = thisForm.ACCOUNT.value.substring(1,2);
                 if ((thisForm.ACCOUNT.value.length == 16) &&
                    (firstdig == 5) && ((seconddig >= 1) &&
                        (seconddig <= 5))
                   )
                        bIsValidCard = true;

                if (bIsValidCard == false){
                        alert("I'm sorry, but you need to enter a valid credit card number.\n");
                        return false;
                }

        return needComments();
}

// FUNCTION:		CKquantity
// PARAMETERS:   Quantity to
// RETURNS:		Quantity as a number, and possible alert
// PURPOSE:		Make sure quantity is represented as a number
function CKquantity(checkString) {

        strNewQuantity = "";	// String Adjusted Item Quantity
        count     = 0; 			// Generic Loop Counter

        for (i = 0; i < checkString.length; i++) {
                ch = checkString.substring(i, i+1);

                if ((ch >= "0" && ch <= "9") || (ch == '.')) {
                        strNewQuantity += ch;
                }
        }

        if (strNewQuantity.length < 1)
                strNewQuantity = "1";

        return strNewQuantity;
}

// FUNCTION:		RemoveAllCookies
// PARAMETERS:	Form Object
// RETURNS:		Null
// PURPOSE:		Removes all cookies from shopping cart

function RemoveAllCookies() {

                SetCookie ("NumberOrdered", 0, null, "/");
                location.href=location.href;
}

// FUNCTION:		AddToCart
// PARAMETERS:	Form Object
// RETURNS:		Cookie to user's browser, with prompt
// PURPOSE:		Adds a product to the user's shopping cart

function AddToCart(thisForm) {
 
        iNumberOrdered = 0;	//Integer number of products already ordered

        iNumberOrdered = GetCookie("NumberOrdered");
        iNumberOrdered++;
        if ( iNumberOrdered >24 )
                alert("I'm Sorry, your cart is full, please proceed to checkout.");
        else {
                dbUpdatedOrder = thisForm.PRODUCT.value + "|"
                                 + thisForm.SIZE.value + "|"
                                 + thisForm.QUANTITY.value + "|"
                                 + thisForm.PRICE.value  + "|"
                                 + thisForm.COMMENT.value;

                NewOrder = "Order." + iNumberOrdered;
                SetCookie (NewOrder, dbUpdatedOrder, null, "/");
                SetCookie ("NumberOrdered", iNumberOrdered, null, "/");

                notice = thisForm.QUANTITY.value + " "
                         + thisForm.COMMENT.value
                         + " added to your shopping cart.";
        
//	display alert on screen
// 			alert(notice);
             
        }

              bFormError = false;	//Boolean variable to store form state
       strErrorList = ""; 		//String list of missing/errorsum fields
       
		if( thisForm.PRODUCT.value==''   ) {bFormError = true;  strErrorList += "Product Name, ";}
		if( thisForm.SIZE.value==''      ) {bFormError = true;  strErrorList += "Size, ";}
		if( thisForm.QUANTITY.value==''  ) {bFormError = true;  strErrorList += "Quantity ";}


        if( bFormError == true ) {
                alert("Caution, one or more missing or invalid entries.\n"
                     +"Please check the following fields: \n\n"
                     +strErrorList
                     +"\n\n"
                     +"You may press the REMOVE button to cancel the entry.\n\n");
//		return false;
        }
                  location.href=location.href;
}

// FUNCTION:		getCookieVal
// PARAMETERS:	offset
// RETURNS:		URL unescaped Cookie Value
// PURPOSE:		Get a specific value from a cookie

function getCookieVal (offset) {
        var endstr = document.cookie.indexOf (";", offset);
        if (endstr == -1)
                endstr = document.cookie.length;
        return unescape(document.cookie.substring(offset, endstr));
}

// FUNCTION:		FixCookieDate
// PARAMETERS:	date
// RETURNS:		date
// PURPOSE:		Fixes cookie date, stores back in date

function FixCookieDate (date) {
        var base = new Date(0);
        var skew = base.getTime();
        date.setTime (date.getTime() - skew);
}

// FUNCTION:		GetCookie
// PARAMETERS:	Name
// RETURNS:		Value in Cookie
// PURPOSE:		Retrieves cookie from users browser

function GetCookie (name) {
        var arg = name + "=";
        var alen = arg.length;
        var clen = document.cookie.length;
        var i = 0;
        while (i < clen)
                {
                var j = i + alen;
                if (document.cookie.substring(i, j) == arg) return getCookieVal (j);
                i = document.cookie.indexOf(" ", i) + 1;
                if (i == 0) break;
                }
        return null;
}

// FUNCTION:		SetCookie
// PARAMETERS:	name, value, expiration date, path, domain, security
// RETURNS:		Null
// PURPOSE:		Stores a cookie in the users browser

function SetCookie (name,value,expires,path,domain,secure) {
        document.cookie = name + "=" + escape (value) +
                        ((expires) ? "; expires=" + expires.toGMTString() : "") +
                        ((path) ? "; path=" + path : "") +
                        ((domain) ? "; domain=" + domain : "") +
                        ((secure) ? "; secure" : "");
}


// FUNCTION:		DeleteCookie
// PARAMETERS:	Cookie name, path, domain
// RETURNS:		null
// PURPOSE:		Removes a cookie from users browser.

function DeleteCookie (name,path,domain) {
        if (GetCookie(name)) {
                document.cookie = name + "=" +
                                ((path) ? "; path=" + path : "") +
                                ((domain) ? "; domain=" + domain : "") +
                                "; expires=Thu, 01-Jan-70 00:00:01 GMT";
        }
}


// FUNCTION:		MoneyFormat
// PARAMETERS:	Number to be formatted
// RETURNS:		Formatted Number
// PURPOSE:		Reformats Dollar Amount to #.## format

function moneyFormat(input) {
        var dollars = Math.floor(input)
        var tmp = new String(input)
        for (var decimalAt = 0; decimalAt < tmp.length; decimalAt++) {
                if (tmp.charAt(decimalAt)==".")
                        break;
        }

        var cents  = "" + Math.round(input * 100)
        cents = cents.substring(cents.length-2, cents.length)
        dollars += ((tmp.charAt(decimalAt+2)=="9")&&(cents=="00"))? 1 : 0;

        return dollars + "." + cents
}

// FUNCTION:		RemoveFromCart
// PARAMETERS:	Order Number to Remove
// RETURNS:		Null
// PURPOSE:		Removes an item from a users shopping cart


function RemoveFromCart(RemOrder) {
//	 if (confirm("Click 'Ok' to remove this product from your shopping cart."))
         {
                NumberOrdered = GetCookie("NumberOrdered");
                for(i=RemOrder; i <  NumberOrdered; i++) {
                        NewOrder1 = "Order." + (i+1);
                        NewOrder2 = "Order." + (i);
                        database = GetCookie(NewOrder1);
                        SetCookie (NewOrder2, database, null, "/");
                }
                NewOrder = "Order." + NumberOrdered;
                SetCookie ("NumberOrdered", NumberOrdered-1, null, "/");
                DeleteCookie(NewOrder, "/");
                location.href=location.href;
        }
}

// FUNCTION:		GetFromCart
// PARAMETERS:	Null
// RETURNS:		Product Table Written to Document
// PURPOSE:		Draws current cart product table on HTML page

function GetFromCart() {

        NumberOrdered = 0;
        Total=0;
        TOTotal=0;
        TOCount=0;
        TOproduct = " ";
        TOsize = " ";
        TOquantity = " ";
        TOprice = " ";
        TOcomment = " ";
        NumberOrdered = GetCookie("NumberOrdered");
        whattowrite = "";

        for (i = 1; i <= NumberOrdered; i++) {
                NewOrder = "Order." + i;
                database = "";
                database = GetCookie(NewOrder);

                Token0 = database.indexOf("|", 0);
                Token1 = database.indexOf("|", Token0+1);
                Token2 = database.indexOf("|", Token1+1);
                Token3 = database.indexOf("|", Token2+1);
                Token4 = database.indexOf("|", Token3+1);

                fields = new Array;
                fields[0] = database.substring( 0, Token0 );
                fields[1] = database.substring( Token0+1, Token1 );
                fields[2] = database.substring( Token1+1, Token2 );
                fields[3] = database.substring( Token2+1, Token3 );
                fields[4] = database.substring( Token3+1, database.length );
                
                
                Total = Total + (fields[3] * fields[2]);
                TOTotal = moneyFormat(Total);
                TOCount = TOCount + (fields[2]*1);

               whattowrite +=   "<tr><td><center><input type=text size=60 name=\"PRODUCT__"+ i +"\" value=\"" + fields[0] + "\"></center></td>"
                                  + "<td><center><input type=text size=06 name=\"SIZE_____"+ i +"\" value=\"" + fields[1] + "\"></center></td>"
                                  + "<td><center><input type=text size=06 name=\"QUANTITY_"+ i +"\" value=\"" + fields[2] + "\"></center></td>"
                                  + "<td><center><input type=text size=06 name=\"PRICE____"+ i +"\" value=\"" + fields[3] + "\"></td>"
                                  + "<td><center><input type=text size=20 name=\"COMMENT__"+ i +"\" value=\"" + fields[4] + "\"></center></td>"
                                  + "<input type=hidden name=\"---------"+i+"\" value=\" =====================================================" + "\">"
                                  + "<td><center><input type=button value=\"  Remove  \" onClick=\"RemoveFromCart("+i+")\"></center></td>";

        }

        document.write(whattowrite);

//        document.write("</td></tr><tr><td colspan=2>SUBTOTAL</td><td><center>");
//        TOCount = moneyFormat(TOCount);
//        document.write(TOCount);
//        document.write("</center><td><center>$");
//        TOTotal = moneyFormat(TOTotal);
//
//        document.write(TOTotal);
//        document.write("</center></td><td>&nbsp</td><td>&nbsp</td>");


        document.Form1.COUNT.value=i-1;
	document.Form1.TOTCOST.value=TOTotal;
//	document.Form2.NOTE.value="TESTING";





}

// FUNCTION:		WriteToForm
// PARAMETERS:	Null
// RETURNS:		Product hidden fields Written to Document
// PURPOSE:		Draws current cart product hidden fields on HTML form

function WriteToForm(form) {
		var PONUMBER=form.PONUMBER.value;
		var COMPANY=form.COMPANY.value;
		var NOTE=form.NOTE.value;
		
		win = window.open('Order.html', 'popup', config='height=400, width=800, toolbar=no, menubar=yes, scrollbars=yes, resizable=yes,location=no, directories=no, status=no')

	
        NumberOrdered = 0;
        Total=0;
        TOTotal=0;
        TOCount=0;
        TOproduct = " ";
        TOsize = " ";
        TOquantity = " ";
        TOprice = " ";
        TOcomment = " ";
        NumberOrdered = GetCookie("NumberOrdered");
        whattowrite = "";
        
                win.document.write("<HTML><body>");
                win.document.write("<center><font size=4>Order Form</font></center><br>");
                win.document.write("<pre>");


        for (i = 1; i <= NumberOrdered; i++) {
                 NewOrder = "Order." + i;
                database = "";
                database = GetCookie(NewOrder);

                Token0 = database.indexOf("|", 0);
                Token1 = database.indexOf("|", Token0+1);
                Token2 = database.indexOf("|", Token1+1);
                Token3 = database.indexOf("|", Token2+1);
                Token4 = database.indexOf("|", Token3+1);

                fields = new Array;
                fields[0] = database.substring( 0, Token0 );
                fields[1] = database.substring( Token0+1, Token1 );
                fields[2] = database.substring( Token1+1, Token2 );
                fields[3] = database.substring( Token2+1, Token3 );
                fields[4] = database.substring( Token3+1, database.length );
                Total = Total + (fields[3] * fields[2]);
                TOTotal = moneyFormat(Total);
                TOCount = TOCount + (fields[2]*1);
                
                win.document.write("<td>PRODUCT__" + i + "   " + fields[0] + "</td><br>");
                win.document.write("<td>SIZE_____" + i + "   " + fields[1] + "</td><br>");
                win.document.write("<td>QUANTITY_" + i + "   " + fields[2] + "</td><br>");
                win.document.write("<td>PRICE____" + i + "   " + fields[3] + "</td><br>");
                win.document.write("<td>COMMENT__" + i + "   " + fields[4] + "</td><br>");
                win.document.write("<td>---------" + i + "   =====================================================" + "</td><br><br>");

         }
         		win.document.write("<td>Total:    " + TOTotal + "</td><br>");
         		win.document.write("<td>Items:    " + TOCount + "</td><br>");
			win.document.write("<td>PONumber: " + PONUMBER + "</td><br>");
			win.document.write("<td>Company:  " + COMPANY + "</td><br>");
			win.document.write("<td>Note:     " + NOTE + "</td><br>");
			
			win.document.write("<center>")
//			win.document.write("<input type='button' name='Button' value='Print'  onClick= 'window.print()';> ");
			win.document.write("<input type='button' name='Button' value='Close this Window' onclick= 'window.close()';>");
			win.document.write("</center></pre></body></html>");


}

function OnTop()
       {
          if(win.open)
              {
            win.focus();
            Timer=setTimeout('OnTop()',1000)
              }
            else
              {
            clearTimeout(Timer)
        }
}
 
function Final(form) {
WriteToForm(form);
OnTop();
form.submit();
RemoveAllCookies();
win.close();
}
// End -->
