var postBack = false;
var maxMessageLength = 255;

function popUpGiftServices(giftServicesUrl) {
    var url = giftServicesUrl;
    var width = 850;
    var height = 520;
    var left = parseInt((screen.availWidth/2) - (width/2));
    var top = parseInt((screen.availHeight/2) - (height/2));
    var windowFeatures = "width=850,height=520,left="+left+"top="+top+", scrollbars=yes, resizable";

    window.open (url,"giftservices",windowFeatures);
}

function popUp(giftUrl) {
	var url = giftUrl;
	window.open (url,"giftbox","width=480,height=310, left = 100,top = 100");
}

function notesPopUp (popupURL) {
	var notesURL = popupURL;
	window.open (notesURL,"giftnotes","width=348,height=278, left = 100,top = 100");

}

function loadGiftWrapBag(){
    // use this for pages that show the shipping bag - these require post back to recalc values
    postBack = true;
    loadGiftWrap();
}

function loadGiftWrap(){
    $$('.gift_wrap_box_outer').each(
        function(target){
            target.postBack = postBack;
            var id = target.id;
            var toBox = document.getElementById("gw_to_1");
            var fromBox = document.getElementById("gw_from_1");
            var messageBox = document.getElementById("gw_message_1");
            var check = document.getElementById("giftWrapChk1");
            var editlink = document.getElementById("editNoteLink");

            // set this before we add it to the html
            //messageBox.setProperty('onkeyup','processMessageboxLength(\'' + messageBox.id + '\');');

            // build the real html for this section
            var html = '<div class="gift_wrap_box_inner">' +
                '<div><img src="/media/TB001/images/global/title_giftwrap.gif" alt="Gift Wrap Note" /></div>' +
                '<div class="gift_wrap_line"></div>' +
                '<table width="190" cellspacing="0" cellpadding="0" border="0" class="gift_wrap_table">' +
                    '<tr align="right">' +
                        '<td width="55">To:</td>' +
                        '<td>' + new Element('div').adopt(toBox).innerHTML + '</td>' +
                    '</tr>' +
                    '<tr align="right">' +
                        '<td>From:</td>' +
                        '<td>' + new Element('div').adopt(fromBox).innerHTML + '</td>' +
                    '</tr>' +
                    '<tr>' +
                        '<td colspan="2" class="message_textbox">' +
                            '<div>Message:</div>' +
                            new Element('div').adopt(messageBox).innerHTML +
                        '</td>' +
                    '</tr>' +
                    '<tr>' +
                        '<td colspan="2" align="left" class="comment"><div id="' + messageBox.id + '_counter"></div></td>' +
                    '</tr>' +
                '</table>' +
                '<div class="gift_wrap_buttons" align="right">' +
                    '<span class="btn_cancel">' +
                        //'<a href="javascript:cancelGiftWrap(\'' + id + '\');"><img src="/media/TB001/images/global/btn_cancel_off.gif" border="0" /></a>' +
                    '</span>' +
                    '<span class="btn_save">' +
                        //'<a href="javascript:saveGiftWrap(\'' + id + '\');"><img src="/media/TB001/images/static/btn_save_off.gif" border="0" /></a>' +
                    '</span>' +
                '</div>' +
            '</div>';
            target.setHTML(html);
            // set some element variables and events
            //check.addEvent('click',function(){showGiftWrap(id);});
            editlink.href='javascript:showGiftWrapEdit(\'' + id + '\');';
            target.checkid = check.id;
            target.to = toBox.id;
            target.from = fromBox.id;
            target.message = messageBox.id;
            target.lasttoval = toBox.value;
            target.lastfromval = fromBox.value;
            target.lastmessageval = messageBox.value;
            target.editClicked = false;
        });
}

function showGiftWrap(giftWrapID){
    // cancel any other open gwb's
    $$('.gift_wrap_box_outer').each(
        function(target){
            if (target.getStyle('display') != 'none')
            {
                cancelGiftWrap(target.id);
            }
    });

    var gwb = $(giftWrapID);

    if ($(gwb.checkid).checked == true)
    {
        // user checks the checkbox
        gwb.setStyle('display','');
        if(window.ie && $('cartshipping') && (($(giftWrapID).getTop()+260) > $('cartshipping').getTop())){
            $('cartshipping').setStyle('display','none');
        }

        if(window.ie && $('ADD_CART_ITEM_ARRAY<>quantity')){

            $('ADD_CART_ITEM_ARRAY<>quantity').setStyle('display','none');
        }

        saveVars(giftWrapID);
        processMessageboxLength(gwb.message);
    } else {
        // user clears the checkbox
        if (gwb.postBack == true){
            triggerPostBack();
        } else {
            gwb.setStyle('display','none');

            if(window.ie){
                document.getElementById('ADD_CART_ITEM_ARRAY<>quantity').setStyle('display','');
            }
            $(gwb.checkid).getNext().setStyle('display','none'); // edit link
            clearVars(giftWrapID);
        }
    }

}

function showGiftWrapEdit(giftWrapID){
    $(giftWrapID).editClicked = true;
    showGiftWrap(giftWrapID);
}
function saveGiftWrap(giftWrapID){
    var gwb = $(giftWrapID);
    gwb.setStyle('display','none');
    $(gwb.checkid).checked = true;
    $(gwb.checkid).getNext().setStyle('display',''); // edit link
    gwb.editClicked = false;
    if (gwb.postBack == true){
        triggerPostBack();
    } else if(window.ie && $('ADD_CART_ITEM_ARRAY<>quantity')){
        $('ADD_CART_ITEM_ARRAY<>quantity').setStyle('display','');
    }
    var lineItemOrderNotes = document.getElementById('ADD_CART_ITEM_ARRAY<>longDesc');
    var fromNotes = document.getElementById('gw_from_1').value;
    var toNotes = document.getElementById('gw_to_1').value;
    var messageNotes = document.getElementById('gw_message_1').value;
    lineItemOrderNotes.value = toNotes+"|"+fromNotes+"|"+messageNotes;
}
function cancelGiftWrap(giftWrapID){
    var gwb = $(giftWrapID);
    gwb.setStyle('display','none');
    if (gwb.editClicked == true)
    {
        $(gwb.checkid).checked = true;
    } else {
        $(gwb.checkid).checked = !$(gwb.checkid).checked;
    }
    if($(gwb.checkid).checked){
        $(gwb.checkid).getNext().setStyle('display',''); // edit link
    } else {
        $(gwb.checkid).getNext().setStyle('display','none'); // edit link
    }
    if(window.ie && $('cartshipping')){
        $('cartshipping').setStyle('display','');
    }
    if(window.ie && $('ADD_CART_ITEM_ARRAY<>quantity')){
        $('ADD_CART_ITEM_ARRAY<>quantity').setStyle('display','');
    }
    resetVars(giftWrapID);
    gwb.editClicked = false;
}
function saveVars(giftWrapID){
    var gwb = $(giftWrapID);
    gwb.lasttoval = $($(giftWrapID).to).value;
    gwb.lastfromval = $($(giftWrapID).from).value;
    gwb.lastmessageval = $($(giftWrapID).message).value;
}
function resetVars(giftWrapID){
    var gwb = $(giftWrapID);
    $(gwb.to).value = gwb.lasttoval;
    $(gwb.from).value = gwb.lastfromval;
    $(gwb.message).value = gwb.lastmessageval;
}
function clearVars(giftWrapID){
    var gwb = $(giftWrapID);
    $(gwb.to).value = '';
    $(gwb.from).value = '';
    $(gwb.message).value = '';
}
function processMessageboxLength(msgbxid){
    var msgbox = $(msgbxid);
    var counter = $(msgbxid + "_counter");
    if (msgbox.value.length > maxMessageLength){
        msgbox.value=msgbox.value.substring(0,maxMessageLength);
    }
    counter.innerHTML = "(Remaining: "+(maxMessageLength-msgbox.value.length)+" of "+maxMessageLength + ")";
}

function triggerPostBack(){
    /* ****************************************************************** */
    /* TODO:
       This is only used for shopping bag listing pages that have a gift wrap
       selection option. It is not used for the product detail page since
       that is posted back by the user.

       Change this code to post back your form so that totals can be
       calculated correctly on save or de-selection of gift wrap and to
       break up product quantities as necessary.
       After post back the selected gift wrap area should reflect the
       selected state.
    /* ****************************************************************** */
    //document.forms[0].submit();
    alert("post back called");
}

function submitGiftWrapRequest () {
    var button = document.getElementById("boxSelectedBtn");
    var radioGS =  document.getElementById("gift-message-only");
    if(radioGS.checked) {
      button = document.getElementById("noteSelectedBtn");
    }

    button.click();
 }


   function editGiftWrapRequest () {
      var button = document.getElementById("editGiftBoxNoteBtn");
      button.click();
   }

   function removeGiftWrapRequest () {
      var button = document.getElementById("removeFromBoxBtn");
      button.click();
   }

   function targetopener(mylink, closeme, closeonly) {
      if (! (window.focus && window.opener))return true;
      window.opener.focus();
      if (! closeonly)window.opener.location.href=mylink.href;
      if (closeme)window.close();
      return false;
   }

   function notesPopUpGiftServices (popupURL) {
      closing=false;
      var notesURL = popupURL;
      window.open (notesURL,"giftnotes","width=340,height=230, left = 100,top = 100");
   }

   function showMe(open){
      if (document.getElementById(open).style.display=='block'){
         document.getElementById(open).style.display='none';
      } else {
         document.getElementById(open).style.display='block';
      }
   }

   function hideMe(open){
      document.getElementById(open).style.display='none';
   }

   function setSkuID(skuID){
      document.getElementById("skuID").value= skuID;
   }

   function setWrapID(wrapNumber){
      document.getElementById("wrapID").value= wrapNumber;
   }

   function setBoxID(boxNumber){
      document.getElementById("boxID").value= boxNumber;
   }

   function setNoteID(noteNumber){
      document.getElementById("noteID").value= noteNumber;
   }

   function addToGiftBox(open, boxNumber, skuID){
      closing=false;
      hideMe(open);
      setBoxID(boxNumber);
      setSkuID(skuID);
      var button = document.getElementById("boxSelectedBtn");
      button.click();
   }

   function addToGiftBoxNew(boxNumber, skuID){
      closing=false;
      setBoxID(boxNumber);
      setSkuID(skuID);
      var button = document.getElementById("boxSelectedBtn2");
      button.click();
   }

   function addToGiftWrap(skuID){
      closing=false;
      setSkuID(skuID);
      var button = document.getElementById("wrapSelectedBtn");
      button.click();
   }

   function addToGiftNote(skuID){
      closing=false;
      setSkuID(skuID);
      var button = document.getElementById("noteSelectedBtn");
      button.click();
   }

   function deleteGiftWrap(wrapNumber, skuID){
      closing=false;
      setWrapID(wrapNumber);
      setSkuID(skuID);
      var button = document.getElementById("deleteGiftWrapBtn");
      button.click();
   }

   function deleteGiftNote(noteNumber, skuID, longDesc){
      closing=false;
      setNoteID(noteNumber);
      setSkuID(skuID);
      document.getElementById("prevNoteMessage").value= longDesc;
      var button = document.getElementById("deleteGiftNoteBtn");
      button.click();
   }

   function deleteGiftBox(boxNumber){
      closing=false;
      setBoxID(boxNumber);
      var button = document.getElementById("deleteGiftBoxBtn");
      button.click();
   }

   function editGiftBoxNote(boxNumber, popupURL){
      closing=false;
      setBoxID(boxNumber);
      notesPopUp (popupURL);
      var button = document.getElementById("editGiftBoxNoteBtn");
      button.click();
   }

   function editGiftWrapNote(wrapNumber, popupURL){
      closing=false;
      setWrapID(wrapNumber);
      notesPopUp (popupURL);
      var button = document.getElementById("editGiftWrapNoteBtn");
      button.click();
   }

   function editGiftNoteNote(noteNumber, popupURL){
      closing=false;
      setNoteID(noteNumber);
      notesPopUp (popupURL);
      var button = document.getElementById("editGiftNoteBtn");
      button.click();
   }

   function removeFromGiftBox(boxNumber, skuID){
      closing=false;
      setBoxID(boxNumber);
      setSkuID(skuID);
      var button = document.getElementById("removeFromBoxBtn");
      button.click();
   }

   function cancelAndExit(){
      closing=true;
      var button = document.getElementById("cancelExitBtn");
      button.click();
      window.opener.location.reload();
      window.close();
   }

   function saveAndContinue(){
      closing=false;
      var button = document.getElementById("saveContinueBtn");
      button.click();
      //window.opener.location.reload();
      //window.close();
   }

   function testPrint(pass){
      closing=false;
      hideMe(pass);
   }

   function setVisibility(id, visibility) {
      closing=false;
      document.getElementById(id).style.display = visibility;
   }


function loadGSModalJS() {
    //	Toggle selected state for different gift service selections
    //	Hide gift message form if add to existing or gift kit box is selected
    if ($('modal')) {
        if ($('modal').getElements('input[type="radio"]')) {
            $('modal').getElements('input[type="radio"]').addEvent('click', function() {
                try {
                    $('modal').getElement('.gift-service-selection').getElements('li').removeClass('selected');
                    this.getParent('li').addClass('selected');
                    enableGiftFields();
                }
                catch(err)
                {
                    // Throwing exceptions when disabling, temporary fix till that error is fixed.
                    $('modal').getElement('.gift-message-form').setStyle('display', 'block');
                    var txt = "There was an error on this page.\n\n";
                    txt += "Error description: " + err + "\n\n";
                    txt += "Click OK to continue.\n\n";
                    alert(txt);
                }
            });
        }
    }

    if ($('modal')) {
        if ($('modal').getElement('textarea.message')) {
            //	Prevent user from entering more than 255 characters into message <textarea>
            $('modal').getElement('textarea.message').addEvent('keypress', function() {
                if (this.value.length > 254) {
                    return false;
                }
            });
        }
    }

    var testOnce = false;
    if ($('modal')) {
        if ($('modal').getElement('form.gift-services-form')) {
            $('modal').getElement('form.gift-services-form').addEvent('submit', function(event) {
            	//check for box selected and prevent alert from showing twice
				if($('add-to-existing')){
	                if ($('modal').getElement('.add-to-existing').checked) {
	                    var existingBox = document.getElementById('existing-box');
	                    if ((existingBox.value == "Select") && (!testOnce)) {
	                        alert("Please select a box.");
	                        testOnce = true;
	                        return false;
	                    }
	                    else if((existingBox.value == "Select") && (testOnce)){
	                    	testOnce = false;
	                    	return false;
	                    }
	                }
                }
            });
        }
    }
    if ($('existing-box')) {
        $('existing-box').addEvent('change', function(event) {
            var boxIndex = $('existing-box').selectedIndex;
            var selectionValue = $('existing-box').options[boxIndex];
            var preSplitBoxID = selectionValue.value.split(" ");
            var boxID = preSplitBoxID[1];
            loadGiftMessages(boxID);
            disableGiftFields ()
        });
    }

}

function disableGiftFields () {
    $('modal').getElement('input.email-to').readOnly = true;
    $('modal').getElement('input.email-from').readOnly = true;
    $('modal').getElement('textarea.message').readOnly = true;
}

function enableGiftFields () {
    $('modal').getElement('input.email-to').readOnly = false;
    $('modal').getElement('input.email-from').readOnly = false;
    $('modal').getElement('textarea.message').readOnly = false;
}

function loadGSEditMode() {
    //	Validate form if add to existing AND gift kit isn't checked
   $('modal').getElement('form.gift-services-form').addEvent('submit', function() {
      try{
         var         //	Keep track of errors
         errorCount = 0;
         if ($('modal').getElement('.gift-box-with-message') && $('modal').getElement('.gift-message-only')) {

             if ($('modal').getElement('.gift-box-with-message').checked  || $('modal').getElement('.gift-message-only').checked ) {
                //	Setup variables
                var
                //	Regular expressions
                testEmail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+[a-zA-Z0-9]{2,4}$/,
                // Contact Information fields
                emailTo = $('modal').getElement('input.email-to'),
                emailFrom = $('modal').getElement('input.email-from'),
                message = $('modal').getElement('textarea.message');

                //	Clear error messages
                $('modal').getElements('span').removeClass('error');
             }
         }

      }
      catch(err)
      {
         // Throwing exceptions when disabling, temporary fix till that error is fixed.
         $('modal').getElement('.gift-message-form').setStyle('display', 'block');
         var txt="There was an error on this page.\n\n";
         txt+="Error description: " + err + "\n\n";
         txt+="Click OK to continue.\n\n";
         alert(txt);
         errorCount++;
      }

      if(errorCount > 0) {
         return false;
      } else {
         return true;
      }

    });
}


