var CSS_INPUT_ERR = 'fzd_input_editpage_err';
var CSS_INPUT_GENERAL = 'fzd_input_editpage';

function showWarningWithSetColor(obj, msg, errors) {
    errors.push(msg);
    obj.className = CSS_INPUT_ERR;
}
/**
 * 必須入力チェックを行う。
 *
 */
function isNotBlank(obj, msgParam, errors) {
	obj.className=CSS_INPUT_GENERAL;
	value = obj.value;
    if(isBlank(value)) {
    	var opTypeAlertStr = "";
    	switch(obj.type) {
    		case "radio":
    		case "checkbox":
    		case "select-one":
    		case "select-multiple":
				opTypeAlertStr = "は必ずお選びしてください。";
    			break;
    		case "file":
    		case "text":
    		case "textarea":
    		case "password":
    		default:
    			opTypeAlertStr = "は必ず入力してください。";
    			break;
    	}
        var str = msgParam + opTypeAlertStr;
        errors.push(str);
		obj.className = CSS_INPUT_ERR;
        return false;
    }	
    return true;
}

/**
 * 画像のアップロードのチェックを行う。
 *
 */
function isUploaded(objFile, objImg, msgParam, errors) {
	objFile.className=CSS_INPUT_GENERAL;
	var imgSrc = objImg.src;
    if(isBlank(imgSrc) || imgSrc == CONST_HTML_BLANK) {
        var str = msgParam + "はアップロードしてください。";
        errors.push(str);
        objFile.className = CSS_INPUT_ERR;
        return false;
    }
    return true;
}

/**
 * 数字チェックを行う。
 *
 */
function isSuuji(obj, msgParam, errors) {
	obj.className=CSS_INPUT_GENERAL;
	value = obj.value;
    if(isBlank(obj.value)) {
        return true;
    }
    if(!value.match(/^[0-9]+$/)) {
        var str = msgParam + "は数字のみで入力してください。";
        errors.push(str);
        obj.className = CSS_INPUT_ERR;
        return false;
    }
    return true;
}

/**
 * 数字チェックを行う。
 *
 */
function isMinusSuuji(obj, msgParam, errors) {
	obj.className=CSS_INPUT_GENERAL;
	value = obj.value;
    if(isBlank(value)) {
        return true;
    }
    if(!value.match(/^[0]|-[0-9]+$/)) {
        var str = msgParam + "はマイナス数字のみで入力してください。";
        errors.push(str);
        obj.className = CSS_INPUT_ERR;
        return false;
    }
    return true;
}

/**
 * 数字チェックを行う。
 *
 */
function isFloat(obj, msgParam, errors) {
	value = obj.value;
	obj.className=CSS_INPUT_GENERAL;
    if(isBlank(value)) {
        return true;
    }
    if(!value.match(/^[+|-]?\d*\.?\d*$/)) {
        var str = msgParam + "は浮動数字のみで入力してください。";
        errors.push(str);
        obj.className = CSS_INPUT_ERR;
        return false;
    }
    return true;
}

/**
 * 半角英数字チェックを行う。
 *
 */
function isHankaku(obj, msgParam, errors) {
	value = obj.value;
	obj.className=CSS_INPUT_GENERAL;
    if(isBlank(value)) {
        return true;
    }
    if(!value.match(/^[0-9a-zA-Z]+$/)) {
        var str = msgParam + "は半角英数字で入力してください。";
        errors.push(str);
        obj.className = CSS_INPUT_ERR;
        return false;
    }
    return true;
}

/**
 * 半角チェックを行う。
 *
 */
function isHan(obj, msgParam, errors) {
	value = obj.value;
	obj.className=CSS_INPUT_GENERAL;
    if(isBlank(value)) {
        return true;
    }
    if(!value.match(/^[0-9a-zA-Z\-\/\*\_\.]+$/)) {
        var str = msgParam + "は半角で入力してください。";
        errors.push(str);
        obj.className = CSS_INPUT_ERR;
        return false;
    }
    return true;
}

/**
 * サイズチェックを行う。
 *
 */
function isAllowedLength(obj, len, msgParam, errors) {
	value = obj.value;
	obj.className=CSS_INPUT_GENERAL;
    if(isBlank(value)) {
        return true;
    }
    if(value.length > len) {
        var str = msgParam + "は規定のバイト数「"+len+"」を超えています。";
        errors.push(str);
        obj.className = CSS_INPUT_ERR;
        return false;
    }
    return true;
}

/**
 * 文字列を既に存在チェックする。
 *
 */
function isExist(msgParam, errors) {
    var str = msgParam + "が既に存在しています。";
    errors.push(str);
    return false;
}

/**
 * 文字列の大小比較を行う。（From-Toチェック）
 *
 */
function compareString(fromObj, toObj, msgParam1, msgParam2,  errors) {
	fromObj.className=CSS_INPUT_GENERAL;
	toObj.className=CSS_INPUT_GENERAL;
	fromValue = fromObj.value;
	toValue = toObj.value;
    if(isBlank(fromValue) || isBlank(toValue)) {
        return true;
    }
    if(fromValue > toValue) {
        var str = msgParam1 + " ≦ "+ msgParam2+"　で入力してください。";
        errors.push(str);
        fromObj.className=CSS_INPUT_ERR;
    	toObj.className=CSS_INPUT_ERR;
        return false;
    }
    return true;
}

/**
 * 文字列の大小比較を行う。（From-Toチェック）
 *
 */
function equals(fromObj, toObj, msgParam1, msgParam2,  errors) {
	fromObj.className=CSS_INPUT_GENERAL;
	toObj.className=CSS_INPUT_GENERAL;
	fromValue = fromObj.value;
	toValue = toObj.value;
    if(isBlank(fromValue) || isBlank(toValue)) {
        return true;
    }
    if(fromValue != toValue) {
        var str = msgParam1 + " と "+ msgParam2+"が一致してください。";
        errors.push(str);
        fromObj.className=CSS_INPUT_ERR;
    	toObj.className=CSS_INPUT_ERR;
        return false;
    }
    return true;
}

/**
 * メールをチェックを行う。
 *
 */
function isMail(obj, msgParam, errors) {
	value = obj.value;
	obj.className=CSS_INPUT_GENERAL;
    if(isBlank(value)) {
        return true;
    }
    if(!value.match(/^[a-zA-Z0-9_\.,-]+@([a-zA-Z0-9_\.,-]+\.[a-zA-Z0-9]+$)/)) {
        var str = msgParam + "は誤りがあります。";
        errors.push(str);
        obj.className = CSS_INPUT_ERR;
        return false;
    }
    return true;
}

/**
 * 日付チェックを行う。フォマート（YYYY/MM/DD）
 *
 */
function isDate(obj, msgParam, errors) {
	value = obj.value;
	obj.className=CSS_INPUT_GENERAL;
    if(isBlank(value)) {
        return true;
    }
    if(!value.match(/^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$/)) {
        var str = msgParam + "の入力はyyyy-mm-dd形式で行ってください。";
        errors.push(str);
        obj.className = CSS_INPUT_ERR;
        return false;
    }
    return true;
}

/**
 * 郵便番号チェックを行う。
 *
 */
function isZipCode(obj, msgParam, errors) {
	value = obj.value;
	obj.className=CSS_INPUT_GENERAL;
    if(isBlank(value)) {
        return true;
    }
    if(!value.match(/^\d{3}-\d{4}$|^\d{3}-\d{2}$|^\d{3}$/)) {
        var str = msgParam + "は妥当でありません。";
        errors.push(str);
        obj.className = CSS_INPUT_ERR;
        return false;
    }
    return true;
}

/**
 * 必須入力を判断する。
 *
 */
function isBlank(value) {
    if(value == null || value.length == 0) {
        return true;
    }
    return false;
}

/**
 * 電話番号をチェックする。
 *
 */
function isTelCode(obj, msgParam, errors) {
	value = obj.value;
	obj.className=CSS_INPUT_GENERAL;
    if(isBlank(value)) {
        return true;
    }
    var data1 = value.match(/^[0-9-]{6,9}$|^[0-9-]{12}$/);
    var data2 = value.match(/^\d{1,4}-\d{4}$|^\d{2,5}-\d{1,4}-\d{4}$/);
    var data3 = value.match(/^\d{0[789]0}-\d{4}-\d{4}$|^\d{11}$/);
    if(!data1 && !data2 && !data3) {
        var str = msgParam + "は妥当でありません。";
        errors.push(str);
        obj.className = CSS_INPUT_ERR;
        return false;
    }
    return true;
}

/**
 * FAX番号をチェックする。
 *
 */
function isFaxCode(obj, msgParam, errors) {
	value = obj.value;
	obj.className=CSS_INPUT_GENERAL;
    if(isBlank(value)) {
        return true;
    }
    
    return true;
}

/**
 * チェックボックスをチェック。
 *
 */
function isCheckOn(obj, errors) {
	obj.className=CSS_INPUT_GENERAL;
	checked = obj.checked;
    if(!checked) {
    	var str="申し訳ございませんが、登録するためには免責事項にご同意いただく必要があります。";
    	errors.push(str);
        //obj.className = CSS_INPUT_ERR;
        return false;
    }
    return true;
}

function isMultiCheckOn(obj,msgParam,errors) {
	var flag = true;
	for(var i = 0; i < obj.length; i++) {
		if (obj[i].checked) {
			flag = false;
			break;
		}
	}
	if (flag) {
		var str = msgParam + "は必ずいつ選択してください。";
    	errors.push(str);
        return false;
	}	
    return true;
}


function isURL(obj, msgParam, errors){
	value = obj.value;
	obj.className=CSS_INPUT_GENERAL;
    if(isBlank(str_url)) {
        return true;
    }
    str_url=str_url.toLowerCase();
    var strRegex = "((https|http)://)"
        + "(([0-9]{1,3}\.){3}[0-9]{1,3}" // IP形式的URL- 199.194.52.184
        + "|" // 允许IP和DOMAIN（域名）
        + "([0-9a-z_!~*'()-]+\.)*" // 域名- www.
        + "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\." // 二级域名
        + "[a-z]{2,6})" // first level domain- .com or .museum
        + "(:[0-9]{1,4})?" // 端口- :80
        + "((/?)|" // a slash isn't required if there is no file name
        + "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$";
        var re=new RegExp(strRegex);
        if (!re.test(str_url)){
            var str = msgParam + "は妥当でありません。";
	        errors.push(str);
	        obj.className = CSS_INPUT_ERR;
	        return false;
        }
        return true;
    }