/////////////////////////////////////////////////////////////////////////////
// \u6ce8\u610f\uff1a
// \u591a\u8a00\u8a9e\u74b0\u5883\u306e\u5b9f\u884c\u6642\u306b javascript \u30a8\u30e9\u30fc\u3092\u907f\u3051\u308b\u305f\u3081\u3001\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u30d3\u30eb\u30c9\u6642
// \u306b native2ascii \u3055\u308c\u307e\u3059\u3002\u30b3\u30e1\u30f3\u30c8\u4ee5\u5916\u306e\u5b9f\u884c\u6587\u3067\u306f\u30ed\u30b1\u30fc\u30eb\u4f9d\u5b58\u6587\u5b57\u3092\u4f7f\u7528\uff53
// \u3066\u306f\u3044\u3051\u307e\u305b\u3093\u3002
// $Id: orteus-common.js,v 1.14 2006/12/12 05:37:36 m-simizu Exp $

/////////////////////////////////////////////////////////////////////////////
var sdeDebugMode = false;

/////////////////////////////////////////////////////////////////////////////
// \u9001\u4fe1\u30b9\u30c6\u30fc\u30bf\u30b9
var orteusSubmitStatus = false;

// \u4e00\u6642\u7684\u306b check \u3092 OFF \u3059\u308b\u30d5\u30e9\u30b0\u3002\u3042\u308b\u30dc\u30bf\u30f3\u306e\u307f\u4e00\u6642\u7684\u306b\u30c1\u30a7\u30c3\u30af\u30aa\u30d5
// \u3057\u305f\u3044\u5834\u5408\u306b\u3001onClick \u3067\u3053\u308c\u3092 true \u306b\u3057\u3066\u304b\u3089 submit \u3059\u308b
var sdeDisableCheckSubmitStatus = false;

// \u4e00\u6642\u7684\u306b client side validation \u3092 OFF \u306b\u3059\u308b\u30d5\u30e9\u30b0\u3002
var sdeDisableClientValidationStatus = false;

/////////////////////////////////////////////////////////////////////////////
// \u4e8c\u91cd\u9001\u4fe1\u30c1\u30a7\u30c3\u30af
function sdeCheckDoubleSubmit() {
    var result = true;
	if (sdeDebugMode) {
		alert("sdeCheckDoubleSubmit : sdeDisableCheckSubmitStatus = " + sdeDisableCheckSubmitStatus);
	}

    if (sdeDisableCheckSubmitStatus == false) {
        if (orteusSubmitStatus) {
            result = false;
        } else {
            orteusSubmitStatus = true;
            result = true;
        }
    }
    sdeDisableCheckSubmitStatus = false;
    return result;
}

// \u4e92\u63db\u95a2\u6570
function orteusCheckDoubleSubmit() {
    return sdeCheckDoubleSubmit();
}

/////////////////////////////////////////////////////////////////////////////
// \u4e00\u5ea6\u3060\u3051\u4e8c\u91cd\u9001\u4fe1\u30c1\u30a7\u30c3\u30af\u3092\u7121\u52b9\u306b\u3059\u308b
function sdeDisableCheckSubmitOnce() {
    sdeDisableCheckSubmitStatus = true;
}

/////////////////////////////////////////////////////////////////////////////
// \u540d\u524d\u3092\u6307\u5b9a\u3057\u3066 Form \u3092 submit \u3059\u308b
// \u975e\u63a8\u5968\u306b\u3057\u305f\u3044
function orteusSubmitForm(formname, method) 
{
    var form = null;
    for (i=0; i < document.forms.length; i++) {
        if (document.forms[i].name == formname) {
            form = document.forms[i];
            break;
        }
    }
    if (form == null) {
        alert("Form name error : " + formname);
        return false;
    }

    var action = form.action;
    var params = "com.nec.jp.orteusActionMethod.orteusSubmitByLink=" + method;
    
    if (-1 == action.indexOf("?", 0)) {
        action = action + "?" + params;
    }
    else {
        action = action + "&" + params;
    }
    
    form.action = action;
    form.submit();
    
    return false;
}

/////////////////////////////////////////////////////////////////////////////
// form object, event \u540d\u3092\u6307\u5b9a\u3057\u3066 submit \u3059\u308b
function sdeSubmitFormWithEvent(form, method, target, checkDoubleSubmit, validation) 
{
    return sdeInternalSubmitForm(form, "com.nec.jp.orteusActionMethod.orteusSubmitByLink", method, target, checkDoubleSubmit, validation);
}

/////////////////////////////////////////////////////////////////////////////
// form object, button \u540d\u3092\u6e21\u3057\u3066 submit \u3059\u308b
function sdeStrutsSubmitFormViaButton(form, buttonName, target, checkDoubleSubmit, validation) {
    return sdeSubmitFormWithButton(form, buttonName, target, checkDoubleSubmit, validation);
}

// form object, button \u540d\u3092\u6e21\u3057\u3066 submit \u3059\u308b
function sdeSubmitFormWithButton(form, buttonName, target, checkDoubleSubmit, validation) {
    
    // \u30dc\u30bf\u30f3\u306e\u691c\u7d22
    var button = null;
    var candName = buttonName.toLowerCase();
    for(i=0;i<form.elements.length;i++){
        if(form.elements[i].id.toLowerCase() == candName || form.elements[i].name.toLowerCase() == candName){
            button = form.elements[i];
            break;
        }
    }
    if (button == null) {
        // error
		if (sdeDebugMode) {
			alert("sdeSubmitFormWithButton : button is not found : " + buttonName);
		}
        return false;
    }
    
    return sdeInternalSubmitForm(form, button.name, button.name, target, checkDoubleSubmit, validation);
}

/////////////////////////////////////////////////////////////////////////////
// \u5185\u90e8\u9001\u4fe1\u30e1\u30bd\u30c3\u30c9

function sdeInternalSubmitForm(form, eventKey, eventValue, target, checkDoubleSubmit, validation) 
{
    if (checkDoubleSubmit == false) {
        // \u4e8c\u91cd\u9001\u4fe1\u30c1\u30a7\u30c3\u30af\u3092\u3057\u306a\u3044\u3002form.onSubmit \u306b\u3088\u308a\u30c1\u30a7\u30c3\u30af\u3059\u308b
        sdeDisableCheckSubmitOnce();
		if (sdeDebugMode) {
			alert("sdeInternalSubmitForm : call sdeDisableCheckSubmitOnce");
		}
    }
    
    // client validation
    if (validation == false) {
        sdeDisableClientValidationOnce();
		if (sdeDebugMode) {
			alert("sdeInternalSubmitForm : call sdeDisableClientValidationOnce");
		}
    }

    // onsubmit \u3092\u547c\u3073\u51fa\u3059
    if (form.fireEvent("onsubmit") == false) {
		if (sdeDebugMode) {
			alert("sdeInternalSubmitForm : onsubmit return false.");
		}
        return false;
    }

    var orgAction = form.action;
    var action = orgAction;
    // method parameter
    action = addParameter(action, eventKey + "=" + eventValue);

    // server validation
    if (validation == false) {
        action = addParameter(action, "orteusSubmitValidation." + eventKey + "=false");
    }

    // target check
    var orgTarget = form.target;
    if (target != null) {
        form.target = target;
        // target \u304c\u6307\u5b9a\u3055\u308c\u305f\u3089\u3001keepRequestContextFlag \u3082 ON \u306b\u3059\u308b
        action = addParameter(action, "orteusLeftReqCtxt=true");
    }

    form.action = action;

	if (sdeDebugMode) {
		alert("sdeInternalSubmitForm : form.action = " + form.action);
	}

    form.submit();
    
	if (sdeDebugMode) {
		alert("sdeInternalSubmitForm : form is submitted.");
	}

    // \u5143\u306b\u623b\u3059
    form.action = orgAction;
    form.target = orgTarget;
    return true;
}

/////////////////////////////////////////////////////////////////////////////
// \u4e00\u5ea6\u3060\u3051 client side validation \u3092\u7121\u52b9\u306b\u3059\u308b
function sdeDisableClientValidationOnce() 
{
    sdeDisableClientValidationStatus = true;
}

/////////////////////////////////////////////////////////////////////////////
// client side validtion \u3092\u5b9f\u884c\u3059\u308b
function sdeDoClientValidation(form, func)
{
    if (func == null) {
		if (sdeDebugMode) {
			alert("sdeDoClientValidation : func is null");
		}
		return true;
	}

	if (sdeDebugMode) {
		alert("sdeDoClientValidation : sdeDisableClientValidationStatus = " + sdeDisableClientValidationStatus);
	}

    var result = true;
    if (sdeDisableClientValidationStatus == false) {
        result = func(form);
    }
    sdeDisableClientValidationStatus = false;
    return result;
}

/////////////////////////////////////////////////////////////////////////////
// \u30d1\u30e9\u30e1\u30fc\u30bf\u7d50\u5408
function addParameter(url, param)
{
    var result = url;
    if (-1 == result.indexOf("?", 0)) {
        result = result + "?" + param;
    }
    else {
        result = result + "&" + param;
    }
    return result;
}

/////////////////////////////////////////////////////////////////////////////
// decapitalize
// java.bean.Introspector \u3068\u540c\u3058\u4ed5\u69d8\u3067 decapitalize \u3059\u308b
function sdeBeanNameDecapitalize(name) {

    if (name == null || name.length == 0) {
        return name;
    }
    
    if (name.length > 1 && sdeIsUpperCase(name.charAt(1)) && sdeIsUpperCase(name.charAt(0))){
        return name;
    }

    var result = name.charAt(0).toLowerCase();
    result = result + name.substring(1, name.length);
    return result;
}

/////////////////////////////////////////////////////////////////////////////
// \u5c0f\u6587\u5b57\u5224\u5b9a
function sdeIsLowerCase(c) {
    
    if (c.length == 0) return false;
    
    var code = c.charCodeAt(0);
    if (0x61 <= code && code <= 0x7a) return true;
    
    return false;
}

// \u5927\u6587\u5b57\u5224\u5b9a
function sdeIsUpperCase(c) {
    
    if (c.length == 0) return false;
    
    var code = c.charCodeAt(0);
    if (0x41 <= code && code <= 0x5a) return true;
    
    return false;
}

