//------------------------------------------------------------------
// S: 받는사람 전화번호입력 관련 스크립트
//------------------------------------------------------------------
var addrCellSize = 10;

/**
 * 입력하려고 포커스를 받았을 경우 호출
 */
function onFocusForEdit( inputObj ) {
    orgNumber = removeHipen( inputObj.value );
    inputObj.value = orgNumber;
}

/**
 * 하이픈 제거
 */
function removeHipen(val){
    var newVal = "";
    for(rhI = 0; rhI<val.length;rhI++){
        if(!(val.charAt(rhI)=="-")) newVal = newVal + val.charAt(rhI);
    }
    return newVal;
}

/**
 * @returns: ErrorCode, num1, num2, num3, hasStar, has200
 *           ErrorCode : 0 ok
 */
function parseNumber( str ) {
    var result = new Array(6);
    
    var len = str.length;
    var hasStar = "";
    var has200 = "";
    var num = str;
    var num1, num2, num3;
    var errorCode = 0;
    
    if ( str.substring(len-1) == "*") {
        hasStar = "*";
        num = str.substring(0,len-1);
        len = num.length;
    } else if ( str.substring(0,3) == "200") {
        has200 = "200-";
        num = str.substring(3);
        len = num.length;
    }
    
    if ( len < 10 || len>11) {
        errorCode = 1;
    } else {
        num1 = num.substring(0,3);
        num2 = num.substring(3,len-4 );
        num3 = num.substring(len-4,len );   

        if ( num1 != "010" && num1 != "011" && num1 != "016" && num1 != "017" && num1 != "018" && num1 != "019" ) {
            errorCode = 2;
        } else {
            for (var i=3; i<len; i++) {
                var ch = num.charAt(i);
                if ( ch < '0' || ch > '9' ) {
                    errorCode = 3;
                    break;
                }
            }       
        }
    }
    
    result[0] = errorCode;
    result[1] = num1;
    result[2] = num2;
    result[3] = num3;
    result[4] = hasStar;
    result[5] = has200;
    
    return result;
}

/**
 * 번호를 검사하고 - 을 채운다.
 * <Valid 목록>
 *  3자리 국번: 010-222-2222
 *  4자리 국번: 010-2222-2222
 *  200메시지: 200-010-111-1111
 *  별메시지: 010-222-3333*
 */
function addHipen( str, warn ) {
    var parsed = parseNumber( str );
    if ( parsed[0] != 0 ) {
        if(warn) {
        	alert_module.show('alert', {
    			msg : "번호 형식이 잘못되었습니다."
    		});
        }
        return "";
    }
    
    var num1 = parsed[1];
    var num2 = parsed[2];
    var num3 = parsed[3];
    var hasStar = parsed[4];
    var has200 = parsed[5];
    var num = num1 + num2 + num3;
    var len = num.length;
    
    return has200 + num1 + "-" + num2 + "-" + num3 + hasStar;   
}

/**
 * 받는 사람 전화번호 hipen 처리
 */
function makeReceiveHipen( inputObj ) {

    if ( inputObj != null ) {
        var str = trim( removeHipen( inputObj.value ) );
        var no = parseInt(inputObj.id.substr(4), 10);
        var nameObj = document.getElementById("ncell"+no);
        if ( str == "" ) {
            deleteReceiveNum( no );
        } else {            
            if ( orgNumber != null && str != orgNumber ) {
                if ( nameObj != null ) {
                    setInnerText( nameObj, "" );
                    nameObj.title = "";
                }
            }

            var recipient = addHipen( str, true );

            if ( recipient == "" ) {
                document.getElementById("send_phone").value = ""; //받는 사람을 삭제한다.
            } else {
                document.getElementById( inputObj.id ).value = recipient;   //Firefox버그 때문에 땜빵-inputObj.value = recipient;
                
                //removeNullRecipient();  
                //removeDupRecpient( true );
            }

        }
    }
}

/**
 * 전화번호 hipen 처리
 */
function makeHipen( inputObj ) {

    if ( inputObj != null ) {
        var str = trim( removeHipen( inputObj.value ) );
        var no = parseInt(inputObj.id.substr(4), 10);
        var nameObj = document.getElementById("ncell"+no);
        if ( str == "" ) {
            deleteReceiveNum( no );
        } else {            
            if ( orgNumber != null && str != orgNumber ) {
                if ( nameObj != null ) {
                    setInnerText( nameObj, "" );
                    nameObj.title = "";
                }
            }

            var recipient = addHipen( str, true );

            if ( recipient == "" ) {
                deleteReceiveNum( no );
                document.getElementById("send_phone").value = ""; //받는 사람을 삭제한다.
            } else {
                document.getElementById( inputObj.id ).value = recipient;   //Firefox버그 때문에 땜빵-inputObj.value = recipient;
                
                removeNullRecipient();  
                removeDupRecpient( true );
            }

        }
    }
}

/**
 * 수신번호 사이사이의 공백들을 제거한다.
 */
function removeNullRecipient() {
    var i = 0;
    var maxIdx = -1;
    for (i=addrCellSize-1; i>=0; i--) {
        var num = document.getElementById( "cell"+i ).value;
        if ( num != "" ) {
            maxIdx = i;
            break;
        }
    }
    
    if ( maxIdx < 1 ) {
        return;
    }

    for (var i=0; i<=maxIdx; ) {
        var objPhone = document.getElementById( "cell"+i );
        if ( objPhone.value == "" ) {
            deleteReceiveNum(i);
            maxIdx--;
        } else {
            i++;
        }
    }
}

/**
 * 중복된 전화번호를 제거한다.
 */
function removeDupRecpient( warn ) {
    var i,j,num,numj, duplicated;
    duplicated = false;
    for (i=1; i<addrCellSize; i++) {
        num = document.getElementById( "cell"+i ).value;
        if ( num == "" ) continue;
        
        for (j=0; j<i; j++) {
            numj = document.getElementById( "cell"+j ).value;
            if ( num == numj ) {
                deleteReceiveNum(i);
                i--;
                duplicated = true;
                break;
            }
        }
    }
    
    if (duplicated && warn) {
       	alert_module.show('alert', {
   			msg : "수신번호 중복입니다."
   		});
    }
}

/**
 * 입력셀 삭제
 */
function deleteReceiveNum( idx ) {
    if ( idx<0 || idx>=addrCellSize ) {
        alert('deleteReceiveNum() invalid index ' + idx );
        return;
    }

    for (var i=idx; i<addrCellSize-1; i++) {
        var objPhone = document.getElementById( "cell"+i );
        var objName = document.getElementById( "ncell"+i );
        var objPhoneNext = document.getElementById( "cell"+ (i+1) );
        var objNameNext = document.getElementById( "ncell"+ (i+1) );
        
        objPhone.value = objPhoneNext.value;
        objName.value = objNameNext.value;
    }
    
    var objPhone = document.getElementById( "cell9" );
    var objName = document.getElementById( "ncell9" );
    if(objPhone!=null){
    objPhone.value = "";
    setInnerText( objName, "" );
    objName.title = "";
    }
}

function getReceiveNumArray() {
    var rnum = new Array();
    
    var idx = e_('send_list').getElementsByTagName('li').length;

    for(var i=0; i<idx; i++){
    	document.getElementById("cell"+i)
    
        var tmp = document.getElementById("cell"+i).value;
        if( tmp!=null && tmp!="" ) {
            rnum[i] = tmp;
        } else {
            break;
        }
    }

    return rnum;
}

function getReceiveNameArray() {
    receiveNumCount = 0;
    var rnum = new Array();
    var idx = e_('send_list').getElementsByTagName('li').length;

    for(var i=0; i<idx; i++){
        //var tmp = getInnerText(document.getElementById("ncell"+i));
        var tmp = document.getElementById("ncell"+i).value;
        if(tmp == ""){
            rnum[i] = "noname";
        } else {
            rnum[i] = tmp;
        }
        receiveNumCount++;
    }

    var result = new Array( receiveNumCount );
    
    for(var i=0; i<receiveNumCount; i++) {
        result[i] = rnum[i];
    }

    return result;
}
