// Detect an ARJ archive.
// Info from http://www.fileformat.info/format/arj/corion.htm
includeScript("archive");
sName="ARJ";

function detect_ARJ(bFile,bShowOptions)
{
    var nOffset,nSize;
    if(bFile)
    {
        nOffset=0;
        nSize=File.getSize();
    }
    else
    {
        nOffset=File.getOverlayOffset()+8;
        nSize=File.getOverlaySize();
    }
    if(nSize>=64)
    {
        if(File.compare("60EA",nOffset))
        {
            sVersion=File.readByte(nOffset+5);
            bDetected=1;
        }
        if(bDetected&&bShowOptions)
        {
            // Options
            switch(File.readByte(nOffset+7)) // Host OS
            {
            case(0):    sOptions=sOptions.append("MS-DOS");  break;
            case(1):    sOptions=sOptions.append("PRIMOS");  break;
            case(2):    sOptions=sOptions.append("UNIX");  break;
            case(3):    sOptions=sOptions.append("AMIGA");  break;
            case(4):    sOptions=sOptions.append("MAC-OS");  break;
            case(5):    sOptions=sOptions.append("OS/2");  break;
            case(6):    sOptions=sOptions.append("APPLE GS");  break;
            case(7):    sOptions=sOptions.append("ATARI ST");  break;
            case(8):    sOptions=sOptions.append("NeXT");  break;
            case(9):    sOptions=sOptions.append("VAX VMS");  break;
            }
            if(File.readByte(nOffset+8)&0x01) // password
            {
                sOptions=sOptions.append("encrypted");
            }

            switch(File.readByte(nOffset+9)) // Compression method
            {
            case(0):    sOptions=sOptions.append("stored");  break;
            case(1):    sOptions=sOptions.append("compressed most");  break;
            case(2):    sOptions=sOptions.append("compressed");  break;
            case(3):    sOptions=sOptions.append("compressed faster");  break;
            case(4):    sOptions=sOptions.append("compressed fastest");  break;
            }
        }
    }
}
