/**************************************
*  CUPS 解説用ページで使われる関数    *
*     元ページは EUC-JP で書くこと！  *
**************************************/
/*
    htmlのパラメータを解釈して、対応するプリンターコードに変換
*/
function GetType(){
    para=new String(window.self.location);
    ln=para.length;
    sep=para.indexOf("?");
    if((sep==-1)||(ln==sep+1)){
        return(0);
        }
    PrinterType=new String(para.substring(sep+1,ln));
    if(PrinterType=="CD-S500"){
            return(101);
	    }
    if(PrinterType=="CBM1000"){
            return(201);
	    }
    if(PrinterType=="CT-S2000"){
            return(202);
	    }
    if(PrinterType=="CT-S280"){
            return(282);
	    }
    if(PrinterType=="CT-S281"){
            return(292);
	    }
    if(PrinterType=="CT-S300"){
            return(203);
	    }
    if(PrinterType=="CT-S310"){
            return(213);
	    }
    if(PrinterType=="CT-S4000"){
            return(204);
	    }
    if(PrinterType=="CT-S801"){
            return(208);
	    }
    if(PrinterType=="CT-S601"){
            return(206);
	    }
    if(PrinterType.match(/^[0-9]+$/)){
            return(PrinterType);
	    }
    return(-1);
    }

/*
    ブラウザ(IE / Mozilla)の日本語かどうかを判定
    Operaではどうなるか分からない…
*/
function IsJA(){
    ua=new String(navigator.userAgent);
    if(ua.indexOf("Gecko")>=0){
        //Mozilla系
	if(navigator.language.toLowerCase()=="ja-jp"){
	    return true;
	    }//ja-JPを返すのもあるみたい。
        return (navigator.language.toLowerCase()=="ja")?true:false;
	}   // safari(林檎)はja-jp、Firefox(窓やペンギン)はja-JPを返すので小文字化して検証
    if(ua.indexOf("Opera")>=0){
        //Opera 携帯、JAVA、DS も使えるかも…
        return (navigator.language.toLowerCase()=="ja")?true:false;
	}
    if(ua.indexOf("MSIE")>=0){
        //いえ系
	return (navigator.userLanguage=="ja")?true:false;
	}//*/
    if(ua.indexOf("NetFront")>=0){
        //携帯電話のNetFront(WX310SA)
	return (navigator.language.toLowerCase()=="ja-jp")?true:false;
	}
    return false;
    }
    
function ProdName(PrtType){
    switch(PrtType){
        case 101: return "CD-S500";
	case 201: return "CBM1000";
	case 202: return "CT-S2000";
	case 282: return "CT-S280";
	case 292: return "CT-S281";
	case 203: return "CT-S300";
	case 213: return "CT-S310";
	case 204: return "CT-S4000";
	case 608: return "CT-S601";
	case 208: return "CT-S801";
	}
    return "";
    }

/*
   プリンターコードから対応するソースファイル名を作り出す
*/
function SourceFile(Printer){
    switch(Printer){
        case 101: uniq="CDS500";  break;
	case 201: uniq="CBM1000"; break;
	case 202: uniq="CTS2000"; break;
	case 203: uniq="CTS300";  break;
	case 213: uniq="CTS310";  break;
	case 204: uniq="CTS4000"; break;
	case 282: uniq="CTS280";  break;
	case 292: uniq="CTS281";  break;
	case 208: uniq="CTS801";  break;
	case 206: uniq="CTS601";  break;
	default:  return("");
	}
    return "cups-"+uniq+".tar.bz2";
    }

/*
    下の表作成ルーチンから呼ばれるサブルーチン
    1行分のhtmlを作る
*/
function RowOfTable(Version,FileName,MD5){
    document.write("<tr>"+
        "<td>"+Version+"</td>"+
	"<td>"+FileName.link(FileName)+"</td>"+
	"<td>"+MD5+"</td></tr>");
    }
/*
    ファイルダウンロード用の表を作る。
    リンクも含まれている。
    ファイルをバージョンアップした場合はここを書き換えること
*/
function DownLink(){
    Printer=GetType()-0;
    document.write("<table class=link><tr><th>VERSION</th><th>FILE NAME</th><th>MD5</th></tr><tr>");
    switch(Printer){
        case 201: 
	    Version="1.1";  Md5="b8e50346e8aaf1062221eaf8e7c54aca";
	    break;
        case 101:
	    Version="1.1";  //Md5="b3a2dc487a0f46c121e0226e2ad7cf97";
	    		    Md5="7a6710c9c3cf2d74eb5b20948d73601f";
	    break;
        case 202:
	    Version="1.2";  Md5="ceb52985837aee100e1ed4b055ede092";
	    //RowOfTable("1.1","cups-CTS2000.1.1.tar.bz2","80effe591af4828b2193b3b408c9afbc");
	    break;
	case 203:
	    Version="1.1";  Md5="56aa3424a7e5672da78b451aed2a30ac";
	    break;
	case 213:
	    Version="1.0";  Md5="7cec899b3651b60aa2e010f2f5613e48";
	    break;
	case 204:
	    Version="1.1";  Md5="449eee4350704f7ebeee306fa669a1a6";
	    break;
	case 282:
	    Version="1.1";  Md5="280c85d5507769915dfe0d08f0327c57";
	    break;
	case 292:
	    Version="1.0";  Md5="bb1c82664dca06b18325d05a575a37f8";
	    break;
	case 208:
	    Version="1.0";  Md5="6f91435a42dfe15c10e73af537b0c082";
	    break;
	case 206:
	    Version="1.0";  Md5="2e7a22e471bed2d8a03d8fb0d056bc0c";
	    break;
	}
    RowOfTable(Version,SourceFile(Printer),Md5);
    document.write("</tr></table>");
    }

/*
   プリンターコードから対応するフィルタファイル名を作り出す
*/
function FilterFile(){
    Printer=GetType()-0;
    return "rasterto"+((Printer<200)?"cds500":"cbm1k");
    }
    
/*
    コンパイル用のコマンドラインを作る
*/
function CompileCmdLine(){
    Source=FilterFile();
    document.write("gcc -Wl,-rpath,/usr/lib -Wall -fPIC -O2 -o "+
                    Source+" "+Source+".c -lcupsimage -lcups");
    }

/*
    ダウンロードしたファイルを解くコマンドラインを作る
*/
function ExtractCmdLine(){
    Printer=GetType()-0;
    Source=SourceFile(Printer);
    document.write("tar jxvf "+Source);
    }

/*
   プリンターコードから対応するPPDファイル名を作り出す
*/
function PpdFile(){
    Printer=GetType()-0;
    switch(Printer){
        case 101: uniq="CDS500";  break;
	case 201: uniq="CBM1000"; break;
	case 202: uniq="CTS2000"; break;
	case 203: uniq="CTS300";  break;
	case 213: uniq="CTS310";  break;
	case 204: uniq="CTS4000"; break;
	case 282: uniq="CTS280";  break;
	case 292: uniq="CTS281";  break;
	case 206: uniq="CTS601";  break;
	case 208: uniq="CTS801";  break;
	default:  return("");
	}
    return uniq+".ppd";
    }

/*
    PPDファイルをコピーするコマンドラインを作る
*/
function CopyPPDCmdLine(){
    ppd=PpdFile();
    document.write("cp "+ppd+" /usr/share/cups/model");
    }

/*
    フィルタファイルをコピーするコマンドラインを作る
*/
function CopyFilterCmdLine(){
    document.write("cp "+FilterFile()+" /usr/lib/cups/filter");
    }

/*
    フィルタファイルに実行属性を設定するコマンドラインを作る
*/
function SetXPermissionCmdLine(){
    document.write("chmod +x /usr/lib/cups/filter/"+FilterFile());
    }

/*
    HTMLに機種指定がなされているかどうかを確認
    指定されていなければ、選択要求のメッセージ表示後
    表示ページも移動する
*/
function CheckType(){
    if(GetType()>100){
        return true;
	}
    msg=IsJA()?"機種を選んでください"
              :"Select your printer";
    alert(msg);
    location.href="choose.html";
    return false;
    }

//
//  リンク先無効の表示をして戻る
//
//使用例
//  <a href=xxxxx.xxx onclick="return NotAvaliable(0)">  
//
function NotAvailable(){
    if(IsJA()){
        alert("このリンク先は現在用意されていません。");
	}
    else{
        alert("This LINK is not available, now.");
	}
    return false;
}
