
//---------------------------------------------------------------------||
// 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:    getSelectedRadio                                       ||
// PARAMETERS:  buttonGroup                                            ||
// RETURNS:     array number of the selected radio button or -1 if no button is selected   ||
// PURPOSE:     Get the selected radio button index		       ||
//---------------------------------------------------------------------||

function getSelectedRadio(buttonGroup) {
      if (buttonGroup[0]) { // if the button group is an array (one button is not an array)
      for (var i=0; i<buttonGroup.length; i++) {
         if (buttonGroup[i].checked) {
            return i
         }
      }
   } else {
      if (buttonGroup.checked) { return 0; } // if the one button is checked, return zero
   }
   // if we get to this point, no radio button is selected
   return -1;
} 

//---------------------------------------------------------------------||
// FUNCTION:    getSelectedRadioValue                                  ||
// PARAMETERS:  buttonGroup                                            ||
// RETURNS:     value of the selected radio button or "" if no button is selected   ||
// PURPOSE:     Get the value of the selected radio button	       ||
//---------------------------------------------------------------------||

function getSelectedRadioValue(buttonGroup) {
   
   var i = getSelectedRadio(buttonGroup);
   if (i == -1) {
      return "";
   } else {
      if (buttonGroup[i]) { // Make sure the button group is an array (not just one button)
         return buttonGroup[i].value;
      } else { // The button group is just the one button, and it is checked
         return buttonGroup.value;
      }
   }
} 


//---------------------------------------------------------------------||
// FUNCTION:    AddToCart                                              ||
// PARAMETERS:  Form Object                                            ||
// RETURNS:     Cookie to user's browser, with prompt                  ||
// PURPOSE:     Adds a frame to the quote cart             	       ||
//---------------------------------------------------------------------||

function AddToCart(thisForm) {
	var bAlreadyInCart = false;
	iNumberOrdered = GetCookie("NumberOrdered");
	
	if ( iNumberOrdered == null )
      	iNumberOrdered = 0;
      
      
	strQUANTITY  		= thisForm.Quantity.value;
	strTITLE     		= thisForm.TitleName.value;
	strITEM			= thisForm.Item.value;
	strARTIST 		= thisForm.Artist.value;
	strIMAGESIZE 		= thisForm.ImageSize.value;
	strPAPERSIZE		= thisForm.PaperSize.value;
	strTEXTFIELD		= thisForm.textfield.value;
	strFILLET2	        = thisForm.Fillet2.value;
	strMATSELECTION	        =  getSelectedRadioValue(thisForm.MatSelection);
	strMATOPTIONS	        =  getSelectedRadioValue(thisForm.MatOptions);
	strGLAZE	        =  getSelectedRadioValue(thisForm.Glaze);
	strSECURITY             =  getSelectedRadioValue(thisForm.Security);
        strCOMMENTS             =  thisForm.comments.value;
	
	
	//Is this product already in the cart?  If so, increment quantity instead of adding another.
	   for ( i = 1; i <= iNumberOrdered; 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);
		Token5 = database.indexOf("|", Token4+1);
		Token6 = database.indexOf("|", Token5+1);
		Token7 = database.indexOf("|", Token6+1);
		Token8 = database.indexOf("|", Token7+1);
		Token9 = database.indexOf("|", Token8+1);
		Token10 = database.indexOf("|", Token9+1);
		Token11 = database.indexOf("|", Token10+1);
		Token12 = database.indexOf("|", Token11+1);

	      				

	      fields = new Array;
	      fields[0] = database.substring( 0, Token0 );        // Quantity
	      fields[1] = database.substring( Token0+1, Token1 ); // Title
	      fields[2] = database.substring( Token1+1, Token2 ); // Item Number
	      fields[3] = database.substring( Token2+1, Token3 ); // Artist
	      fields[4] = database.substring( Token3+1, Token4 ); // Image Size
	      fields[5] = database.substring( Token4+1, Token5 ); // Paper Size
	      fields[6] = database.substring( Token5+1, Token6 ); // Frame Number
	      fields[7] = database.substring( Token6+1, Token7 ); // Fillet Number
	      fields[8] = database.substring( Token7+1, Token8 ); // Mat Selection
	      fields[9] = database.substring( Token8+1, Token9 ); // Mat Options
	      fields[10] = database.substring( Token9+1, Token10 ); // Glaze
	      fields[11] = database.substring( Token10+1, Token11 ); // Security
	      fields[12] = database.substring( Token11+1, database.length ); // Comments
		
		
	      
	      if ( fields[1] == strTITLE &&
	           fields[2] == strITEM  &&
	           fields[3] == strARTIST &&
	           fields[4] == strIMAGESIZE &&
	           fields[5] == strPAPERSIZE &&
	           fields[6] == strTEXTFIELD &&
	           fields[7] == strFILLET2 &&
	           fields[8] == strMATSELECTION &&
	           fields[9] == strMATOPTIONS &&
	           fields[10] == strGLAZE &&
	           fields[11] == strSECURITY &&
	           fields[12] == strCOMMENTS	           
	         ) {
	         bAlreadyInCart = true;
	         dbUpdatedOrder = (parseInt(strQUANTITY)+parseInt(fields[0]))  + "|" +
	                          strTITLE     + "|" +
	                          strITEM      + "|" +
	                          strARTIST    + "|" +
	                          strIMAGESIZE + "|" +
	                          strPAPERSIZE + "|" +
	                          strTEXTFIELD + "|" +
	                          strFILLET2   + "|" +
	                          strMATSELECTION + "|" +
	                          strMATOPTIONS   + "|" +
	                          strGLAZE     + "|" +
	                          strSECURITY  + "|" +
	                          strCOMMENTS
	                          ;
	                          
	         strNewOrder = "Order." + i;
	         DeleteCookie(strNewOrder, "/");
	         SetCookie(strNewOrder, dbUpdatedOrder, null, "/");
	         notice = strQUANTITY + " " + strTITLE + " has been added to your Quote Request.";
	         break;
      		}
      
      	}
      
      
         if ( !bAlreadyInCart ) {
               iNumberOrdered++;            
            
               dbUpdatedOrder = thisForm.Quantity.value      + "|"
				+ thisForm.TitleName.value       + "|"
				+ thisForm.Item.value        + "|"
				+ thisForm.Artist.value      + "|"
				+ thisForm.ImageSize.value   + "|"
				+ thisForm.PaperSize.value   + "|"
				+ thisForm.textfield.value   + "|"
				+ thisForm.Fillet2.value     + "|"
				+ getSelectedRadioValue(thisForm.MatSelection)   + "|"
				+ getSelectedRadioValue(thisForm.MatOptions)    + "|"
				+ getSelectedRadioValue(thisForm.Glaze)         + "|"
				+ getSelectedRadioValue(thisForm.Security) +"|" 
				+ thisForm.comments.value;

               strNewOrder = "Order." + iNumberOrdered;
               SetCookie(strNewOrder, dbUpdatedOrder, null, "/");
               SetCookie("NumberOrdered", iNumberOrdered, null, "/");
               notice = strQUANTITY + " " + strTITLE + " has been added to your Quote Request.";
            
         }
      
              alert(notice);
    
}


//---------------------------------------------------------------------||
// FUNCTION:    RemoveFromCart                                         ||
// PARAMETERS:  Order Number to Remove                                 ||
// RETURNS:     Null                                                   ||
// PURPOSE:     Removes an item from a users shopping cart             ||
//---------------------------------------------------------------------||
function RemoveFromCart(RemOrder) {
   var strRemove = "Click 'Ok' to remove this product from your shopping cart."; 	
   if ( confirm( strRemove ) ) {
      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:    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:    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:    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:    ChangeQuantity                                         ||
// PARAMETERS:  Order Number to Change Quantity                        ||
// RETURNS:     Null                                                   ||
// PURPOSE:     Changes quantity of an item in the shopping cart       ||
//---------------------------------------------------------------------||
function ChangeQuantity(OrderItem,NewQuantity) {
   if ( isNaN(NewQuantity) ) {
      alert( "Invalid Quantity" );
   } else {
      NewOrder = "Order." + OrderItem;
      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);
      		Token5 = database.indexOf("|", Token4+1);
      		Token6 = database.indexOf("|", Token5+1);
      		Token7 = database.indexOf("|", Token6+1);
      		Token8 = database.indexOf("|", Token7+1);
      		Token9 = database.indexOf("|", Token8+1);
      		Token10 = database.indexOf("|", Token9+1);
      		Token11 = database.indexOf("|", Token10+1);
      		Token12 = database.indexOf("|", Token11+1);
      
      	      				
      
      	      fields = new Array;
      	      fields[0] = database.substring( 0, Token0 );        // Quantity
      	      fields[1] = database.substring( Token0+1, Token1 ); // Title
      	      fields[2] = database.substring( Token1+1, Token2 ); // Item Number
      	      fields[3] = database.substring( Token2+1, Token3 ); // Artist
      	      fields[4] = database.substring( Token3+1, Token4 ); // Image Size
      	      fields[5] = database.substring( Token4+1, Token5 ); // Paper Size
      	      fields[6] = database.substring( Token5+1, Token6 ); // Frame Number
      	      fields[7] = database.substring( Token6+1, Token7 ); // Fillet Number
      	      fields[8] = database.substring( Token7+1, Token8 ); // Mat Selection
      	      fields[9] = database.substring( Token8+1, Token9 ); // Mat Options
      	      fields[10] = database.substring( Token9+1, Token10 ); // Glaze
      	      fields[11] = database.substring( Token10+1, Token11 ); // Security
	      fields[12] = database.substring( Token11+1, database.length ); // Comments

		dbUpdatedOrder =  NewQuantity   + "|"
				+ fields[1]     + "|"
				+ fields[2]     + "|"
				+ fields[3]     + "|"
				+ fields[4]   	+ "|"
				+ fields[5]   	+ "|"
				+ fields[6]   	+ "|"
				+ fields[7]     + "|"
				+ fields[8]   	+ "|"
				+ fields[9]     + "|"
				+ fields[10]    + "|"
				+ fields[11] 	+"|" 
				+ fields[12];
      
      strNewOrder = "Order." + OrderItem;
      DeleteCookie(strNewOrder, "/");
      SetCookie(strNewOrder, dbUpdatedOrder, null, "/");
      
      location.reload(true); 
   }
}

//---------------------------------------------------------------------||
// FUNCTION:    ChangeComments                                         ||
// PARAMETERS:  Order Number to Change Comments                        ||
// RETURNS:     Null                                                   ||
// PURPOSE:     Changes Comments of the quote cart       ||
//---------------------------------------------------------------------||
function ChangeComments(OrderItem, NewComment) {
   
      NewOrder = "Order." + OrderItem;
      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);
      		Token5 = database.indexOf("|", Token4+1);
      		Token6 = database.indexOf("|", Token5+1);
      		Token7 = database.indexOf("|", Token6+1);
      		Token8 = database.indexOf("|", Token7+1);
      		Token9 = database.indexOf("|", Token8+1);
      		Token10 = database.indexOf("|", Token9+1);
      		Token11 = database.indexOf("|", Token10+1);
      		Token12 = database.indexOf("|", Token11+1);
      
      	      				
      
      	      fields = new Array;
      	      fields[0] = database.substring( 0, Token0 );        // Quantity
      	      fields[1] = database.substring( Token0+1, Token1 ); // Title
      	      fields[2] = database.substring( Token1+1, Token2 ); // Item Number
      	      fields[3] = database.substring( Token2+1, Token3 ); // Artist
      	      fields[4] = database.substring( Token3+1, Token4 ); // Image Size
      	      fields[5] = database.substring( Token4+1, Token5 ); // Paper Size
      	      fields[6] = database.substring( Token5+1, Token6 ); // Frame Number
      	      fields[7] = database.substring( Token6+1, Token7 ); // Fillet Number
      	      fields[8] = database.substring( Token7+1, Token8 ); // Mat Selection
      	      fields[9] = database.substring( Token8+1, Token9 ); // Mat Options
      	      fields[10] = database.substring( Token9+1, Token10 ); // Glaze
      	      fields[11] = database.substring( Token10+1, Token11 ); // Security
	      fields[12] = database.substring( Token11+1, database.length ); // Comments

		dbUpdatedOrder =  fields[0]     + "|"
				+ fields[1]     + "|"
				+ fields[2]     + "|"
				+ fields[3]     + "|"
				+ fields[4]   	+ "|"
				+ fields[5]   	+ "|"
				+ fields[6]   	+ "|"
				+ fields[7]     + "|"
				+ fields[8]   	+ "|"
				+ fields[9]     + "|"
				+ fields[10]    + "|"
				+ fields[11] 	+"|" 
				+ NewComment;
      
      strNewOrder = "Order." + OrderItem;
      DeleteCookie(strNewOrder, "/");
      SetCookie(strNewOrder, dbUpdatedOrder, null, "/");
      location.reload(true);
   
}


//---------------------------------------------------------------------||
// FUNCTION:    GetFromCart                                            ||
// PARAMETERS:  Null                                                   ||
// RETURNS:     Product Table Written to Document                      ||
// PURPOSE:     Displays quote cart in table on HTML page              ||
//---------------------------------------------------------------------||
function GetFromCart() {
        var iNumberOrdered = 0;
        
        iNumberOrdered = GetCookie("NumberOrdered");
         if ( iNumberOrdered == null )
      		iNumberOrdered = 0;
      
        whattowrite = "";
	formhiddenfields = "";
	
	
        for (i = 1; i <= iNumberOrdered; 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);
		Token5 = database.indexOf("|", Token4+1);
		Token6 = database.indexOf("|", Token5+1);
		Token7 = database.indexOf("|", Token6+1);
		Token8 = database.indexOf("|", Token7+1);
		Token9 = database.indexOf("|", Token8+1);
		Token10 = database.indexOf("|", Token9+1);
		Token11 = database.indexOf("|", Token10+1);
		Token12 = database.indexOf("|", Token11+1);
		
		
		
                fields = new Array;
                fields[0] = database.substring( 0, Token0 );        // Quantity
                fields[1] = database.substring( Token0+1, Token1 ); // Title
                fields[2] = database.substring( Token1+1, Token2 ); // Item Number
                fields[3] = database.substring( Token2+1, Token3 ); // Artist
                fields[4] = database.substring( Token3+1, Token4 ); // Image Size
                fields[5] = database.substring( Token4+1, Token5 ); // Paper Size
                fields[6] = database.substring( Token5+1, Token6 ); // Frame Number
                fields[7] = database.substring( Token6+1, Token7 ); // Fillet Number
                fields[8] = database.substring( Token7+1, Token8 ); // Mat Selection
                fields[9] = database.substring( Token8+1, Token9 ); // Mat Options
                fields[10] = database.substring( Token9+1, Token10 ); // Glaze
                fields[11] = database.substring( Token10+1, Token11 ); // Security
                fields[12] = database.substring( Token11+1, database.length ); // Comments

		
                
         	whattowrite += "<tr valign= top> <td width= 80><div align= center>" +
	 				"<input type= text name= Quantity  size=2 value = " + fields[0]  + " onChange= \" ChangeQuantity("+i+", this.value);\" /> <br /> " +
	 					"<input type=button value=Remove onClick=\"RemoveFromCart("+i+");\" /></div> </td>" +
	 					"<td width=120>" + fields[1] + "</td> " +
	 					"<td width=100>" + fields[2] + "</td>" +
	 					"<td width=100>" + fields[3] + "</td>" +
	 					"<td width=70>" + fields[4] + "</td>" +
	 					"<td width=70>" + fields[5] + "</td>" +
	 					"<td width=70>" + fields[6] + "</td>" +
	 					"<td width=70>" + fields[7] + "</td>" +
	 					"<td width=70>" + fields[8] + "<br /></td>" +
	 					"<td width=85>" + fields[9] +"</td>" +
	 					"<td width=60>" + fields[10] + "</td>" +
	 					"<td width=80>" + fields[11] + "</td></tr>" +
	 					"<tr valign=top><td align=right valign=middle bgcolor=\"#e3d9d3\" width=80><div align=right>" +
	 					"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div></td><td colspan=10 width=869><div align=center>Comments<br /> " +
	 					"<textarea name=textareaName rows=3 cols=100 onChange= \" ChangeComments("+i+", this.value);\" > " + 
	 					fields[12] + 
					"</textarea></div></td><td bgcolor=\"#e3d9d3\" width=80></td></tr>" ;
		
             
             formhiddenfields +=   "<input type=hidden name=\"Quantity_"+ i +"\" value=\"" + fields[0] + "\">" +
	                   			    "<input type=hidden name=\"Title_"+ i +"\" value= \"" + fields[1] + "\">" +
	                   			    "<input type=hidden name=\"Item Number_"+ i +"\" value=\"" + fields[2] + "\">" +
	                   			    "<input type=hidden name=\"Artist_"+ i +"\" value= \"" + fields[3] + "\">" +
	                   			    "<input type=hidden name=\"Image_Size_"+ i +"\" value= " + fields[4] + ">" +
	                   			    "<input type=hidden name=\"Paper_Size_"+ i +"\" value= " + fields[5] + ">" +
	                   			    "<input type=hidden name=\"Frame_Number_"+ i +"\" value=\"" + fields[6] + "\">" +
	                   			    "<input type=hidden name=\"Fillet_Number_"+ i +"\" value=\"" + fields[7] + "\">" +
	                   			    "<input type=hidden name=\"Mat_Selection_"+ i +"\" value=\"" + fields[8] + "\">" +
	                   			    "<input type=hidden name=\"Mat_Options_"+ i +"\" value=\"" + fields[9] + "\">" +
	                   			    "<input type=hidden name=\"Glaze_"+ i +"\" value=\"" + fields[10] + "\">" +
	                   			    "<input type=hidden name=\"Security_"+ i +"\" value=\"" + fields[11] + "\">" +
	                   			    "<input type=hidden name=\"Comments_"+ i +"\" value=\"" + fields[12] + "\">" ;
	     
	     

             
        }

        document.write(whattowrite);
        
        document.write(formhiddenfields);
        
        
}



       



