function _dge(id) {
	var obj = null
	if( id ) obj = document.getElementById(id);
	return obj;
}

function scoreboard_toggle(a) {
    var view_port = document.getElementById('view_port');
    if (a.innerHTML == 'Show all scores') {
        view_port.style.cssText = 'height: auto;';
        a.innerHTML = 'Hide scores';
    } else {
        view_port.style.cssText = 'height: 185px;';
        a.innerHTML = 'Show all scores';
    }
    return false;
}

function scoreboard() {
	callback = {
				success : function(o) {
                    if (o.responseText) {
    				    var scoreboard = document.getElementById('scoreboard');
    				    scoreboard.style.cssText = 'display: block';
                        scoreboard.innerHTML = o.responseText;				        
                    }
				},
				failure : function(o) {
                    // alert(o);
				}
	};
	var sUrl = "/ajax/no-cache/scoreboard-data.html";
	y =  YAHOO.util.Connect.asyncRequest('GET', sUrl, callback, null);
}

function make_sortable(tableId) {
    
    var table = _dge(tableId);
    
    if (!table.tHead) { //Should alternate to first row
        return false;
    }
    
    var hCol = table.tHead.rows[0];
    var cells = hCol.cells;
    for (var x=0;x<cells.length;x++) {
        cells[x].onclick = new Function('sort_table(this,"desc")');
        cells[x].onmouseover = function() {document.body.style.cursor='pointer'; this.style.color = '#293C4F';}
        cells[x].onmouseout = function() {document.body.style.cursor='auto'; this.style.color = '#FFFFFF';}
    }
}

function sort_table(col, dir) {
    
    var hrow = col.parentNode;
    for (var x=0;x<hrow.cells.length;x++) {
        if (hrow.cells[x].childNodes.length > 1) {
            hrow.cells[x].removeChild(hrow.cells[x].childNodes[1]);
        }
    }
    var img = document.createElement('img');
    if (dir == 'desc') {
        img.setAttribute('src', '/static/img/sort-arrow-down.png');
    }
    else {
        img.setAttribute('src', '/static/img/sort-arrow-up.png');
    }
    col.appendChild(img);
    function ret_tbody(col) {
        while(col && !col.tBodies) {
            col = col.parentNode
        }
        if (!col) {
            return false;
        }
        return col.tBodies[0];
    }
    
    
    var tBody = ret_tbody(col);
    var rows = tBody.rows;
    var cellIndex = col.cellIndex;
    
    if (!rows.length) {
        return false;
    }
    
    if (rows[0].cells[cellIndex].innerHTML.match(/[a-zA-Z]/)) {
        cmp = function(a,b,i) {
            if (a.cells[i].innerHTML.match(/<a.+href/i)) {
                a = a.cells[i].innerHTML.match(/>(.+)<\/a>/i)[1];
                b = b.cells[i].innerHTML.match(/>(.+)<\/a>/i)[1];
                return a > b;
            }
            else {
                return a.cells[i].innerHTML > b.cells[i].innerHTML;
            }
        }
    }
    else if (rows[0].cells[cellIndex].innerHTML.match(/\d+'\d+|\d+-\d+]/)) {
        
        cmp = function(a,b,i)
        {
            a = a.cells[i].innerHTML;
            b = b.cells[i].innerHTML;
            a = a.replace(/ \d+\%/,'');
            b = b.replace(/ \d+\%/,'');
            a = parseFloat(a.replace(/['-]/,''));
            b = parseFloat(b.replace(/['-]/,''));
            return a > b;
        }
    }
    else if (rows[0].cells[cellIndex].innerHTML.match(/\d{1,2}\/\d{1,2}\/\d{2,4}/)) {
        cmp = function(a,b,i)
        {
            a = new Date(a.cells[i].innerHTML);
            b = new Date(b.cells[i].innerHTML);
            return a.getTime() > b.getTime();
        }
    }
    else if (rows[0].cells[cellIndex].innerHTML.match(/\d+/) || rows[0].cells[cellIndex].innerHTML.match(/\d{1,}\s\-\s\d{1,}/)) {
        cmp = function(a,b,i)
        {
            a = a.cells[i].innerHTML;
            b = b.cells[i].innerHTML;
            a = a.replace(/[\n\s]/g,'');
            b = b.replace(/[\n\s]/g,'');
            if (a == '-') {
                a = '-99999999';
            }
            if (b == '-') {
                b = '-99999999';
            }
            a = a.replace(/\s-\s\d+\%/,'');
            b = b.replace(/\s-\s\d+\%/,'');
            return (parseFloat(eval(a)) > parseFloat(eval(b)));
        }
    }
        
    t = qsort(tBody,cmp,cellIndex);
    
    var x=0;
    if (dir == 'desc') {
        while (t.rows.length > 0) {
            tBody.appendChild(t.rows[x]);   
        }
        col.onclick = new Function('sort_table(this,"asc")');
    }
    else {
        if (tBody.rows.length == 0) {
            tBody.appendChild(t.rows[0])
        }
        while (t.rows.length > 0) {
            tBody.insertBefore(t.rows[x],tBody.rows[0]);   
        }
        col.onclick = new Function('sort_table(this,"desc")');
    }
}

function getInternetExplorerVersion() {
	// Returns the version of Internet Explorer or a -1
	// (indicating the use of another browser).
	var rv = -1; // Return value assumes failure.
	if (navigator.appName == 'Microsoft Internet Explorer') {
		var ua = navigator.userAgent;
		var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
		if (re.exec(ua) != null) {
			rv = parseFloat( RegExp.$1 );
		}
	}
	return rv;
}


function qsort(a, cmp, index) {
    if (a.rows.length == 0) return document.createElement('tbody'); 
    var left = document.createElement('tbody');
    var right = document.createElement('tbody');
    var pivot = a.rows[0];
    var i=1;
    while(a.rows.length > 1) {
        if (cmp(a.rows[i], pivot, index)) {
            left.appendChild(a.rows[i]);
        }
        else {
            right.appendChild(a.rows[i]);
        }
    }
 
    var q = qsort(left, cmp, index);
    q.appendChild(pivot);
    var r = qsort(right, cmp, index);
    var x=0;
    while (r.rows.length > 0) {
        q.appendChild(r.rows[x])
    }

    return q;
}

function make_tables_sortable() {

    var ver = getInternetExplorerVersion();
    if (ver == 6 || ver == 7) {
        return false;
    }
    var tables = document.getElementsByTagName('TABLE');
    for (var x=0;x<tables.length;x++) {
        if (tables[x].id && tables[x].id != "game_schedules") {
            make_sortable(tables[x].id);
        }
    }
}

if(document.addEventListener) {
	document.addEventListener("DOMContentLoaded", new Function('make_tables_sortable()'), false);
}
//IE
else {
	document.onreadystatechange = new Function('make_tables_sortable()');
}

function getElementsByName_iefix(tag, name) {

     var elem = document.getElementsByTagName(tag);
     var arr = new Array();
     for(var i = 0,iarr = 0; i < elem.length; i++) {
          att = elem[i].getAttribute("name");
          if(att == name) {
               arr[iarr] = elem[i];
               iarr++;
          }
     }
     return arr;
}



function vote_now(id) {
	var callback = {
					success : function(o) {
						json = eval('('+o.responseText+')');
						if (json.rows.length > 0) {
							var rows = json.rows;
							poll = _dge('polllist'+rows[0].poll_id);
							poll.innerHTML = '';
							for (var x=0;x<rows.length;x++) {
								var li = document.createElement('li');
								var txt = rows[x].choice + ' - ' + rows[x].votes;				
								txt = document.createTextNode(txt);
								li.appendChild(txt);
								poll.appendChild(li);
							}
							_dge('poll'+rows[0].poll_id).removeChild(_dge('vote'))
						}
					},	
					failure : function(o) {
						//Handle Failure
					}
	}
	var poll = _dge(id);
	var choices = document.getElementsByName('choice'+id.replace('poll',''));
	for(var x=0;x<choices.length;x++) {
		if (choices[x].checked) {
			choice = choices[x].value;
			var sUrl = "/vote?choice="+choice
			y =  YAHOO.util.Connect.asyncRequest('GET', sUrl, callback, null);
		}
	}
}


scroll_ticker = document.all ? 5 : 5;
scroll_size = document.all ? 5 : 5;
scrolltimer = null;
scroll_timeval = null

function setup_scroll() {
	var obj = _dge('scroll_gallery');
	obj.style.left = '0px';
	obj.style.position = 'relative';
	var s_left = _dge('scroll_left');
	if( s_left ) {
		s_left.onmouseover = new Function("do_scroll('right')");
		s_left.onmouseout = new Function("stop_scroll()");
		s_left.onmousedown = new Function("scroll_size += 10");
		s_left.onmouseup = new Function("scroll_size -= 10");
	}
	var s_right = _dge('scroll_right');
	if( s_right ) {
		s_right.onmouseover = new Function("do_scroll('left')");
		s_right.onmouseout = new Function("stop_scroll()");
		s_right.onmousedown = new Function("scroll_size += 10");
		s_right.onmouseup = new Function("scroll_size -= 10");
	}
}

function do_scroll(dir) {
	scrolltimer = setInterval('scroll_'+dir+'()', scroll_ticker);
}

function scroll_right() {
	var obj = _dge('scroll_gallery');
	obj.scrollLeft -= scroll_size;
}

function scroll_left() {			
	var obj = _dge('scroll_gallery');
	obj.scrollLeft += scroll_size;
}

function stop_scroll(div) {
	clearInterval(scrolltimer);
	scroll_size = 5;
}

function show_image(obj, count) {
    var dest = _dge('img_holder');
    var dest_caption = _dge('gallery_main_caption');
    if( dest ) {
        var dest_img = (dest.getElementsByTagName('img'))[0];
        var src_img = (obj.getElementsByTagName('img'))[0];
        if( src_img && dest_img ) {
        	var caption = src_img.getAttribute('img_caption');
        	//if( !caption ) caption = src_img.getAttribute('normal_src').replace(/(.*)\/([^\/]+)$/i, '$2');
        	dest_img.src = src_img.getAttribute('normal_src');
        	dest_img.className = ( src_img.className == 'vertical' ) ? 'vertical' : '';
        	dest_img.title = caption ? caption : ''; 
        	_dge('dest_caption').innerHTML = caption ? caption : '&nbsp;';
        }
    }
}

function navigate_gallery_image(next) {
	if( document.getElementById('scroll_gallery') ) {
		var main_img = (document.getElementById('img_holder').getElementsByTagName('img'))[0];
		var thumb_links = document.getElementById('scroll_gallery').getElementsByTagName('a');
		for( var i = 0; i < thumb_links.length; i++ ) {
			var thumb = (thumb_links[i].getElementsByTagName('img'))[0];
			if( thumb && main_img.src.indexOf(escape(thumb.getAttribute('normal_src'))) != -1 ) {
				var pos = next ? (i+1) : (i-1);
				if( pos < 0 ) pos = 0;
				if( pos > (thumb_links.length-1) ) pos = (thumb_links.length-1);
				show_image(thumb_links[pos],(pos+1))
				break;
			}
		}
	}
}

function available_sports(inpt) {
    curValue = _dge('sport').value;
    callback = {
        success : function(o) {
            json = eval('('+o.responseText+')');
            sport = _dge('sport');
            sport.length=0;
            var option = document.createElement('option');
            option.value = "";
            option.innerHTML = 'SPORT';
            option.selected = true;
            sport.appendChild(option);
            for (var x=0;x<json.sports.length;x++) {
                var option = document.createElement('option');
                option.value = json.sports[x].id;
                option.innerHTML = json.sports[x].name;
                if (option.value == curValue) {
                    option.selected = true;
                }
                sport.appendChild(option);
            }
        },
        failure : function(o) {
            //uh-oh
        }
    }
    
    
    var sUrl = "/available_sports?school_id="+inpt.value;
	y =  YAHOO.util.Connect.asyncRequest('GET', sUrl, callback, null);
}


function available_schools(inpt) {
    curValue = _dge('school').value;
    callback = {
        success : function(o) {
            json = eval('('+o.responseText+')');
            school = _dge('school');
            school.length=0;
            var option = document.createElement('option');
            option.value = "";
            option.innerHTML = 'SCHOOL';
            option.selected = true;
            school.appendChild(option);
            for (var x=0;x<json.schools.length;x++) {
                var option = document.createElement('option');
                option.value = json.schools[x].id;
                option.innerHTML = json.schools[x].name;
                if (option.value == curValue) {
                    option.selected = true;
                }
                school.appendChild(option);
            }
        },
        failure : function(o) {
            //uh-oh
        }
    }
    
    var sUrl = "/available_schools?sport_id="+inpt.value;
	y =  YAHOO.util.Connect.asyncRequest('GET', sUrl, callback, null);
}

function flag(a, sUrl) {
    var a_id = a.getAttribute('id');
    var saved_flags = YAHOO.util.Cookie.get('flagged') || ''
    a.parentNode.innerHTML = 'flagged';

    if (saved_flags.indexOf(a_id) == -1) {
        saved_flags = saved_flags + ',' + a_id;
        YAHOO.util.Cookie.set('flagged', saved_flags, {
                                path:'/',
                                expires: new Date("January 1, 2050")})

        var callback = { 
            success: function(o) {}, 
            failure: function(o) {}, 
            argument: [],
            scope: this
        };

        YAHOO.util.Connect.asyncRequest('GET', sUrl, callback, null); 
    }    
    return false
}
