

// load event handlers
window.onload = function() {

  if (navigator.appVersion.indexOf('MSIE') > 0) {
     var ls = $('loginScreen');
     if (ls != null) {
        ls.className = "ieLoginScreen";
     }
  }
  eraseCookie('bpdam:curPopup');
}


function setImage(elem, image) {
  $(elem).src = image;
}

function submitFlashUpload(formId) {
   var flash;
   if(document.embeds && document.embeds.length>=1 && navigator.userAgent.indexOf("Safari") == -1) {
      flash = document.getElementById("EmbedFlashFilesUpload");
   }
   else {
      flash = document.getElementById("FlashFilesUpload");
   }
		
   var formObj = document.getElementById(formId);
   if ((formObj != 'undefined') && (formObj != null)) {
      formObj.action = '';
   }
   var formValues = '';
   for (var i = 0; i < formObj.elements.length; i++) {
      formValues += escape(formObj.elements[i].name) + '=' + escape(formObj.elements[i].value) + ((i!=(formObj.elements.length-1))?'&':'');
   }	

   flash.SetVariable("SubmitFlash", formValues); 
   return false;
}

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}

String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}

String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}

function setLoginForm(formId) {
   var chResp = calcChallengeResponse(formId);
   setFormFieldValue(formId, 'challengeResponse', chResp);
   setFormFieldValue(formId, 'password', "");
}

function calcChallengeResponse(formId) {
   var uName = getFormFieldValue(formId, 'userName');
   var pword = getFormFieldValue(formId, 'password');
   var ch = getFormFieldValue(formId, 'challenge'); 
   var credentials = sha1Hash(uName + pword);
   for (var i = 0; i < 3; i++) {
       credentials = sha1Hash(uName + pword + credentials);
   }

   var chResponse = sha1Hash(credentials + ch);
   return chResponse ;
}

function getLoginValues(formId) {
   var uName = getFormFieldValue(formId, 'userName');
   var pword = getFormFieldValue(formId, 'password');
   var ch = getFormFieldValue(formId, 'challenge'); 

   var credentials = sha1Hash(uName + pword);
   for (var i = 0; i < 3; i++) {
       credentials = sha1Hash(uName + pword + credentials);
   }
   var chResponse = sha1Hash(credentials + ch);

   var vals = "&userName=" + uName;
   vals += "&challenge=" + ch;
   vals += "&challengeResponse=" + chResponse;
   vals += "&password=" + chResponse;

   return vals
}

function getFormFieldValue(formid, fieldName) {
   var fieldVal = null;
   var formObj = $(formid);
   if ((formObj != null) && (formObj != 'undefined')) {
      for (var i = 0; i < formObj.elements.length; i++) {
         if (formObj.elements[i].name == fieldName) {
             switch(formObj.elements[i].type) {
             case "text":
                fieldVal = formObj.elements[i].value;
                break;
             case "password":
                fieldVal = formObj.elements[i].value;
                break;
             case "hidden":
                fieldVal = formObj.elements[i].value;
                break;
             case "select-one":
                fieldVal = formObj.elements[i].options[fobj.elements[i].selectedIndex].value;
                break;
             case "textarea":
                fieldVal = formObj.elements[i].value;
                break;
            default: 
                alert('type: ' + formObj.elements[i].type);
                break;
            }
         }
      }
   }

   return fieldVal;
}

function setFormFieldValue(formid, fieldName, value) {
   var formObj = $(formid);
   if ((formObj != null) && (formObj != 'undefined')) {
      for (var i = 0; i < formObj.elements.length; i++) {
         if (formObj.elements[i].name == fieldName) {
             switch(formObj.elements[i].type) {
             case "text":
                formObj.elements[i].value = value;
                break;
             case "password":
                formObj.elements[i].value = value;
                break;
             case "hidden":
                formObj.elements[i].value = value;
                break;
             case "select-one":
                formObj.elements[i].options[fobj.elements[i].selectedIndex].value = value;
                break;
             case "textarea":
                formObj.elements[i].value = value;
                break;
            default: 
                alert('type: ' + formObj.elements[i].type);
                break;
            }
         }
      }
   }
}

function showRegistrationForm(serverHostname) {
   var url = "https://" + serverHostname + ":443/faces/register.jsp";
   var popup = window.open(url, "registrationForm",
     "width=617,height=675,status=no,toolbar=no,menubar=no,location=no,history=no,resizable=yes,screenX=400,screenY=300,left=400,top=300");
   popup.focus();
}

function showForgotLoginForm(serverHostname) {
   var url = "https://" + serverHostname + ":443/faces/forgotRegistration.jsp";
   var popup = window.open(url, "forgotForm",
    "width=556,height=395,status=no,toolbar=no,menubar=no,location=no,history=no,resizable=yes,screenX=400,screenY=300,left=400,top=300");
   popup.focus();
}

function jsSubmit(formId, url) {
   var params = getFormValues(formId);
   url += params;
   var form = $(formId);
   form.action = url;
   form.submit();
}

function getFormValues(formId, valFunc) {  
   var str = "?";
   var valueArr = null;
   var val = "";
   var cmd = "";

   var fobj = $(formId);
   for(var i = 0;i < fobj.elements.length; i++) {
      switch(fobj.elements[i].type) {
      case "text":
         if(valFunc){
            //use single quotes for argument so that the value of
            //fobj.elements[i].value is treated as a string not a literal
            cmd = valFunc + "(" + 'fobj.elements[i].value' + ")";
            val = eval(cmd)

         }
 
         str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value) + "&"
         break;
      case "password":
         str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value) + "&"
         break;
      case "hidden":
         str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value) + "&"
         break;
      case "select-one":
         if (fobj.elements[i].selectedIndex >= 0) {
            str += fobj.elements[i].name + "=" + fobj.elements[i].options[fobj.elements[i].selectedIndex].value + "&";
         }
         break;
      case "textarea":
         str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value) + "&";
         break;
      default: 
         //alert('type: ' + fobj.elements[i].type);
         break;
      }
   }
   
   str = str.substr(0,(str.length - 1));
   return str;
}
