/* Common v16 form validator  */
/* $        Revision: 0.1 $        */
jQuery().ready(function() {
    var errStatus=false;
    var focusObj=new Object();
    var isValid=true;
    var errMessage='<p class="ibm-ind-error ibm-error"><strong>If you do not want to provide us with the required information, please use the back button on your browser to return to the previous page.</strong></p><div class="ibm-rule ibm-error"><hr /></div>';
    var errImage='<img src="//www.ibm.com/i/v16/icons/error.gif" width="16" height="16" alt="" />';
    oErrImage = new Image();
    oErrImage.src = '//www.ibm.com/i/v16/icons/error.gif'; //preload image
	
    function displayErr(oReq) {
        oReq.parent().addClass('ibm-error');
        oReq.parent().next().append(errImage);
        if (focusObj==null){focusObj=oReq.parent().next().children('input,select,textarea')[0];}
        isValid=false;
    }
	
    function verifyFormat(oReq,reqFormat) {
        var reValidation;
        if (reqFormat=="Email"){
            reValidation=/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.(([0-9]{1,3})|([a-zA-Z]{2,3})|(aero|coop|info|museum|name))$/;
        } else if (reqFormat=="Phone") {
            reValidation=/[0-9\(\)-]+/;
        }
        if (!reValidation.test(oReq.parent().next().children('input,select,textarea').val())) {
            displayErr(oReq);
        } else {
            oReq.parent().removeClass('ibm-error');
        }
    }
	
    jQuery(".ibm-column-form,.ibm-row-form").submit(function(){
        jQuery('img[src$="error.gif"]').remove();
        focusObj=null;
        jQuery(".ibm-required").each(function(){
            var checkObj=jQuery(this).parent().next().children('input,select,textarea');
            if(checkObj.attr("type")=="checkbox"||checkObj.attr("type")=="radio"){
                if(jQuery("input[id^='"+checkObj.attr("name")+"']:checked").length==0){
                    displayErr(jQuery(this));
                } else {
                    jQuery(this).parent().removeClass('ibm-error');
                }
            } else {
                if(checkObj.val()==""){
                    displayErr(jQuery(this));
                } else if(checkObj.attr("name")=="Email") {
                    verifyFormat(jQuery(this),"Email");
                } else if(checkObj.attr("name")=="Telephone"||checkObj.attr("name")=="Fax"||checkObj.attr("name")=="Phone") {
                    verifyFormat(jQuery(this),"Phone");
                } else {
                    jQuery(this).parent().removeClass('ibm-error');
                }
            }
        });
		
        if (focusObj!=null){
			focusObj.focus();
		}
		
        if (isValid) {
            jQuery("h3,label,legend").removeClass('ibm-error');
            jQuery('p,div').remove('.ibm-error');
            return true;
        } else {
            if (errStatus==false) {
                jQuery(".ibm-column-form,.ibm-row-form").prepend(errMessage);
                errStatus = true;
            }
            isValid=true;  
            return false;
        }
    });
});
