﻿/*
    write log function
*/
var debugMode = true;
var showLogTime = true;
function writeLog(logTxt){
    if(debugMode){
        var logPanel = document.getElementById("log");
        if(logPanel!=null){
            logPanel.value = logPanel.value + (showLogTime?"(" + new Date() + ")":"") + logTxt + "\n";
        }
    }
}

/*
    init font function
    font            :font source
*/
function updateFontObject(font){
    if(font!=null){
        for(var i=0;i<txtObject.length;i++) {
            var txtTemp = txtObject[i];
            writeLog(txtTemp.name + "" + i);
            txtTemp.setFontSource(font);
            txtTemp.fontFamily="cwTeXHeiBold";//cwTeXHeiBold,DFKai-SB
        }
    }
    
    if ( Silverlight.isInstalled("2.0") ){
        for(var i=0;i<txtObject.length;i++) {
            var txtTemp = txtObject[i];
            txtTemp.fontSize=12;
        }
    }
}

function updateSingleObjFontObject(font,obj){
    if(font!=null){
        var txtTemp = obj;
        txtTemp.setFontSource(font);
        txtTemp.fontFamily="cwTeXHeiBold";//cwTeXHeiBold,DFKai-SB
    }
    
    if ( Silverlight.isInstalled("2.0") ){
        var txtTemp = obj;
        txtTemp.fontSize=12;
    }
}


/*
    分割字串為行
    source          :原始字串
    splitChar       :分割字元
    lineCharCount   :每行字數限制
    maxLineNum      :最大行數

function splitLine(source,splitChar,lineCharCount,maxLineNum){
    var target = "";
    if(source!=null && source.length>0){
        var c = 0;

        while(true && c<maxLineNum){
            if(source <= lineCharCount){
                target = target + (target!=""?splitChar:"") + source;
                break;
            }
            var tmpLine = source.substring(0,lineCharCount);
            
            if(tmpLine.indexOf("\n")==-1){
                source = source.substring(lineCharCount,source.length);
            } else {
                //若暫存列中有換行字元
                source = source.substring((tmpLine.indexOf("\n")+1),source.length);
                tmpLine = tmpLine.substring(0,tmpLine.indexOf("\n"));
            }
            
            target = target + (target!=""?splitChar:"") +tmpLine;
            
            c = c + 1;
            if(c>=maxLineNum){
                target = target + "...";
            }
        }
    }
    return target;
}*/
function splitLine(source,splitChar,lineCharCount,maxLineNum){
    //若為2.x版本不用文字換行
    if ( Silverlight.isInstalled("2.0") ){
        return source;
    }
    
    var target = "";
    var regs='^[a-z0-9A-Z]+$';   
    var re=new RegExp(regs);
    
    if(source!=null && source.length>0){
        var c = 0;
        var L = 2*lineCharCount;
        var l = 0;
        var cc = 0;
        while(true && c<maxLineNum && cc< source.length){
        
            var tChar = source.charAt(cc);

            cc = cc+1;

            if(tChar=="\n"){
                target = target+ tChar;
                l = 0; //重新計算
                c = c + 1;//新增一行
            } else {
                var rc=re.exec(tChar);
                if(rc!=null) {
                    l = l + 1;
                    target = target+ tChar;
                } else if(rc==null) {
                    l = l + 2;
                    target = target+ tChar;
                }
                
                if(l>=L){
                    l = 0; //重新計算
                    c = c + 1;//新增一行   
                    target = target+ "\n";                 
                }
            
            }
            
            if(c>=maxLineNum){
                target = target + "...";
            }
        }
    }
    return target;
}