    //  Der Spiel Ajax and DOM controls
    //  April 2006 Mark Bold
    //  Please feel free to cut and paste
    
    function getEl (id) {
        var el = '';
        if( document.layers ) {
            el=document.layers[id]; }
        if( document.getElementById ) {
            el=document.getElementById(id); }
        if( document.all ) {
            el=document.all[id]; }
        if( document[id] ) {
            el=document[id]; }
        
        return el;
    }
    
    function highlightLeague () {
            var lg = getEl ('league_select');
            lg.className = 'league_selector_on';  
    }
    
    function fadeLeague () {
            var lg = getEl ('league_select');
            lg.className = 'league_selector_off';              
    }
    
    function switch_league_team () {
            var lgid = getEl ('league_select').value
            window.location = '/?team_id=' + lgid + '&zone=league_team';
            //return false;
    }
    
    function updateName () {
        var nm = getEl('team_name');
        var id = getEl('team_ident').value;
        
        if (nm.value != '') {
          
            var req = false;
            req = createRequest();

            if (!req) {
                return false;
            }
            req.open ('POST', '/ajax/save-player.php', true);
            req.onreadystatechange = function () { finishupdateName (req, nm); };
            req.setRequestHeader ('Content-Type','application/x-www-form-urlencoded');
            req.send ('team_ident=' + id + '&name=' + nm.value + '&action=name');
        }
    }

    function finishupdateName (http_request, nm) {
        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
                    nm.className = 'team_name_off';
            } 
        }
    }  
    
    function highlightName () {
            var nm = getEl('team_name');
            nm.className = 'team_name_on';
    }

    
    function team_chooser () {
        var ta = getEl('select_formation');
        var tc = getEl('team_chooser');
        var id = getEl('team_ident').value;
        
        var req = false;
        if (ta.value != 0) {
            req = createRequest();
        
            tc.innerHTML = '<div class="team_section"><p>Loading...</p></div>';

            if (!req) {
                tc.innerHTML = 'Your browser is perhaps too old or unusual.';
                return false;
            }
            req.open ('GET', '/ajax/team-formation.php?form=' + ta.value + '&ident=' + id, true);
            req.onreadystatechange = function () { listFormation (req, tc); };
            req.send (null);
        }
    }
    
     
    function listFormation (http_request, tc) {
        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
                    tc.innerHTML =  http_request.responseText;

                    var ct = getEl ('clear-text');
                    ct.innerHTML = '[ <a onclick="clearTeam();">Clear team</a> ]';
                    
                    showFormation();                 
            } else {
                tc.innerHTML = 'Unable to get team selector.';
            }
        }
    }   
    
    
    function showFormation () {
        var ta = getEl('select_formation');
        var pb = getEl('pitch_background');
        var id 	= getEl('team_ident').value;
        
        var req = false;
        
        if (ta.value != 0) {
            req = createRequest();

            if (!req) {
                pb.innerHTML = 'Your browser is perhaps too old or unusual.';
                return false;
            }
            req.open ('GET', '/ajax/show-formation.php?ident=' + id, true);
            req.onreadystatechange = function () { finishShowFormation (req, pb); };
            req.send (null);
        }  
    }
    
    function finishShowFormation (http_request, pb) {
         if (http_request.readyState == 4) {
            if (http_request.status == 200) {
                    pb.innerHTML =  http_request.responseText;
            } else {
                    pb.innerHTML = 'Unable to get team selector.';
            }
        }
    }      
        
    
    function player_select (pl) {
            var player = getEl('player-' + pl);
            var wt     = getEl('warning-text');
            var st     = getEl('save-text');
           
            player.style.backgroundColor = '#fff';
            wt.innerHTML = '';
            st.innerHTML = '';
            
            
            var allset = 1;
            var dupchk = 0;
            
            for (var i=1;i<12;i++) {
                    var ot = getEl('player-' + i);

                    if (ot.value == 0) {
                                allset = 0;
                    }
                    
                    // need check to see if duplicates
                    
                    for (var j=1;j<12;j++) {
                            var dupt = getEl('player-' + j);
                
                            if (i != j) {
                                if (dupt.value == ot.value) {
                                        dupchk = 1;
                                }
                            }
                    }

            }
            
            if (allset == 1 && dupchk == 0) {
                    st.innerHTML = '[ <a onclick="confirmTeam();">Confirm team</a> ]';
            }
            
            
            
            
            // check if player already selected
            mtch = 0;
            for (var i=1;i<12;i++) {
                    var ot = getEl('player-' + i);
                
                    if (i != pl) {
                        if (ot.value == player.value && player.value != 0) {
                                mtch = 1;
                                player.style.backgroundColor = '#FFFF00';
                                wt.innerHTML = 'Cannot place a country twice in the same team';
                        }
                    }
            }
            
            if (mtch == 0 && player.value != 0) {
                saveTeamPlayer (pl, player.value);
            }

    }
    function clearTeam () {
    
            // confirm before continuing ...
            if (!confirm ('Really clear this team?'))
                    return false;
            
            var id = getEl('team_ident').value;
 
            var req = createRequest();

            if (!req) {
                return false;
            }
            req.open ('GET', '/ajax/save-player.php?team_ident=' + id + '&action=clear', true);
            req.onreadystatechange = function () { finishclearTeam (req); };
            req.send (null);
    }
    
    function finishclearTeam (http_request) {
        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
                    // delay show to allow for Mysql update
                    var st     = getEl('save-text');
                    st.innerHTML = '';
                    setTimeout ("team_chooser()", 1000);
            }
        }
    }    
    
    function confirmTeam () {
    
            var id = getEl('team_ident').value;
            var nm = getEl('team_name');
            if (nm.value == '') {
                    nm.className = 'team_name_warning';
                    var wt     = getEl('warning-text');
                    wt.innerHTML = 'Please select a team name!';
                    
                    return false;
            }
            
            
            var req = createRequest();

            if (!req) {
                return false;
            }
            req.open ('GET', '/ajax/save-player.php?team_ident=' + id + '&action=confirm', true);
            req.onreadystatechange = function () { finishconfirmTeam (req); };
            req.send (null);
    }        
    
    function finishconfirmTeam (http_request) {
        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
            
                    var st     = getEl('save-text');
                    st.innerHTML = '';
                    
                    teamHighlight('#eef9e4');
                    setTimeout("teamHighlight('#fff')", 2000);
                    
                    alert ("Your team edits have been confirmed.\nYou are free to make further changes, just remember to click [confirm] when you're done!");
            }
        }
    }
    
    function teamHighlight (cl) {
            for (var i=1;i<12;i++) {
                    var ot = getEl('player-' + i);
                    ot.style.backgroundColor = cl;
            }
    }

         
    function saveTeamPlayer (pos, player) {
            var id 	= getEl('team_ident').value;
            var posEl 	= getEl('player-' + pos);

            var req = createRequest();

            if (!req) {
                return false;
            }
            req.open ('POST', '/ajax/save-player.php', true);
            req.onreadystatechange = function () { finishsaveTeamPlayer (req, posEl); };
            req.setRequestHeader ('Content-Type','application/x-www-form-urlencoded');
            req.send ('team_ident=' + id + '&pos=' + pos + '&player=' + player + '&action=player');
    }
    
    
    function finishsaveTeamPlayer (http_request, posEl) {
        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
                    posEl.style.backgroundColor = '#eee';
                                    
                    // delay show to allow for Mysql update
                    setTimeout ("showFormation()", 1000);
            }
        }
    }
    
    function show_country_profile (id) {
            var cid = getEl ('player-profiles').value;
            var disp = getEl ('country_profile_display');
            if (cid == 0)
                    cid = id;
                    
            if (cid != 0) {
                var req = createRequest();
        
                disp.innerHTML = '<div style="height:370px;"><p>Loading...</p></div>';

                if (!req) {
                    return false;
                }
                req.open ('GET', '/ajax/country-profile.php?cid=' + cid, true);
                req.onreadystatechange = function () { displayProfile (req, disp); };
                req.send (null);
            }
    }
    
    function displayProfile (http_request, disp) {
        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
                    disp.innerHTML =  http_request.responseText;
            }
        }
    }            
    
    function createRequest () {
    
            var http_request = false;
            
            if (window.XMLHttpRequest) { // Mozilla, Safari,...
                http_request = new XMLHttpRequest();
                if (http_request.overrideMimeType) {
                    http_request.overrideMimeType('text/xml');
                }
            } else if (window.ActiveXObject) { // IE
                try {
                    http_request = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                    try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) { // well, not much will happen here....   
                            }
            }
        }
                    
     return http_request;
    }
    
    function validemail (email) {
        var pattern = /^[\w\-\.]+@[\w\-\.]+\.[A-Za-z\-]{2,4}$/;
        if (pattern.test (email))
            return true;
        else
            return false;
    }