// usage: <a href="[url]" onclick="popWin(this,'[window_name]','[width]','[height]' {,'_optional_options'}); return false;" ... >
var l,t,z;
function popWin(url,n,w,h,o) {
    if (w>screen.availWidth-12) w=screen.availWidth-12;
    if (h>screen.availHeight-48) h=screen.availHeight-48;
    l=(screen.availWidth-w-12)/2;
    t=(screen.availHeight-h-48)/2;
    z=window.open(url,n,'width='+w+',height='+h+',left='+l+',top='+t+','+o);
}

function launchMLBGameday(params) {
	if(params.indexOf("2007") != -1) {
		gamedayURL = 'http://mlb.mlb.com/mlb/gameday/y2007/gd.html?' + params;
		gd_w=980;
		gd_h=600;
		popWin(gamedayURL,'GamedayWin',gd_w,gd_h,'location=no,menubar=no,scrollbars=no,status=no,toolbar=no,resizable=yes');
	} else {
    	launchGameday(params);
	}
}

// gameday08
function launchGameday(params) {
	//backward compatibility for 05 and 06
	var baseURL = document.location.href.indexOf('qa') != -1 ? "http://qa2.mlb.com" : document.location.href.indexOf('beta') != -1 ? "http://beta.mlb.com" : "http://mlb.mlb.com",
		winName = "GamedayWin",
		isv4 = false,
		isMLBgame = false;
	var gamedayURL,
	    gd_w,
	    gd_h,
	    gd_windowOptions;

	/**
	 * objectify string parameters
	 */
	function _objectifyParams(){
		var kvp = params.replace(/^\?/i,'').split('&');
		var rParams = {};
		if(kvp instanceof Array) {
			kvp.reverse();
			var vpl = kvp.length-1;
			var vp, op;								
			do {
				vp = kvp[vpl].split('=');
				switch(true) {
					case ((rParams[vp[0]]!=null) && !(rParams[vp[0]] instanceof Array)):
						op = rParams[vp[0]];
						rParams[vp[0]] = [op, vp[1]];
						break;
					case (rParams[vp[0]] instanceof Array):
						rParams[vp[0]].push(vp[1]);
						break;
					case (vp[0].length === 26):
						rParams['gid'] = vp[0];
						break;
					default:			
						rParams[vp[0]] = vp[1];
				}
			} while(vpl--);
			kvp = null;
		}

		return rParams;
	}
	
	var paramsObj = window.paramsObj = (typeof(params)!='object') ? _objectifyParams() : params;

	var gid  = paramsObj.gid  || "";
	var mode = paramsObj.mode || "";
	var lurl = paramsObj.lurl || "#";
	var env  = paramsObj.env  || "";
	if(gid.substring(21,24) == "mlb" || gid.substring(21,24) == "min") { isMLBgame = true; }
	
	//2005
	if(gid.indexOf("2005") != -1) {
		gamedayURL = 'http://web.minorleaguebaseball.com/milb/gameday/y2005/gdmilb.html?' + gid + (env!='' ? '&env='+env : ''); 
		mode = 'gameday';
		gd_w=770;
		gd_h=600;
	//2006
	} else if(gid.indexOf("2006") != -1) {
		gamedayURL = '/mlb/gameday/y2006/gd.html?' + gid + (env!='' ? '&env='+env : '');
		mode = 'gameday';
		gd_w=770;
		gd_h=600;
	//2007
	} else if((gid.indexOf("2007") != -1) || (gid.indexOf("2008") != -1 && !isMLBgame)) { 
		gamedayURL = 'http://web.minorleaguebaseball.com/milb/gameday/y2007/gd.html?' + gid + (env!='' ? '&env='+env : '');
		mode = 'gameday';
		gd_w=980;
		gd_h=600;
	} else if(gid.indexOf("2008") != -1 && isMLBgame) { 
		isv4 = true;
		gamedayURL = 'http://mlb.mlb.com/mlb/gameday/index.jsp?gid=' + gid + ( mode != '' ? '&mode='+mode : '' ) + ( env != '' ? '&env='+env : '' );
		gd_w=window.innerWidth;
		gd_h=window.innerHeight;
	}

	//using window.open so it pops in tabs
	if (!isv4 && mode=='gameday') {
		gd_windowOptions = 'location=no,menubar=no,scrollbars=no,status=no,toolbar=no,resizable=yes';
		popWin(/*baseURL+*/gamedayURL,'GamedayWin',gd_w,gd_h,gd_windowOptions);
	} else if (!isv4) {
		window.location.href = lurl;
	} else {
		//using window.open so it pops in tabs
		window.open(/*baseURL+*/gamedayURL,gid);
	}
}
// sniff
var isWin = window.navigator.platform.toLowerCase().indexOf('win') != -1 ? 1:0;
var isMac = window.navigator.platform.toLowerCase().indexOf('mac') != -1 ? 1:0;
var isDOM = document.getElementById ? 1:0;
var isIE = document.all ? 1:0;
var isIE4 = isIE && !isDOM ? 1:0;
var isIE5 = isIE && isDOM ? 1:0;
var isNS = navigator.appName=='Netscape';
var isNS4 = isNS && !isDOM ? 1:0;
var isNS6 = isNS && isDOM ? 1:0;
var isOp = window.opera ? 1:0;
var isDyn = isDOM||isIE||isNS4;
function copyArray(a) {
    if (a==null) {
        return null;
    }
    var ret=[];
    for (var i=0; i<a.length; i++) {
        ret[i]=a[i];
    }
    return ret;
}
// from mlb.com/scripts/util.js
function getTwoDigitValue(number) {
    if (number.length > 1) {
        return number;
    } else {
        return "0" + number;
    }
}
function urlEncode(str) {
    str = escape(str);
    str = str.replace(/\+/g, "%2b");
    str = str.replace(/ /g, "+");
    return str;
}
function urlDecode(str) {
    str = str.replace(/\%2[B,b]/g, "+");
    str = unescape(str);
    return str;
}
function trimString(str) {
    if (str == null) { return null; }
    if (str.length == 0) { return ""; }
    var ret = "" + str;
    while (ret.charAt(0) == " ") {
        ret = ret.substring(1, ret.length);
    }
    while (ret.charAt(ret.length-1) == " ") {
        ret = ret.substring(0, ret.length-1);
    }
    return ret;
}
function truncateString(str, length, suffix) {
	if (str.length <= length) {
		return "" + str;
	}
	var ret = str.substring(0, length);
	ret = ret.substring(0, ret.lastIndexOf(" ")) + suffix;
	return ret;
}
function writeString(string) { // in external file, allows flash in IE to bypass activex issue
    document.write(string);
}
//--util for including other js
function includeJS(){
	if(arguments.length>0) INCLUDE=arguments;
	if(typeof INCLUDE!="undefined"){
		for(var i=0;i<INCLUDE.length;i++){
			document.writeln("<scr"+"ipt src='/scripts/"+INCLUDE[i]+".js' type='text/javascript'></scr"+"ipt>");
		}
	}
}

