

function cartCreateCookie(cookieString,deleteCookie) {
    if (deleteCookie) { days = Number(-1) ; } // deletes cookie
    else { days = Number(7) ; } // sets expiration 7 days hence
    
    var expdate=new Date(); expdate.setDate( expdate.getDate() + days ); var expiry = expdate.toGMTString() ;
    document.cookie = ( cookieString + "@@;expires=" + expiry + ";path=/" ) ;
}




function cartDecodeCookie(cookieID) {
//    var cookieString = document.cookie ;
    findCookie = new RegExp ( cookieID + "\=([^@]+)@@" , "g" ) ;
      if ( findCookie.test(document.cookie) ) {
         findCookie.lastIndex=0 ;
         resultArray = findCookie.exec(document.cookie) ;
         return resultArray[1] ;
      }
      else { return "fail"; }
}





function cartRound(quantInput) {
   return ( (Math.round(quantInput*100))/100 ) ;
}





function cartCheckIntegerValue(quantInput,origQuant,idName) {
   // leave idName absent (or set it to "false") if you don't need to update a form field
   if ( !isNaN(quantInput) && quantInput.indexOf ('.') == -1 ) {
      if (idName) { document.getElementById(idName).value = quantInput ; }
      return quantInput ;
   }
   else {
      var newValue = alert("We're sorry, but you must enter a whole number value for this quantity.\n\nPlease enter the desired quantity now.");
      if (idName) { document.getElementById(idName).value = origQuant ; }
      return origQuant ;
   }
}





function cartTwoDecimal(quantInput) {
   quantA = Number( cartRound(quantInput) ) ;
   quantAStr = quantA.toString() ;
   findDecimal = new RegExp ( "\\." , "g" ) ;
   findTwoDecimalPlaces = new RegExp ( "\\.\\d{2}" , "g" ) ;
  
   //searches for decimal in number
   if ( findDecimal.test( quantAStr ) ) {
      //if it finds a decimal, determines whether there are one or two decimal places
      if ( findTwoDecimalPlaces.test( quantAStr ) ) { return quantAStr ; }
      else { return (quantAStr + "0") ; }
   }
   else { 
      if ( cartRetailerTest() ) { return (quantAStr + ".00") ; }
      else { return ( quantAStr ) ; }
   }
}



function cartLaunchChoice(boxID) {
    windowWidth = displayBrowserWinDim('width') ;
    
    if ( windowWidth > 0 && windowWidth != 'undefined' && document.getElementById(boxID).clientWidth<(windowWidth) ) {
       divWidth = document.getElementById(boxID).clientWidth ;
       document.getElementById(boxID).style.left = ( (Math.floor((windowWidth-divWidth)/2)) + "px") ;
    }
    else { document.getElementById(boxID).style.left="20px" ; }
    
    if (boxID == "cartPrints") { databaseSetMatColor(matColorSel) ; }
    
    displayToggleBox(boxID,1);
}









function cartGenericChangeQuantity(reCart2Code,reCart3Code,cookieContents,whichLine) {
   reCart2 = new RegExp ( reCart2Code , "g" ) ;
   reCart3 = new RegExp ( reCart3Code , "g" ) ;

   var cookieStart = "" ; 
   for (i=0; i<whichLine; i++) {
      databaseRegExpResult2 = reCart2.exec(cookieContents) ;
      cookieStart += ( databaseRegExpResult2[1] + "%#" );
   } 
   reCart3.lastIndex = reCart2.lastIndex;
   databaseRegExpResult3 = reCart3.exec(cookieContents) ;

   reCart2.lastIndex = reCart3.lastIndex;
   var cookieEnd = "" ;
   for ( ajn=1; ajn<300; ajn++ ) {
      saveLastIndex = reCart2.lastIndex ;
      if ( reCart2.test(cookieContents) ) { 
         reCart2.lastIndex = saveLastIndex ;
         databaseRegExpResult2 = reCart2.exec(cookieContents) ;
         cookieEnd += (databaseRegExpResult2[1] + "%#" ) ;
      }
      else break;
   }
   databaseRegExpResult4[0] = cookieStart ;
   databaseRegExpResult4[1] = databaseRegExpResult3[1] ;
   databaseRegExpResult4[2] = cookieEnd ;
}








function cartCalculateOrderTotals() { 
   var itemsTotal = Number(0) ; var shippingCharge = Number(0) ;

   for ( va=0; va<numPrints ; va++ ) { 
      itemsTotal+=(document.getElementById("cartPrintQuantity" + va).value*document.getElementById("cartPrintPrice" + va).value) ;
   }

   var reFindNumber = /(\d+)/g ;
   var temp = cartDecodeCookie("whichCardSet") ; 
   if ( temp != "fail" ) {
      whichCardSet = temp.match(reFindNumber) ;

      for ( cardsLine=1; cardsLine<=whichCardSet[1]; cardsLine++ ) {
         cartDecodeCardSetCookie(cardsLine) ; 
         try {
            if ( cardSetArray[4] ) { 
               itemsTotal+=(document.getElementById("cartCardQuantity" + cardsLine).value*document.getElementById("cartCardPaypalAmount" + cardsLine).value) ;
            }
         }
         catch(err) {}
      }
   }

// calculate shipping charge to reflect only prints and cards
     if ( itemsTotal<50 ) { shippingCharge += Number(shippingArray[0]) ; }
     else if ( itemsTotal>=50 && itemsTotal<=100 ) { shippingCharge += Number(shippingArray[1]) ; }
     else { shippingCharge += Number(shippingArray[2]) ; }
     if ( numPrints == 0 && numCards == 0 ) { shippingCharge = 0 ; }

   for ( va=0; va<numWPpay ; va++ ) { 
      itemsTotal+=(document.getElementById("cartWPQuantity" + va).value*document.getElementById("cartWPPrice" + va).value) ;
   }

   for ( va=0; va<numSShigh ; va++ ) { 
      itemsTotal+=(document.getElementById("cartSSQuantity" + va).value*document.getElementById("cartSSPrice" + va).value) ;
   }

   orderTotals = (Number(itemsTotal)+Number(shippingCharge))  ; 
   document.getElementById("orderTotal").innerHTML = ( "$" + cartTwoDecimal(orderTotals ) ) ;
   document.getElementById("shippingCharge").innerHTML = ( "$" + cartTwoDecimal(shippingCharge) ) ;
   document.getElementById("shipping").value = shippingCharge ;
     if (orderTotals>11.9) {
        document.getElementById("paypalBusiness").value = "orders@scenicnewengland.net" ;
        document.getElementById("submitButton").value = "Proceed to PayPal Checkout" ;
     }
     else if (orderTotals==0) {
        document.getElementById("submitButton").value = "Proceed to Download" ;
     }
     else {
        document.getElementById("paypalBusiness").value = "ordering@scenicnewengland.net" ;
        document.getElementById("submitButton").value = "Proceed to PayPal Checkout" ;
     }
}







function cartGenericCreateCartSection(cookieID,progToExec,regExpCode) {

   var cartContents = cartDecodeCookie(cookieID) ;
   reCart = new RegExp ( regExpCode , "g" ) ;
   databaseRegExpResult1 = reCart.exec(cartContents) ;

   eval( progToExec + "(\"0\")" ) ;

 // subsequent table rows
   for ( ajv=1; ajv<300; ajv++ ) {
      saveLastIndex = reCart.lastIndex ;
     if ( reCart.test(cartContents) ) { 
         reCart.lastIndex = saveLastIndex ;
         databaseRegExpResult1 = reCart.exec(cartContents) ;

         eval( progToExec + "(ajv)" ) ;
      }
      else { break; }
   }
}






function cartWPSS(cartContents,prod,type) {
   reWPSSCart = new RegExp ( "([A-Z]{2}\\d{3}),(\\d+)" , "g" ) ;
   databaseRegExpResult1 = reWPSSCart.exec(cartContents) ;

   WPSSTableLine("0",prod,type) ;

   // subsequent table rows
   for ( ajv=1; ajv<300; ajv++ ) {
      saveLastIndex = reWPSSCart.lastIndex ;
      if ( reWPSSCart.test(cartContents) ) { 
         reWPSSCart.lastIndex = saveLastIndex ;
         databaseRegExpResult1 = reWPSSCart.exec(cartContents) ;

         WPSSTableLine(ajv,prod,type) ;
      }
      else { break; }
   }
}








// ------------------------------ CONSUMER PRINTS ----------------------------------

function cartSelectPrint(frameSize,whatToDo) {
  baseIMG = ( "images/frame_size_select" + HorV + "_" );
  
  if ( whatToDo == "show" ) {
      document.selFrame.src = ( baseIMG + frameSize + ".gif" ) ;
      if (frameSize == selectedFrameSize) { cartWriteMatSize(frameSize,'mouseout') ; }
      else { cartWriteMatSize(frameSize,'mouseover') ; }
  }
  else if ( whatToDo == "select" ) {
    selectedFrameSize = frameSize;
    cartWriteMatSize(frameSize,'click') ;
    document.getElementById('clickToSelectSize').style.color = "#AAAAAA" ; 
    document.getElementById('clickToSelectColor').style.color = "#CC3333" ; 
    document.getElementById('printPurchaseOptions').style.color = "#CC3333" ; 
    document.getElementById('addPrint').disabled = (false) ;
  }
}

function cartWriteMatSize(frameSize,eventType) {
  //&#188; 	¼ 	(Fraction one-fourth)
  //&#189; 	½ 	(Fraction one-half)
  //&#190; 	¾ 	(Fraction three-fourths)
  if ( frameSize == "8x10" )  { matW = "10" ; matH = "8" ; prW = "7" ; prH = "4&#190;" }
  if ( frameSize == "12x16" ) { matW = "16" ; matH = "12" ; prW = "12" ; prH = "8" }
  if ( frameSize == "18x24" ) { matW = "24" ; matH = "18" ; prW = "18" ; prH = "12" }
  if ( frameSize == "24x36" ) { matW = "36" ; matH = "24" ; prW = "30" ; prH = "18" }
  
  pSMS = ( '<SPAN CLASS=label>Mat Size:</SPAN> ' + matH + '&#8221; x ' + matW + '&#8221;<BR><SPAN CLASS=label>Approx. Print Size:</SPAN> ' + prH + '&#8221; x ' + prW + '&#8221;' ) ;
  
  if ( eventType == "mouseover" ) {
      document.getElementById('matSize').innerHTML = pSMS ; 
  }
  else if ( eventType == "mouseout" ) {
      document.getElementById('matSize').innerHTML = printSizeMatSize ;
  }
  else if ( eventType == "click" ) {
      printSizeMatSize = pSMS ;
      document.getElementById('matSize').innerHTML = pSMS ;
      document.getElementById('writePrintSize').innerHTML = ( matH + '&#8221; x ' + matW + '&#8221;' ) ;
      document.getElementById('writePrintPrice').innerHTML = ( "$" + cartPrintPrice() ) ;
      document.getElementById('showFramePrice').innerHTML = ( ", $" + databasePriceResult[2] + " for " + frameSize ) ;
      
  }
}


function cartChangeFrame(frameColor) {
  baseIMG = ( "images/cart_photo_frame_double" + HorV + "_" );
//  if ( frameColor == "none" ) { document.getElementById('showFramedPrint'+HorV).style.backgroundImage = "none" ; }
//  else { document.getElementById('showFramedPrint'+HorV).style.backgroundImage = "url(" + baseIMG + frameColor + ".gif)" ; }
  document.getElementById('showFramedPrintDouble'+HorV).style.backgroundImage = "url(" + baseIMG + frameColor + ".gif)" ;
}


function cartPrintPrice() { 
  databasePriceFind('prints',selectedFrameSize) ; 
  if (document.getElementById('printFramed').checked) { return ( databasePriceResult[1] + databasePriceResult[2] ) ; }
  else { return databasePriceResult[1] ; }
}

function cartOptionMounted() {
   alert('Mounting comes standard with all photographic prints.');
   document.getElementById('printMounted').checked=(true);
}

function cartOptionMatted() {
   if ( document.getElementById('printFramed').checked ) {
      alert( "You have chosen to frame your print.  Framed prints must be matted." ) ;
      document.getElementById('printMatted').checked=(true);
   }
   else {
      var answer = confirm('Matting comes standard with all photographic prints.  However, unmatted prints are available upon request at the same price.\n\nIf you want your photo to come WITHOUT a mat, click \"OK.\"');
      if ( answer ) { document.getElementById('printMatted').checked=(false); }
      else { document.getElementById('printMatted').checked=(true); }
   }
}

function cartOptionFramed() {
   if ( document.getElementById('printMatted').checked==(false) && document.getElementById('printFramed').checked==(true) ) {
      alert( "You have chosen to frame your print.  Framed prints must be matted.\n\nPlease review your mat color selection." ) ;
      document.getElementById('printMatted').checked=(true);
   }
   cartWriteMatSize(selectedFrameSize,'click');
}




function cartAddPrintToCart() {
   var printCookie = cartDecodeCookie("printsCart") ;
   if ( printCookie == "fail" ) { var oldPrintCookieStr = "" ; }
   else { oldPrintCookieStr = ( printCookie ) ; }
   
   if ( document.getElementById('printMatted').checked == true ) { matColour = databaseDecodeMatColor(document.getElementById('matColor').value,"2","0") ; }
   else { matColour = "none" ; }
   
   if ( document.getElementById('printFramed').checked == true ) { boolFramed = "Y" ; }
   else { boolFramed = "N" ; }

   cartCreateCookie( "printsCart=" + oldPrintCookieStr + imgNum + "," + selectedFrameSize + "," + matColour  + "," + boolFramed + ",1%#" ) ;
   document.getElementById('addPrint').value = "Add Again" ;
}




function cartChangePrintQuantity(whichLine) {
   var whichFormElement1 = ( "cartPrintQuantity" + whichLine ) ;
   var whichFormElement2 = ( "cartPrintPrice" + whichLine ) ;
   var whichFormElement3 = ( "cartPrintExtPrice" + whichLine ) ;

   cartGenericChangeQuantity( "([A-Z]{2}\\d{3},\\w{3,5},\\w{2,4},[YN],\\d+)\%\#" , "([A-Z]{2}\\d{3},\\w{3,5},\\w{2,4},[YN],)(\\d+)\%\#" , cartDecodeCookie("printsCart") , whichLine ) ;
   printQuant = cartCheckIntegerValue( document.getElementById(whichFormElement1).value , databaseRegExpResult3[2] , whichFormElement1 ) ;

   if ( printQuant == 0 ) {
      if ( confirm("Are you sure you want to permanently remove this Print from your cart?") ) { 
         cartCreateCookie( "printsCart=" + databaseRegExpResult4[0] + databaseRegExpResult4[2] ) ;
         window.location=(displayBaseURL + "cart/cart.php");
      }
      else { document.getElementById(whichFormElement1).value = databaseRegExpResult3[2] ; }
   }
   else {
      cartCreateCookie( "printsCart=" + databaseRegExpResult4[0] + databaseRegExpResult3[1] + printQuant + "%#" + databaseRegExpResult4[2] ) ; 
      document.getElementById(whichFormElement3).innerHTML = ( "$" + (printQuant*document.getElementById(whichFormElement2).value) ) ;
      cartCalculateOrderTotals() ;
   }
}



function cartInvNum(whatToDo) { 
   locationSearch = location.search.substr(1) ;
   if ( invCookie == "fail" ) { window.location="http://www.scenicnewengland.net/photo/index.php" ; }
   if ( (locationSearch != xStr("ngugicqx`thxvtqcmkqo>Thxvtq/uq.Wdgqmd-Qix-Hrhndre-ws,Erqqnhxf-Flfensvv)jptpcdjdvtgwAVVI19")) && ( decodeURIComponent(locationSearch) != ("invNum=" + invoiceNum[1])) ) { window.location="http://www.scenicnewengland.net/photo/index.php" ; }
   if ( whatToDo == "add" ) { window.location="http://www.scenicnewengland.net/photo/index.php" ; }
}



















// ------------------------------------- CONSUMER CARDS -------------------------

function cartDecodeCardSetCookie(whichSet) { 
    var cookieString = document.cookie ; 
    findCookie = new RegExp( "cardSetCookie" + whichSet , "g" ) ; 
    
    if ( findCookie.test(cookieString) ) {
       var cardSetCookie = cartDecodeCookie("cardSetCookie" + whichSet) ;
       var re9 = /([A-Z]{2}\d{3})/g ;

     //if cards have been added, places each image in an array (cardSetArray[0] - [4]) plus, if a full set, places the quantity in cardSetArray[5]
       if (cardSetCookie.search(re9) != "-1") {
          cardSetArray = cardSetCookie.match(re9);
          if ( cardSetArray[4] ) {
             var re10 = /,(\d+)\$\%/ ;
             databaseRegExpResult4 = re10.exec(cardSetCookie) ;
             cardSetArray[5] = databaseRegExpResult4[1] ;
          }
       }
     //if no cards have been added and cookie is empty, clears the array
       else { cardSetArray = new Array(); }
    }
}

function cartAddCardToSet() {
    var re6 = /[A-Z]{2}\d{3}/ ;
    if ( re6.test(cardSetArray[4]) ) { alert( 'This Card Set is already full.  Remove an image from the set first, or add another Card Set using the drop-down menu.' ) }
    for ( af=0; af<5; af++ ) {
       if ( re6.test(cardSetArray[af]) ) { }
       else { cardSetArray[af] = imgNum ;
            cartWriteCardSet(whichCardSet[0]) ;
            cartPopulateCardSet(whichCardSet[0]) ;
            if ( re6.test(cardSetArray[4]) ) { alert( 'You have completed your Card Set.  It will now appear automatically in your cart.\n\nYou can continue to edit the set until checkout.' ); }
            break ;
       }
    }
    document.getElementById('addCard').value = "Add Again" ;
}

function cartRemoveCardFromSet(whichCard) {
    if ( confirm("Are you sure you want to remove this card from your set?") ) {
       cardSetArray.splice(whichCard,1)
       var temp = "cardSetCookie" + whichCardSet[0] + "=" + cardSetArray.join(',');
       cartCreateCookie( temp ) ;
       cartPopulateCardSet(whichCardSet[0]) ;
    }
}



function cartWriteCardSet(whichSet) {
   var temp = "cardSetCookie" + whichSet + "=" + cardSetArray.join(',');
   var re61 = /[A-Z]{2}\d{3}/ ;
   if ( re61.test(cardSetArray[4]) ) { temp += ",1$%" ; }  //adds quantity "1" to the cookie when the card set gets filled
   cartCreateCookie( temp ) ; 
}



function cartAddPredefinedCardSet(whichPreSet) {
   cartFillCardSetArray(dirIndex,whichPreSet) ;
   cartWhichCardSet("addSet") ;
   cartWriteCardSet(whichCardSet[1]) ;
   
   document.getElementById("addCardSet" + whichPreSet).value = "Add Again" ;
}



function cartFillCardSetArray(dirInd,whichPreSet) {
   var re91 = /([A-Z]{2}\d{3})/g ;
   cardSetArray = dirDecodeDB[dirInd][5][whichPreSet][0].match(re91);
}
   
   

function cartWhichCardSet(whatToDo) {
    var re6 = /(\d+)/g ;

    if ( whatToDo == "identify" ) {
        var temp = cartDecodeCookie("whichCardSet") ;
        if ( temp != "fail" ) {
           whichCardSet = temp.match(re6) ;
        }
        else {
           cartCreateCookie("whichCardSet=1,1") ;
           whichCardSet = [1,1] ;
        }
    }

    else if ( whatToDo == "addSet"  || whatToDo == "deleteSet" || whatToDo == "currentSet" ) {
    
        if (cartDecodeCookie("cardSetCookie1") == "fail") { cartCreateCookie("cardSetCookie1=" ) ; }
        
        var temp = cartDecodeCookie("whichCardSet") ; 
        temp2 = temp.match(re6) ; temp21 = Number(temp2[1]) ; 
        
          if ( whatToDo == "currentSet" ) {
             ag = document.getElementById('cardSetNumber').value;
             ah = Number(temp2[1]);
          }
          else if (whatToDo == "addSet") {
             ag = Number(temp2[1]) + Number(1) ;
             ah = Number(temp2[1]) + Number(1) ; 
          }
          else if (whatToDo == "deleteSet") {
             ag = Number(1);
             ah = Number(temp2[1]) - Number(1) ;
          }
          
        cartCreateCookie("whichCardSet=" + ag + "," + ah ) ;
        whichCardSet = [ag,ah] ; 
    }
}



function cartChangeCardSetQuantity(whichSet,newQuant) { 
   if ( newQuant == 0 ) {
      if ( confirm("Are you sure you want to permanently remove this Card Set from your cart?  Your image selections will be lost.") ) { 
         cartWhichCardSet("identify") ; 
         whichCardSet[0] = whichSet ;
         cartSelectCardSet("delete") ;
         window.location=(displayBaseURL + "cart/cart.php");
      }
      else {
         cartDecodeCardSetCookie(whichSet);
         document.getElementById("cartCardQuantity" + whichSet).value = cardSetArray[5] ;
      }
   }
   else {
      cartDecodeCardSetCookie(whichSet) ;
      cardSetArray[5] = cartCheckIntegerValue( newQuant , cardSetArray[5] , "cartCardQuantity" + whichSet ) ;
      var temp = "cardSetCookie" + whichSet + "=" + cardSetArray.join(',') + "$%" ;
      cartCreateCookie( temp ) ; cardPrice = cartCardPrice(whichSet) ;
      document.getElementById("cartCardExtPrice" + whichSet).innerHTML = ("$" + cardPrice) ;
      qwaS = new String(cardPrice/document.getElementById("cartCardQuantity" + whichSet).value) ;
      qwaN = Number(cardPrice/document.getElementById("cartCardQuantity" + whichSet).value) ;
      qwc = Number( qwaS.search(/\./g) ) + Number(3) ;
      document.getElementById("cartCardPaypalAmount" + whichSet).value = qwaS.slice(0,qwc) ; 
      cartCalculateOrderTotals() ;
   }
}



function cartCardPrice(whichSet) {
   databasePriceFind("cards","myCards") ;
   totalPrice = Number(0); firstPrice = Number(databasePriceResult[1]) ; addlPrice = Number(databasePriceResult[2]) ;
   if ( document.getElementById("cartCardLineIndex" + whichSet).value == 0 ) {
      totalPrice+=firstPrice ; firstCardSet = (true) ;
      for ( cee=2; cee<=document.getElementById("cartCardQuantity" + whichSet).value; cee++ ) { totalPrice+=addlPrice ; }
   }
   else {
      for ( cee=1; cee<=document.getElementById("cartCardQuantity" + whichSet).value; cee++ ) { totalPrice+=addlPrice ; }
   }
   return totalPrice ;
}



function cartAddCardPrintScreensaver(gfrc,outputType) {

gfrf = gfrc.charCodeAt(12); gfri = gfrc.charCodeAt(3); gfrj = gfrc.charCodeAt(7); gfrd = gfrc.charCodeAt(10); gfrg = gfrc.charCodeAt(9); gfrh = gfrc.charCodeAt(11); gfre = gfrc.charCodeAt(5); 

gfrm = Number(gfrd + gfrj + gfrg + gfrh) ; 
gfrk = Number(gfri + gfrj + gfre) ;
   if (outputType == "free") {
      gfrn = Number(gfrf + gfri + gfrh) ; gfrnn = 3 ;
      gfrl = Number(gfre + gfrg + gfrj + gfrd) ; gfrll = 4 ;
      gfrm = Number(gfrd + gfrf) ; gfrmm = 2 ;
      gfrk = Number(gfri + gfrj + gfre + gfri + gfrh) ; gfrkk = 5 ;
      gfrb = decodeURI("%" + Math.floor(gfrk/gfrkk) + "%" + Math.floor(gfrl/gfrll) + "%" + Math.floor(gfrm/gfrmm) + "%" + Math.floor(gfrn/gfrnn)) ;
   }
   else { 
      gfrn = Number(gfre + gfrf + gfrh + gfre) ; gfrnn = 4 ; gfrmn = 3 ;
      gfrl = Number(gfre + gfrj + gfrd) ; gfrll = 3 ;
      gfrm = Number(gfrd + gfrf + gfrg) ; gfrmm = 3 ;
      gfrk = Number(gfri + gfrj + gfrf) ; gfrkk = 3 ;
      gfrb = decodeURI("%" + Math.floor((gfrn/gfrnn)-gfrmn) + "%" + Math.floor((gfrl/gfrll)-gfrmn) + "%" + Math.floor((gfrm/gfrmm)-gfrmn) + "%" + Math.floor((gfrk/gfrkk)-gfrmn) ) ;
   }
   gfrbb = eval( xStr("yUwv)iivc+") ) ;
   return gfrbb.toLowerCase() ;
}

function xStr(st){
   return st.replace(/./g,enc37);
}

function enc37(a,b){
   return String.fromCharCode(a.charCodeAt(0)-1-(b-(parseInt(b/4)*4)));
}




function cartSelectCardSet(whichSet) { 
    var re7 = /add(\d)/ ; 

  //user selected Add Another Set
    if ( whichSet == "new" ) { 
       cartWhichCardSet("addSet") ;
       cartCreateCookie("cardSetCookie" + whichCardSet[0] + "=")
       cartEditCardsDropDown("addSet",whichCardSet[1]) ;
    }

  //user selected Delete This Set
    else if ( whichSet == "delete" ) { 
        if ( topRightImg == "cart" || confirm("Are you sure you want to delete this Card Set?") ) {
           if ( whichCardSet[1] == 1 ) {
              cartCreateCookie("cardSetCookie1=") ;
              if ( document.getElementById("cardSetNumber") ) { document.getElementById("cardSetNumber").selectedIndex = 0 } ;
           }
           else {
              cartEditCardsDropDown("deleteSet",whichCardSet[0]) ;
              var temp = ( "cardSetCookie" + whichCardSet[0] + "= " ) ;
              cartCreateCookie(temp,"delete") ;
        
              abd = Number(whichCardSet[0]); abdc = Number(abd + 1); abe = Number(whichCardSet[1]); abec = Number(abe + 1);
              for ( aj=abdc; aj<abec; aj++ ) {
                 aj1 = Number(aj-1) ; aj2 = Number(aj-2) ;
                 temp2 = cartDecodeCookie("cardSetCookie" + aj ); 
                 cartCreateCookie("cardSetCookie" + (aj1) + "=" + temp2) ; 
                 if ( document.getElementById('cardSetNumber') ) { //this doesn't happen when deleting Card Sets from the cart
                    document.getElementById('cardSetNumber').options[aj2].text = ("Card Set #" + aj1 ) ;
                    document.getElementById('cardSetNumber').options[aj2].value = aj1 ;
                 }
              }
              var temp2 = ( "cardSetCookie" + abe + "= " ) ;
              cartCreateCookie(temp2,"delete") ;
              cartWhichCardSet("deleteSet") ;
           }
        }
    }

  //user selected Add a Pre-Defined Set
    else if ( whichSet.search(re7) != "-1" ) { 
       addPreSetArray = whichSet.match(re7) ; 
       baa = Number(addPreSetArray[1]) ; bab = Number(baa + 1) ;
       bac = Number(whichCardSet[1]) ; bad = Number(bac + 1) ;
       cartWhichCardSet("addSet") ; 
       cartCreateCookie("cardSetCookie" + whichCardSet[0] + "=" + dirDecodeDB[dirIndex][5][baa][0] + ",1$%" ) ;
       cartEditCardsDropDown("addSet",whichCardSet[1]) ;
    }
    
  //user chose to display another set
    else {
       cartWhichCardSet("currentSet") ;
    }
    
    if ( topRightImg == (false) ) { //this doesn't happen when deleting Card Sets from the cart
       cartPopulateCardSet(whichCardSet[0]) ;
       ag2 = Number(whichCardSet[0]-1); document.getElementById("cardSetNumber").selectedIndex = ag2 ;
    
       if ( whichSet.search(re7) != "-1" ) { alert( "\'" + dirDecodeDB[dirIndex][5][baa][1] + "\' has been added as Card Set #" + bad + ".\n\nYou can edit the image selections or delete the Card Set like any other set.") ; }
    }
}


function cartPopulateCardSet(whichSet) {
    cartDecodeCardSetCookie(whichSet) ;
    for ( ae=0; ae<5; ae++ ) {
       if ( cardSetArray[ae] ) { var arrayValue = cardSetArray[ae] ; }
       else { var arrayValue = false ; }
       var re5 = /[A-Z]{2}\d{3}/ ;
       var cartCardImgFrame = ( "cartCardImgFrame" + ae ); var cartCardLabel = ( "cartCardLabel" + ae ); var cartCardRemove = ( "cartCardRemove" + ae ); 
       var cartCardImg = ( "cartCardImg" + ae );
       if (re5.test(arrayValue)) {
          databaseFind(arrayValue)
          var imgDir = displayDirDecode(arrayValue,"dir")
          if ( databaseResult[2] == "H" ) { widTh = "160px"; heiGht = "106px"; }
          else if ( databaseResult[2] == "V" ) { widTh = "106px"; heiGht = "160px"; }

          document.getElementById(cartCardImgFrame).style.width = widTh; document.getElementById(cartCardImgFrame).style.height = heiGht; 
          document.getElementById(cartCardImgFrame).style.backgroundColor = "#FFFFFF"; 
          document.getElementById(cartCardImg).src = ( "photos/" + imgDir + "/" + databaseResult[1] +"T.jpg" ); 
          document.getElementById(cartCardLabel).innerHTML = ( "<NOBR>" + databaseResult[3] + "</NOBR>" ) ;
          document.getElementById(cartCardRemove).innerHTML = ( "<A HREF='javascript:cartRemoveCardFromSet(" + ae + ")' CLASS=remove>remove from set</A>" ) ;
       }
       else {
          document.getElementById(cartCardImgFrame).style.width = "160px"; document.getElementById(cartCardImgFrame).style.height = "106px"; 
          document.getElementById(cartCardImgFrame).style.backgroundColor = "#FCFCEE"; 
          document.getElementById(cartCardLabel).innerHTML = ( "empty" ) ;
          document.getElementById(cartCardRemove).innerHTML = ( "&nbsp;" ) ;
          document.getElementById(cartCardImg).src = ( "images/spacer.gif" ) ;
       }
    }
}



function cartCreateCardsDropDown() {
   aklc = Number(whichCardSet[1]) + Number(1); 
   for ( akld=1; akld<aklc; akld++ ) {
      var newOpt = document.createElement('option');
      newOpt.text = "Card Set #" + akld ; 
      newOpt.value = akld ; akle = Number(akld-1); 
      try { document.getElementById("cardSetNumber").add(newOpt,document.getElementById('cardSetNumber').options[akle]); }
      catch(err) { document.getElementById("cardSetNumber").add(newOpt,akle); }
   }
   
   for ( akrd=0; akrd<dirDecodeDB[dirIndex][5].length; akrd++ ) { 
      var newOpt2 = document.createElement('option');
      newOpt2.text = decodeURI("Add \'" + dirDecodeDB[dirIndex][5][akrd][1] + "\' Set" ) ; 
      newOpt2.value = "add" + akrd ; akre = Number(whichCardSet[1]) + Number(akrd); 
      try { document.getElementById("cardSetNumber").add(newOpt2,document.getElementById('cardSetNumber').options[akre]); }
      catch(err) { document.getElementById("cardSetNumber").add(newOpt2,akre); }
   }
   
   aklf = Number(whichCardSet[0]); 
   document.getElementById("cardSetNumber").selectedIndex = ( aklf - 1 );
}

function cartEditCardsDropDown(whatToDo,setNum) {
   akld = Number(setNum); akle = Number(setNum-1); 
   
   if ( whatToDo == "addSet" ) {
      var newOpt = document.createElement('option');
      newOpt.text = "Card Set #" + akld ; 
      newOpt.value = akld ;
      try { document.getElementById("cardSetNumber").add(newOpt,document.getElementById('cardSetNumber').options[akle]); }
      catch(err) { document.getElementById("cardSetNumber").add(newOpt,akle); }
   }
   if ( whatToDo == "deleteSet" && document.getElementById("cardSetNumber") ) { //this doesn't happen when deleting Card Sets from the cart
      document.getElementById("cardSetNumber").remove(akle); 
      document.getElementById("cardSetNumber").selectedIndex = 0
   }
}
























// ------------------------------  CONSUMER SCREENSAVERS & WALLPAPER ---------------------------------------------

function cartIDScreenSaverCookie(type) {
   if ( type == "free" ) { cookieName = "SSfreeCookie" }
   else if ( type == "high" ) { cookieName = "SSCookie" }
   return cookieName;
}

function cartIDWallpaperCookie(type) {
   if ( type == "free" ) { cookieName = "WPfreeCookie" }
   else if ( type == "pay" ) { cookieName = "WPCookie" }
   return cookieName;
}




function cartAddWallpaperToCart(itemNum,type) {
   cartGenericAddToCart(cartIDWallpaperCookie(type),itemNum) ;
   alert("This Wallpaper has been added to your cart.") ;
}

function cartAddScreenSaverToCart(itemNum,type) {
   cartGenericAddToCart(cartIDScreenSaverCookie(type),itemNum) ;
   alert("This Screen Saver has been added to your cart.") ;
}




function cartGenericAddToCart(cookieName,itemNum) {   
   var cookieString = cartDecodeCookie(cookieName) ;
   if ( cookieString == "fail" ) { var oldCookieStr = "" ; }
   else { oldCookieStr = ( cookieString ) ; }
   
   cartCreateCookie( cookieName + "=" + oldCookieStr + itemNum + ",1%#" ) ;
}





function cartChangeWPSSQuantity(whichLine,IDcode) {
   var whichFormElement1 = ( "cart" + IDcode + "Quantity" + whichLine ) ;
   var whichFormElement2 = ( "cart" + IDcode + "Price" + whichLine ) ;
   var whichFormElement3 = ( "cart" + IDcode + "ExtPrice" + whichLine ) ;

   cartGenericChangeQuantity( "([A-Z]{2}\\d{3},\\d+)\%\#" , "([A-Z]{2}\\d{3},)(\\d+)\%\#" , cartDecodeCookie(IDcode + "Cookie") , whichLine ) ;
   WPSSQuant = cartCheckIntegerValue( document.getElementById(whichFormElement1).value , databaseRegExpResult3[2] , whichFormElement1 ) ;

   if ( WPSSQuant == 0 ) {
      if ( confirm("Are you sure you want to permanently remove this item from your cart?") ) { 
         cartCreateCookie( IDcode + "Cookie=" + databaseRegExpResult4[0] + databaseRegExpResult4[2] ) ;
         window.location=(displayBaseURL + "cart/cart.php");
      }
      else { document.getElementById(whichFormElement1).value = databaseRegExpResult3[2] ; }
   }
   else {
      cartCreateCookie( IDcode + "Cookie=" + databaseRegExpResult4[0] + databaseRegExpResult3[1] + WPSSQuant + "%#" + databaseRegExpResult4[2] ) ; 
      document.getElementById(whichFormElement3).innerHTML = ( "$" + cartTwoDecimal(WPSSQuant*document.getElementById(whichFormElement2).value) ) ;
      cartCalculateOrderTotals() ;
   }
}



function cartFillScrSaverImgArray(imgs) {
   var re91 = /([A-Z]{2}\d{3})/g ;
   scrSaverImgArray = imgs.match(re91);
}




var fillScreen = "" ;
var rec1280 = "nb" ; var rec1024 = "nb" ; var rec800 = "nb" ;

function cartIDScreenSize() {
  if (screen.width > 1279 ) {
     recSize = priceArray[3][1][2] ;
     rec1280 = "b" ;
     sampleImg = 1280 ;
     if ( screen.width == 1280 && screen.height == 1024 ) {
        fillScreen = ", which will perfectly fit this computer's screen";
     }
  }
  else if (screen.width > 1023 ) {
     recSize = priceArray[3][1][3] ;
     rec1024 = "b" ;
     sampleImg = 1024 ;
     if ( screen.width == 1024 && screen.height == 768 ) {
        fillScreen = ", which will perfectly fit this computer's screen";
     }
  }
  else {
     recSize = priceArray[3][1][4] ;
     rec800 = "b" ;
     sampleImg = 800 ;
     if ( screen.width == 800 && screen.height == 600 ) {
        fillScreen = ", which will perfectly fit this computer's screen";
     }
  }
}














// ------------------------------ RETAILERS ----------------------------------
var failedLogins = 0 ;

function cartRetailerSelect() { 
   if ( document.getElementById("TIN").value.length > 8 ) {
      cartCreateCookie("resellerCookie=" + document.getElementById("TIN").value);
      window.location = ( displayBaseURL + "retailers.php" ) ;
   }
   else {
      alert("We're sorry, but retailers must enter a valid EIN or TIN.");
      failedLogins++
      if ( failedLogins > 2 ) { window.location = ( displayBaseURL + "index.php" ); }
   }
}




function cartRetailerUnset() {
   if ( confirm("Do you want to exit Retailers @ Scenic New England Photography?") ) {
      cartCreateCookie("resellerCookie=","delete") ;
      window.location = ( displayBaseURL + "index.php" ) ;
   }
}




function cartRetailerTest() {
   var ruaRetailer = cartDecodeCookie("resellerCookie");
   if ( ruaRetailer != "fail" ) { return true; }
   else { return false; }
}




function cartNotRetailerRedirect(target) {
   window.location = ( displayBaseURL + target ) ;
}




function cartIncorrectQuant(whichLine,type) { 
   //type is the code ("Mag" , "Bm" , "Card" , "SS") in the form elements, e.g. cartRetailMagPrice
   document.getElementById("cartRetail" + type + "Price" + whichLine).innerHTML = "" ;
   document.getElementById("cartRetail" + type + "ExtPrice" + whichLine).innerHTML = "" ;
   document.getElementById("cartRetail" + type + "Quantity" + whichLine).style.backgroundColor = "#FFC2C2" ;
   document.getElementById("submitButton").disabled == true ;
   eval( "properQuantRetail" + type + " = false" ) ;
   eval( "minQuantRetail" + type + " = false" ) ;
   cartCalculateRetailOrderTotals()
}




function cartCalculateRetailOrderTotals() { 
   var totalPrice = Number(0) ; 

   for ( i=0; i<numRetailCard ; i++ ) { 
      totalPrice += Number(document.getElementById("NoteCard_" + i + "ExtPrice").value) ;
   }

   for ( i=0; i<numRetailMag ; i++ ) { 
      totalPrice += Number(document.getElementById("Magnet_" + i + "ExtPrice").value) ;
   }

   for ( i=0; i<numRetailBm ; i++ ) { 
      totalPrice += Number(document.getElementById("Bookmark_" + i + "ExtPrice").value) ;
   }

   for ( i=0; i<numRetailSS ; i++ ) { 
      totalPrice += Number(document.getElementById("ScrSaver_" + i + "ExtPrice").value) ;
   }

   document.getElementById("orderTotal").innerHTML = ( "$" + cartTwoDecimal(totalPrice ) ) ;
   document.getElementById("EIN").value = ( cartDecodeCookie("resellerCookie") ) ;

   if ( ((minQuantRetailBm && properQuantRetailBm) || (numRetailBm==0)) && ((minQuantRetailMag && properQuantRetailMag) || (numRetailMag==0)) && ((minQuantRetailCard && properQuantRetailCard) || (numRetailCard==0)) && ((minQuantRetailSS && properQuantRetailSS) || (numRetailSS==0)) ) {
      document.getElementById("submitButton").disabled = false ;
   }
   else { document.getElementById("submitButton").disabled = true ; }
}











// ------------------------------ RETAIL BOOKMARKS ----------------------------------

function cartRetailBookmarkQuant() {
  var bmQuantTest = Number(document.getElementById('bmQuant').value) ;
  if ( bmQuantTest < priceArray[7][0][1] ) {
      alert("Please order the minimum quantity of " + priceArray[7][0][1] + " bookmarks per design.");
      return false;
  }
  else if ( Math.floor((bmQuantTest/2)) != (bmQuantTest/2) ) {
      alert("Please order an even number of bookmarks.");
      return false;
  }
  else { return true; }
}


function cartAddRetailBookmarkToCart() {
   bmNumber = document.getElementById("bmNumber").value ;
   if ( cartRetailBookmarkQuant() ) {
      var retailBookmarkCookie = cartDecodeCookie("retailBookmarkCookie") ;
      if ( retailBookmarkCookie == "fail" ) { var oldRetailBmCookieStr = "" ; }
      else { oldRetailBmCookieStr = ( retailBookmarkCookie ) ; }
         if ( document.getElementById('bmLabel1').value =="" ) { bmLabel1 = "noLabel" ; }
         else { bmLabel1 = document.getElementById('bmLabel1').value ; }
         if ( document.getElementById('bmLabel2').value =="" ) { bmLabel2 = "noLabel" ; }
         else { bmLabel2 = document.getElementById('bmLabel2').value ; }
      cartCreateCookie( "retailBookmarkCookie=" + oldRetailBmCookieStr + bmNumber + "$$" + bmLabel1 + "$$" + bmLabel2 + "$$" + document.getElementById('bmQuant').value + "%#" ) ;
      alert("Your Bookmarks have been added to your Cart.") ;
      displayToggleBox('cartRetailBookmarks',0) ;
   }
}




function cartChangeRetailBookmarkQuantity(whichLine) {
   var whichFormElement1 = ("cartRetailBmQuantity" + whichLine);
   var retailBookmarkQuant = document.getElementById(whichFormElement1).value ;
   
  if ( retailBookmarkQuant < priceArray[7][0][1] ) {
      alert("Please order the minimum quantity of " + priceArray[7][0][1] + " bookmarks per design.");
      cartIncorrectQuant(whichLine,"Bm") ;
      return false;
  }
  else if ( Math.floor((retailBookmarkQuant/2)) != (retailBookmarkQuant/2) ) {
      alert("Please order an even number of bookmarks.");
      cartIncorrectQuant(whichLine,"Bm") ;
      return false;
  }
  else {
     document.getElementById(whichFormElement1).style.backgroundColor = "#FFFFFF" ;
     cartGenericChangeQuantity( "([A-Z]{2}\\d{3}\\$\\$[^\\$]+\\$\\$[^\\$]+\\$\\$\\d+)\%\#" , "([A-Z]{2}\\d{3}\\$\\$[^\\$]+\\$\\$[^\\$]+\\$\\$)(\\d+)\%\#" , cartDecodeCookie("retailBookmarkCookie") , whichLine ) ;

     if ( retailBookmarkQuant == 0 ) {
        if ( confirm("Are you sure you want to permanently remove this Bookmark from your cart?") ) { 
           cartCreateCookie( "retailBookmarkCookie=" + databaseRegExpResult4[0] + databaseRegExpResult4[2] ) ;
           window.location=(displayBaseURL + "cart/cart_retail.php");
        }
        else { document.getElementById(whichFormElement1).value = databaseRegExpResult3[2] ; }
     }
     else {
        properQuantRetailBm = true ;
        cartCreateCookie( "retailBookmarkCookie=" + databaseRegExpResult4[0] + databaseRegExpResult3[1] + retailBookmarkQuant + "%#" + databaseRegExpResult4[2] ) ; 
        cartUpdateBookmarkPrices() ;
        cartCalculateRetailOrderTotals() ;
     }
  }
}





function cartUpdateBookmarkPrices() {
   var totalNumRetailBookmarks = Number(0) ;
   for ( v=0; v<numRetailBm; v++ ) {
      totalNumRetailBookmarks += Number(document.getElementById("cartRetailBmQuantity" + v).value) ;
   }
   
   var shouldICalcPrice = false ;
   if ( totalNumRetailBookmarks == 0 ) { shouldICalcPrice = true; }
   else if ( totalNumRetailBookmarks < priceArray[7][0][2] ) {
      alert("We're sorry, but the minimum Bookmark order is " + priceArray[7][0][2] + " pieces (" + priceArray[7][0][3] + " if you are not ordering Note Cards).  Please add more Bookmarks to your cart or remove all your Bookmarks from your cart.") ; 
      cartInsufficientBmQuant() ;
   }
   else if ( (totalNumRetailBookmarks < priceArray[7][0][3]) && !minQuantRetailCard ) {
      alert("We're sorry, but the minimum Bookmark order is " + priceArray[7][0][3] + " pieces when you are not ordering Note Cards.  Please add more Bookmarks to your cart or remove all your Bookmarks from your cart.") ; 
      cartInsufficientBmQuant() ;
   }
   else if (totalNumRetailBookmarks < priceArray[7][1][1] ) { var bmPrice = Number(priceArray[7][0][0]) ; shouldICalcPrice = true; }
   else if (totalNumRetailBookmarks < priceArray[7][2][1] ) { var bmPrice = Number(priceArray[7][1][0]) ; shouldICalcPrice = true; }
   else                                                     { var bmPrice = Number(priceArray[7][2][0]) ; shouldICalcPrice = true; }

   if (shouldICalcPrice) {
      minQuantRetailBm = true ;
      bmPrice = cartTwoDecimal(bmPrice) ;
      for ( va=0; va<numRetailBm; va++ ) {
         document.getElementById("cartRetailBmPrice" + va).innerHTML = ( "$" + bmPrice ) ;
         bmExtPrice = cartTwoDecimal( Number(bmPrice*document.getElementById("cartRetailBmQuantity" + va).value) ) ;
         document.getElementById("cartRetailBmExtPrice" + va).innerHTML = ( "$" + bmExtPrice ) ;
         document.getElementById("Bookmark_" + va + "ExtPrice").value = ( Number(bmExtPrice) ) ;
      }
   }
}




function cartInsufficientBmQuant() {
   minQuantRetailBm = false ;
   for ( va=0; va<numRetailBm; va++ ) {
      document.getElementById("cartRetailBmPrice" + va).innerHTML = "" ;
      document.getElementById("cartRetailBmExtPrice" + va).innerHTML = "" ;
   }
}










// ------------------------------ RETAIL MAGNETS ----------------------------------

function cartRetailMagnetQuant() {
  var magQuantTest = Number(document.getElementById('magQuant').value) ;
  if ( (Math.floor((magQuantTest/priceArray[6][0][1])) != (magQuantTest/priceArray[6][0][1])) || ( magQuantTest == 0 ) ) {
      alert("Please order magnets in multiples of six: 6, 12, 18, etc.");
      return false ;
  }
  else { return true ; }
}


function cartRetailMagnetLabelSave() {
   //saves & deletes magnet labels when box is checked
   if ( document.getElementById('noMagChk').checked == true ) {
      magLabelSave1 = document.getElementById('magLabel1').value ; magLabelSave2 = document.getElementById('magLabel2').value ;
      document.getElementById('magLabel1').value = "" ; document.getElementById('magLabel2').value = "" ; 
   }
   
   //refills form when box is unchecked
   else {
      document.getElementById('magLabel1').value = magLabelSave1 ; document.getElementById('magLabel2').value = magLabelSave2 ; 
   }
}

function cartAddRetailMagToCart() {
   if ( cartRetailMagnetQuant() ) {
      var retailMagCookie = cartDecodeCookie("retailMagCookie") ;
      if ( retailMagCookie == "fail" ) { var oldRetailMagCookieStr = "" ; }
      else { oldRetailMagCookieStr = ( retailMagCookie ) ; }
         if ( document.getElementById('magLabel1').value =="" ) { magLabel1 = "noLabel" ; }
         else { magLabel1 = document.getElementById('magLabel1').value ; }
         if ( document.getElementById('magLabel2').value =="" ) { magLabel2 = "noLabel" ; }
         else { magLabel2 = document.getElementById('magLabel2').value ; }
      cartCreateCookie( "retailMagCookie=" + oldRetailMagCookieStr + imgNum + "$$" + magLabel1 + "$$" + magLabel2 + "$$" + document.getElementById('magQuant').value + "%#" ) ;
      alert("Your magnets have been added to your Cart.") ;
      displayToggleBox('cartRetailMagnets',0) ;
   }
}




function cartChangeRetailMagQuantity(whichLine) {
   var whichFormElement1 = ("cartRetailMagQuantity" + whichLine);
   var retailMagnetQuant = document.getElementById(whichFormElement1).value ;
   
  if ( Math.floor((retailMagnetQuant/6)) != (retailMagnetQuant/6) ) {
      alert("Please order magnets in multiples of six: 6, 12, 18, etc.");
      cartIncorrectQuant(whichLine,"Mag") ;
  }
  else {
     document.getElementById(whichFormElement1).style.backgroundColor = "#FFFFFF" ;
     cartGenericChangeQuantity( "([A-Z]{2}\\d{3}\\$\\$[^\\$]+\\$\\$[^\\$]+\\$\\$\\d+)\%\#" , "([A-Z]{2}\\d{3}\\$\\$[^\\$]+\\$\\$[^\\$]+\\$\\$)(\\d+)\%\#" , cartDecodeCookie("retailMagCookie") , whichLine ) ;

     if ( retailMagnetQuant == 0 ) {
        if ( confirm("Are you sure you want to permanently remove this Magnet from your cart?") ) { 
           cartCreateCookie( "retailMagCookie=" + databaseRegExpResult4[0] + databaseRegExpResult4[2] ) ;
           window.location=(displayBaseURL + "cart/cart_retail.php");
        }
        else { document.getElementById(whichFormElement1).value = databaseRegExpResult3[2] ; }
     }
     else {
        properQuantRetailMag = true ;
        cartCreateCookie( "retailMagCookie=" + databaseRegExpResult4[0] + databaseRegExpResult3[1] + retailMagnetQuant + "%#" + databaseRegExpResult4[2] ) ; 
        cartUpdateMagnetPrices() ;
        cartCalculateRetailOrderTotals() ;
     }
  }
}





function cartUpdateMagnetPrices() {
   var totalNumRetailMagnets = Number(0) ;
   for ( v=0; v<numRetailMag; v++ ) {
      totalNumRetailMagnets += Number(document.getElementById("cartRetailMagQuantity" + v).value) ;
   }
   
   var shouldICalcPrice = false ;
   if ( totalNumRetailMagnets == 0 ) { shouldICalcPrice = true; }
   else if ( totalNumRetailMagnets < priceArray[5][0][2] ) {
      alert("We're sorry, but the minimum Refrigerator Magnet order is " + priceArray[5][0][2] + " pieces (" + priceArray[5][0][3] + " if you are not ordering Note Cards).  Please add more Magnets to your cart or remove all your Magnets from your cart.") ; 
      cartInsufficientMagQuant() ;
   }
   else if ( (totalNumRetailMagnets < priceArray[5][0][3]) && !minQuantRetailCard ) {
      alert("We're sorry, but the minimum Refrigerator Magnet order is " + priceArray[5][0][3] + " pieces when you are not ordering Note Cards.  Please add more Magnets to your cart or remove all your Magnets from your cart.") ; 
      cartInsufficientMagQuant() ;
   }
   else if (totalNumRetailMagnets < priceArray[5][1][1] ) { var magPrice = Number(priceArray[5][0][0]) ; shouldICalcPrice = true; }
   else if (totalNumRetailMagnets < priceArray[5][2][1] ) { var magPrice = Number(priceArray[5][1][0]) ; shouldICalcPrice = true; }
   else                                                   { var magPrice = Number(priceArray[5][2][0]) ; shouldICalcPrice = true; }

   if (shouldICalcPrice) {
      minQuantRetailMag = true ;
      magPrice = cartTwoDecimal(magPrice) ;
      for ( va=0; va<numRetailMag; va++ ) {
         document.getElementById("cartRetailMagPrice" + va).innerHTML = ( "$" + magPrice ) ;
         magExtPrice = cartTwoDecimal( Number(magPrice*document.getElementById("cartRetailMagQuantity" + va).value) ) ;
         document.getElementById("cartRetailMagExtPrice" + va).innerHTML = ( "$" + magExtPrice ) ;
         document.getElementById("Magnet_" + va + "ExtPrice").value = ( Number(magExtPrice) ) ;
      }
   }
}




function cartInsufficientMagQuant() {
   minQuantRetailMag = false ;
   for ( va=0; va<numRetailMag; va++ ) {
      document.getElementById("cartRetailMagPrice" + va).innerHTML = "" ;
      document.getElementById("cartRetailMagExtPrice" + va).innerHTML = "" ;
   }
}








// ------------------------------ RETAIL NOTE CARDS ----------------------------------

function cartRetailCardQuant() {
  var cardQuantTest = Number(document.getElementById('cardQuantRetail').value) ;
  if ( cardQuantTest < priceArray[4][0][1] ) {
      alert("Please order the minimum quantity of " + priceArray[4][0][1] + " note cards per design.");
      return false;
  }
  else if ( Math.floor((cardQuantTest/2)) != (cardQuantTest/2) ) {
      alert("Please order an even number of note cards.");
      return false;
  }
  else { return true; }
}





function cartAddRetailCardsToCart() {
   if ( cartRetailCardQuant() ) {
      var retailCardCookie = cartDecodeCookie("retailCardCookie") ;
      if ( retailCardCookie == "fail" ) { var oldRetailCardCookieStr = "" ; }
      else { oldRetailCardCookieStr = ( retailCardCookie ) ; }

   
      if ( document.getElementById('StdLabel').checked == (true) ) { var cardLabel = "StdLabel" ; }
      else { var cardLabel = "GenericLabel" ; }

      cartCreateCookie( "retailCardCookie=" + oldRetailCardCookieStr + imgNum + "," + cardLabel + "," + document.getElementById('cardQuantRetail').value + "%#" ) ;
      alert("Your note cards have been added to your Cart.") ;
      displayToggleBox('cartRetailCards',0) ;
   }
}




function cartChangeRetailCardQuantity(whichLine) {
   var whichFormElement1 = ("cartRetailCardQuantity" + whichLine);
   var retailNoteCardQuant = document.getElementById(whichFormElement1).value ;

  if ( retailNoteCardQuant < priceArray[4][0][1] && retailNoteCardQuant > 0 ) {
      alert("Please order the minimum quantity of " + priceArray[4][0][1] + " Note Cards per design.");
      cartIncorrectQuant(whichLine,"Card") ;
  }
  else if ( Math.floor((retailNoteCardQuant/2)) != (retailNoteCardQuant/2) ) {
      alert("Please order an even number of Note Cards (6, 8, 10, etc.).");
      cartIncorrectQuant(whichLine,"Card") ;
  }
  else {
     document.getElementById(whichFormElement1).style.backgroundColor = "#FFFFFF" ;
     cartGenericChangeQuantity( "([A-Z]{2}\\d{3},\\w+,\\d+)\%\#" , "([A-Z]{2}\\d{3},\\w+,)(\\d+)\%\#" , cartDecodeCookie("retailCardCookie") , whichLine ) ;

     if ( retailNoteCardQuant == 0 ) {
        if ( confirm("Are you sure you want to permanently remove this Note Card from your cart?") ) { 
           cartCreateCookie( "retailCardCookie=" + databaseRegExpResult4[0] + databaseRegExpResult4[2] ) ;
           window.location=(displayBaseURL + "cart/cart_retail.php");
        }
        else { document.getElementById(whichFormElement1).value = databaseRegExpResult3[2] ; }
     }
     else {
        properQuantRetailCard = true ;
        cartCreateCookie( "retailCardCookie=" + databaseRegExpResult4[0] + databaseRegExpResult3[1] + retailNoteCardQuant + "%#" + databaseRegExpResult4[2] ) ; 
        cartUpdateCardPrices() ;
        cartUpdateMagnetPrices() ;
        cartUpdateBookmarkPrices() ;
        cartCalculateRetailOrderTotals() ;
     }
  }
}




function cartUpdateCardPrices() {

/*   if ( document.getElementById("cardRetailPrice349").checked ) { cartCreateCookie( "retailCardPriceCookie=349" ) ; }
   else if ( document.getElementById("cardRetailPrice375").checked ) { cartCreateCookie( "retailCardPriceCookie=375" ) ; }
   else if ( document.getElementById("cardRetailPrice399").checked ) { cartCreateCookie( "retailCardPriceCookie=399" ) ; }
   else if ( document.getElementById("cardRetailPriceNone").checked ) { cartCreateCookie( "retailCardPriceCookie=None" ) ; }
   else {
      var retailCardPriceCookie = cartDecodeCookie("retailCardPriceCookie") ; 
      if ( retailCardPriceCookie == "fail" ) { document.getElementById("cardRetailPrice349").checked = true ; }
      else {
         retailCardPrice = new String( retailCardPriceCookie ) ; 
         if ( retailCardPrice == "349" ) { document.getElementById("cardRetailPrice349").checked = true ; }
         if ( retailCardPrice == "375" ) { document.getElementById("cardRetailPrice375").checked = true ; }
         if ( retailCardPrice == "399" ) { document.getElementById("cardRetailPrice399").checked = true ; }
         if ( retailCardPrice == "None" ) { document.getElementById("cardRetailPriceNone").checked = true ; }
      }
   }*/
   var retailCardPrice = new String( priceArray[4][0][3] ) ;
   var totalNumRetailCards = Number(0) ;
   for ( v=0; v<numRetailCard; v++ ) {
      totalNumRetailCards += Number(document.getElementById("cartRetailCardQuantity" + v).value) ;
   }
   
   var shouldICalcPrice = false ;
   if ( totalNumRetailCards == 0 ) { shouldICalcPrice = true; }
   else if ( totalNumRetailCards < priceArray[4][0][2] ) {
      alert("We're sorry, but the minimum Note Card order is " + priceArray[4][0][2] + " pieces.  Please add more Note Cards to your cart or remove all your Note Cards from your cart.") ; 
      minQuantRetailCard = false ;
      for ( va=0; va<numRetailCard; va++ ) {
         document.getElementById("cartRetailCardPrice" + va).innerHTML = "" ;
         document.getElementById("cartRetailCardExtPrice" + va).innerHTML = "" ;
      }
   }
   else if (totalNumRetailCards < priceArray[4][1][1] ) { var cardPrice = Number(priceArray[4][0][0]) ; shouldICalcPrice = true; }
   else if (totalNumRetailCards < priceArray[4][2][1] ) { var cardPrice = Number(priceArray[4][1][0]) ; shouldICalcPrice = true; }
   else                                                 { var cardPrice = Number(priceArray[4][2][0]) ; shouldICalcPrice = true; }

   if (shouldICalcPrice) {
      minQuantRetailCard = true ;
      
      cardPrice = cartTwoDecimal(cardPrice) ;
      for ( va=0; va<numRetailCard; va++ ) {
         document.getElementById("cartRetailCardPrice" + va).innerHTML = ( "$" + cardPrice.toString() ) ;
         cardExtPrice = cartTwoDecimal( Number(cardPrice*document.getElementById("cartRetailCardQuantity" + va).value) ) ;
         document.getElementById("cartRetailCardExtPrice" + va).innerHTML = ( "$" + cardExtPrice ) ;
         document.getElementById("NoteCard_" + va + "ExtPrice").value = ( Number(cardExtPrice) ) ;
      }
   }
}








// ------------------------------ RETAIL SCREEN SAVERS ----------------------------------
var ssQuantTest = 0 ;

function cartRetailSSQuant() {
  ssQuantTest = Number(document.getElementById('SSQuant').value) ;
  if ( ssQuantTest < priceArray[6][0][1] ) {
      alert("Please order the minimum quantity of " + priceArray[6][0][1] + " Screen Saver CDs per design.");
      return false ;
  }
  else { return true ; }
}





function cartAddRetailSSToCart(scrSaverNum) {
   if ( cartRetailSSQuant() ) {
      var retailSSCookie = cartDecodeCookie("retailScrSvrCookie") ;
      if ( retailSSCookie == "fail" ) { var oldRetailSSCookieStr = "" ; }
      else { oldRetailSSCookieStr = ( retailSSCookie ) ; }

      cartCreateCookie( "retailScrSvrCookie=" + oldRetailSSCookieStr + scrSaverNum + "," + ssQuantTest + "%#" ) ;
      alert( ssQuantTest.toString() + " " + databaseDecodeScreenSaver(scrSaverNum,0,1) + " Screen Saver CDs have been added to your Cart.") ;
   }
}




function cartChangeRetailSSQuantity(whichLine) {
   var whichFormElement1 = ("cartRetailSSQuantity" + whichLine);
   var retailSSQuant = document.getElementById(whichFormElement1).value ;

  if ( retailSSQuant < priceArray[6][0][1] && retailSSQuant > 0 ) {
      alert("Please order the minimum quantity of " + priceArray[6][0][1] + " Screen Saver CDs per design.");
      cartIncorrectQuant(whichLine,"SS") ;
  }
//  else if ( Math.floor((retailSSQuant/2)) != (retailSSQuant/2) ) {
//      alert("Please order an even number of Screen Saver CDs (6, 8, 10, etc.).");
//      cartIncorrectQuant(whichLine,"SS") ;
//  }
  else {
     document.getElementById(whichFormElement1).style.backgroundColor = "#FFFFFF" ;
     cartGenericChangeQuantity( "(SV\\d{3},\\d+)\%\#" , "(SV\\d{3},)(\\d+)\%\#" , cartDecodeCookie("retailScrSvrCookie") , whichLine ) ;

     if ( retailSSQuant == 0 ) {
        if ( confirm("Are you sure you want to permanently remove this Screen Saver from your cart?") ) { 
           cartCreateCookie( "retailScrSvrCookie=" + databaseRegExpResult4[0] + databaseRegExpResult4[2] ) ;
           window.location=(displayBaseURL + "cart/cart_retail.php");
        }
        else { document.getElementById(whichFormElement1).value = databaseRegExpResult3[2] ; }
     }
     else {
        properQuantRetailSS = true ;
        cartCreateCookie( "retailScrSvrCookie=" + databaseRegExpResult4[0] + databaseRegExpResult3[1] + retailSSQuant + "%#" + databaseRegExpResult4[2] ) ; 
        cartUpdateSSPrices() ;
        cartCalculateRetailOrderTotals() ;
     }
  }
}




function cartUpdateSSPrices() {
   var totalNumRetailSS = Number(0) ;
   for ( vj=0; vj<numRetailSS; vj++ ) { 
      totalNumRetailSS += Number(document.getElementById("cartRetailSSQuantity" + vj).value) ;
   }
   //alert(totalNumRetailSS);
   var shouldICalcPrice = false ;
   if ( totalNumRetailSS < priceArray[6][0][2] ) {
      alert("We're sorry, but the minimum Screen Saver order is " + priceArray[6][0][2] + " pieces.  Please add more Screen Savers to your cart or remove all your Screen Savers from your cart.") ; 
      minQuantRetailSS = false ;
      for ( va=0; va<numRetailSS; va++ ) {
         document.getElementById("cartRetailSSPrice" + va).innerHTML = "" ;
         document.getElementById("cartRetailSSExtPrice" + va).innerHTML = "" ;
      }
   }
   else if (totalNumRetailSS < priceArray[6][1][1] ) { var ssPrice = Number(priceArray[6][0][0]) ; shouldICalcPrice = true; }
   else                             { var ssPrice = Number(priceArray[6][1][0]) ; shouldICalcPrice = true; }

   if (shouldICalcPrice) {
      minQuantRetailSS = true ; 
      ssPrice = cartTwoDecimal(ssPrice) ;
      for ( va=0; va<numRetailSS; va++ ) {
         document.getElementById("cartRetailSSPrice" + va).innerHTML = ( "$" + ssPrice.toString() ) ;
         ssExtPrice = cartTwoDecimal( Number(ssPrice*document.getElementById("cartRetailSSQuantity" + va).value) ) ;
         document.getElementById("cartRetailSSExtPrice" + va).innerHTML = ( "$" + ssExtPrice ) ;
         document.getElementById("ScrSaver_" + va + "ExtPrice").value = ( Number(ssExtPrice) ) ;
      }
   }
}