var thickness_ft = 1;
var height_ft = 1;
var width_ft = 1;
var box_size = 20;


function rational( s )
{
	if( !s ) return 0.;

	s = s.replace( "'", "" );
	s = s.replace( "\"", "" );
	
	var b = 0.;
	
	var a = s.split( " " );
	
	if( a.length == 0 ) return 0.;
	
	if( a.length == 2 )
	{
		b = parseFloat( a[0] );
		s = a[1];
	}
	

	var a = s.split( "/" );
	if( a.length == 2 )
		return b + parseFloat( a[0] ) / parseFloat( a[1] );
	else if( a.length == 1 ) return b + parseFloat( a[0] );
	
	return b;
}

function str2ft( s )
{
	var v = 1;
	var a = s.split(/['"]/);
	
	for( var i = a.length - 1; i >= 0; i-- )
		if( a[i] == "" ) a.splice( i, 1 ); //remove empty	
	
	if( a.length == 2 )
	{
		v = rational( a[0] ) + rational( a[1] ) / 12.;
	}
	else if( a.length == 1 )
	{
		if( s.length > 1 && s.charAt( s.length - 1 ) == "'" ) 
			v = rational( a[0] );
		else if( s.length > 1 && s.charAt( s.length - 1 ) == "\"" ) 
			v = rational( a[0] ) / 12.;
		else if( s.length > 2 && s.charAt( s.length - 2 ) == "c" && s.charAt( s.length - 1 ) == "m" ) 
			v = rational( a[0] ) / 2.54 / 12.;
		else if( s.length > 2 && s.charAt( s.length - 2 ) == "m" && s.charAt( s.length - 1 ) == "m" ) 
			v = rational( a[0] ) / 2.54 / 12. / 10.;
	}

	return v;
}


function ft2str( v )
{
	var res = "";	

	var f = parseInt( v );
	var i = ( v - f ) * 12.;
	
	if( i > 11 + 31./32. ) { f++; i = 0; }
	
	if( f > 0 ) res = f + "'";
	
	if( i > 0 ) 
	{
		if( res.length > 0 ) res += " ";
		
		var b = parseInt( i );
		var r = i - b;
		
		if( r < 1/32. ) r = 0;
		if( r > 31/32. ) { r = 0; b++; }
		
		
		if( b > 0 )
		{
			res += b;
		}
		
		
		if( r ) 
		{
			// maike it rational
			var base = new Array( 2, 4, 8, 16, 32 );
			for( var n = 0; n < base.length; n++ )
			{
				var b = parseInt( r * base[n]  + 0.5 );
				
				if( Math.abs( b / base[n] - r ) < 1. / 32. || i == base.length - 1)
				{
					if( res.length > 0 ) res += " ";
					res += b + "/" + base[n];
					break;
				}
			}
		}
		res += "\"";		
		
	}

	return res.toString();
}


function ft2str_cm( v )
{
	var cm = v * 12. * 2.54;
	
	if( cm < 1 ) return ft2str_mm( v );
	
	return parseFloat( cm.toFixed( 1 ) ) + " cm";
}

function ft2str_mm( v )
{
	var mm = v * 12. * 2.54 * 10;
	
	return mm.toFixed( 0 ) + " mm";
}

function ft2str_m( v )
{
	var mm = v * 12. * 2.54 / 100;
	
	return mm.toFixed( 2 ) + " m";
}


function calc()
{
	var ft = rational( document.getElementById( "calc_ft").value ); 
	var i = rational( document.getElementById( "calc_in").value ); 

	var f = ft  + i / 12.;
	
	var pnls = Math.ceil( f / width_ft);

	var r = Math.ceil( pnls / box_size );
	if( f > 0 && r == 0 ) r = 1;
	
	var text = 
		"For total " + 
		ft2str( f ) + " (" + ft2str_m( f ) + ") length you will require:";
	
	document.getElementById( "calc_expl").innerHTML = text;
	document.getElementById( "calc_result").innerHTML = r;
	document.getElementById( "calc_result_panels").innerHTML = pnls + " panels or ";
	document.getElementById( "calc_result_packs").innerHTML = r > 1 ? "&nbsp;boxes": "&nbsp;pack";

}

function calculator( thickness, height, width, box)
{

	thickness_ft = str2ft( thickness );
	height_ft = str2ft( height );
	width_ft = str2ft( width );
	box_size = box;


	document.write(
		'<!-- START CALCULATOR -->' +
		'<br>' +
		'<div id="calculator">' +
		'	<div class="float" id="calc_left">' +
		'		<h4>Panel dimensions:</h4>' +
		'		<div class="scheme_panel">' +
		'			<div class="thickness">' +
		'				<p class="inch">' + ft2str( thickness_ft ) + '</p>' +
		'				<p class="cm">' + ft2str_cm( thickness_ft ) + '</p>' +
		'			</div>' +
		'			<div class="height">' +
		'				<p class="inch">' + ft2str( height_ft ) + '</p>' +
		'				<p class="cm">' + ft2str_cm( height_ft ) + '</p>' +
		'			</div>' +
		'			<div class="width">' +
		'				<p class="inch">' + ft2str( width_ft ) + '</p>' +
		'				<p class="cm">' + ft2str_cm( width_ft ) + '</p>' +
		'			</div>' +
		'		</div>' +
		'	</div>' +
		'	<div class="float" id="calc_right">' +
		'		<h4>Total wall measurements:</h4>' +
		'		<p class="notes">Simply add together the total width of all the walls you need to cover and enter the size below:</p>' +
		'		<div>' +
		'			<table cellpadding="0" cellspacing="0" border="0" width="100%">' +
		'				<tr>' +
		'					<td width="60"><input id="calc_ft" type="text" style=" width: 50px; height: 1.5em;" /></td>' +
		'					<td width="40">feet</td>' +
		'					<td width="60"><input id="calc_in" type="text" style=" width: 50px; height: 1.5em;" /></td>' +
		'					<td>inches</td>' +
		'				</tr>' +
		'				<tr>' +
		'					<td colspan="4"><a href="javascript:calc();"><img src="/v/vspfiles/templates/PlanetOwn/_images_new/btn_21x100b_calculate.gif" width="100" height="21" alt="" border="0" /></a></td>' +
		'				</tr>' +
		'			</table>' +
		'		</div>' +
		'		<p><br /><strong id="calc_expl">You will require :</strong><p>' +
		'		<p class="bignum" ><span id="calc_result_panels" class="packs">0 panels or </span><span id="calc_result">0</span><span id="calc_result_packs" class="packs">boxes</span></p>' +
		'		<p class="notes">THIS IS AN ESTIMATE ONLY.<br>Remember It is always wise to allow extra for wastage and cutting errors.  This usually adds up to about 5-10% of your square footage, according to your skill level. Better to have a bit extra than to run out of product.</p>' +
		'	</div>' +
		'	<div class="clear"></div>' +
		'</div>' +
		'<!-- END CALCULATOR -->' +
		'<br>' );

}
