var basketType = '3';

//Event.observe(window, 'load', init, false);

function random_int()
{
 return Math.floor(Math.random()*100000);
}

function getBasket(type, fname)
{
  basketType = type;
  new Ajax.Request('/my/gift-basket/getBasket',
    {
      method:'get',
      parameters: { ds: type, name:fname, random: random_int() },
      onSuccess: function(transport)
      {
        var response = transport.responseText || "no response text";

        if(response.match('ERROR') || response.match('error'))
        {
          alert(response);
        }
        else
        {
          $('flashContainer').innerHTML = response;
          //alert(response);
          basketType = type;
        }
      },
      onFailure: function(){ alert('Some problem occured, try again...'); window.location.reload(true);}
    });
}

function saveBasketPath(basketSeq)
{
  new Ajax.Request('/my/gift-basket/setBasketPath',
    {
      method:'get',
      parameters: { bs: basketSeq, pathId:basketType, random: random_int() },
      onSuccess: function(transport)
      {
        var response = transport.responseText || "no response text";

        if(response.match('ERROR') || response.match('error'))
        {
          alert(response);
        }
        else
        {
          //alert(response);
        }
      },
      onFailure: function(){ alert('Some problem occured, try again...'); window.location.reload(true);}
    });
}

function submitNewBasketData()
{
  var name = $('name').value.strip();
  var url = $('url').value.strip();
  new Ajax.Request('/my/gift-basket/processRequest',
    {
      method:'post',
      parameters: { cmd: 'createBasket', name: name, url:url, basketPath:basketType, random: random_int() },
      onSuccess: function(transport)
      {
        var response = transport.responseText || "no response text";

        if(response.match('ERROR') || response.match('error'))
        {
          alert(response);
        }
        else
        {
          $('containerDiv').innerHTML = response;
          displayEditHTMLInline();
        }
      },
      onFailure: function(){ alert('Some problem occured, try again...'); window.location.reload(true);}
    });
}

function saveBasketToServer()
{
  var basketSeq = ($('basketSeq') != undefined)? $('basketSeq').value.strip():'';
  var userGifts1 = userGifts.toQueryString();
  var userMessages1 = userMessages.toQueryString();
  var heading = ($('heading') != undefined)? $('heading').value.strip():'';
  var txt1 = ($('txt1') != undefined)? $('txt1').value.strip():'';
  var txt2 = ($('txt2') != undefined)? $('txt2').value.strip():'';
  //alert(heading);
  var cmd = 'updateBasket';
  new Ajax.Request('/my/gift-basket/processRequest',
    {
      method:'post',
      parameters: { cmd:cmd, basketSeq:basketSeq, userGifts:userGifts1, userMessages:userMessages1, basketPath:basketType, heading:heading, txt1:txt1, txt2:txt2, random:random_int() },
      onSuccess: function(transport)
      {
        var response = transport.responseText || "NO-RESPONSE";

        if(response == "NO-RESPONSE")
        {
          alert("Some problem occured, try submitting again");
          return;
        }

        if(response.match('ERROR') || response.match('error'))
        {
          alert(response);
          return;
        }
        if(response.match('SIGN-IN') || response.match('sign-in'))
        {
          alert(response);
          signin('previewButton', '');
        }
        else
        {
          alert(response);
          //hidePopup();
          //$('containerDiv').innerHTML = response;
        }
      },
      onFailure: function(){ alert('Some problem occured, try submitting again...');}
    });
}

function submitCreateAcct(doSignIn)
{
  var basketSeq = ($('basketSeq') != undefined)? $('basketSeq').value.strip():'';
  var url = ($('url') != undefined)? $('url').value.strip():'';
  var name = ($('name') != undefined)? $('name').value.strip():'';
  var email = ($('email') != undefined)? $('email').value.strip():'';
  var passwd = ($('passwd') != undefined)? $('passwd').value.strip():'';
  var passwdC = ($('passwdC') != undefined)? $('passwdC').value.strip():'';
  var heading = ($('heading') != undefined)? $('heading').value.strip():'';
  var txt1 = ($('txt1') != undefined)? $('txt1').value.strip():'';
  var txt2 = ($('txt2') != undefined)? $('txt2').value.strip():'';

  if(email == '' || passwd == '')
  {
    alert("Invalid Email or Password. Please enter it again.");
    return;
  }
  var cmd = 'createAcct';
  if(!doSignIn)
  {
    if(passwd != passwdC)
    {
      alert("Password and password confirmation do not match. Please enter them again.");
      return;
    }
  }
  else
  {
    cmd = 'signInAcct';
  }


  var userGifts1 = userGifts.toQueryString();
  var userMessages1 = userMessages.toQueryString();

  new Ajax.Request('/my/gift-basket/processRequest',
    {
      method:'post',
      parameters: { cmd:cmd, name:name, url:url, email:email, basketSeq:basketSeq, passwd:passwd, userGifts:userGifts1, userMessages:userMessages1, basketPath:basketType, heading:heading, txt1:txt1, txt2:txt2, random:random_int() },
      onSuccess: function(transport)
      {
        var response = transport.responseText || "NO-RESPONSE";

        if(response == "NO-RESPONSE")
        {
          alert("Some problem occured, try submitting again");
          return;
        }

        if(response.match('ERROR') || response.match('error'))
        {
          alert(response);
          return;
        }
        else
        {
          hidePopup();
          $('containerDiv').innerHTML = response;
          setBasketSaved();
        }
      },
      onFailure: function(){ alert('Some problem occured, try submitting again...');}
    });
}


function previewBasket(currentFieldId, signedIn)
{
  blurrBackground();
  setTimeout('previewBasketPopup("'+currentFieldId+'", 650, 500, -200, -160, '+signedIn+')', 500);
}

function previewBasketCenter(currentFieldId, signedIn)
{
  blurrBackground();
  setTimeout('previewBasketPopup("'+currentFieldId+'", 650, 500, 0, -400)', 500);
}

function previewBasketPopup(currentFieldId, w, h, dw, dh, signedIn)
{
  var addEdit = '';
  if(!(signedIn == undefined))
  {
    addEdit = ' <input type=button value="Add/Remove Items" class=saveGiftsButton onclick="javascript:editBasketPopup(\''+currentFieldId+'\', '+signedIn+'); return false;" /></span>';
  }
  var html = '<div id=popupHeadingDiv>Preview of the Basket Items</div>\
              <div id=popupContainerDiv>'+getPreviewHTML()+'</div> \
              <div id=popupSaveGiftsDiv>'+addEdit+' <input type=button value="Close" class=saveGiftsButton onclick="javascript:hidePopup();" /></div>';

  createFormDiv(currentFieldId, html, w, h, dw, dh);
}


function editBasket(currentFieldId, signedIn)
{
  blurrBackground();
  setTimeout('editBasketPopup("'+currentFieldId+'", '+signedIn+')', 500);
}

function editBasketPopup(currentFieldId, signedIn)
{
  var html = '<div id=popupHeadingDiv>Use Checkbox to Add/Remove the Basket Items</div>\
              <div id=popupContainerDiv><form id=editGiftsForm>'+getEditHTML('editGiftsForm')+'</form></div>\
              <div id=popupSaveGiftsDiv><input type=button value="Save Items" class=saveGiftsButton onclick="javascript:if(saveUserItems(\'editGiftsForm\', \'resultSaveMsg\')){ if('+signedIn+') {saveBasketToServer();}} return false;" /> \
              &nbsp;&nbsp;&nbsp;<input type=button value="Cancel" class=saveGiftsButton onclick="javascript:hidePopup();" /><span id=resultSaveMsg></span></div>';
  createFormDiv(currentFieldId, html, 650, 510, -200, -160);
}


function signup(currentFieldId, fname, isCenter)
{
  blurrBackground();
  if(isCenter !== undefined && isCenter == 1)
    setTimeout('signupPopup("'+currentFieldId+'", "'+fname+'", 1)', 200);
  else
    setTimeout('signupPopup("'+currentFieldId+'", "'+fname+'", 0)', 200);
}

function signupPopup(currentFieldId, fname, isCenter)
{
  var dname = fname + ", ";
  if(fname == '') dname = "Please ";
  setElementProperty('background', '#e0edfe', 'PopupFormDiv');
  var html = '<table id=signupPopupTable align=center border=0> \
               <tr><td class=signupMsgTd><span class=mainMsg>'+dname+'enter your email and choose a password to save the basket.</span>\
               <br/>(Later anytime, you can access your gift basket account by using this email and password)</td></tr>\
               <tr><td> \
                <table id=signupFormTable class=formContent border=0 align=center> \
                  <tr><td align=left>Email:</td><td align=left> <input type=text name=email id=email maxLen=64 class=inputBox size=32 /> (Never displayed)</td></tr>\
                  <tr><td align=left>Password:</td><td align=left> <input type=password name=passwd id=passwd maxLen=64 class=inputBox size=32 /></td></tr>\
                  <tr><td align=left>Confirm Password:</td><td align=left> <input type=password name=passwdC id=passwdC maxLen=64 class=inputBox size=32 /> </td></tr>\
                  <tr><td colspan=2 align=center class=topSpc> <input type=button name=button class="cuteButtonSimple" onclick="javascript:submitCreateAcct(0);" value="Save The Basket" /></td></tr>\
                  <tr><td colspan=2 align=center class="topSpc bottomLink"> <b>Already have an account?</b> <a href="#" onclick="javascript:signinPopup(\''+currentFieldId+'\', \''+fname+'\', '+isCenter+');return false;">Save basket in existing account</a></td></tr>\
                </table> \
               </td></tr> \
            ';
  //blurrBackground();
  if(isCenter == 1)
    createFormDivOption(currentFieldId, html, 580, 300, 0, -60, 1);
  else
    createFormDivOption(currentFieldId, html, 580, 300, -200, -60, 1);
}

function signin(currentFieldId, fname, isCenter)
{
  blurrBackground();
  if(isCenter !== undefined && isCenter == 1)
    setTimeout('signinPopup("'+currentFieldId+'", "'+fname+'", 1)', 200);
  else
    setTimeout('signinPopup("'+currentFieldId+'", "'+fname+'", 0)', 200);
}

function signinPopup(currentFieldId, fname, isCenter)
{
  var dname = fname + ", ";
  if(fname == '') dname = "Please ";
  setElementProperty('background', '#e0edfe', 'PopupFormDiv');
  var html = '<table id=signupPopupTable align=center border=0> \
               <tr><td class=signupMsgTd><span class=mainMsg>'+dname+'enter your email and password to sign in and save the basket.</span>\
               </td></tr>\
               <tr><td> \
                <table id=signupFormTable class=formContent border=0 align=center> \
                  <tr><td align=left>Email:</td><td align=left> <input type=text name=email id=email maxLen=64 size=32 class=inputBox /> </td></tr>\
                  <tr><td align=left>Password:</td><td align=left> <input type=password name=passwd id=passwd maxLen=64 size=32 class=inputBox /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td></tr>\
                  <tr><td colspan=2 align=center class=topSpc> <input type=button name=button class="cuteButtonSimple" onclick="javascript:submitCreateAcct(1);" value="Save The Basket" /></td></tr>\
                  <tr><td colspan=2 align=center class="topSpc bottomLink"> <b>New user?</b> <a href="#" onclick="javascript:signupPopup(\''+currentFieldId+'\', \''+fname+'\', '+isCenter+');return false;">Create account and save basket</a></td></tr>\
                </table> \
               </td></tr> \
            ';
  //blurrBackground();
  if(isCenter == 1)
    createFormDivOption(currentFieldId, html, 580, 300, 0, -60, 1);
  else
    createFormDivOption(currentFieldId, html, 580, 300, -200, -60, 1);
}

function displayEditHTMLInline()
{
  $('editGiftsFormMain').innerHTML = getEditHTML('editGiftsFormMain');
}