﻿/**
* Utility functions to perfrom inline validation in a FancyBox (outside of asp.net Form)
* Built on jQuery.
**/
var invalidText = "This is Required.";
var validText = "OK";
var emailInvalidText = "Double check this.";
var zipcodeInvalidText = "Double check this."
function ValidateRequired(element) {
    //asp.net radio's & checkboxes are wrapped in spans with class inputs when CssClass is used
    var name = $j(element).children("input").attr("name");
    var isGroup = $j("[name='"+name+"']").length>1
    if (!isGroup) {
        if(element.get(0).tagName.toLower()!="select"){
    	    if (!ValidateRequiredTextboxes(element)) {
                SetError($j(element), invalidText);
                return false;
            } else {
                SetValid($j(element));
                return true;
            }
        }else{
        //dealing with a select box as @element
        if ($j("[name='" + name + "'] option:selected").length<1) {
            	SetError($j())
            }
        }
        
    } else {
        //should be radio or checkbox group
        
        if (name) {
            //check if any elements are checked
            if ($j("[name='" + name + "']:checked").length < 1 && $j("[name='" + name + "']").length>0) {
                SetError($j(element),invalidText,true)
                return true;
            } else {
                SetValid($j(element))
                return false;
            }
        }
    }
}

function ValidateRequiredTextboxes(element) {
    if (IsEmpty($j(element)))
    { return false }
    else { return true; }
}
function ValidateEmailAndRequired(element) {
    if (IsEmpty($j(element))) {
        SetError($j(element), invalidText);
        return false;
    } else {
        if (!EmailIsValid($j(element).val())) {
            SetError($j(element), emailInvalidText);
            return false;
        }
        else {
            SetValid($j(element));
            return true;
        }
    }
}

function ValidateEmail(element) {
    if (!IsEmpty($j(element))) {
        if (!EmailIsValid($j(element).val())) {
            SetError($j(element), emailInvalidText)
            return false;
        } else {
            return true;
        }
    }
}

function ValidateZipCode(element) {
    if (!IsEmpty($(element).val())) {

    }
}

function ValidateZipCodeAndRequired(element) {
    if (IsEmpty($j(element))) {
        SetError($j(element), invalidText);
        return false;
    } else {
        if (!ZipCodeIsValid($j(element).val())) {
            SetError($j(element), zipcodeInvalidText);
            return false;
        }
        else {
            SetValid($j(element));
            return true;
        }
    }
}

function ZipCodeIsValid(zipcode) {
    /*from http://www.breakingpar.com/bkp/home.nsf/0/87256B280015193F87256F6B005294C2
    *will validate xxxxx or xxxxx-xxxx,
    * use var reg /^\d{5}/;  for 5 digit only
    */
    var reg = /^\d{5}([\-]\d{4})?$/;
    return reg.test(zipcode)

}

function EmailIsValid(email) {
    var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
    return reg.test(email);
}
function SetValid(el,isGroup) {
    if(isGroup){
        el = $(el).parent("div");//have to traverse up one node to finde error label for groups
    }
    var type = $j(el).attr("type")
    if (type == "text" || type == "password") {
        //add style to textbox
        $j(el).removeClass("invalid_input");
    }
    $j(el).siblings(".ErrorLabel").html("");
    $j(el).siblings(".ErrorLabel").html(validText).attr("style", "background-color:green;");
    
    
}

function SetError(el, errorText,isGroup) {

    if (isGroup) {
        el = $j(el).parent("div"); //have to traverse up one node to finde error label for groups
    }
    $j(el).siblings(".ErrorLabel").html("");
    $j(el).siblings(".ErrorLabel").html(errorText).attr("style", "");
    var type = $j(el).attr("type")
    if (type == "text" || type == "password") {
        //add style to textbox
        $j(el).addClass("invalid_input");
    }
}

function IsEmpty(el) {
    if ($j(el).val)
        return $j(el).val().length < 1;
}

function clearFrom(formwrapper) {
    $j(formwrapper).find("input,textarea").each(function() {
        if ($j(this).attr("type") != "submit") {
            $j(this).val("");
        }
    }); //end function
} //end function

function SubmitForm(form) {
    alert("I dunno what to do yet!");
}
function jkAjaxFailed(result) {
    alert("ERROR: " + result.status + ' ' + result.statusText);
}


//function ValidateFullName() {
//    if (IsEmpty($j("#emailfriend_0_TextBox_fullName"))) {
//        SetError($j("#emailfriend_0_TextBox_fullName"));
//        return false;

//    } else {
//    SetValid($j("#emailfriend_0_TextBox_fullName"));
//    return true;
//    }
//}

//function ValidateEmail() {
//    if (IsEmpty($j("#emailfriend_0_TextBox_emailAddress"))) {
//        SetError($j("#emailfriend_0_TextBox_emailAddress"));
//        return false;
//    } else {
//        if (!EmailIsValid($j("#emailfriend_0_TextBox_emailAddress").val())) {
//            SetEmailError($j("#emailfriend_0_TextBox_emailAddress"))
//            return false;
//        }
//        else {
//            SetValid($j("#emailfriend_0_TextBox_emailAddress"));
//            return true;
//        }
//    }
//}

//function ValidateFriendsEmail() {
//    if (IsEmpty($j("#emailfriend_0_TextBox_friendsEmail"))) {
//        SetError($j("#emailfriend_0_TextBox_friendsEmail"));

//    } else {
//        if (!EmailIsValid($j("#emailfriend_0_TextBox_friendsEmail").val())) {
//            SetEmailError($j("#emailfriend_0_TextBox_friendsEmail"))
//        }
//        else {
//            SetValid($j("#emailfriend_0_TextBox_friendsEmail"));
//        }
//    }
//}


