function CreateFolderPath(path )
{
	var parent = fso.GetParentFolderName ( path )
//	WriteToLog(path)
	if ( 0 < parent.length  ) 	CreateFolderPath( parent )
	try
	{
		fso.CreateFolder (path)
		return path
	}
	catch(e)
	{
	}	

}

function getBackupPath( date )
{
	if ( date == null ) date = new Date()
	var yyyy = date.getFullYear ()
	var mm = int2_to_str(date.getMonth () +  1 )
	var dd = int2_to_str(date.getDate () )
	var hh = int2_to_str(date.getHours () )
	var time = date.getTime ()
	return yyyy + "\\" + mm + "\\" + dd + "\\" +  hh + "\\" + time
}
function getPathYYMMddhh ( date ) 
{
	if ( date == null ) date = new Date()
	var yyyy = date.getFullYear ()
	var mm = int2_to_str(date.getMonth () +  1 )
	var dd = int2_to_str(date.getDate () )
	var hh = int2_to_str(date.getHours () )
	return yyyy + "\\" + mm + "\\" + dd + "\\" +  hh  
}

function backup(filePath , backupPath )
{
	if ( backupPath == null ) backupPath  = "backup\\" + getBackupPath( new Date() )
	CreateFolderPath ( backupPath )
	var dest = backupPath  + "\\" + fso.GetBaseName(filePath) + "." + fso.GetExtensionName ( filePath)
	WriteToLog("copy " + filePath + " " + dest)
	fso.CopyFile(filePath,dest,true )
	return dest
} 

function backup(filePath , backupPath )
{
	if ( backupPath == null ) backupPath  = "backup\\" + getPathYYMMddhh( new Date() )
	CreateFolderPath ( backupPath )
	var dest = backupPath  + "\\" + fso.GetBaseName(filePath) + "." + fso.GetExtensionName ( filePath)
	if ( fso.FileExists( dest ) ) 
	{
		backupPath = "backup\\" + getBackupPath(new Date())
		CreateFolderPath(backupPath)
		dest = backupPath  + "\\" + fso.GetBaseName(filePath) + "." + fso.GetExtensionName ( filePath)
	}
	WriteToLog("copy " + filePath + " " + dest)
	fso.CopyFile(filePath,dest,true )
	return dest
} 

function backupYYMMddhh( filePath )
{
	var backupPath = "backup\\" +  getPathYYMMddhh ()
	var dest = backupPath  + "\\" + fso.GetBaseName(filePath) + "." + fso.GetExtensionName ( filePath)
	if ( fso.FileExists( dest ) ) 
		return backup( filePath )
	else
		return backup ( filePath, backupPath )
}					
		
	
	

