// cVersion - Class to hold version number - Copyright (C) 2007-2010
//
// See also cVersion_Compare.js


cVersion.prototype.$name = 'cVersion';


function cVersion ( version, separator, bSkipSpace )
{
if ( arguments.length < 1 )
	version = '0';
if ( arguments.length < 2 )
	separator = '.';
if ( arguments.length < 3 )
	bSkipSpace = false;
if ( version instanceof cVersion )
  {
	this.separator = (arguments.length < 2) ? version.separator : separator;
	this.v = new Array();
	this.v = version.v;
  }
else
  {
	var s = ( typeof(version) == 'number' ) ? version.toString() : version;
	this.separator = separator;
	this.v = new Array();
	var vindex = 0;
	var sindex = 0;
	var c;
	this.v[vindex] = '';
	if ( bSkipSpace) for ( ; sindex < s.length; ++sindex )
	  {
		c = s.charAt(sindex);
		if ( c != ' ' )
			break;
	  }
	for ( ; sindex < s.length; ++sindex )
	  {
		c = s.charAt(sindex);
		if ( c == separator )
			this.v[++vindex] = '';
		else if ( (c >= '0') && (c <= '9') )
			this.v[vindex] += c.toString();
		else
			break;
	  }
  }
return;
}


cVersion.prototype.toString = function ( separator )
{
if ( arguments.length < 1 )
	separator = this.separator;
var rv = '';
for ( var i = 0; i < this.v.length; ++i )
  {
	if ( i == 0 )
		rv += this.v[0];
	else
		rv += separator + this.v[i];
  }
return rv;
}


cVersion.prototype.comp = function ( version2 )
{
var operand;
if ( arguments.length < 1 )
	version2 = '0';
if ( version2 instanceof cVersion )
	operand = version2;
else
	operand = new cVersion( version2 );
var nLoops = Math.max( this.v.length, operand.v.length );
var rv = 0;
for ( var i = 0; i < nLoops; ++i )
  {
	var n1 = Number( (i < this.v.length) ? this.v[i] : 0 );
	var n2 = Number( (i < operand.v.length) ? operand.v[i] : 0 );
	if ( n1 == n2 )
		continue;
	else if ( n1 < n2 )
		{ rv = -1; break; }
	else
		{ rv = 1; break; }
  }
return rv;
}

