﻿/* 코스피/코스닥 지수 표시 */
var StockKor =
{
    /* 쌤플 */
    Sample: {
        "KOSPI": { "date": "20110715151001", "rate": "214520", "gap": "15.13", "updn": "2" },
        "KOSDAQ": { "date": "20110715151001", "rate": "50700", "gap": "9.82", "updn": "2" }
    },

    /* 지수 정보 JSON */
    JISU_URL: 'http://www.yonhapnews.co.kr/maketpl/home/ref/stock.tpl',


    /* 숫자 변환 자리수 상광없이 변환*/
    makeNumber: function (jisu) {
        jisu = jisu.replace(/^([0-9]+)([0-9]{2})$/, '$1.$2');
        jisu = jisu.replace(/^([0-9]+)([0-9]{3}\.[0-9]{2})$/, '$1,$2');
        return jisu;
    },

    /* 
    * 정보 업데이트 
    * js	지수 정보가 담긴 JSON  
    * id	엘리먼트 ID (KOSPI or KOSDAQ)
    */
    updateJisu: function (js, id) {
        var obj = $('#' + id);

        // 엘리먼트 못찾으면 리턴
        if (obj.size() == 0)
            return;

        obj.html(StockKor.makeNumber(js[id]['rate']));

        var gap = js[id]['gap'].replace(/[^0-9\.]/, ''); // 하락일 경우 - 제거
        var updn = js[id]['updn']; // 2:상승, 5:하락

        var gapObj = $('#' + id + 'GAP');
        var updownObj = $('#' + id + '_UPDN');

        // 하락/상승에 대한 클래스명
        var cls = updn == '2' ? 'rngup' : updn == '5' ? 'rngdn' : ' ';
        updownObj.removeClass().addClass(cls);
        gapObj.html(gap);
 
        // 주식 업데이트 시간
        var date = js[id]['date'];
        var tmpHour = date.substring(8, 12);

        if (tmpHour >= 1510) {
            $('.time').html('장마감 (' + date.substring(0, 4) + '.' + date.substring(4, 6) + '.' + date.substring(6, 8) + ')');
        }
        else {
            $('.time').html(date.substring(4, 6) + '-' + date.substring(6, 8) + '  ' + date.substring(8, 10) + ':' + date.substring(10, 12));
        }
    },

    stockLoad: function () {
        $.ajax(
			{
			    type: "get",
			    url: StockKor.JISU_URL + '?' + new Date().getTime(),
			    dataType: "json",
			    success: function (data) {
			        var json = data[0]; // JSON 이 배열로 되어 있음.
			        StockKor.updateJisu(json, 'KOSPI');
			        StockKor.updateJisu(json, 'KOSDAQ');

			        //디자인된 데이터가 깜박이는 것을 막기 위해 
			        //HTML 에 display:none  처리 한후 데이터 삽입 후 보여줌.
			        $('.top_stmk').show();

			        // 5분마다 갱신
			        setTimeout(StockKor.stockLoad, 1000 * 60 * 5);
			    }
			    // error: function (data) { alert('stockLoad Error:' + data); }
			});
    }
}
