//Author: James M.

var _username_check = false;
var _password_check = false;
var _email_check = false;
var _subject_for_submission = false;
var _name = true;
var _refer_to_friend = false;

 
 
//function for checking international phone numbers
function trim(str){
    str = str + " ";
    return $.trim(str);
}


function checkPassword(password)
{	  
    var re = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])\w{1,}$/;
    var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?";
    if(password == ""){
	
    }else if(password != ""){
	
	
        for (var i = 0; i < password.length; i++) {
            if (iChars.indexOf(password.charAt(i)) != -1) {
                alert ("Your Password has special characters. \nThese are not allowed.\n Please remove them and try again.");
                document.registration.password.value="";
                document.registration.password.focus();
                return false;
            }
        }
	 
        if(!re.test(password)) {
            alert("Password must contain at least one capital letter and one number!");
            document.registration.password.value="";
            document.registration.password.focus();
        }else if(password.length < 7){
		
            alert("Password must be of 7 character or more!");
            document.registration.password.value="";
            document.registration.password.focus();
        }
        }
}
  
//END OF CHECKING CONFIRM PASSWORD
//CHECK WESITE
function checkwebsite(website){

    var objRegExp1=/^(http|ftp|https)\:\/\/\w+([\.\-]\w+)*\.\w{2,4}(\:\d+)*([\/\.\-\?\&\%\#]\w+)*\/?$/i;
    //var objRegExp2=/^\w+([\.\-]\w+)*\.\w{2,4}(\:\d+)*([\/\.\-\?\&\%\#]\w+)*\/?$/i;
	
 		 
    var re = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])\w{1,}$/;
 
    if(website == ""){
	
    }else if(website != ""){

        if(objRegExp1.test(website) == false){
		
            alert("Please enter your valid web address !");
            document.registration.website.value = "";
            document.registration.website.focus();
            return false;
        }
    }
} 
//phone validation

// Declaring required variables
var digits = "0123456789";
// non-digit characters which are allowed in phone numbers
var phoneNumberDelimiters = "()- ";
// characters which are allowed in international phone numbers
// (a leading + is OK)
var validWorldPhoneChars = phoneNumberDelimiters + "+";
// Minimum no of digits in an international phone no.
var minDigitsInIPhoneNumber = 10;

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++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function checkInternationalPhone(strPhone){
    var bracket=3
    strPhone=trim(strPhone)
    if(strPhone.indexOf("+")>1) return false
    if(strPhone.indexOf("-")!=-1)bracket=bracket+1
    if(strPhone.indexOf("(")!=-1 && strPhone.indexOf("(")>bracket)return false
    var brchr=strPhone.indexOf("(")
    if(strPhone.indexOf("(")!=-1 && strPhone.charAt(brchr+2)!=")")return false
    if(strPhone.indexOf("(")==-1 && strPhone.indexOf(")")!=-1)return false
    s=stripCharsInBag(strPhone,validWorldPhoneChars);
    return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}




//phone vaidation
function phonevalidation(phoneNumber){

    phoneNumber = trim(phoneNumber);
    if(phoneNumber == ""){
	
    }else if(checkInternationalPhone(phoneNumber)==false){
        alert("Please enter valid format accept international phone numbers.");
        document.registration.phoneNumber.value = "";
        document.registration.phoneNumber.focus();
        return false;
    }
}

function checkAgreement() {
    if (document.getElementById('agreement').checked == true) {
        showHideStatus("agreement",true);
    }
}



function validate_referred_friends(){
     if( $(".refer_to_friends").length > 0){ //validate registration form

                var first_name, last_name , email_address;
                var fn_list = "", ln_list = "" , e_list = "";
                var fn, ln, el;

                 for(var i = 0; i < 5; i ++ ){

                   fn = $("input[name='first_name[]']").eq(i);
                   ln = $("input[name='last_name[]']").eq(i);
                   el = $("input[name='email_address[]']").eq(i);

                   first_name = fn.val();
                   last_name = ln.val();
                   email_address = el.val();

                   el.parent().attr('class','type-input');fn.parent().attr('class','type-input');ln.parent().attr('class','type-input');

                    if(first_name == "" && last_name == "" && email_address == ""){
                       //do nothing
                    }else if( validateEmail(email_address) && validateName(last_name) && validateName(first_name) ) {
                        fn_list += "," + first_name ;
                        ln_list += "," + last_name;
                        e_list  += "," +  email_address ;
                    }else{
                          if( !validateEmail(email_address)  ){
                              error += "Invalid email address in row  " + (i + 1) + "\n" ;
                              el.parent().attr('class','type-input error');
                          }

                          if( !validateName(first_name)  ){
                              error += "Invalid first name in row  " + (i + 1) + "\n" ;
                              fn.parent().attr('class','type-input error');
                          }
                          if( !validateName(last_name)  ){
                              error += "Invalid first name in row  " + (i + 1) + "\n" ;
                              ln.parent().attr('class','type-input error');
                          }

                    }

                 }//for

                       $("#friends_first_name").val(fn_list);
                       $("#friends_last_name").val(ln_list);
                       $("#friends_email").val(e_list);
            }//if

          var error = "";
          if( error  != ""){
              alert("There is an error found at referred friends form, please correct to continue.");
              return false;
           }else{
              return true;
              document.registration.updte.value = 1;
           }
}

//ON FORM SUBMIT CHECK VALIDATION
function checkme(){ 
    _subject_for_submission = true;

    //validateEmail(email_address)

    if( _username_check != true) checkUsername();
    if(_email_check != true) checkEmail();
    if(_password_check != true) checkPassword();


      if (document.getElementById('agreement').checked == false) {
        $("#bad-agreement em").text("Please accept the terms of agreement.");
        showHideStatus("agreement",false);
        return false;
      }

   
      validate_referred_friends();

  if( _username_check == true && _password_check == true && _email_check == true && _name == true ){
    return true;
  }else{ 
    return false;
  }

  
     

}





function hideTarget(target){ 
    $(target).fadeOut();
}
function showHideStatus(name, isGood ){
    if (isGood == -1){
        $("#bad-" + name).hide();
        $("#good-" + name).hide();
    }else if( isGood ){
        $("#bad-" + name).hide();
        $("#good-" + name).fadeIn();
        setTimeout("hideTarget('#good-"+name+"');",1500);
    //setTimeout("")
    }else{
        $("#bad-" + name).fadeIn();
        //setTimeout("hideTarget('#bad-"+name+"');",1500);
        $("#good-" + name).hide();
    }
}


function checkEmail(){
    var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
    var address  = trim(document.registration.email.value);
    _email_check =  (reg.test(address));
       

    if(_email_check){ //if no error validate for duplicates
        _email_check  = false;
        

        var url = "action.php?q=" + address + "&module=checkemail&sid=" + Math.random();
        $("#loading-email").show();

        $.get(url,function(data){
            $("#loading-email").hide();
            $("#bad-email em").text("Email is taken!");
            $("#good-email em").text("Email is available!");

         
            //only report on fail
            if( data  != ""){
                showHideStatus("email",false);
            }else{
                _email_check  = true; //good
                showHideStatus("email",-1);
            }

            
        });
    } else{
        $("#bad-email em").text("Invalid Email Format");
        showHideStatus("email", false);
    }
    
}


function checkPasswordFormat(target){
    var password = $("#"+target).val();
                  
    if(password.length == 0) return true;

    var re = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])\w{1,}$/;
    var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?";

    for (var i = 0; i < password.length; i++) {
        if (iChars.indexOf(password.charAt(i)) != -1) {
            $("#bad-"+target+" em").text("^*&!#_- not allowed in password");
            return false;
        }
    }

    if(!re.test(password)) {
        $("#bad-"+target+" em").text("Must contain at least 1 capital, 1 lowercase, and a number");
        return false;
    }else if(password.length < 7){
        $("#bad-"+target+" em").text("Password must be 7 characters or more!");
        return false;
    }


    return true;
}


function checkPassword(){
    //reset
    showHideStatus("password", -1);_password_check = -1;

    var p1 = $("#password").val();
    var p2 = $("#confirm-password").val();

   

    if( !checkPasswordFormat("password") &&  p1 != ""){ 
       _password_check  = false;
       showHideStatus("password", 0);
    }else if(p1 == ""){
          $("#bad-password em").text("Password is empty");
          showHideStatus("password", 0);
          _password_check  = false;
    }
    else if( p2 == "") { //skip if confirm is still empty           
        $("#bad-confirm-password em").text("Confirm Password is empty!");
        showHideStatus("confirm-password", 0);
         _password_check  = false; 
    }else if(  p1 != p2  ){
       
        $("#bad-confirm-password em").text("Password didn't match!");
        showHideStatus("confirm-password", 0);
        _password_check  = false;
    }else{ 
        _password_check = true;
    }

 
    
}

function checkCPassword(){
    //reset
    showHideStatus("confirm-password", -1); //_password_check = -1;
    var p1 = $("#password").val();
    var p2 = $("#confirm-password").val();

    if( !checkPasswordFormat("confirm-password") )  _password_check  = false;
    else if(  p1 != p2  ){
        $("#bad-confirm-password em").text("Password didn't match!");
        _password_check  = false;
        showHideStatus("confirm-password", _password_check);
    }else{
        showHideStatus("password", -1);
        _password_check = true;
    }
         
 
    
}



function checkName(){
    var name = document.registration.name;
    if(name.value.length > 50){
        $("#bad-name em").text("Name is too long");
        showHideStatus("name",false);
        name.focus();
    }else{
        showHideStatus("name",-1);
        _name = true;
    }
    
}

function checkUsername(){
    var username = document.registration.username;
    var userNameExp = /^[0-9a-zA-Z\_\.]+$/;

    if( (username.value+"").toLowerCase() == "admin" ){
        $("#bad-username em").text("Invalid username");
        showHideStatus("username",false);
        username.focus();
        
    }else if( trim(username.value) == "" || !username.value.match(userNameExp) ){
        $("#bad-username em").text("Please enter a valid username");
        showHideStatus("username",false);
        username.focus();
        
    }else if( username.value.length > 16  ){
        $("#bad-username em").text("Username is too long");
        showHideStatus("username",false);
        username.focus();
        
    }else{
        var url = "action.php?q=" + username.value + "&module=checkuser&sid=" + Math.random();
        $("#loading-username").show();

        _user_check  = false;
        
        $.get(url,function(data){
            $("#loading-username").hide();
            $("#bad-username em").text("Username is taken!");
            $("#good-username em").text("Username is available!");
            _username_check  = ( data != "" ) ? false : true;
            showHideStatus("username",_username_check);
            
        });
    }

         
}

function closeLearnMore(){
        $("#popup-reg-content-box .register-content").hide();
        $("#popup-reg-content-box").fadeOut();
        $("#popup-overlay").hide();
}

function openLearnMore(){
        $("#text-content").show();
        $("#watchvid").hide();
        
        $("#popup-reg-content-box").show();
        $("#popup-overlay").show();
        $("#popup-reg-content-box .register-content").hide().fadeIn();

        $("#popup-reg-content-box .close-btn").live("click",closeLearnMore);
        $("#popup-overlay").live("click",closeLearnMore);
}


function open_video(){
  $("#watchvid embed").hide();
  $("#watchvid a").hide();
  $("#text-content").hide();
  $("#watchvid").slideDown(function(){
     $("#watchvid embed").show();
     $("#watchvid a").show();
  });
}
function close_video(){
  $("#watchvid embed").hide();
  $("#watchvid a").hide();
  $("#watchvid").slideUp(function(){
     $("#text-content").show();
  });
}


$(function(){
  $(".learn-more").click(openLearnMore); 
});
