function postUrlFunc(url,params,func) {
    new Ajax.Request(
        url,
        {
            method: 'post',
            asynchronous: true,
            parameters: params,
            onLoading: function() {
                //$('indicator').style.display = 'block';
            },
            onLoaded: function() {
                //alert('loaded');
            },
            onInteractive: function() {
                //alert('interactive');
            },
            onComplete: function(request){
	            func(request)
	        },
            onSuccess: function() {
                //alert('success');
            },
            onFailure: function() {
                //alert('failure');
            },
            onException: function() {
                //alert('exception');
            }
        }
    );
}


function remotePostUrl(url,param){
    new Ajax.Request(url, {
        asynchronous: true,
        evalScripts: true,
		method: 'post',
        parameters: addSync(param)
    });
}
function postWithUrlUseOwnFunc(url,param, func){
    new Ajax.Request(url, {
        asynchronous: true,
        evalScripts: true,
		method: 'post',
        parameters: addSync(param),
        onComplete: function(request){
            func(request)
        }
    });
}


function remoteAccessUrl(url){
    new Ajax.Request(addSync(url), {
        asynchronous: true,
        evalScripts: true
    });
}

function replaceWithUrl(url, divid){
    new Ajax.Request(addSync(url), {
        asynchronous: true,
        evalScripts: true,
        onComplete: function(request){
            updatePageHtml(request, divid)
        }
    });
}

function replaceWithUrlUseOwnFunc(url, func){
    new Ajax.Request(addSync(url), {
        asynchronous: true,
        evalScripts: true,
        onComplete: function(request){
            func(request)
        }
    });
}

function addSync(url){
    var Stamp = new Date();
    return url + "&rsyc=" + encodeURI(Stamp.toString());
}

function updatePageHtml(request, divid, func){
    if (request.readyState == 4) {
        if (request.status == 200) {
            if (func) {
                func(request, divid);
            }
            else {
                $(divid).innerHTML = request.responseText;
            }
        }
        else {
            //alert("status is " + request.status);
        }
    }
    else {
        //error code here
    }
}


function updatePageHtmlDeleteDiv(request, divid){
    var deletetag_replace = function(request, divid){
        text = request.responseText;
        var reghead = RegExp("^ *<div[^>]*>");
        var regtail = RegExp(" *<\/div> *$");
        var text = text.gsub(reghead, '');
        text = text.gsub(regtail, '');
        $(divid).innerHTML = text;
    };
    updatePageHtml(request, divid, deletetag_replace);
}


function updatePageTableJson(request, divid){
    var json_table_replace = function(request, divid){
        var response = request.responseText;
        eval("list=" + response);
        if (list) {
            var data = list["data"];
            var key = list["keys"];
            var header = list["header"];
            var str = "<table border=1>";
            if (key && data) {
                if (header) {
                    for (var j = 0; j < key.length; j++) {
                        str += "<th>" + header[key[j]] + "</th>";
                    }
                }
                for (var i = 0; i < data.length; i++) {
                    str += "<tr>";
                    for (var j = 0; j < key.length; j++) {
                        str += "<td>" + data[i][key[j]] + "</td>";
                    }
                    str += "</tr>";
                }
            }
            str += "</table>";
            //alert(str);
            $(divid).innerHTML = str;
        }
    };
    updatePageHtml(request, divid, json_table_replace);
}

//loadingImg = new Image();
//loadingImg.src = "/images/loading.gif";
function loading(divid){
    $(divid).innerHTML = "<br>&nbsp;<font size=4 color=red>しばらくお待ちください</font><br><br>";
}

function fadingDiv(divid, seconds, str){
    if ($(divid).style.display == 'none') {
        $(divid).style.display = 'block';
    }
    if (!seconds) {
        seconds = 3;
    }
    if (str) {
        $(divid).innerHTML = str;
    }
    new Effect.Fade(divid, {
        duration: seconds
    });
}


function dumpjsobj(arr, level){
    var dumped_text = "";
    if (!level) 
        level = 0;
    
    //The padding given at the beginning of the line.
    var level_padding = "";
    for (var j = 0; j < level + 1; j++) 
        level_padding += "    ";
    
    if (typeof(arr) == 'object') { //Array/Hashes/Objects 
        for (var item in arr) {
            var value = arr[item];
            
            if (typeof(value) == 'object') { //If it is an array,
                dumped_text += level_padding + "" + item + "    \n";
                dumped_text += dumpjsobj(value, level + 1);
            }
            else {
                dumped_text += level_padding + "" + item + " => " + value + "\n";
            }
        }
    }
    else { //Stings/Chars/Numbers etc.
        dumped_text = "===>" + arr + "<===(" + typeof(arr) + ")";
    }
    return dumped_text;
}

function utilComplete(request, doit){
    if (doit) {
        return true;
    }
    else {
        return true;
    }
}

function utilLoading(request, doit){
    if (doit) {
        return true;
    }
    else {
        return true;
    }
}

function utilLoaded(request, doit){
    if (doit) {
        return true;
    }
    else {
        return true;
    }
}

function utilInteractive(request, doit){
    if (doit) {
        return true;
    }
    else {
        return true;
    }
}

function utilSuccess(request, doit){
    if (doit) {
        return true;
    }
    else {
        return true;
    }
}

function utilFailure(request, doit){
    if (doit) {
        return true;
    }
    else {
        return true;
    }
}

function utilCondition(){
    return true;
}


function isInt(x){
    var y = parseInt(x);
    if (isNaN(y)) 
        return false;
    return x == y && x.toString() == y.toString();
}


function escapeHTML5(value) {
    return value.replace(/\&/g, '&amp;').replace( /</g, '&lt;').replace(/>/g, '&gt;')
             .replace(/\"/g, '&quot;').replace(/\'/g, '&#39;');
}
  
function z_h_gaku(src) {
  return src.replace(/([Ａ-Ｚａ-ｚ０-９＿])/g,
    function ($0) {
      return String.fromCharCode($0.charCodeAt(0) - 65248);
    });
}

function h_z_gaku(src) {
  return src.replace(/(\w)/g,
    function ($0) {
      return String.fromCharCode($0.charCodeAt(0) + 65248);
    });
}