//****** Main JavaScript src - used for the paypal, validation, AJAX etc  ******
// For others we have some additional functions and different sImgDir path;
function initLoad(){
  resetEnterKey();
  restoreScroll();
  determineLogButtonImage_AJAX();
}

function rememberScroll() {
  var oForm = document.forms[0];
  if (oForm == null) return;
  var oScroll = document.getElementsByName("vscroll")[0];
  if (oScroll == null) return;
  oScroll.value=document.body.scrollTop;
  return true;
}

function restoreScroll() {
  var oForm = document.forms[0];
  if (oForm == null) return;
  var oScroll = document.getElementsByName("vscroll")[0];
  if (oScroll == null) return;
  if (oScroll.value == "") return;
  document.body.scrollTop = oScroll.value;
  return true;
}

function setPressed(sPressedName) {
  var oPressed = document.getElementsByName("PressedName")[0];
  if (oPressed == null) return;
  oPressed.value = sPressedName;
}

function rollProdImage(sImgSrc){
  document.images.MainProdImg.src = sImgSrc;
}


function emptyRef(){}

function setMainImageArray(){
  //var oIP = document.images;
  //var oIMG = [oIP.ClaimsProd,oIP.ImageProd,oIP.XNETProd,oIP.ReportProd,oIP.BTRProd];
  return oIMG;
}


function showSnap(sFile,sName){
  window.open(sFile,sName,"resizable=yes,height=300,width=500,scrollbars=yes");
}

function openNewSite(sFile,sName){
  window.open(sFile,sName,"resizable=yes,height=500,width=700,scrollbars=yes");
}

function openPicWin(sFile,sName,sImage){
  var sSrc = sImage.src;
  //var nL = sScr.length;
  var nDot = sSrc.lastIndexOf(".");
  var sImageBig = sSrc.substring(0,nDot)+"Big"+".gif";
  //var nImageNum = sSrc.charAt(nDot-1);
  //alert(sSrc+","+"nDot="+nDot+", big="+sImageBig+",sFile="+sFile);
  //var oTxt = document.getElementsByName(sTxt)[0];
  document.PageForm.hidClickedImage.value = sImageBig;
  var oWin = window.open(sFile,sName,"resizable=yes,height=600,width=700,scrollbars=yes");
  oWin.focus();
}

function setPictureOnload(){
  var oPar = window.opener;
  if (oPar == null) return;
  var sImgBig = oPar.document.PageForm.hidClickedImage.value;
  if (sImgBig == null) return;
  if (sImgBig == "NA") return;
  var oImg = window.document.images.SleepshirtPic;
  if (oImg == null) {
    //alert("Image oImg is null in the new window null");
    return;
  }
  oImg.src = sImgBig;
  //alert(oImg.src);
}

function showPreviousImage(){shiftImage(-1);}
function showNextImage(){shiftImage(1);}

function shiftImage(nAdd){
  var oImg = document.getElementsByName("SleepshirtPic")[0];
  if (oImg == null) return;
  var sSrc = oImg.src;
  var nImageNumPos = sSrc.lastIndexOf("Big")-1;
  //alert(nImageNumPos);
  if (nImageNumPos < 0) return;
  var nMax = 7;
  var sImageNum = sSrc.charAt(nImageNumPos);
  var nImageNum = parseInt(sImageNum);
  //alert(nImageNum);
  var nNewImage = nImageNum+nAdd;
  //alert(nNewImage);
  if  (nNewImage < 0)    {nNewImage = nMax;}
  if  (nNewImage > nMax) {nNewImage = 0;}
  //alert(nNewImage);
  var sNewImage = sSrc.substring(0,nImageNumPos)+nNewImage.toString()+sSrc.substring(nImageNumPos+1);
  //alert(sNewImage);
  oImg.src = sNewImage;
}

function resetEnterKey() {
  if (document.PageForm == null) return true;
  if (document.PageForm.EnterKey == null) return true;
  document.PageForm.EnterKey.value="NONE";
  return true;
}

function checkSubmit(){
  rememberScroll();
  var bSubmit = checkDataByPageID();
  setPressed("");
  if (bSubmit) {
    return true;
  }else{
    return false;
  }
  var oHidSBMT = document.getElementsByName("SBMT")[0];
  if ((oHidSBMT == null)||(oHidSBMT == "undefined")) {
    //alert("oHidSBMT is not there");
    return true;
  }
  //alert("checking submit {"+oHidSBMT+"}");
  if (oHidSBMT.value == null) return true;
  if (oHidSBMT.value == "F") {
     //alert("SBMT = {"+oHidSBMT.value+"}");
     return false;
  }
  //alert("SBMT = {"+oHidSBMT.value+"}");
  return true;
}

function checkDataByPageID() {
  var pageid = getPageID();
  if (pageid == null) return true;
  if (pageid == "FeedbackForm") {return checkFeedbackForm();}
  return true;
}

function checkFeedbackForm() {
  // First check what we are tyring to to make sure that the user
  // indeed submitting the form and not trying to do something else,
  // e.g. Logoff etc. or go to MyAccount

  var oPressed = document.getElementsByName("PressedName")[0];
  if (oPressed == null) return true;
  var sPressed = oPressed.value;
  if (sPressed == null) return true;
  if (!("GoFeedback.SubmitFeedForm" == sPressed)) return true;

  if (isEmptyOption("FeedFeedType","You must select type of feedback."))   return false;
  if (isEmptyField("FeedBriefText","You must provide brief description.")) return false;
  if (isEmptyField("FeedEntireText","You must provide full description.")) return false;
  return true;
}


function checkEnterPageFormAndSubmit(evt,txtbox) {
  rememberScroll();
  evt = (evt) ? evt : event;
  var charCode = (evt.charCode) ? evt.charCode :
     ((evt.which) ? evt.which : evt.keyCode);
  if (!(charCode == 13 || charCode == 3)) return true;
  if (checkEnterPageForm(evt,txtbox)) {
    document.PageForm.submit();
    return true;
  }
  return false;
}

function submitPayPalForm(){
  var oHidPaypalActiveFlag = document.getElementsByName("oHidPaypalActiveFlag")[0];
  if (oHidPaypalActiveFlag == null){
    alert("can not find field for the PaypalActiveFlag in the document");
    return;
  }
  var sFlagValue= oHidPaypalActiveFlag.value;
  // If the paypal button disabled (.e.g user alreayd paied for 2 years ahead)
  // we store the message we want to display to the user as it's value
  // and don't submit the paypal form, otherwise
  // we assume that the form should exist and we invoke it;
  if (sFlagValue != "Y") {
    alert(sFlagValue);
    return;
  }
  var oPForm = document.PayPalForm;
  if (oPForm == null){
    alert("can not find Paypal form in the document");
    return;
  }
  oPForm.submit();
}

function submitByImage(oImg){
  if (oImg == null) return;
  if (oImg.name == null) return;
  var oEnterKey = document.getElementsByName("EnterKey")[0];
  if ((oEnterKey == null)||(oEnterKey == "undefined")){
    return;
  }
  oEnterKey.value=oImg.name;
  document.PageForm.submit();
}

function checkEnterPageForm(evt,txtbox) {
  evt = (evt) ? evt : event;
  var charCode = (evt.charCode) ? evt.charCode :
     ((evt.which) ? evt.which : evt.keyCode);
  if (!(charCode == 13 || charCode == 3)) return true;
  var oEnterKey = document.getElementsByName("EnterKey")[0];
  if ((oEnterKey == null)||(oEnterKey == "undefined")){
    return false;
  }
  var sEnterKeyValue = getActionName(txtbox);
  if (sEnterKeyValue == null) return false;
  if (sEnterKeyValue == "NONE") return false;
  oEnterKey.value=sEnterKeyValue;
  return true;
}

function getActionName(textbox){
  if (textbox == null) return null;
  var sTN = textbox.name;
  if (sTN == null) return null;
  //alert(sTN);
  // Login to the customer profile or searching for products;
  if (sTN == "txtSearhProductLink")   return "AflCreateProductLinks.Search";
  if (sTN == "txtSW")   return "GoSearch";
  if (sTN == "txtUID")  return "GoLogin";
  if (sTN == "txtPWS")  return "GoLogin";
  // tracking order from the customer profile page;
  if (sTN == "txtTrackOrderNumber")  return "GoOneOrder";

  // Login to the manufacture profile
  if (sTN == "txtMnfUID")  return "MnfLogin";
  if (sTN == "txtMnfPWS")  return "MnfLogin";
  // Searching to update product information by manufacturer;
  if (sTN == "txtMaintProdNumber")  return "MnfMaintenance.Search";

  var pageid = getPageID();
  if (pageid == null) return "NONE";
  if (pageid == "FastReg"){
    if (sTN == "CustLOGID")      return "GoMemberData.SubmitFast";
    if (sTN == "Password")       return "GoMemberData.SubmitFast";
    if (sTN == "PasswordRepeat") return "GoMemberData.SubmitFast";
  }
  if (pageid == "NewReg"){
    if (sTN == "CustLOGID")      return "GoMemberData.NewForm";
    if (sTN == "Password")       return "GoMemberData.NewForm";
    if (sTN == "PasswordRepeat") return "GoMemberData.NewForm";
  }
  if (pageid == "nosubmit"){return "NONE";}
  return null;
}

function getPageID(){
  var oPageID = document.getElementsByName("pageid")[0];
  if ((oPageID == null)||(oPageID == "undefined")) return null;
  return oPageID.value;
}


//***********************************************************************************
//******************************* Utilities code *********************************
//***********************************************************************************
function trim(sFld) {
  while(sFld.length != 0) {
    if (sFld.substr(0,1) != ' ') break;
    sFld = sFld.substr(1);
  }
  while(sFld.length != 0) {
    if (sFld.substr(sFld.length-1,1) != ' ') break;
    sFld = sFld.substr(0,sFld.length-1);
  }
  return sFld;
}

function isEmptyField(sField,sErrMsg){
  var oTxt = getElementByIdOrName(sField,true);
  if (oTxt == null) return true; // we issue error about lost field in the get method;
  var sFldValue = trim(oTxt.value);
  if (sFldValue == ""){
    alert(sErrMsg);
    return true;
  }
  return false;
}

function getElementByIdOrName(sField,bAllertErrorIfLost){
  var oTxt = document.getElementById(sField);
  if (oTxt != null) return oTxt;
  var oFldsArray = document.getElementsByName(sField);
  if (oFldsArray == null){
    if (bAllertErrorIfLost){
      alert("Lost "+sField+" field.");
    }
    return null;
  }
  oTxt = oFldsArray[0];
  if (oTxt != null) return oTxt;
  if (bAllertErrorIfLost){
    alert("Lost "+sField+" field.");
  }
  return null;
}

function isEmptyOption(sField,sErrMsg){
  var oRadioButtons = document.getElementsByName(sField);
  if (oRadioButtons == null) {
    alert("Lost "+sField+" radio group field");
    return true;
  }
  var nL = oRadioButtons.length;
  var bAtLeastOneSelected = false;
  for(var i=0; i<nL; i++) {
    var oRadio = oRadioButtons[i];
    if (oRadio.checked){
      bAtLeastOneSelected = true;
      break;
    }
  }
  if (!bAtLeastOneSelected){
    alert(sErrMsg);
    return true;
  }
  return false;
}


function isFieldAlphanumeric(sField,sFldLabel,bEmptyAllowed){
  if (bEmptyAllowed == null) bEmptyAllowed = true;
  var oTxt = getElementByIdOrName(sField,true);
  if (oTxt == null) return false; // we issue error about lost field in the get method;
  var sFldValue = trim(oTxt.value);
  return isAlphanumeric(sFldValue,sFldLabel,bEmptyAllowed)
}

function isAlphanumeric(sFldValue,sFldLabel,bEmptyAllowed){
  var sFldValue = trim(sFldValue);
  if (sFldValue == "") {
    if (bEmptyAllowed) return true;
    alert("Field "+sFldLabel+" can not be empty");
    return false;
  }
  sFldValue = sFldValue.toLowerCase();
  var sAllowed = "0123456789abcdefghijklmnopqrstuvwxyz -";
  for (i=0; i < sFldValue.length ; i++){
    var sChar = sFldValue.substr(i,1);
    if (sAllowed.indexOf(sChar) == -1){
      alert("Only alphanumeric characters are allowed in "+sFldLabel+", but it contains \'"+sChar+"\'");
      return false;
    }
  }
  return true;
}

function isAlphanum(sFldValue){
  sFldValue = sFldValue.toLowerCase();
  var sAllowed = "0123456789abcdefghijklmnopqrstuvwxyz -";
  for (i=0; i < sFldValue.length ; i++){
    var sChar = sFldValue.substr(i,1);
    if (sAllowed.indexOf(sChar) == -1){
      return false;
    }
  }
  return true;
}

function isFieldNumber(sField,sFldLabel,bEmptyAllowed,bShowErrMsg){
  if (bEmptyAllowed == null) bEmptyAllowed = true;
  if (bShowErrMsg   == null) bShowErrMsg = true;
  var oTxt = getElementByIdOrName(sField,bShowErrMsg);
  if (oTxt == null) return false; // we issue error about lost field in the get method;
  var sFldValue = trim(oTxt.value);
  return isNumber(sFldValue,sFldLabel,bEmptyAllowed,bShowErrMsg);
}

function isNumber(sFldValue,sFldLabel,bEmptyAllowed,bShowErrMsg){
  if (bEmptyAllowed == null) bEmptyAllowed = true;
  if (bShowErrMsg   == null) bShowErrMsg = true;
  var sFldValue = trim(sFldValue);
  if (sFldValue == "") {
    if (bEmptyAllowed) return true;
    if (bShowErrMsg) alert("Field "+sFldLabel+" can not be empty");
    return false;
  }
  sFldValue = sFldValue.toLowerCase();
  var sAllowed = "0123456789";
  for (i=0; i < sFldValue.length ; i++){
    var sChar = sFldValue.substr(i,1);
    if (sAllowed.indexOf(sChar) == -1){
      if (bShowErrMsg) alert("Only numeric value is allowed in "+sFldLabel+", but it contains \'"+sChar+"\'");
      return false;
    }
  }
  return true;
}

function isInt(sValue){
  var sAllowed = "0123456789";
  for (i=0; i < sValue.length ; i++){
    var sChar = sValue.substr(i,1);
    if (sAllowed.indexOf(sChar) == -1){
      return false;
    }
  }
  return true;
}

function isFieldMoney(sField,sFldLabel,bEmptyAllowed){
  if (bEmptyAllowed == null) bEmptyAllowed = true;
  var oTxt = getElementByIdOrName(sField,true);
  if (oTxt == null) return false; // we issue error about lost field in the get method;
  var sFldValue = trim(oTxt.value);
  return isMoney(sFldValue,sFldLabel,bEmptyAllowed);
}

function isMoney(sFldValue,sFldLabel,bEmptyAllowed){
  if (bEmptyAllowed == null) bEmptyAllowed = true;
  var sFldValue = trim(sFldValue);
  if (sFldValue == "") {
    if (bEmptyAllowed) return true;
    alert("Field "+sFldLabel+" can not be empty");
    return false;
  }
  sFldValue = sFldValue.toLowerCase();
  var sMinus = sFldValue.substr(0,1);
  // allow negative:
  if (sMinus == "-"){
    sFldValue = trim(sFldValue.substring(1,sFldValue.length));
  }
  var nDot = sFldValue.indexOf(".");
  var nLen = sFldValue.length;
  if (nDot == -1) return isNumber(sFldValue,sFldLabel,bEmptyAllowed,true);
  if (nDot == 0){
    alert("Invalid amount format in "+sFldLabel+", expected d.dd");
    return false;
  }
  var sStart =  sFldValue.substring(0,nDot);
  var sEnd = "";
  if (nDot != nLen-1){sEnd = sFldValue.substring(nDot+1,nLen);}
  if (sEnd.length > 2){
    alert("Invalid amount format in "+sFldLabel+", expected d.dd");
    return false;
  }
  if (!isNumber(sStart,sFldLabel,bEmptyAllowed,true)) return false;
  if (!isNumber(sEnd,sFldLabel,bEmptyAllowed,true)) return false;
  return true;
}

//***********************************************************************************
//******************************* AJAX related code *********************************
//***********************************************************************************
var xmlHttpRequestHandler = new Object();
xmlHttpRequestHandler.createXmlHttpRequest = function(){
  var XmlHttpRequestObject;
  if (typeof XMLHttpRequest != "undefined"){
   XmlHttpRequestObject = new XMLHttpRequest();
  }
  else if (window.ActiveXObject){
    // look up the highest possible MSXML version
    var tryPossibleVersions=["MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0",
                             "MSXML2.XMLHttp.3.0","MSXML2.XMLHttp","Microsoft.XMLHttp"];
    for (i=0; i< tryPossibleVersions.length; i++){
      try{
        XmlHttpRequestObject = new ActiveXObject(tryPossibleVersions[i]);
        break;
      }
      catch (xmlHttpRequestObjectError){/*ignore*/}
      }
  }
  return XmlHttpRequestObject;
}


//Sample request;
//http://localhost:8080/tfa/servlet/WServer?service=tfa.service.PageRouter&EnterKey=NONE&CameFrom=&PressedName=&oHidPaypalActiveFlag=Y&GoMemberData.UpdateCust.x=98&GoMemberData.UpdateCust.y=17
function determineLogButtonImage_AJAX(){
  var oLogButImg = getElementByIdOrName("oLogButtonTriggerImg",false);
  if (oLogButImg == null) return;
  var sTriggerSrc = oLogButImg.src;
  var PAGE_SUCCESS = 200;
  var requestObject = xmlHttpRequestHandler.createXmlHttpRequest();
  var sRoot = "http://www.TheFifthAnimal.com/servlet/WServer?"
  var sParms = "service=tfa.service.PageRouter&DefaultService=GoLogButton&TriggerSrc="+sTriggerSrc;
  var sRequest = sRoot+sParms;
  requestObject.open("Get",sRequest,false);
  requestObject.send(null);
  if (requestObject.status==PAGE_SUCCESS){
    var oDiv = getElementByIdOrName("LogButDiv",false);
    if (oDiv == null) {
      return;
    }
    oDiv.innerHTML =''+requestObject.responseText;
  }
}

function showTempDemoMsg() {
  alert("We are currently re-recoding our Demos. They should be back online in the next couple of weeks.");
}
