function LoadGallery(pictureName, imageFile)
{
  var preload = document.getElementById('preload_'+current_preload);

  if(document.all)
  {
    document.getElementById('preloaded_img_'+current_preload).style.filter="blendTrans(duration=1)";
    document.getElementById('preloaded_img_'+current_preload).filters.blendTrans.Apply();
    document.getElementById('preloaded_img_'+current_preload).filters.blendTrans.Play();
  }

  sty = preload.style;
  sty.display = 'none';

  var new_preload = document.getElementById('preload_'+imageFile);

  if (document.all)
  {
    document.getElementById('preloaded_img_'+imageFile).style.filter="blendTrans(duration=1)";
    document.getElementById('preloaded_img_'+imageFile).filters.blendTrans.Apply();
    document.getElementById('preloaded_img_'+imageFile).filters.blendTrans.Play();
  }

  sty = new_preload.style;
  sty.display = 'block';

  current_preload = imageFile;
}

function popup2(topic)
{
  aPopUp= window.open(topic,'PopupViewer','scrollbars=yes,location=no,status=no,menubar=0,directories=no,top=0,left=0,width=390,height=360,titlebar=no')
self.aNoteWin = aPopUp;
  return false;
}

function popup(topic, width, height)
{
  aPopUp= window.open(topic,'PopupViewer','scrollbars=yes,location=no,status=no,menubar=0,directories=no,top=0,left=0,width='+width+',height='+height+',titlebar=no')
	self.aNoteWin = aPopUp;
  return false;
}

function popupWindow(image_id, product_id)
{

  LeftPosition = (screen.width) ? (screen.width-500)/2 : 0;
  TopPosition = (screen.height) ? (screen.height-500)/2 : 0;

  settings = 'height=125,width=50,top='+TopPosition+',left='+LeftPosition+',toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=1';
  win = window.open("/view_image.html?image_id=" + image_id+ "&product_id="+product_id,null,settings);
}

function checkPassword(strPassword)
{
  var intScore   = 0
  var strVerdict = "weak"
  var strLog     = ""
  var intPercent = 0

  // PASSWORD LENGTH
  if (strPassword.length<5)                         // length 4 or less
  {
    intScore = (intScore+3)
    strLog   = strLog + "3 points for length (" + strPassword.length + ")\n"
  }
  else if (strPassword.length>4 && strPassword.length<8) // length between 5 and 7
  {
    intScore = (intScore+6)
    strLog   = strLog + "6 points for length (" + strPassword.length + ")\n"
  }
  else if (strPassword.length>7 && strPassword.length<16)// length between 8 and 15
  {
    intScore = (intScore+12)
    strLog   = strLog + "12 points for length (" + strPassword.length + ")\n"
  }
  else if (strPassword.length>15)                    // length 16 or more
  {
    intScore = (intScore+18)
    strLog   = strLog + "18 point for length (" + strPassword.length + ")\n"
  }


  // LETTERS (Not exactly implemented as dictacted above because of my limited understanding of Regex)
  if (strPassword.match(/[a-z]/))                              // [verified] at least one lower case letter
  {
    intScore = (intScore+1)
    strLog   = strLog + "1 point for at least one lower case char\n"
  }

  if (strPassword.match(/[A-Z]/))                              // [verified] at least one upper case letter
  {
    intScore = (intScore+5)
    strLog   = strLog + "5 points for at least one upper case char\n"
  }

  // NUMBERS
  if (strPassword.match(/\d+/))                                 // [verified] at least one number
  {
    intScore = (intScore+5)
    strLog   = strLog + "5 points for at least one number\n"
  }

  if (strPassword.match(/(.*[0-9].*[0-9].*[0-9])/))             // [verified] at least three numbers
  {
    intScore = (intScore+5)
    strLog   = strLog + "5 points for at least three numbers\n"
  }


  // SPECIAL CHAR
  if (strPassword.match(/.[!,@,#,$,%,^,&,*,?,_,~]/))            // [verified] at least one special character
  {
    intScore = (intScore+5)
    strLog   = strLog + "5 points for at least one special char\n"
  }

                               // [verified] at least two special characters
  if (strPassword.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/))
  {
    intScore = (intScore+5)
    strLog   = strLog + "5 points for at least two special chars\n"
  }


  // COMBOS
  if (strPassword.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/))        // [verified] both upper and lower case
  {
    intScore = (intScore+2)
    strLog   = strLog + "2 combo points for upper and lower letters\n"
  }

  if (strPassword.match(/(\d.*\D)|(\D.*\d)/))  // [FAILED] both letters and numbers, almost works because an additional character is required
  {
    intScore = (intScore+2)
    strLog   = strLog + "2 combo points for letters and numbers\n"
  }

  // [verified] letters, numbers, and special characters
  if (strPassword.match(/([a-zA-Z0-9].*[!,@,#,$,%,^,&,*,?,_,~])|([!,@,#,$,%,^,&,*,?,_,~].*[a-zA-Z0-9])/))
  {
    intScore = (intScore+2)
    strLog   = strLog + "2 combo points for letters, numbers and special chars\n"
  }

  if(intScore < 16)
  {
     strVerdict = "very weak"
  }
  else if (intScore > 15 && intScore < 25)
  {
     strVerdict = "weak"
  }
  else if (intScore > 24 && intScore < 35)
  {
     strVerdict = "mediocre"
  }
  else if (intScore > 34 && intScore < 45)
  {
     strVerdict = "strong"
  }
  else
  {
     strVerdict = "stronger"
  }

  //document.forms.passwordForm.score.value = (intScore)
  //document.forms.passwordForm.verdict.value = (strVerdict)
  //document.forms.passwordForm.matchlog.value = (strLog)

  intPercent = intScore * 3;
  //intScore = intScore * 2
  objBar = document.getElementById("passBar");

  if (intPercent > 0)
  {
    if (intPercent>100)
    {
      intPercent=100; // just to check if it goes over 100
    }

    objBar.style.width = intPercent + "%";

    if (intPercent < 50)
    {
      objBar.style.background = "#cc0000";
    }
    else if(intPercent < 84)
    {
      objBar.style.background = "#FFD700";
    }
    else
    {
      objBar.style.background = "#00A601";
    }
  }
  else
  {
    objBar.style.width = 0;
  }
}


function comparePassword () {

  var password = document.getElementById('password').value;
  var password_confirm = document.getElementById('password_confirm').value;

  if (password == password_confirm)
  {
    document.getElementById('password_confirmation_text').style.display="none";
  }
  else
  {
    document.getElementById('password_confirmation_text').style.display="";
  }

}

function validate_register_form() {

  var valid=true;

  if (document.register_form.first_name.value == "")
  {
    document.getElementById('register_error').style.display="";
    document.register_form.man_first_name.focus();
    valid=false;
  }

  if (valid && document.register_form.surname.value == "")
  {
    document.getElementById('register_error').style.display="";
    document.register_form.man_surname.focus();
    valid=false;
  }

  if (valid && document.register_form.m.value == "")
  {
    document.getElementById('register_error').style.display="";
    document.register_form.man_date.focus();
    valid=false;
  }

  if (valid && document.register_form.email_address.value == "")
  {
    document.getElementById('register_error').style.display="";
    document.register_form.man_email_address.focus();
    valid=false;
  }
}

function confirmAction(strMsg)
{
  var bAnswer = confirm (strMsg);

  if (bAnswer)
  {
    return true;
  }
  else
  {
    return false;
  }
}

/* Generic Form Validation */
window.onload = attachFormHandlers;

function attachFormHandlers()
{
  if (document.getElementsByTagName)
  {
    var objForm = document.getElementsByTagName('form');

    for (var iCounter=0; iCounter<objForm.length; iCounter++)
      objForm[iCounter].onsubmit = function(){return checkForm(this);}
  }
}

function checkForm(objForm)
{
  var arClass, bValid;
  var objField = objForm.getElementsByTagName('*');

  for (var iFieldCounter=0; iFieldCounter<objField.length; iFieldCounter++)
  {
    arClass = objField[iFieldCounter].className.split(' ');
    for (var iClassCounter=0; iClassCounter<arClass.length; iClassCounter++)
    {
      //alert(arClass[iClassCounter]);
      switch (arClass[iClassCounter])
      {
        case 'string':
           bValid = isString(objField[iFieldCounter].value.replace(/^\s*|\s*$/g, ''));
           break;
        case 'number' :
           bValid = isNumber(objField[iFieldCounter].value);
           break;
        case 'email' :
           bValid = isEmail(objField[iFieldCounter].value);
           break;
        case 'emailMatch' :
           bValid = isEmailMatch(objField[iFieldCounter].value);
           if (bValid == false)
           {
             alert('Please make sure the email addresses you gave match up');
             return false;
           }
           break;
        case 'option' :
           bValid = isOption(objField[iFieldCounter].value);
           break;
        case 'telephone' :
           bValid = isTelephone(objField[iFieldCounter].value);
           break;
        case 'password' :
           bValid = isPassword(objField[iFieldCounter].value);
           break;
        case 'check' :
           bValid = isChecked(objField[iFieldCounter].checked);
           break;
        default:
           bValid = true;
      }

      if (bValid == false)
      {
        s = new String(objField[iFieldCounter].name);
        s = s.replace(/_/g," ");

        alert('Please review the value you entered for ' + s);

        objField[iFieldCounter].focus();
        return false;
      }
    }
  }
  return true;
}

function isString(strValue)
{
  return (typeof strValue == 'string' && strValue != '');
}

function isNumber(strValue)
{
  return (!isNaN(strValue) && strValue != '');
}

function isChecked(blnChecked)
{
  return blnChecked;
}

function isTelephone(strValue)
{
  return (strValue != '');
}

function isPassword(strValue)
{
  return (strValue != '');
}

function isEmail(strValue)
{
  var objRE = /^[\w-\.\']{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,}$/;

  return (strValue != '' && objRE.test(strValue));
}
function isEmailMatch(strValue)
{
  var email = document.getElementById('Email_address');
  var emailSecond = document.getElementById('Confirm_email_address');
  if (email.value == emailSecond.value)
  {
    return true;
  }
  else
  {
    return false;
  }
}
function isOption(strValue)
{
  return (strValue != '');
}

function openCloseAnswer(id)
{
  var answer = document.getElementById('answer_'+id);
  var question = document.getElementById('question_'+id);

  if (answer.style.display == 'none')
  {
    answer.style.display = '';
    question.className = 'open';
  }
  else
  {
    answer.style.display = 'none';
    question.className = 'closed';
  }
}

function getDocHeight(IFrameDoc) {
     return (typeof IFrameDoc.height != 'undefined') ?
                IFrameDoc.height :
            (IFrameDoc.body && typeof IFrameDoc.body.scrollHeight != 'undefined') ?
                IFrameDoc.body.scrollHeight :
                null;
}

function sizeToContent(iframe_ref) {

     var IFrameDoc, oIframe = document.getElementById(iframe_ref);

     if (typeof oIframe != null) {
         if (oIframe.contentDocument) IFrameDoc = oIframe.contentDocument;
         else if (oIframe.contentWindow) IFrameDoc = oIframe.contentWindow.document;
         else if (oIframe.document) IFrameDoc = oIframe.document;

     var hgt = getDocHeight(IFrameDoc);

     if (hgt) oIframe.style.height = String(hgt + 'px');
   }
}
