function removeAllchildrens(parentElement){
    while(parentElement.firstChild){
        parentElement.removeChild(parentElement.firstChild);
    }
}

function appendYear(selectElement, year, endYear){
    var opt = document.createElement("option");
    opt.value = year;
    opt.innerHTML = year;
    if(year == endYear){
        opt.setAttribute("selected", "true");
    }
    selectElement.appendChild(opt);
}

function openYearInputBoard(cdromId, cdromName, yearInfo){
    $('cdrom_id_4_year_input').innerHTML = cdromId;
    $('cdrom_name_4_year_input').innerHTML = cdromName;
    $('hidden_cdromId').value = cdromId;
    $('input_error_msg').innerHTML = '';
    $('year_record_info').innerHTML = yearInfo;
    
    var strAry = yearInfo.split("-");
    var cur = new Date();
    var startYear = parseInt(cur.getFullYear());
    var endYear = parseInt(cur.getFullYear());
    if(strAry.length == 2){
        startYear = parseInt(strAry[0]);
        endYear = parseInt(strAry[1]);
    }else if(strAry.length == 1){
        startYear = parseInt(strAry[0]);
        endYear = startYear;
    }
    
    removeAllchildrens($('start_year'));
    removeAllchildrens($('end_year'));
    
    for(var year = endYear; year >= startYear; year--){
        appendYear($('start_year'), year, endYear);
        appendYear($('end_year'), year, endYear);
    }
    $('year_count').innerHTML = '1';

    board = $('periodical_issue_select_panel');
    bg_mask = $('mask');

    bg_mask.style.width = document.body.scrollWidth + 'px';
    bg_mask.style.height = document.body.scrollHeight + 'px';
    bg_mask.style.display = 'block';
    board.style.display = 'block';
    board.style.top = (document.documentElement.clientHeight - board.offsetHeight)/2 + document.body.parentNode.scrollTop + 'px';
    board.style.left = (document.documentElement.clientWidth - board.offsetWidth)/2 + 'px';
}

function closeYearInputBoard(){
    board = $('periodical_issue_select_panel');
    bg_mask = $('mask');
    
    bg_mask.hide();
    board.hide();
}

function onInputChanged(){
    var startYear = getValidYear($F('start_year'));
    var endYear = getValidYear($F('end_year'));
    if(isNaN(endYear - startYear) || (endYear - startYear) < 0) {
        $('input_error_msg').innerHTML = '结束年份不能小于开始年份！';
        $('year_count').innerHTML = '0';
    } else {
        $('input_error_msg').innerHTML = '';
        $('year_count').innerHTML = endYear - startYear + 1;
    }
}

function commitCdromOrderFrom(){ 
    var years = parseInt($('year_count').innerHTML);
    if(isNaN(years) || years == 0){
        $('input_error_msg').innerHTML = '结束年份不能小于开始年份！';
    } else {
        var url = 'orderCdrom.action';
        var params = $('cdrom_order_form').serialize();
        var myAjax = new Ajax.Request(url,
            {
                method: 'post',
                parameters: params,
                onSuccess: onOrderCdromSucceed,
                onFailure: onOrderCdromFailed
            }
        );
    }
}

function orderCdrom(cdromId, cdromName, yearInfo, needInputYear){
    if(needInputYear){
        openYearInputBoard(cdromId, cdromName, yearInfo);
        return;
    }
    if(cdromId == null){
        return;
    }
    var url = 'orderCdrom.action';
    var params = 'cdromId=' + cdromId;
    var myAjax = new Ajax.Request(url,
        {
            method: 'post',
            parameters: params,
            onSuccess: onOrderCdromSucceed,
            onFailure: onOrderCdromFailed
        }
    );
}

function onOrderCdromSucceed(request){
    closeYearInputBoard();
    var result = request.responseText.evalJSON();
    if(result.errorTip){
        alert("订购失败，请稍后重试");
    } else
        alert("订购成功，已添加到购物车中");
}

function onOrderCdromFailed(request){
    closeYearInputBoard();
    alert("服务器内部错误，请稍后重试");
}

function getValidYear(year){
    if(year.length != 4){
        return "";
    }else{
        var date = new Date(year, 0, 0);
        return date.getFullYear();
    }
}