$(document).ready(app_load);

function app_load() {
  $('#btn_logout').click(confirm_logout);
  $('#srchempl').autocomplete("/hr/peak/userlist", { minChars: 3 });
  $('#update_manager').autocomplete("/hr/peak/userlist", { minChars: 3 });
  $('#add_manager').autocomplete("/hr/peak/userlist", { minChars: 3 });
  $('#add_viewer').autocomplete("/hr/peak/userlist", { minChars: 3 });
  $('#search_criteria').quicksearch( '#submitted_list tbody tr' );
}

function chkbxtosubmit (id){
   var n = $("input:checked").length;
   if( n > 0) {
     $('#' + id).removeAttr('disabled');
   }
   else {
     $('#' + id).attr('disabled',true);
   }

}

function confirm_logout() {
  return confirm( "Are you sure you want to logout?" );
}

function displayaddcomment(elementID){
   if( document.getElementById(elementID).style.display == 'none') {
     document.getElementById(elementID).style.display = '';
   }
   else {
     document.getElementById(elementID).style.display = 'none';
   }

}

function displaytextbx(elementID){
   if($('#relationship').val() == 'other') {
     document.getElementById(elementID).style.display = '';
   }
   else {
     document.getElementById(elementID).style.display = 'none';
   }
}

function is_email_address(field) {
    if (!field.value.match(/\@/)) {
        return false;
    }else{
       return true;
    }
}

function Left(str, n){
    if (n <= 0)
	return "";
    else if (n > String(str).length)
	return str;
    else
	return String(str).substring(0,n);
}

function list_entities_check_all(form) {
    var len = form.remove.length;

    if(form.AllMembers.checked == true){
        //this means we might only have a single value
        if(len == undefined) {
           form.remove.checked = true;
        } else {
            for(var x=0;x<form.remove.length;x++){
                form.remove[x].checked = true;
            }
        }
    }else{
        //this means we might only have a single value
       if(len == undefined) {
           form.remove.checked = false;
        } else {
            for(var x=0;x<form.remove.length;x++){
               form.remove[x].checked = false;
            }
        }
    }
}

function putFocus(formInst, elementInst) {
    if (document.forms.length > 0) {
	document.forms[formInst].elements[elementInst].focus();
    }
}

function Right(str, n){
    if (n <= 0)
	return "";
    else if (n > String(str).length)
	return str;
    else {
	var iLen = String(str).length;
	return String(str).substring(iLen, iLen - n);
    }
}

function toggleShown(elementID){
   var target1 = document.getElementById(elementID)
       if (target1.style.display == 'none') {
           target1.style.display = 'block';
       } else {
           target1.style.display = 'none';
       }
}

function toggleShown2(elementID){
   var target1 = document.getElementById(elementID)
       if (target1.style.display == 'none') {
           target1.style.display = 'inline';
       } else {
           target1.style.display = 'none';
       }
}

function txtosubmit (elementID,id){
   if($('#' + elementID).val()) {
     $('#' + id).removeAttr('disabled');
   }
   else {
     $('#' + id).attr('disabled',true);
   }

}

function valid_Description(field) {
    if (!field.value.match(/^([a-zA-Z0-9]{1})([a-zA-Z0-9\_\-\ ]{0,49})$/)) {
        return false;
    }else{
        return true;
    }
}

function valid_email_address(field) {
    if ((field.value.match(/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/))  || (!field.value.match(/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/))) {
        return false;
    }else{
       return true;
    }
}

function validate_form(form) {
    if (form.name == "delete_list_confirm_form") {
        msg="You must choose lists to delete";
        return validate_list_form_is_not_empty(form,msg);
    }     else if (form.name == "simple_search_form") {
        return validate_simple_search_form(form);
    } else if (form.name == "search_results_form") {
        msg="You must choose lists to delete";
        return validate_list_form_is_not_empty(form,msg);
    } else if (form.name == "add_list_entities_form") {
        return validate_add_list_entities_form(form);
    } else if (form.name == "remove_list_entities_form") {
        return validate_remove_list_entities_form(form);
    } else if (form.name == "managed_list_delete_form") {
        msg="You must choose lists to delete";
        return validate_list_form_is_not_empty(form,msg);
    } else if (form.name == "subscribe_list_form") {
        msg="You must choose lists to subscribe to.";
        return validate_list_form_is_not_empty(form,msg);
    } else if (form.name == "unsubscribe_list_form") {
        msg="You must choose lists to unsubscribe to.";
        return         validate_list_form_is_not_empty(form,msg);
    } else {
        return false;
    }
}

function validate_list_form_is_not_empty(form,msg) {
    var good = 0;
    var len = form.ListName.length;

    //this means we might only have a single value
    if(len == undefined){
        if(form.ListName.checked == true){
            good=1;
        }
    }else{
    //we may have multiple values
        for(var x = 0; x < form.ListName.length; x++){
           if(form.ListName[x].checked == true){
               good=1;
           }
        }
    }
    if(good == 0){
        alert(msg);
        return false;
    }else{
        return true;
    }
}

function valid_ListName(field) {
    if (!field.value.match(/^([a-zA-Z0-9]{1})([a-zA-Z0-9\_\-]{0,49})$/)) {
        return false;
    }else{
       return true;
    }
}

function valid_MailErrorsTo_address(field) {
    if (!field.value.match(/^.+\@stern.nyu.edu$/)) {
        return false;
    }else{       return true;
    }
}

function valid_username(field) {
    if (!field.value.match(/^([0-9a-zA-Z\-]+)$/)) {
        return false;
    }else{
       return true;
    }
}

function validate_add_list_entities_form(form){
    if(!form.AddNames.value){
        alert("You must supply names to add to the list");
        return false;
    }
    if((form.LDAPType[0].checked == false) && (form.LDAPType[1].checked == false)){
        alert("You must choose a type: User or Group");
        return false;
    }else{
        return true;
    }
}

function validate_id_swipe(id) {
    var uid = document.getElementById(id);
    //alert("We have arrived in the validate_id_swipe" + uid.value);
    if (uid.value.length < 9) {
	//alert("Please swipe the ID Card again.");
       return true;    }
    else if (uid.value.length == 9) {
       return true;
    }
    else if (uid.value.length > 9) {
	uid.value = Right(uid.value, (uid.value.length - uid.value.indexOf("8"))-1);
	uid.value = Left(uid.value, 8)
        uid.value = "N" + uid.value;
	return true;
    }

}

function validate_remove_list_entities_form(form){
    var good = 0;
    var len = form.remove.length;
    //this means we might only have a single value
    if(len == undefined){
        if(form.remove.checked == true){
            good=1;
        }
    } else {
        for(var x=0;x<form.remove.length;x++){
            if(form.remove[x].checked == true){
               good=1;
            }
        }
    }
    if(good == 0){
        alert("You must choose entities to delete");
        return false;
    }else{
        return true;
    }
}

function validate_search_form(form) {
    if ((!form.ListName.value) && (!form.Email.value) && (!form.Description.value) && 
        (!form.Owner.value) && (!form.Member.value) && (!form.Sender.value)) {
        alert("You must enter values to search by.");
        return false;
    } else if ((form.ListName.value) && (!valid_ListName(form.ListName))) {
       alert("This is not a valid list name.  It must be 1 to 50 characters, numbers, underscores, and/or hyphens.");
    } else if ((form.Email.value) && (!valid_email_address(form.Email))) {
        alert("The email field contains an invalid email, it must be in someOne\@someCompany.xxx format.");
        return false;
    } else if ((form.Description.value) && (!valid_Description(form.Description))) {
        alert("This is not a valid description. It must be 1 to 50 characters, numbers, underscores, hyphens, and/or spaces.");
        return false;
    } else if ((form.Member.value) && (is_email_address(form.Member)) && (!valid_email_address(form.Member))) {
        alert("The member field is not valid.  It must be either an email address in someOne\@someCompany.xxx format OR a username containing only alpha-numeric characters.");
        return false;
    } else if ((form.Member.value) && (!is_email_address(form.Member)) && (!valid_username(form.Member))) {
        alert("The member field is not valid.  It must be either an email address in someOne\@someCompany.xxx format OR a username containing only alpha-numeric characters.");
        return false;
    } else if ((form.Owner.value) && (!valid_username(form.Owner))) {
        alert("The owner field is not a valid username, it may only contain alpha-numeric characters.");
        return false;
    } else if ((form.Sender.value) && (!valid_username(form.Sender))) {
        alert("The owner field is not a valid username, it may only contain alpha-numeric characters.");
        return false;
    } else {
       return true;        }
}

function validate_simple_search_form(form) {
    if (!form.ComboCriteria.value) {
       alert("You must enter values to search by.");
       return false;
    }else{
       return true;
    }
}


