function loadSelection(){
        var checkedIds = init_array();
        get_array('Checked_Ids', checkedIds);
    checkboxes = document.odds.category_ids;
    for (i = 0; i < checkboxes.length; i++){
        checkbox = checkboxes[i];
        var _checked = false;
        var idsLength = next_entry(checkedIds);
        for (j = 1; j < idsLength; j++){
            if (checkbox.value == checkedIds[j]){
                _checked = true;
                break;
            }
        }
        checkbox.checked = _checked;
    }
}

function saveSelection(){
    var timeToKeep = 6000000; // one hundrend minute
    var expires = new Date();
    expires.setTime(expires.getTime() + timeToKeep);
    checkboxes = document.odds.category_ids;
    var checkedIds = init_array();
    var index = 1;
    for (i = 0; i < checkboxes.length; i++){
        checkbox = checkboxes[i];
        if (checkbox.checked){
            checkedIds[index++]=checkbox.value;
            if (index > 200){
                break;
            }
        }
    }
    set_array("Checked_Ids", checkedIds, expires);
}

function clearSelection(){
    checkboxes = document.odds.category_ids;
    for (i = 0; i < checkboxes.length; i++){
        checkbox = checkboxes[i];
        checkbox.checked = false;
    }
    saveSelection();
}

function isIE() {
    return navigator.appName.indexOf("Microsoft") != -1;
}

function hot_keys(event){
    event = (event) ? event : ((window.event) ? event : null);
    if (event){
        var KEY_ESC = 27;
        var KEY_ENTER = 13;
        var KEY_F2 = 113;
        var code = (event.charCode) ? event.charCode : ((event.which) ? event.which : event.keyCode);
        if (code == KEY_F2 || code == KEY_ENTER){
            var active = event.srcElement? event.srcElement : event.target;
            if (active == document.getElementById('query') ||
                active == document.getElementById('searchbyname')){
                document.getElementById('searchbyname').click();
            }else if (active == document.getElementById('ending') ||
                 active == document.getElementById('selectbytime')){
                document.getElementById('selectbytime').click();
            }else if (document.getElementsByName('continue').length > 0)
                document.getElementById('continue').click();
            if (isIE() && code == KEY_ENTER)
                // IE hack: the IE browser treats the Enter key as a system key: submit
                // the default form. After the calling click() above, it will return
                // the second odds page, and then IE browser will apply the system
                // key "Enter" in the return page. So we need to cancel the key event
                // for browser.
                // Warning: event.returnValue is not supported by FF and W3C, and only
                //          works for IE5+
                event.returnValue = false;
        }
        else if (code == KEY_ESC && document.odds != null){
            clearSelection();
        }
    }
}

function selectScorecastOC(game_id, sender, ocs_id) {
    var td = sender.parentNode.parentNode;
    var selection_list = td.getElementsByTagName("select");
    var player_id = selection_list[0].value;
    var score = selection_list[1].value;

    if(ocs_id == undefined) {
        return;
    }
    var oc_map = scorecast_data[ocs_id];
    var selected_oc_id_player = undefined;
    if (typeof(oc_map) != "undefined") {
        selected_oc_id_player = oc_map[player_id];
    }
    var selected_oc_data = selected_oc_id_player != undefined ? selected_oc_id_player[score] : undefined;
    var tr = td.parentNode;
    var link = findElement(tr, "a", new RegExp("bet_link.*"));
    var message = findElement(tr, "span", new RegExp("no_oc_message_.*"));
    var odds_no_option = findElement(tr, "span", new RegExp("odds_eq_1_.*"));
    var hide_className = "odds display_hidden"
    var show_className = "odds display_block"

    link.href = "#";
    link.style.display = "none";
    odds_no_option.className = hide_className;
    message.className = hide_className;

    if (selected_oc_data == undefined) {
        message.className = show_className;
    } else {
        if (selected_oc_data["clickable"]) {
            link.href = selected_oc_data["link"];
            link.style.display = "block";
        } else {
            odds_no_option.className = show_className;
        }
    }
    for(var i = 0; i < link.childNodes.length; i++) {
        var node = link.childNodes[i];
        if (node.id == undefined) {
            continue;
        }
        var node_odds_style = node.id.substr(node.id.indexOf("_") + 1);
        node_odds_style = node_odds_style.substr(0, node_odds_style.indexOf("_"));
        node.id = node.id.substr(0, node.id.lastIndexOf("_") + 1)
                      + (selected_oc_data ? selected_oc_data["id"] : "");
        node.innerHTML = selected_oc_data ? selected_oc_data.odds[node_odds_style] : "";
    }
}

function showSMSPopup(season_id, game_id) {
    var popup = $("sms_popup");
    if(game_id) {
        var param = '?game_id=' + game_id;
        popup.className = "sms_popup_game";
    } else if(season_id) {
        var param = '?season_id=' + season_id;
        popup.className = "sms_popup_season";
    } else {return;}

    var request = getHttpRequest();
    request.onreadystatechange = function() {
        if(request.readyState == 4) {
            var resp;
            if(request.status == 200)
                resp = request.responseText;
            else {
                alert(getDefaultErrorMessage());
                return;
            }
            if(resp.indexOf('invalid_mobile', 0) != -1) {
                hidePopups();
                resp = eval("("+resp+")");
                var modify_phone_num = confirm(resp.invalid_mobile);
                if (modify_phone_num === true)
                    window.location = "user";
                else
                    return;
            } else if(resp.indexOf('err_msg', 0) != -1) {
                hidePopups();
                resp = eval("("+resp+")");
                alert(resp.err_msg);
                return;
            } else {
                $('sms_resp').innerHTML = resp;
                $("sms_waitting_load").style.display = "none";
                $("sms_resp").style.display = "block";
                hidePopups();
                showCentralizedPopup(popup);
            }
        }
    }
    request.open("GET", '/livescore_sms_subscription' + param, true);
    request.send(null);
}

function subscribeSMS(what) {
    var form = $('sms_form_'+what);
    var radios = form.sms_result;
    var service_id = null;
    for(i=0; i<radios.length; i++) {
        if(radios[i].checked) {
            service_id = radios[i].value;
            break;
        }
    }
    if(!service_id) {return; }
    var params = "cmd=subscribe&service_id=" + service_id + "&" + what + "_id=" + form[what+'_id'].value;
    $("sms_resp").style.display = "none";
    $("sms_waitting_load").style.display = "block";
    var request = getHttpRequest();
    request.onreadystatechange = function() {
        if(request.readyState == 4) {
            var resp;
            if(request.status == 200)
                resp = request.responseText;
            else {
                alert(getDefaultErrorMessage());
                return;
            }
            if(resp.indexOf('invalid_mobile', 0) != -1) {
                hidePopups();
                resp = eval("("+resp+")");
                var modify_phone_num = confirm(resp.invalid_mobile);
                if (modify_phone_num === true)
                    window.location = "user";
                else
                    return;
            } else if(resp.indexOf('err_msg', 0) != -1) {
                hidePopups();
                resp = eval("("+resp+")");
                alert(resp.err_msg);
                return;
            } else {
                $('sms_resp').innerHTML = resp;
                $("sms_waitting_load").style.display = "none";
                $("sms_resp").style.display = "block";
            }
        }
    }
    request.open("POST", '/livescore_sms_subscription', true);
    request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    request.send(params);
}

/* howtoplay popup functions for odds how to play
* need common.js
* need howtoplay_popup.tpl
*/
function showHowToPlayPopup() {
   var popup = $("howtoplay_popup");
   var howtoplay_content = $("howtoplay_content");

   var request = getHttpRequest();
   request.onreadystatechange = function() {
       if(request.readyState == 4) {
           var resp;
           if(request.status == 200)
               resp = request.responseText;
           else
               alert(getDefaultErrorMessage());
           if(resp.indexOf('internalservererror', 0) != -1) {
               hidePopups();
               alert(getDefaultErrorMessage());
               return;
           }
           howtoplay_content.innerHTML = resp;

           hidePopups();
           showCentralizedPopup(popup);
           popup = null;
           request = null;
       }
   }
   var url = "/selection/how_to_play_doc_only.html"

   request.open("GET", url, true);
   request.send(null);
}

function adjustSelectionBodyHeight() {
    var margins = 220;
    var client_height = 900;
    var content_height;
    if(typeof(window.innerWidth) == 'number') {
        //Non-IE
        client_height = window.innerHeight;
    } else if(document.documentElement && (document.documentElement.clientWidth
                 || document.documentElement.clientHeight)) {
        //IE 6+ in 'standards compliant mode'
        client_height = document.documentElement.clientHeight;
    } else if(document.body && (document.body.clientWidth
                 || document.body.clientHeight)) {
        //IE 4 compatible
        client_height = document.body.clientHeight;
    }
    content_height = document.getElementById("selections-body").scrollHeight;
    document.getElementById("selections-scroll-area").style.height =
             (content_height < (client_height - margins)? content_height: (client_height - margins)) + 'px';
}

/* functions for draw drop down list begin */
function hideMenu(menu_name) {
    var menu = $(menu_name);
    menu.style.display = "none";
}

function closeOtherMenu(menu_name) {
    var menu_list = document.getElementsByClassAndTagName("menu", "div");
    for (var i = 0; i < menu_list.length; i++) {
        if (menu_list[i].id != menu_name) {
            hideMenu(menu_list[i].id);
        }
    }
}

var MAXHEIGHT = 260;
var MINWIDTH = 120;

function setMenuSize(menu_name) {
    var menu = $(menu_name);
    var width = menu.scrollWidth;
    var height = menu.scrollHeight;
    if (width < MINWIDTH) {
        width = MINWIDTH;
    }
    if (height > MAXHEIGHT) {
        height = MAXHEIGHT;
    }
    menu.style.width = width.toString() + "px";
    menu.style.height = height.toString() + "px";
}

function setSelectedItem(item_name, selector_name) {
    var value_selected = $(item_name).innerHTML;
    var li_list = $(selector_name).getElementsByTagName("li");
    for (var i = 0; i < li_list.length; i++) {
        if (li_list[i].innerHTML.strip() == value_selected.strip()) {
	    li_list[i].className = "selected";
	}
    }
}

function showBorder(first_item_name) {
    var selectbar = $(first_item_name);
    selectbar.className = "selectedbar";
}

function switchMenu(field_name) {
    var menu_name = field_name + "_menu";
    var selector_name = field_name + "_selector";
    var first_item_name = field_name + "_item0";

    var menu = $(menu_name);
    if (menu.style.display == "none") {
        menu.style.display = "block";
        setMenuSize(menu_name);
        setSelectedItem(first_item_name, selector_name);
        showBorder(first_item_name);
        closeOtherMenu(menu_name);
    } else {
        menu.style.display = "none";
    }
}

function chooseItem(field_name, li) {
    var input_name = field_name;
    var menu_name = field_name + "_menu";
    var first_item_name = field_name + "_item0";
    var input_value = li.id;
    var item_value = li.innerHTML;
    $(input_name).value = input_value;
    $(first_item_name).innerHTML = item_value;
    hideMenu(menu_name);
}

function hoverColor(selector, li) {
    var li_list = $(selector).getElementsByTagName("li");
    for (var i = 0; i < li_list.length; i++) {
	li_list[i].className = "";
    }
    li.className = "selected";
}

function normalColor(li) {
    li.className = "unselected";
}

var closeMenuOnBlur = function(e) {
    var onblur = true;
    if (e.target) {
        targ = e.target;     // W3C/Netscape
    } else if (e.srcElement) {
        targ = e.srcElement; // Microsoft
    }
    var bar = document.getElementsByClassAndTagName("bar", "div");
    for (var i = 0; i < bar.length; i++) {
        if (targ.parentNode == bar[i]) {
            onblur = false;
            break;
        }
    }
    if (onblur) {
        var menu_list = document.getElementsByClassAndTagName("menu", "div");
        for (var i = 0; i < menu_list.length; i++) {
            hideMenu(menu_list[i].id);
        }
    }
}

if (document.addEventListener) {
    document.addEventListener("click", closeMenuOnBlur, false);
} else if (document.attachEvent) {
    document.attachEvent("onclick", closeMenuOnBlur);
}

/* functions for draw drop down list end */
