var minYear=1900;
var maxYear=2100;
var loginAvailable = true;
var emailAvailable = true;

function isInteger(s){
    var i;
    for (i = 0; i < s.length; i++){
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
    var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
    // February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
    for (var i = 1; i <= n; i++) {
        this[i] = 31
        if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
        if (i==2) {this[i] = 29}
   }
   return this
}

function checkDate(strDay, strMonth, strYear, errorObject){
    if(strDay == "" && strMonth == "" && strYear == "") {
        errorObject.hide()
        errorObject.html("")
        return true        
    }

    strYr=strYear
    if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
    if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
    for (var i = 1; i <= 3; i++) {
        if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
    }
    month=parseInt(strMonth)
    day=parseInt(strDay)
    year=parseInt(strYr)
    if (strMonth.length<1 || month<1 || month>12){
        errorObject.show()
        errorObject.html("Please enter a valid date")
        return false
    }
    if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInFebruary[month]){
        errorObject.show()
        errorObject.html("Please enter a valid date")
        return false
    }
    if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
        errorObject.show()
        errorObject.html("Please enter a valid date")
        return false
    }
    errorObject.hide()
    errorObject.html("")
    return true
}

function emailCheck(str) {
    if(str=="") { $('#emailError').show(); return false;}
    var at="@";
    var dot=".";
    var lat=str.indexOf(at);
    var lstr=str.length;
    var ldot=str.indexOf(dot);
    $('#emailError').html("Invalid email id");
    if (str.indexOf(at)==-1) { $('#emailError').show(); return false;}
    if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr) { $('#emailError').show(); return false;}
    if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr) { $('#emailError').show(); return false;}
    if (str.indexOf(at,(lat+1))!=-1) { $('#emailError').show(); return false;}
    if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot) { $('#emailError').show(); return false;}
    if (str.indexOf(dot,(lat+2))==-1) { $('#emailError').show(); return false;}
    if (str.indexOf(" ")!=-1) { $('#emailError').show(); return false;}
    $('#emailError').hide();
    return true;
}

function validateMobileNo(y) {
    if(isNaN(y)||y.indexOf(" ")!=-1)
    {
        $('#mobileNoError').show();
        $('#mobileNoError').html("Please enter a numeric value");
        return false;
    }
    if (y.length != 10)
    {
        $('#mobileNoError').show();
        $('#mobileNoError').html("Please enter 10 digits of your mobile number");
        return false;
    }
    if (y.charAt(0)!="9")
    {
        $('#mobileNoError').show();
        $('#mobileNoError').html("Mobile number should starts with 9");
        return false;
    }
    $('#mobileNoError').hide();
    $('#mobileNoError').html("");
    return true;
}

function validatePassword(value) {
    if(value.length < 1) {
        $('#passwordError').show();
        $('#passwordError').html("Please provide a password")
        return false;
    }
    var myRegxp = /\W/g;
    if(myRegxp.test(value)) {
        $('#passwordError').show();
        $('#passwordError').html("Password contains illegal charecters.")
        return false;
    }
    $('#passwordError').hide();
    $('#passwordError').html("")
    return true;
}

function validateName(value, errorObject, errorContext) {
    if(value=="") {
        errorObject.show();
        errorObject.html("Please provide " + errorContext);
        return false;
    }
    var illegalChars = /\W\s/g;
    if(illegalChars.test(value)) {
        errorObject.show();
        errorObject.html(errorContext + " contains illegal charecters");
        return false;
    }
    errorObject.hide();
    errorObject.html("");
    return true;
}

function validateText(value, errorObject, errorContext) {
    if(value=="") {
        errorObject.show();
        errorObject.html("Please provide " + errorContext);
        return false;
    }
/*               if(value.length < 4) {
        errorObject.show();
        errorObject.html(errorContext + " must be atleast 4 charecters");
        return false;
    }*/
    var illegalChars = /\W/g;
    if(illegalChars.test(value)) {
        errorObject.show();
        errorObject.html(errorContext + " contains illegal charecters");
        return false;
    }
    errorObject.hide();
    errorObject.html("");
    return true;
}

function showRegistrationForm() { $('#apDiv1').show(); }
function hideRegistrationForm() { $('#apDiv1').hide(); }
function hideRegistrationResult() { $('#registrationResult').hide(); }

function login() {
    var valid = true;
    valid = validateText($('#login_id').val(), $('#login_id_error'), "Login Id");
    valid = validateText($('#login_password').val(), $('#login_password_error'), "Password");
    if(valid) {
        $('#loginForm').submit();
    }
}

function register() {
    var valid = true;
    //Validate all the data
    if(!validateName($('#name').val(), $('#nameError'), "Name")) {
        valid = false;
    }
    if(!validateText($('#loginId').val(), $('#loginIdError'), "Login name")) {
        valid = false;
    }

    if(!emailCheck($('#emailId').val())) {
        valid = false;
    }
    
    if(!validatePassword($('#password').val())) {
        valid = false;
    }
    if($('#password').val() != $('#confirmPassword').val()) {
        valid = false;
    }
    if($('#birthDate').val() == "Date")
        $('#birthDate').val("");
    if($('#birthMonth').val() == "Month")
        $('#birthMonth').val("");
    if($('#birthYear').val() == "Year")
        $('#birthYear').val("");
    if($('#anniversaryDate').val() == "Date")
        $('#anniversaryDate').val("");
    if($('#anniversaryMonth').val() == "Month")
        $('#anniversaryMonth').val("");
    if($('#anniversaryYear').val() == "Year")
        $('#anniversaryYear').val("");

    if(!checkDate($('#birthDate').val(),$('#birthMonth').val(),$('#birthYear').val(), $('#birthDateError'))) {
        valid = false;
    }

    if(!checkDate($('#anniversaryDate').val(),$('#anniversaryMonth').val(),$('#anniversaryYear').val(), $('#aniversaryDateError'))) {
        valid = false;
    }

    if(!validateMobileNo($('#mobileNo').val())) {
        valid = false;
    }

    if(!emailAvailable || !loginAvailable) {
        valid = false;
    }

    if(valid) {
        dataString = "name=" + $('#name').val();
        dataString = dataString + "&emailId=" + $('#emailId').val();
        dataString = dataString + "&birthDate=" + $('#birthYear').val() + "-" + $('#birthMonth').val() + "-" + $('#birthDate').val();
        dataString = dataString + "&anniversaryDate=" + $('#anniversaryYear').val() + "-" + $('#anniversaryMonth').val() + "-" +  $('#anniversaryDate').val();
        dataString = dataString + "&loginId=" + $('#loginId').val();
        dataString = dataString + "&password=" + $('#password').val();
        dataString = dataString + "&mobileNo=" + $('#mobileNo').val();
        dataString = dataString + "&companyName=" + $('#companyName').val();
        dataString = dataString + "&designation=" + $('#designation').val();
        if($('#travel').attr('checked'))
            dataString = dataString + "&travel=1";
        else
            dataString = dataString + "&travel=0";
        
        if($('#music').attr('checked'))
            dataString = dataString + "&music=1";
        else
            dataString = dataString + "&music=0";

        if($('#movies').attr('checked'))
            dataString = dataString + "&movies=1";
        else
            dataString = dataString + "&movies=0";

        if($('#books').attr('checked'))
            dataString = dataString + "&books=1";
        else
            dataString = dataString + "&books=0";

        if($('#others').attr('checked'))
            dataString = dataString + "&others=1";
        else
            dataString = dataString + "&others=0";

        if($('#rssFeed').attr('checked'))
            dataString = dataString + "&rssFeed=1";
        else
            dataString = dataString + "&rssFeed=0";
        
        dataString = dataString + "&othersValue=" + $('#othersValue').val();
        
        $.ajax({
            type: "GET",
            url: "RegisterUser.php?" + dataString,
            success: function(result){
                if(result == "success") {
                    //Update the dispositiondisplay
                    $('#apDiv1').hide();
                    var pos = $("#registrationResult").position();
                    $('#registrationResult').css({ "position: absolute, left": (pos.left) + "px", "top":pos.top + "px" });
                    $('#registrationResult').show();
                }
            }
        });
    } else {
        if($('#birthDate').val() == "")
            $('#birthDate').val("Date");
        if($('#birthMonth').val() == "")
            $('#birthMonth').val("Month");
        if($('#birthYear').val() == "")
            $('#birthYear').val("Year");

        if($('#anniversaryDate').val() == "")
            $('#anniversaryDate').val("Date");
        if($('#anniversaryMonth').val() == "")
            $('#anniversaryMonth').val("Month");
        if($('#anniversaryYear').val() == "")
            $('#anniversaryYear').val("Year");
        alert("Please clear the mentioned errors.");
    }
}

$(document).ready(function() {
    //Functions for BirthDate
    $('#birthDate').bind('focus', function() {
        if($('#birthDate').val() == "Date")
            $('#birthDate').val("");
    });
    $('#birthDate').bind('blur', function() {
        if($('#birthDate').val() == "")
            $('#birthDate').val("Date");
    });
    //Functions for BirthMonth
    $('#birthMonth').bind('focus', function() {
        if($('#birthMonth').val() == "Month")
            $('#birthMonth').val("");
    });
    $('#birthMonth').bind('blur', function() {
        if($('#birthMonth').val() == "")
            $('#birthMonth').val("Month");
    });
    //Functions for BirthYear
    $('#birthYear').bind('focus', function() {
        if($('#birthYear').val() == "Year")
            $('#birthYear').val("");
    });
    $('#birthYear').bind('blur', function() {
        if($('#birthYear').val() == "")
            $('#birthYear').val("Year");
    });
    //Functions for anniversaryDate
    $('#anniversaryDate').bind('focus', function() {
        if($('#anniversaryDate').val() == "Date")
            $('#anniversaryDate').val("");
    });
    $('#anniversaryDate').bind('blur', function() {
        if($('#anniversaryDate').val() == "")
            $('#anniversaryDate').val("Date");
    });
    //Functions for anniversaryMonth
    $('#anniversaryMonth').bind('focus', function() {
        if($('#anniversaryMonth').val() == "Month")
            $('#anniversaryMonth').val("");
    });
    $('#anniversaryMonth').bind('blur', function() {
        if($('#anniversaryMonth').val() == "")
            $('#anniversaryMonth').val("Month");
    });
    //Functions for anniversaryYear
    $('#anniversaryYear').bind('focus', function() {
        if($('#anniversaryYear').val() == "Year")
            $('#anniversaryYear').val("");
    });
    $('#anniversaryYear').bind('blur', function() {
        if($('#anniversaryYear').val() == "")
            $('#anniversaryYear').val("Year");
    });
    //Code to validate Email Address on focus lost
    $('#emailId').bind('blur', function() {
        if($('#emailId').val() != "")
            if(emailCheck($('#emailId').val())) {
                checkEmailAvailable($('#emailId').val());
            }
    });
    //Code to validate mobile number on focus lost
    $('#mobileNo').bind('blur', function() {
        if($('#mobileNo').val() != "")
            validateMobileNo($('#mobileNo').val());

    });
    //Code to validate Login field
    $('#loginId').bind('blur', function() {
        if($('#loginId').val() != "")
            if(validateText($('#loginId').val(), $('#loginIdError'), "Login name")) {
                checkLoginAvailable($('#loginId').val());
            }
    });
    //Code to validate password field
    $('#name').bind('blur', function() {
        if($('#name').val() == "" ){
            $('#nameError').show();
            $('#nameError').html("Please provide Name");
            return;
        }
        $('#nameError').hide();
        $('#nameError').html("");
    });
    //Code to validate password field
    $('#password').bind('blur', function() {
        if($('#password').val() == "" ){
            $('#passwordError').show();
            $('#passwordError').html("Please enter a password for login.");
            return;
        }
        $('#passwordError').hide();
        $('#passwordError').html("");
    });
    //Code to validate confirm password field
    $('#confirmPassword').bind('blur', function() {
        if($('#confirmPassword').val() != "" && $('#password').val() != "") {
            if($('#password').val() != $('#confirmPassword').val()) {
                $('#confirmPasswordError').show();
                $('#confirmPasswordError').html("Both the passwords dose not match");
                return;
            }
        }
        $('#confirmPasswordError').hide();
        $('#confirmPasswordError').html("");
    });
});


function checkEmailAvailable(email) {
    $.ajax({
        type: "POST",
        url: "AjaxCheck.php",
        data: "email=" + email,
        success: function(result){
            if(result == "unavailable") {
                //Update the dispositiondisplay
                $("#emailError").html("Another user have already registered with this email address");
                $("#emailError").show();
                emailAvailable = false;
                return false;
            } else {
                emailAvailable = true;
                $("#emailError").hide();
                return true;
            }
        }
    })
}

function checkLoginAvailable(login) {
    $.ajax({
        type: "POST",
        url: "AjaxCheck.php",
        data: "loginId=" + login,
        success: function(result){
            if(result == "unavailable") {
                //Update the dispositiondisplay
                $("#loginIdError").html("Another user have already registered with this email address");
                $("#loginIdError").show();
                loginAvailable = false;
                return false;
            } else {
                loginAvailable = true;
                $("#loginIdError").hide();
                return true;
            }
        }
    })
}