// <script language="javascript" src="common/comm_func.js"></script>
//===================================================================
// layer, span
//===================================================================
// show layer, span
function show_span(spanobj)
{
    var x = spanobj.length ;

    if( isNaN(x) )
    {
      spanobj.style.display   = "block" ;
      return ;
    }
    for (i=0; i<x ;i++)
        spanobj[i].style.display   = "block" ;
}

// hide layer, span
function hide_span(spanobj)
{
    var x = spanobj.length ;
    if( isNaN(x) )
    {
      spanobj.style.display   = "none" ;
      return ;
    }
    for (i=0; i<x ;i++)
        spanobj[i].style.display   = "none" ;
}

//==============================================================
// 根據component名稱, 傳回object array, 參數前後加雙引號
// component_name範例 : "theform.cgi_sid" or "picname"
//==============================================================
function enum_document_component(component_name)
{
    return enum_window_component("document." + component_name) ;
}

//==============================================================
// 根據component名稱, 傳回object array
// xxx = enum_window_component('window.block_data') ;
// alert(xxx[0]) ;
//==============================================================
function enum_window_component(component_name)
{
    var component_arr ;
    var component_obj = eval(component_name) ;

    if( component_obj == null )
        component_arr = new Array() ;

    else if( isNaN(component_obj.length) )
    {
        component_arr = new Array(1) ;
        component_arr[0] = component_obj ;
    }

    else
        component_arr = component_obj ;

    return component_arr ;
}
//===================================================================
//	去到str頭尾的separator, separator 未指定時為" "
//                                             2K01.04
//===================================================================
function trim(str, separator)
{
    var strlen = str.length;
    if (separator == null)
        separator = " ";
    // 去頭尾的多餘分隔符號

    if (strlen == 0)
        return "" ;

    do
    {
        if (str.substring(0, 1) == separator)
        {
            str = str.substring(1);
            strlen--;
        }
        if (str.substring(strlen-1) == separator)
        {
            str = str.substring(0, strlen-1);
            strlen--;
        }
    }while(str.substring(0, 1) == separator || str.substring(strlen-1) == separator)
    return (str);
}

//===================================================================
//	將字串轉換成ISO-Latin-1字元集             2K.11
//
//   必須含:init()
//===================================================================
function myescape(str)
{
    var i ;
    if (vcp_ie)
    {
        result = "" ;
        len = str.length ;

        for(i=0; i < len; i++)
        {
            // 檢查 unicode 以判別是否為標準的 ASCII 碼
            u_num = str.charCodeAt(i) ;

            if( u_num > 128 ) // not !!
                result += str.charAt(i) ;
            else
            {
                if( str.charAt(i) == '+' )
                  result += '%2B' ;
                else
                  result += escape(str.charAt(i)) ;
            }
        }

        //alert(result);
        return result ;
    }
    else
        return (escape(str));
}

//===================================================================
//	求取物件的值(目前支援:hidden,text,radio,checkbox,select-one,select-multiple)
//                                             2K01.04
//===================================================================
//	檢查物件的型態                            2K.11
function objecttype(obj)
{
    var objtype = "", var_undefined;
    if (obj == var_undefined)
    {
        alert("object undefined");
        return;
    }
    if (obj.type == var_undefined)
    {
        if (obj[0].type != var_undefined)
            objtype = obj[0].type;
        else
        {
            alert("object:["+obj+"] error");
            return;
        }
    }
    else
    {
        objtype = obj.type;
    }
    return objtype;
}
// 檢查form input值是否正確，錯誤則印出error_msg, 文字input會focus, 再傳回true, false
// 若error_msg為空, 則只傳回true, flase
// Usage
// check_input(obj, error_msg, 'EMPTY')  ;    檢查是否為空值
// check_input(obj, error_msg, 'EMAIL')  ;    檢查是否為正確email格式
// check_input(obj, error_msg, 'NUMBER') ;    檢查是否為「正」整數
// check_input(obj, error_msg, 'NUMBER', 5) ; 檢查是否為5位數「正」整數
function check_input(input_obj, error_msg, check_op)
{
    var objtype = objecttype(input_obj) ;
    
    if( arguments.length == 4 )
        check_argument = arguments[3] ;
        
    error_flag = false ;
    focus_flag = false ;
    if( check_op == 'EMPTY' )
    {
        if( (objtype == "textarea" || objtype == "password" || objtype == "text") && input_obj.value == '' )
        {
            error_flag = true ;
            focus_flag = true ;
        }
        else if( objtype == "hidden" && input_obj.value == '' )        
            error_flag = true ;
        else if( (objtype == "select-one" || objtype == "select-multiple") && value(input_obj) == '' )
        {
            error_flag = true ;
            focus_flag = true ;
        }
        else if( (objtype == "checkbox" || objtype == "radio") && value(input_obj) == '' )
            error_flag = true ;
    }
    else if( check_op == 'EMAIL' )
    {
        var val = input_obj.value ;
        pos1 = parseInt( val.indexOf('@') ) ;
        pos2 = parseInt( val.indexOf('.') ) ;
        len =  parseInt( val.length ) ;
        if ( ( pos1 == -1 ) || ( pos2 == -1 ) || ( pos1*pos2 == 0) ||
             ( pos1+1 == len ) || ( pos2+1 == len ) || ( Math.abs(pos1-pos2) == 1 )  )
        {
            error_flag = true ;
            focus_flag = true ;
        }
    }
    else if( check_op == 'NUMBER' )
    {
        var val = input_obj.value ;
        if( arguments.length == 4 && check_argument != '' && val.length != check_argument || parseInt(val) != val || parseInt(val) < 0 )
        {
            error_flag = true ;
            focus_flag = true ;
        }
    }
    
    if( error_flag && error_msg != '' )
        alert( error_msg ) ;
        
    if( focus_flag && error_msg != '' )
        input_obj.focus() ;
        
    return (! error_flag) ;
}

//	求取物件的值(目前支援:hidden,text,radio,checkbox,select-one,select-multiple)
function value(obj)
{
    var i;
    var retvalue = '' ;
    var objtype = objecttype(obj);
    switch (objtype)
    {
        case "textarea":
      	case "password":
        case "hidden":
        case "text"  :
            retvalue = obj.value;
            break;
        case "checkbox" :
            var idx = 0 ;
            retvalue = new Array();
            if ( !obj.length )  // 只有一個checkbox
            {
                if (obj.checked)
                    retvalue[0] = obj.value ;
                else
                    retvalue[0] = '' ;
            }
            else
            {
                for (z=0;z<obj.length;z++)
                {
                    if ( obj[z].checked )
                    {
                        retvalue[idx] = obj[z].value ;
                        idx++ ;
                    }
                }
            }
            //alert("my checkbox["+retvalue+"]");
            break;
        case "select-one" :
            retvalue = obj.options[obj.selectedIndex].value;
            //alert("my select-one["+retvalue+"]");
            break;
        case "select-multiple" :
            var inx=0;
            retvalue = new Array();
            for (i=0; i<obj.length; i++)
            {
                if (obj.options[i].selected == true)
                {
                    retvalue[inx] = obj.options[i].value;
                    inx++;
                }
            }
            //alert("my select-multiple["+retvalue.toString()+"]");
            break;
        case "radio" : //radio
            if ( !obj.length )  // 只有一個checkbox
            {
                if (obj.checked == true)
                    retvalue = obj.value;
            }
            else
            {
              for (i=0; i<obj.length; i++)
                  if (obj[i].checked == true)
                      retvalue = obj[i].value;
            }
            //alert("my radio["+retvalue+"]");
            break;
        default :
            alert("function value(obj) obj:["+obj+"] error...");
            return;

    }
    return retvalue;
}
//===================================================================
//	字串切割加強版 (會去掉重複separator及頭尾多餘separator)
//                                        2K01.03
//===================================================================
function explode(separator, str)
{
    var simple_mode = false;
    var newstr;
    if (arguments.length == 3)
        simple_mode = arguments[2];
    if (simple_mode == true)
        newstr = str;
    else
    {
    	var strlen = separator.length;
    	// 去頭尾的多餘分隔符號
    	do
    	{
            if (str.substring(str.length - strlen) == separator)
                str = str.substring(0, str.length - strlen);
            if (str.substring(0, strlen) == separator)
                str = str.substring(strlen);
        }while(str.substring(0, strlen) == separator || str.substring(str.length - strlen) == separator)

    	// 去重複分割符號
    	newstr = str;
    	do
    	{
    		str = newstr;
    	    var newstr = str.replace(separator+separator, separator);
    	}while(newstr != str);
        // 傳回切割後Array
    }
	if ( newstr.length == 0)
        return;
	else
	    return(newstr.split(separator));
}

//===================================================================
//	全選
//                                        2K01.03
// ex: CheckAll(window.form1); or CheckAll(window.form1, "sid");
//===================================================================
// 全選或全消(若全選則全消，否則全選)
// CheckCancelAll(document.theform.cgi_scid)
function CheckCancelAll(objCtl)
{
    if( IsCheckAll(objCtl) )
        CancelAll(objCtl) ;
    else
        CheckAll(objCtl) ;
}

// 全選
// CheckAll(document.theform.cgi_scid)
function CheckAll(objCtl)
{
    var objCtl_arr = enum_window_component(objCtl) ;
    
    if( objCtl_arr.length > 0 )
    {
        for( i = 0; i < objCtl_arr.length; i++ )
              objCtl_arr[i].checked = true ;
    }
}

// 全消
// CencelAll(document.theform.cgi_scid)
function CancelAll(objCtl)
{
    var objCtl_arr = enum_window_component(objCtl) ;
    
    if( objCtl_arr.length > 0 )
    {
        for( i = 0; i < objCtl_arr.length; i++ )
              objCtl_arr[i].checked = false ;
    }
}

// 判斷控制項是否全選，是傳回true
// ex: IsCheckAll(document.theform.cgi_scid)
function IsCheckAll(objCtl)
{
    var objCtl_arr = enum_window_component(objCtl) ;
    
    if( objCtl_arr.length > 0 )
    {
        for( i = 0; i < objCtl_arr.length; i++ )
        {
            if( ! objCtl_arr[i].checked )
                return false ;
        }
        
        return true ;
    }
    
    return false ;
}

// 判斷控制項是否全消，是傳回true
// ex: IsCancelAll(document.theform.cgi_scid)
function IsCancelAll(objCtl)
{
    var objCtl_arr = enum_window_component(objCtl) ;
    
    if( objCtl_arr.length > 0 )
    {
        for( i = 0; i < objCtl_arr.length; i++ )
        {
            if( objCtl_arr[i].checked )
                return false ;
        }
        
        return true ;
    }
    
    return false ;
}

//===================================================================
// 設定 select 預定選項
// ex: InitOption(window.form1.xSelect, "1");
//===================================================================
/*
function InitOption(sCtl, str)
{
   for(i=0; i < sCtl.options.length; i++)
    {
        if( sCtl.options[i].value == str )
        {
            sCtl.selectedIndex = i ;
            break ;
        }
    }
}
*/

// 將控制項初始值設為str(用於下拉式選單)
function setOption(optCtl, str)
{
	for(i=0; i < optCtl.length; i++)
	{
		if( str == optCtl[i].value )
		{
			optCtl[i].selected = true ;
			break ;
		}
	}
}

// 將控制項初始值設為str(用於 radio, checkbox)
function setRadio(optCtl, str)
{
    if( ! optCtl.length )
    {
        optCtl.click() ;
        return ;
    }

	for(i=0; i < optCtl.length; i++)
	{
		if( str == optCtl[i].value )
		{
			optCtl[i].click() ;
			break ;
		}
	}
}

//===================================================================
// 設定 select 選項
//===================================================================
function InitNumberOptions(optX, nBegin, nEnd, bAppendZero, preSelect)
{
    if( String(preSelect) == "" )
        preSelect = nBegin ;

    for(i=nBegin; i <= nEnd; i++)
    {
        if( i < 10 && bAppendZero )
            optX.options[i-nBegin] = new Option("0"+i, "0"+i) ;
        else
            optX.options[i-nBegin] = new Option(i, i) ;

        if( i == preSelect )
            optX.options[i-nBegin].selected = true ;
    }
}

//===================================================================
// 計算字串長度
//===================================================================
function StrLen(str)
{
    for (j=0, len=str.length; j<str.length; j++)
    {
            if (str.charCodeAt(j) > 255)
                    len++;
    }
    return len;
}
// ===================COOKIE=================================
// cookie format : name = value ; path = / ; [expires = exp]
// name : cpcLoginIp
// expires_day : 保存單位天
function set_cookie(name, value, expires_day)
{
	var exp = new Date() ;
	exp.setTime(exp.getTime() +  1000 * 86400 * expires_day) ;

	document.cookie = name + "=" + escape(value) + "; path=/ ; expires=" + exp.toGMTString() ;
}

function get_cookie(name)
{
	var name_value = plib_content_parser(document.cookie, name + "=", "") ;

	index = name_value.indexOf(";") ;
	if( index != -1)
		name_value = name_value.substr(0, index) ;

    // 還原cookie中被編碼的;
    while( name_value.indexOf("%3B") != -1 )
           name_value = name_value.replace("%3B", ";") ;

	return name_value ;
}

function del_cookie(name)
{
	document.cookie = name + "=; expires=Thu, 01-Jan-70 00:00:01 GTM" + "; path=/" ;
}

// ===================STRING=================================
function plib_content_parser(str, begin, end)
{
	if( ! str)
		return "" ;

	var tmp = str ;

	// 擷取begin之後字串
	index_b = tmp.indexOf(begin) ;

	if( index_b != -1)
		tmp = tmp.substr(index_b + begin.length) ;

	else if(begin)
		return "" ;

	// 擷取end之前字串, 注意：indexOf(str, "") = 0
	index_e = tmp.indexOf(end) ;

	if( ! end)
		return tmp ;

	if (index_e != -1)
		tmp = tmp.substr(0, index_e) ;

	else
		return "" ;

	return tmp ;
}

// ===================ARRAY=================================
function makeArray()
{
	var args = makeArray.arguments ;
	for(var i = 0; i < args.length; i++)
		this[i] = args[i] ;
	this.length = args.length ;
}

// 若val在陣列arr中則傳回true
function in_array(val, arr)
{
    for(i = 0; i < arr.length; i++)
        if( val == arr[i] )
            return true ;

    return false ;
}

// ===================FILENAME=================================
// 自完整檔名中取出路徑
function dirname(fname)
{
    tmp = fname.indexOf("/");
    pos = tmp ;

    while( tmp != -1 )
    {
        pos = tmp ;
        tmp = fname.indexOf("/", tmp + 1);
    }

    return (fname.substring(0, pos + 1)) ;
}

// 自完整檔名中取出檔名
function basename(fname)
{
    tmp = fname.indexOf("/");
    pos = tmp ;

    while( tmp != -1 )
    {
        pos = tmp ;
        tmp = fname.indexOf("/", tmp + 1);
    }

    return (fname.substring(pos + 1)) ;
}

// 開啟另外一個視窗
// openlink(link_url, x, y, message, [scroll], [winname], [win_y]);
function openlink(link_url, width, height, message)
{
    if ( parseInt(width) * parseInt(height) == 0 )
    {
        width = 160 ;
        height = 50 ;
    }

    var scroll = "no", wname;
    var linkWin ;
    if (arguments.length > 4)
    {
        scroll = arguments[4];
        if (arguments.length >= 6)
            wname = arguments[5]+get_cookie("PHPSESSID");
        else
            wname = "win" + (new Date()).getTime() ;

    }
    win_x=(screen.width - width)/2;
    win_y=(screen.height - height)/2 - 20;

    if (arguments.length == 7)
        win_y = arguments[6] ;
    linkWin=window.open('',wname,"width="+width+",height="+height+",top="+win_y+",left="+win_x+",scrollbars="+scroll+",resizable=yes");
    linkWin.location = link_url ;    
    linkWin.focus();
}