
/**
 * @author jnksengto
 */

 function GetFactorialNumber(argBase,argMultiplier)
{
	if(0 == argMultiplier){
		rtrn = 1;
	}else{
		tmpResult = argBase;
		for(i=1;i<argMultiplier;i++){
			tmpResult = tmpResult * argBase;
		}
		rtrn = tmpResult;	
	}
	return rtrn;
}

function GetMultiplierOfFactorialNumber(argBase,argFactorialNumber)
{
	i = 0;
	tmpResult = argFactorialNumber;
	while(1 != tmpResult){
		i = i + 1;
		tmpResult = tmpResult/argBase;
	}
	return i;
}

function ExistsNoItemRow()
{
	var ret = false;
	if($("body").is(":has('#noItemRow')")){
		ret = true;
	}
	return ret;
}

function ExistsItemRow(argRowId)
{
	var rowId = ":has('#itemRow"+argRowId+"')";
	var rtrn = false;
	if($("body").is(rowId)){
		rtrn = true;
	}
	return rtrn;
}

function IsNumeric(argValue)
{
	rtrn = false;
	if(false == isNaN(argValue)){
		rtrn = true;
	}
	return rtrn;
}

//2のn乗により構成された総和から、要素である2のn乗を分解して取得
//$argSum：総和、$argMaxExp:構成要素の最大数の指数
function GetArrayOfPartsOfSumComposedOf2Factorial(argSum,argMaxExp)
{
	var dfrnc = parseInt(argSum);
	var exp = parseInt(argMaxExp);
	var tmpDfrnc = 0;
	var i = 0;
	var arrEle = Array();
	while(dfrnc >= 0 && exp > 0){
		tmpDfrnc = dfrnc - GetFactorialNumber(2,exp);
		if(tmpDfrnc >= 0){
		//ゼロ以上の場合
			dfrnc = dfrnc - GetFactorialNumber(2,exp);
			arrEle[i] = GetFactorialNumber(2,exp);
			i++;
		}	
		exp--;	
	}
	return arrEle;
}