
var requireids = new Array();
var confirmids = new Array();
var alerterror = true;

function clientCheck()
{

	var ErrorObj =
	{
		errorids:[null],
		errormessages:[null],
		errornames:[null]
	}
	
	ErrorObj.errorids = new Array();
	ErrorObj.errormessages = new Array();
	ErrorObj.errornames = new Array();

	ErrorObj = checkAllElement(ErrorObj);

	ErrorObj = checkAllRequireElement(ErrorObj,requireids);

	ErrorObj = checkReconfirm(ErrorObj,confirmids);
	
	
	emphasizeAllElement(ErrorObj.errorids);
  	  	
  	showerror(ErrorObj);
  	
  	return ErrorObj;

}


function emphasizeAllElement(array)
{
   
   for(var i = 0; i < array.length; i++)
	{
		var oElement = document.getElementById(array[i]);
		
		if(oElement != null)
		{
			oElement.style.backgroundColor="#FA8072";
		}
	}
}

function showerror(errObj)
{
	var errorids = errObj.errorids;
	var errormessages = errObj.errormessages;
	var errornames = errObj.errornames;
	var errorfield = document.getElementById("errorfield");
	
	
	
	if(!alerterror)
	{
		if(errorfield != null)
		{
			errorfield.innerHTML = "";
			for(var i = 0; i < errorids.length; i++)
			{
	    		var text = "[ID]: "+errorids[i]+",[NAME]: "+errornames[i]+", [MESSAGE]: "+errormessages[i]+"<br>";
				errorfield.innerHTML = errorfield.innerHTML + text;
			}
		}
	}
	else
	{
		if(errorids.length > 0)
		{
			alert(errormessages[0]);
			//alert("入力項目に誤りがあります。");
		}
	}
	

}

function serverErrorAlert(value)
{

	if(value.error)
  	{
  	    if(value.errorMessage != "")
  	    {
  			alert(value.errorMessage);
  			return true;
  		}
  	}
  	
  	return false;
}

function checkReconfirm(errObj, confirmids)
{
    var errorids = new Array();
	var errormessages = new Array();
	var errornames = new Array();
	var count = 0;

	if(confirmids != null)
	{

    	for(var i = 0; i < confirmids.length; i++)
    	{
    		var ids = confirmids[i];
    		var id1 = ids[0];
    		var id2 = ids[1];
    		
    		oElementId1 = document.getElementById(id1);
    		oElementId2 = document.getElementById(id2);
    		
    		if(oElementId1 != null && oElementId2 != null)
    		{
    			if(!isSameValue(id1,id2))
    			{
    				oElement = document.getElementById(id1);
   
    				errorids[count] = oElement.id;
					errormessages[count] = "確認用の項目が正しく入力されていません。";
					errornames[count] = oElement.name;
					count++;
				
					oElement = document.getElementById(id2);
				
					errorids[count] = oElement.id;
					errormessages[count] = "確認用の項目が正しく入力されていません。";
					errornames[count] = oElement.name;
					count++;
    			}
    		}
    	}
    
    }
    
    if(errorids.length > 0)
    {
		errObj.errorids = errObj.errorids.concat(errorids);
		errObj.errormessages = errObj.errormessages.concat(errormessages);
		errObj.errornames = errObj.errornames.concat(errornames);
	}

	return errObj;
}



function checkAllRequireElement(errObj, requireids)
{
    var errorids = new Array();
	var errormessages = new Array();
	var errornames = new Array();
	var count = 0;
	
	if(requireids != null)
	{
		for(var i = 0; i < requireids.length; i++)
		{
		
			var oElement = document.getElementById(requireids[i]);
			
			
			if(oElement != null)
			{
				if(oElement.value == null || oElement.value == "")
				{		
					errorids[count] = oElement.id;
					errormessages[count] = "必須項目が入力されていません。";
					errornames[count] = oElement.name;
					count++;
				}
			}
			
		}
	}
	
	if(errorids.length > 0)
    {
		errObj.errorids = errObj.errorids.concat(errorids);
		errObj.errormessages = errObj.errormessages.concat(errormessages);
		errObj.errornames = errObj.errornames.concat(errornames);
	}
	
	return errObj;

}


function checkAllElement(errObj)
{
	var oElements = document.getElementsByTagName("INPUT");
	var errorids = new Array();
	var errormessages = new Array();
	var errornames = new Array();
	var count = 0;

	

    var oSelect = document.getElementsByTagName("SELECT");
	for(var i = 0; i < oSelect.length; i++)
	{
		oSelect[i].style.backgroundColor="";
	}

	for(var i = 0; i < oElements.length; i++)
	{
	    var errorflag = false;
		var id = oElements[i].id;
		
		oElements[i].style.backgroundColor="";
		
		if(id != null && id != "")
	  	{
		  	errorflag = checkElement(id);
	  	}
	  	
		if(errorflag)
		{
			errorids[count] = id;
			errormessages[count] = "入力項目の形式が不正です。";
			errornames[count] = oElements[i].name;
			count++;
		}
	}

    if(errorids.length > 0)
    {
		errObj.errorids = errObj.errorids.concat(errorids);
		errObj.errormessages = errObj.errormessages.concat(errormessages);
		errObj.errornames = errObj.errornames.concat(errornames);
	}
	
	

	return errObj;
}


function checkElement(id)
{
  var oElement = document.getElementById(id);
  var error = false;
  
  if(oElement != null)
  {
  	  var className = oElement.className;
  	  var value = oElement.value;
  	  
  	  if(value != "")
  	  {
  		  switch (className)
  	  	  {
  	  	  	case "input_alpha_num" :
  	  		    if(!isAlphaNum(value))
  	  		 	{
  	  		 		error = true;
  	  		 	}
  	  			break;
  	  	  
  	  		case "input_alpha" :
  	  		    if(!isAlpha(value))
  	  		 	{
  	  		 		error = true;
  	  		 	}
  	  			break;
  	  		case "input_zip" :
  	  			if(!isZip(value))
  	  		    {
  	  		    	error = true;
  	  		    }
  	  		    break;
  	  		case "input_kana" :
  	  		
  	  		
  	  			break;
  	  		case "input_mail" :
  	  			if(!isMail(value))
  	  			{
  	  				error= true;
  	  			}
  	  			break;
  	  		case "input_int" :
  	  			if(!isInteger(value))
  	  			{
  	  				error = true;
  	  			}
  	  			break;
  	  		case "input_num" :
  	  		    if(!isIntegerComma(value))
  	  		    {
  	  		    	error = true;
  	  		    }
  	  		   
  	  	  }
  	   
  	   }
  }
  
  return error;
}



function addComma(number)
{
    var Numbers
    var ind;
    var leftPart;
    var rightPart;
    var resultStr;
    var tmpLen;
    var elem;
    var maxLen = 0;
    var addCnt = 0;

    elem = window.event.srcElement;;
    maxLen = elem.maxLength;

    Numbers = removeComma(number);

    ind = Numbers.indexOf(".");
    leftPart = (ind >= 0 ? Numbers.substring(0, ind) : Numbers);
    rightPart = (ind >= 0 ? Numbers.substring(ind + 1) : "");

    resultStr = "";
    tmpLen = leftPart.length;
    ind = tmpLen - 3;
    while (tmpLen > 0) {
        if (ind >= 0) {
            resultStr = leftPart.substring(ind, ind+3) + resultStr;
        } else {
            resultStr = leftPart.substring(0, 3 + ind) + resultStr;
        }

        ind -= 3;
        tmpLen -= 3;
        if (tmpLen > 0) {
            resultStr = "," + resultStr;
            addCnt++;
        }
    }

    if (rightPart != "") {
        resultStr = resultStr + "." + rightPart;
    }

    return resultStr;
}

function removeComma(number){

    var Numbers = "" + number;
    var i;
    var result = "";

    if (Numbers.indexOf(",") >= 0) {
        for (i = 0; i < Numbers.length; i++) {
            if (Numbers.charAt(i) != ",")
                result += Numbers.charAt(i);
        }
    }
    else
        result = Numbers;

    return result;
}



function removeHyphen(number){

    var Numbers = "" + number;
    var i;
    var result = "";

    if (Numbers.indexOf("-") >= 0) {
        for (i = 0; i < Numbers.length; i++) {
            if (Numbers.charAt(i) != "-")
                result += Numbers.charAt(i);
        }
    }
    else
        result = Numbers;

    return result;
}

function isIntegerComma(str) {
	if(str.match(/[^0-9,]/g))
	{
		return false;
	}
	else
	{
		return true;
	}
}

function isInteger(str) {
	if(str.match(/[^0-9]/g))
	{
		return false;
	}
	else
	{
		return true;
	}
}

function isAlpha_upper(str) {
	if(str.match(/[^A-Z]/g))
	{
		return false;
	}
	else
	{
		return true;
	}
}

function isAlphaNum(str) {
   
   if(str.match(/[^A-Za-z0-9!-~]/g))
   {
 	    return false;
   }
   else
   {
   		return true;
   }
}

function isAlpha(str) {
   
   if(str.match(/[^A-Za-z]/g))
   {
 	    return false;
   }
   else
   {
   		return true;
   }
}

function formatTime(str)
{
    
	if(str.length != 4)
	{
		return str;
	}
    
	return str.substring(0,2) + ":" + str.substring(2,4);
}


function formatZip(str) {
    var zip=str;

    if(str.match(/^(\d\d\d)(\d\d\d\d)$/)){
         zip= RegExp.$1 + "-" +RegExp.$2;
    }

    return zip;
}

function isZip(str){
    if(str.match(/^(\d\d\d)-(\d\d\d\d)$/)){
         return true;
    }
    return false;
}

function isMail(str){

	if(str.match(/[!#-9A-~]+@[a-z0-9]+\.+[a-z0-9]+/i)){
        return true;
    }
	
	return false;
}



function isSameValue(id, id2)
{
  var oElement1 = document.getElementById(id);
  var oElement2 = document.getElementById(id2);
  
  if(oElement1 != null && oElement2 != null)
  {
    var value1 = oElement1.value;
    var value2 = oElement2.value;
    
    if(value1 == value2)
    {
       return true;
    }
  }
  
  return false;

}

function connectPhoneNumber(id, id1, id2, id3)
{
   var oElement1 = document.getElementById(id);
   var oElement2 = document.getElementById(id1);
   var oElement3 = document.getElementById(id2);
   var oElement4 = document.getElementById(id3);
   
   if(oElement1 != null && oElement2 != null
   && oElement3 != null && oElement4 != null)
   {
   		oElement1.value = oElement2.value + "-" + oElement3.value + "-" + oElement4.value;
   }

}

function dividePhoneNumber(value)
{
	return value.split("-");
}


function connectYearMonthDay(id, id1, id2, id3)
{
   var oElement1 = document.getElementById(id);
   var oElement2 = document.getElementById(id1);
   var oElement3 = document.getElementById(id2);
   var oElement4 = document.getElementById(id3);
   
   if(oElement1 != null && oElement2 != null
   && oElement3 != null && oElement4 != null)
   {
   		oElement1.value = oElement2.value + "/" + oElement3.value + "/" + oElement4.value;
   }
}

function divideYearMonthDay(value)
{
	return value.split("/");
}


function removeEmptyRow(value, name)
{
	value = value.replace(/(^\s+)|(\s+$)/g, "");

	if(value == "")
	{
		setVisible(name);
	}
}


function setVisible(id)
{
	oElement = document.getElementById(id);
	if(oElement != null)
	{
		var display = oElement.style.display;
		if(display == "none")
		{
			oElement.style.display = "block";
		}
		else
		{
			oElement.style.display = "none";
		}
	}
}

var mode = 0;
function changeCursor() {
	
	if (mode == 0) {
  		document.body.style.cursor = 'wait';
  		mode = 1;
 	} else {
  		document.body.style.cursor = 'auto';
  		mode = 0;
 	}
 	
}



