

// --------------- Toggle script ----------------
// Toggles the registration form visible and invisible
function toggle_visibility(count) {
    $("#invite" + count).css('display', 'none');
    $("#inv" + count).css('display', 'none');
    
    var e = $('#tab' + count);
    if (e.css('display') == 'block') {
        e.css('display', 'none');
        $("#tab" + count + "b").css('display', 'block');                                              
    }
    else {
        e.css('display', 'block');
        $("#tab" + count + "b").css('display', 'none');
    }
}

//---------------- Toggle visibility invite form ------------------
function toggle_visibility_invite(formIndex) {
    $("#tab" + formIndex).css('display', 'none');    
    $("#tab" + formIndex + "b").css('display', 'none');
    
    var e = document.getElementById('inv' + formIndex);
    if(e.style.display == 'block') {
        e.style.display = 'none';   
        document.getElementById("invite" + formIndex).style.display="block";                                                                                         
    }
    else {
        e.style.display = 'block';                                          
        document.getElementById("invite" + formIndex).style.display="none";
    }                                           
}

// --------------- Binds hide/unhide function to read more --------------
$(document).ready(function() {
    $("a.readMore").each(function(i) {
        $(this).click(function() {
            $("#show" + (i + 1) + "3").toggle("slow");
            document.getElementById("show" + (i + 1) + "1").style.display="none";
            document.getElementById("show" + (i + 1) + "4").style.display="inline"; 
            document.getElementById("rmHide" + (i + 1)).style.display="none";
        });
    });
    $("a.hideMore").each(function(i) {
        $(this).click(function () {      
            $("#show" + (i + 1) + "3").toggle("slow");
            document.getElementById("show" + (i + 1) + "4").style.display="none";
            document.getElementById("show" + (i + 1) + "1").style.display="inline";
            document.getElementById("rmHide" + (i + 1)).style.display="inline";
        });
    });
});

// ------------------- Registration form validation ------------------
function validateFormOnSubmit(formIndex) {

    var theForm = $("#regForm" + formIndex).get(0);
    var reason = "";
    reason += validateUsername($("#regForm" + formIndex + "_username").get(0), formIndex); 
    reason += validateLastname($("#regForm" + formIndex + "_lastname").get(0), formIndex); 
    reason += validateEmail(theForm, formIndex);
    reason += validateC(theForm, formIndex);
    reason += validatePhone($("#regForm" + formIndex + "_contact").get(0), formIndex, false);
    
    if (reason != "") {
        return false;
    }
    else {
        $.post("/bkregistration/genericFormController.do", $("#regForm" + formIndex).serialize(),
            function(data) {
                if(data.response.status != 'OK') {
                    alert("There was an error processing form! Please inform the administrator to resolve the problem or try again later.");
                }
                else {
                    //$("#invite" + formIndex + " .regSuccessInfo").empty().append('You have successfully registered for this lecture why not <a href="#register"  onclick="toggle_visibility_invite(' + formIndex + ');">invite a friend</a> to join you for the lecture? You may also <a href="#register" onclick="toggle_visibility(' + formIndex + ');">register another participant</a>');
                    $("#loader" + formIndex).css("display", "none");
                    $("#invite" + formIndex + " .regSuccessBg:eq(0)").css("display", "block");
                    $("#m1").css("display", "block");
                    $("#m2").css("display", "none");
                    var uname = $("#regForm" + formIndex + "_username").get(0).value;
                    $("#friendForm" + formIndex).get(0).username.value=uname;
                    theForm.reset();
                }
            },
            "json"
        );
        $("#tab" + formIndex).css("display", "none");
        $("#invite" + formIndex).css("display", "block");
        $("#invite" + formIndex + " .regSuccessBg").css("display", "none");
        $("#loader" + formIndex).css("display", "block");
        return false;
    }
}

function validateContactFormOnSubmit() {
    var theForm = $("#contactForm").get(0);
    var reason = "";
    reason += validateUsername($("#contactForm_username").get(0), "");  
    reason += validateEmail(theForm, "");
    reason += validateC(theForm, "");
    reason += validatePhone($("#contactForm_phone").get(0), "", false);
    reason += validateEmptyMsg(theForm, "");
          
    if (reason != "") {
        return false;
    }
    else {
        $.post("send-mail.jsp", $("#contactForm").serialize(),
            function(data){
                if(data.response.status != 'OK') {
                    alert("There was an error processing form! Please inform the administrator to resolve the problem.");
                }
                else {
                    theForm.reset();
                    document.getElementById("success").innerHTML="<div style='background-color:#FFFF00; height:25px; margin-right:5px; padding-bottom: 0px; width:150px; border:1px solid green; border-width:1px 1px 0px;'><img src='../images/checked.gif' alt='' style='margin: 5px;' align='center'/>Your message is sent.</div>";
                }
            },
            "json"
        );
        return false;
    }
}

function validateUsername(fld, formIndex) {
    var error = "";
    var illegalChars = /\W/; // allow letters, numbers, and underscores
 
    if (fld.value == "") {
        fld.style.border = "1px solid red";
        document.getElementById("unMsg" + formIndex).innerHTML="Please enter your firstname";
        document.getElementById("unMsg" + formIndex).style.color="red";
        error = "You didn't enter a firstname.\n";
    } else if ((fld.value.length < 1) ) {
        fld.style.border = "1px solid red";
        document.getElementById("unMsg" + formIndex).innerHTML="Enter your firstname";
        document.getElementById("unMsg" + formIndex).style.color="red";
        error = "The firstname is the wrong length.\n";
    } else if (illegalChars.test(fld.value)) {
         fld.style.border = "1px solid red"; 
         document.getElementById("unMsg" + formIndex).innerHTML="Please provide valid characters for this field";
         document.getElementById("unMsg" + formIndex).style.color="red";
        error = "Please provide valid characters for this field.\n";
    } else {
        fld.style.border = "1px solid #94C1D7";
        document.getElementById("unMsg" + formIndex).innerHTML="";
    }
    return error;
}

function validateLastname(fld, formIndex) {
    var error = "";
    var illegalChars = /\W/; // allow letters, numbers, and underscores
 
    if (fld.value == "") {
         fld.style.border = "1px solid red";
         document.getElementById("ln" + formIndex).innerHTML="Please enter your lastname";
         document.getElementById("ln" + formIndex).style.color="red";
        error = "You didn't enter a lastname.\n";
    } else if ((fld.value.length < 1) ) {
         fld.style.border = "1px solid red";
         document.getElementById("ln" + formIndex).innerHTML="Enter your lastname";
         document.getElementById("ln" + formIndex).style.color="red";
        error = "The lastname is the wrong length.\n";
    } else if (illegalChars.test(fld.value)) {
         fld.style.border = "1px solid red"; 
         document.getElementById("ln" + formIndex).innerHTML="Please provide valid characters for this field";
         document.getElementById("ln" + formIndex).style.color="red";
        error = "Please provide valid characters for this field.\n";
    } else {
         fld.style.border = "1px solid #94C1D7";
        document.getElementById("ln" + formIndex).innerHTML="";
    }
    return error;
}

function trim(s)
{
  return s.replace(/^\s+|\s+$/, '');
}

function validateEmail(theForm, formIndex) {
    var formName = theForm.getAttribute('id');
    var fld = $("#" + formName + "_email").get(0);
    var error="";
    var tfld = trim(fld.value);                        // value of field with whitespace trimmed off
    var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
    var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
   
    if (fld.value == "") {
        fld.style.border = "1px solid red";
        document.getElementById(formName + "_e").innerHTML="Please enter email";
        document.getElementById(formName + "_e").style.color="red";
        error = "You didn't enter an email address.\n";
    } else if (!emailFilter.test(tfld)) {
        document.getElementById(formName + "_e" + formIndex).innerHTML="Please enter valid email";//test email for illegal characters
        fld.style.border = "1px solid red";
         
        document.getElementById(formName + "_e").style.color="red";
        error = "Please enter a valid email address.\n";
    } else if (fld.value.match(illegalChars)) {
        fld.style.border = "1px solid red";
        document.getElementById(formName + "_e").innerHTML="Please provide valid characters for this field";
        document.getElementById(formName + "_e").style.color="red";
        error = "Please provide valid characters for this field.\n";
    } else {
        //fld.style.border = "1px solid red";
        fld.style.border = "1px solid #94C1D7";
        document.getElementById(formName + "_e").innerHTML="";
    }
    return error;
}

function validateC(theForm, formIndex) {
    var formName = theForm.getAttribute('id');
    //var fld = $("#email_confirmed" + formIndex).get(0);
    var fld = $("#" + formName + "_email_confirmed").get(0);
    //var fld2 = $("#email" + formIndex).get(0);
    var fld2 = $("#" + formName + "_email").get(0);
    var error="";
    var tfld = trim(fld.value);                        // value of field with whitespace trimmed off
    var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
    var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
   
    if (fld.value == "") {
         fld.style.border = "1px solid red";
         document.getElementById(formName + "_ec").innerHTML="Please enter confirmation email";
         document.getElementById(formName + "_ec").style.color="red";
        error = "You didn't enter an confirmation email address.\n";
    } else if (!emailFilter.test(tfld)) {              //test email for illegal characters
         fld.style.border = "1px solid red";
         document.getElementById(formName + "_ec").innerHTML="Please enter valid confirmation email";
         document.getElementById(formName + "_ec").style.color="red";
        error = "Please enter a valid confirmation email address.\n";
    } else if (fld.value.match(illegalChars)) {
         fld.style.border = "1px solid red";
        error = "Please provide valid characters for this field.\n";
    } 
    else {
    if(fld.value!=fld2.value){
         //fld.style.border = "1px solid red";  
         fld.style.border = "1px solid red";
         document.getElementById(formName + "_ec").innerHTML="Both emails have to be same";
         document.getElementById(formName + "_ec").style.color="red";
        error = "Please enter a valid confirmation email address.\n";
         }else{
                fld.style.border = "1px solid #94C1D7";
        document.getElementById(formName + "_ec").innerHTML="";
        }
    }
    return error;
}

function validatePhone(fld, formIndex, required) {
    var error = "";
    var stripped = fld.value.replace(/[\(\)\.\-\ ]/g, '');    

    if (fld.value == "" && !required)
        return error;
    else if (fld.value == "") {
        document.getElementById("ph" + formIndex).innerHTML="Please enter contact number";
        document.getElementById("ph" + formIndex).style.color="red";
        error = "You didn't enter a phone number.\n";
        fld.style.border = "1px solid red";
    }
    else {
        fld.style.border = "1px solid #94C1D7";
        document.getElementById("ph" + formIndex).innerHTML="";
    }
    return error;
}

//---------------- Validation of the friend form

function validateFriendForm(formIndex) {
    var theForm = $("#friendForm" + formIndex).get(0);
    var reason = "";
 
    reason += validateEmail(theForm, formIndex);
    reason += validateC(theForm, formIndex);
    reason += validateEmptyMsg(theForm, formIndex);
       
    if (reason != "") {
        //alert("Some fields need correction:\n" + reason);
        return false;
    }
    else {
        $.post("send-invite.jsp", $("#friendForm" + formIndex).serialize(),
            function(data){
            //alert(data);
                if(data.response.status != 'OK') {
                    alert("There was an error processing form! Please inform the administrator to resolve the problem.");
                }
                else {
                    document.forms[2].reset();
                    document.getElementById("tab" + formIndex).style.display="none";
                    //$("#invite" + formIndex + " .regSuccessInfo").empty().append('You have successfully sent an invite to your friend.<br/> <a href="#register"  onclick="toggle_visibility_invite(' + formIndex + ');">Would you like to invite another friend to join you for this lecture</a>?<br/> Or if you like, you can also <a href="#register" onclick="toggle_visibility(' + formIndex + ');">register for another person</a>.');
                    $("#m1").css("display", "none");
                    $("#m2").css("display", "block");
                    document.getElementById("invite" + formIndex).style.display="block";
                    document.getElementById("inv" + formIndex).style.display="none";
                }
            },
            "json"
        );
        return false;
    }
}

function validateEmptyMsg(theForm, formIndex) {
    var formName = theForm.getAttribute('id');
    var fld = $("#" + formName + "_message").get(0);
    var error = "";
 
    if (fld.value.length == 0) {
        fld.style.border = "1px solid red";
        document.getElementById(formName + "_imsg").innerHTML="Please enter atleast one line message";
        document.getElementById(formName + "_imsg").style.color="red";
        error = "The message field has not been filled.\n";
    }
    else {
        fld.style.border = "1px solid #94C1D7";
        document.getElementById(formName + "_imsg").style.display="none";
    }
    return error;  
}

//---------------- Subscribe to mailinglists


//JavaScript Document

function subscribe(theForm) {
    var reason = "";
    var form = $(theForm);
    reason += validateSubscrEmail(form);
    reason += validateSubscrCEmail(form);
 
    if (reason != "") {
        //alert("Some fields need correction:\n" + reason);
        return false;
    }
    else {
        
        $.post("/form.do", form.serialize(),
            function(data) {
                if(data.response.status != 'OK') {
                    alert("There was an error processing form! Please inform the administrator to resolve the problem.");
                }
                else {
                    form.get(0).reset();
                    var parent = form.parents("div.subscrSection").empty();
                    parent.append("<h2>Inner Space Newsletters</h2>");
                    var str = "<div class='fLeft' style='margin: 5px 10px'><div style='padding-top:3px;'><img src='images/checked.gif' alt=''/></div></div>" +
                            "<div class='notification_ok' style='height:100px; text-align:left;'>You have successfully subscribed to our mailing list.</div>";
                    parent.append(str);
                }
            },
            "json"
        );

        return false;  
    }
}

function trim(s)
{
  return s.replace(/^\s+|\s+$/, '');
}

function validateSubscrEmail(form) {
    var error="";
    var _val = $("input[name='email']", form).val();
    var tfld = trim(_val);
    var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
    var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
   
    if (tfld == "") {
        $("input[name='email']", form).CSS("border", "1px solid red");
        $(".sub_em", form).text("Please enter email");
        $(".sub_em", form).css("color", "red");
        error = "You didn't enter an email address.\n";
    } else if (!emailFilter.test(tfld)) {     
        $(".sub_em", form).text("Please enter valid email");
        $("input[name='email']", form).css("border", "1px solid red");
        $(".sub_em", form).css("color", "red");
        error = "Please enter a valid email address.\n";
    } else if (tfld.match(illegalChars)) {
        $("input[name='email']", form).css("border", "1px solid red");
        $(".sub_em", form).text("The email address contains illegal characters");
        $(".sub_em", form).css("color", "red");
        error = "The email address contains illegal characters.\n";
    } else {         
        $("input[name='email']", form).css("border", "1px solid green");
        $(".sub_em", form).css("display", "none");
    }
    return error;
}
function validateSubscrCEmail(form) {
    var error="";
    var f1 = $("input[name='agnSUBSCRIBE1']", form);
    var f2 = $("input[name='agnSUBSCRIBE2']", form);
    var f3 = $("input[name='agnSUBSCRIBE3']", form);
    
    if (!f1.is(":checked") && !f2.is(":checked") && !f3.is(":checked")) {
        f1.css("border", "1px solid red");
        f2.css("border", "1px solid red");
        f3.css("border", "1px solid red");
        $(".sub_chk", form).text("Please choose at least one type of subscription");
        $(".sub_chk", form).css("color", "red");
        error = "You didn't enter an email address.\n";
    }
    else {              
        f1.css("border", "1px solid green");
        f2.css("border", "1px solid green");
        f3.css("border", "1px solid green");
        $(".sub_chk", form).css("display", "none");
    }
    
    return error;
}


//--------------- Toggles the copyright
function callPhoto_show(){
    document.getElementById("panel2").style.display="block";
    document.getElementById("toggle2").style.display="none";
}
function callPhoto_hide(){
    document.getElementById("panel2").style.display="none";
    document.getElementById("toggle2").style.display="block";
}

$(document).ready(function() {
    var elem = document.getElementsByTagName('input');
    for(var i=0;i<elem.length;i++) {
        if(elem[i].type == "checkbox") {
            elem[i].onclick = function() {
                if(this.checked) {
                    try {
                        eval(this.getAttribute('onCheck'));
                    }
                    catch(e) {
                        //alert("An error occurred when attempting\nto utilize the onCheck event ...")
                    }
                }
                else if(!this.checked) {
                    try {
                        eval(this.getAttribute('onUnCheck'));
                    }
                    catch(e) {
                        ///alert("An error occurred when attempting\nto utilize the onUnCheck event ...")
                    }
                }
            };
        }
    }
});
