/**/
window.onerror = function(_message, _url, _line ) {
	var val = "";
	val += "&Msg="		+ escape(_message);
	val += "&Line="		+ _line;
	val += "&URL="		+ escape(_url);
	val += "&QS="		+ escape(location.search);
	val += "&Location="	+ escape(location.pathname);
	val += "&Referer="	+ escape(document.location.href);
	val += "&HTTPRef="	+ escape(document.referrer);
	val += "&Browser="	+ escape(navigator.userAgent + " : " + navigator.appName + " : " + navigator.appVersion);
	if( window.XMLHttpRequest)		this.req = new XMLHttpRequest();
	else if( window.ActiveXObject)	this.req = new ActiveXObject("Microsoft.XMLHTTP");
	else							return;
	this.req.open("GET", "/tbs/proc/?idx=JSErrorLog" + val);
	this.req.setRequestHeader("content-type", "text/plain");
	this.req.send("");
}
/**/
if( typeof(_tbs) == "undefined")
	var _tbs = {};
_tbs.Mozilla = /Mozilla\/5\.0/.test(navigator.userAgent) ? true : false;
function dwr( s ) {
	document.write( s );
}
_tbs.ConvertForURL = function( OrigString ) {
	return OrigString.replace( /([^a-zA-Z0-9]+)/, '_' );
}
_tbs.AddEvent = function(obj, evType, fn){ 
	if( obj.addEventListener ) {
		obj.addEventListener(evType, fn, false);
		return true;
	} else if( obj.attachEvent ) {
		return obj.attachEvent("on"+evType, fn);
	} else {
		return false;
	}
}
_tbs.SetCookie = function( cookieName, cookieValue, nDays, Path ) {
	var Extra	= '';
	if( Path)
		Extra = Extra + ';path=' + Path;
	if( nDays > 0 ) {
		var	today	= new Date();
		var	expire	= new Date();
		expire.setTime( today.getTime() + (3600000 * 24 * nDays) );
		Extra = Extra + ';expires=' + expire.toGMTString();
	}
	document.cookie = cookieName + '=' + escape(cookieValue) + Extra;
}
_tbs.GetCookie = function( c_name ) {
	if( document.cookie.length > 0 ) {
		var c_start = document.cookie.indexOf(c_name + "=");
		var c_end	= 0;
		if( c_start != -1 ) {
			c_start	= c_start + c_name.length + 1;
			c_end	= document.cookie.indexOf(";", c_start);
			if( c_end == -1)
				c_end = document.cookie.length;
			return unescape( document.cookie.substring( c_start, c_end ) );
		}
	}
	return "";
}
_tbs.ToggleAttribute = function( obj, DoEnable, TagName, Replacement ) {
	if( DoEnable ) {
		var TagValue = obj.getAttribute("back_" + TagName);
		if( TagValue != null ) {
			obj.setAttribute( TagName, TagValue);
			obj.removeAttribute("back_" + TagName);
		}
	} else {
		var Backup = obj.getAttribute( "back_" + TagName );
		if( Backup ) {
//			alert( Backup);
			return;
		}
		var TagValue = obj.getAttribute( TagName );
		if( TagValue != null ) {
			obj.setAttribute("back_" + TagName, TagValue);
		}
		obj.setAttribute(TagName, '');
		obj.removeAttribute( TagName );
		if( Replacement != null ) {
			obj.setAttribute( TagName, Replacement );
		}
	}
}
_tbs.AddElement = function( ElemRelative, InsertMethod, ElemType, Attribs, Styles ) {
	if( this.Mozilla ) {
		var NewElem = document.createElement( ElemType );
		for( var i in Attribs )	NewElem.setAttribute( i , Attribs[ i ] );
		for( var i in Styles )	NewElem.style[ i ] = Styles[ i ];
	} else {
		var ElemString	= "<" + ElemType;
		var StyleString	= "";
		for( var i in Attribs )	ElemString	= ElemString + " " + i + '="' + Attribs[ i ] + '"';
		for( var i in Styles )	StyleString	= StyleString + i + ":" + Styles[ i ] + ";";
		if( StyleString ) {
			ElemString = ElemString + ' style="' + StyleString + '"';
		}
		ElemString = ElemString + ">";
		var NewElem = document.createElement( ElemString );
	}
	switch( InsertMethod ) {
		case "insertBefore":ElemRelative.insertBefore( NewElem, null );	break;
		case "appendChild":	ElemRelative.appendChild( NewElem );		break;
	}
	return NewElem;
}
_tbs.HrefSafe = function( InString ) {
	var HrefRegEx	= /[^A-Za-z_0-9]+/gi;
	var MyString = new String( InString);
	MyString = MyString.replace(" ", "_");
	return MyString.replace( HrefRegEx, "");
}
_tbs.calculatePaging = function( Params ) {
	var Vals = {
		"Limit"	:0,
		"Per"	:0,
		"ECount":0,
		"Cur"	:0
	};
	var Prev	= false;
	var First	= false;
	var Next	= false;
	for( var v in Vals )	eval( "var " + v + "=" + parseInt(Vals[ v ]) + ";" );
	for( var v in Params )	eval( "var " + v + "=" + parseInt(Params[ v ]) + ";" );
	var Count	= Math.ceil(ECount / Per);
	var Last	= Count - 1;
	if( Last < 0)		Last = 0;
	if( Cur >= Count)	var Cur = Count - 1;
	if( Cur < 0)		var Cur = 0;
	var Offset = Cur - Math.floor(Limit / 2);
	if( Offset < 0)		var Offset = 0;
	if( Limit > Count)	var Limit = Count;
	if( (Limit + Offset) > Count)
		var Offset = Count - Limit;
	var Pages = Array();
	for( var i = 0; i < Limit; i++)
		Pages[ i ] = i + Offset;
	var firstShow	= (Cur * Per);
	if( ECount > 0)
		firstShow++;
	if( ECount < Per ) {
		var lastShow = ECount;
	} else {
		var lastShow = firstShow + Per - 1;
		if( lastShow > ECount)
			var lastShow = ECount;
	}
	if( Cur > 0 ) {
		var Prev = Cur - 1;
		if( Offset > 0)
			var First = 0;
	}
	if( Cur + 1 < Count )
		var Next = Cur + 1;
	return {
		"pages"		: Pages,
		"count"		: Count,
		"prev"		: Prev,
		"next"		: Next,
		"cur"		: Cur,
		"first"		: First,
		"last"		: Last,
		"firstShow"	: firstShow,
		"lastShow"	: lastShow
	};
}
_tbs.DateParse = function( DateString ) {
	var MyString	= new String( DateString);
	var DateSplit	= MyString.split(" ");
	var DaySplit	= DateSplit[0].split("-");
	var TimeSplit	= DateSplit[1].split(":");
	DaySplit[1]--;
	var DateObj		= new Date( DaySplit[0], DaySplit[1], DaySplit[2], TimeSplit[0], TimeSplit[1], TimeSplit[2] );
	return DateObj;
}
_tbs.DateSuffix = function( DayOfMonth ) {
	switch( DayOfMonth ) {
		case 1:
		case 21:
		case 31:	response.write("st");
		break;
		case 2:
		case 22:	response.write("nd");
		break;
		case 3:
		case 23:	response.write("rd");
		break;
		default:	response.write("th");
	}
}
_tbs.NumberPath = function() {
	var Depth = arguments[0];
	var IDNum = new String( arguments[1] );
	if( IDNum.length < Depth ) {
		var pad = "";
		for( var n = IDNum.length; n < Depth; n++)
			pad = pad + "0";
		var NumberDir = new String( pad + IDNum);
	} else {
		var NumberDir = new String( IDNum);
	}
	var Dir = "";
	for( var n = NumberDir.length - 2; n > 0; n-- ) {
		var CurDir = NumberDir.substr( n - 1, 1);
//		for( var i = NumberDir.length - n; i > 0; i--)
//			CurDir = CurDir + "0";
		Dir = CurDir + "/" + Dir
	}
	Dir = Dir + IDNum;
	return  Dir;
}
_tbs.PicDirIDPath		= function( IDNum ) { return _tbs.NumberPath(6, IDNum); }
_tbs.MovieIDPath		= function( IDNum ) { return _tbs.NumberPath(6, IDNum); }
_tbs.talentIdPath		= function( IDNum ) { return _tbs.NumberPath(6, IDNum); }
_tbs.affiliateIdPath	= function( IDNum ) { return _tbs.NumberPath(6, IDNum); }
_tbs.WindowSize = function() {
	var W = 0, H = 0;
	if( typeof( window.innerWidth ) == 'number' ) {
		//Non-IE
		W	= window.innerWidth;
		H	= window.innerHeight;
	} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		//IE 6+ in 'standards compliant mode'
		W	= document.documentElement.clientWidth;
		H	= document.documentElement.clientHeight;
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		//IE 4 compatible
		W	= document.body.clientWidth;
		H	= document.body.clientHeight;
	}
	return {
		Width	: W,
		height	: H
	};
}
_tbs.WindowScroll = function() {
	var X = 0, Y = 0;
	if( typeof( window.pageYOffset ) == 'number' ) {
		//Netscape compliant
		Y = window.pageYOffset;
		X = window.pageXOffset;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		//DOM compliant
		Y = document.body.scrollTop;
		X = document.body.scrollLeft;
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		//IE6 standards compliant mode
		Y = document.documentElement.scrollTop;
		X = document.documentElement.scrollLeft;
	}
	return {
		X:X,
		Y:Y
	};
}
/* start floating code */
_tbs.ShowFloat = function( event, FloatObj, BlurbContent ) {
	if( BlurbContent)
		FloatObj.innerHTML = BlurbContent;
	if( event)
		this.MoveFloat(event, FloatObj);
	FloatObj.style.visibility = 'visible';
}
_tbs.HideFloat = function( FloatObj ) {
	FloatObj.style.visibility = 'hidden';
}
_tbs.MoveFloat = function(event, FloatObj ) {
	_tbs.placeDisplay( event.clientX, event.clientY, FloatObj );
}
_tbs.placeDisplay = function( goalX, goalY, floatObj ) {
	var TMP = _tbs.WindowSize();
	var DocHeight	= parseInt( TMP['height'] ) - 20;
	var DocWidth	= parseInt( TMP['Width'] ) - 20;
	var TMP = _tbs.WindowScroll();
	var ScrollX	= parseInt( TMP['X'] );
	var ScrollY	= parseInt( TMP['Y'] );
	var MouseX	= parseInt( goalX );
	var MouseY	= parseInt( goalY );
	var LeftGoal = MouseX + ScrollX + 5;
	if( (LeftGoal + floatObj.offsetWidth) > DocWidth )
		LeftGoal = DocWidth - parseInt( floatObj.offsetWidth );
	var TopGoal = MouseY + ScrollY + 5;
	floatObj.style.top	= TopGoal + 'px';
	floatObj.style.left	= LeftGoal + 'px';
}
_tbs.PopulateSelect = function( SelectObj, PopulateArray ) {
	SelectObj.length = 0;
	for( var i = 0; i < PopulateArray.length; i++ ) {
		var CurVal = PopulateArray[ i ];
		var tmp = document.createElement('option');
		tmp.text	= CurVal['text'];
		tmp.value	= CurVal['value'];
		try		{ SelectObj.add(tmp, null);	}	// standards compliant; doesn't work in IE
		catch(E){ SelectObj.add(tmp);		}	// IE only
	}
}
/* end floating code */
_tbs.Searching = {}
_tbs.Searching.PopulateSelect = function( SearchVal, SelectObj, SearchArray, SearchMinimum ) {
	if( SearchMinimum == null ) {
		SearchMinimum = 3;
	}
	if( SearchVal.length < SearchMinimum ) {
		var tmp = '^' + SearchVal.toLowerCase() + '';
		var SearchRegex = RegExp( tmp );
	} else {
		var SearchRegex = RegExp( SearchVal.toLowerCase() );
	}
	var SelectList = new Array();
	for( var i in SearchArray ) {
		var CurTal = new String( SearchArray[ i ] );
		if( CurTal.toLowerCase().search( SearchRegex) != -1 ) {
			SelectList.push({
				text	: CurTal,
				value	: i
			});
		}
	}
	_tbs.PopulateSelect( SelectObj, SelectList );
}

_tbs.RemoteSelectOption = function( radioObj, RemoveValue ) {
	for( var i = radioObj.options.length - 1; i >= 0; i-- ) {
		if( radioObj.options[i].value == RemoveValue)
			radioObj.remove(i);
	}
}
_tbs.GetSelectValue = function( radioObj ) {
	if( !radioObj)
		return '';
	var radioLength = radioObj.length;
	if( radioLength == undefined)
		return radioObj.checked ? radioObj.value : '';
	for( var i = 0; i < radioLength; i++)
		if( radioObj[i].selected)
			return radioObj[i].value;
	return '';
}
_tbs.GetSelectText = function( radioObj ) {
	if( !radioObj)
		return '';
	var radioLength = radioObj.length;
	if( radioLength == undefined)
		return radioObj.checked ? radioObj.innerHTML : '';
	for( var i = 0; i < radioLength; i++)
		if( radioObj[i].selected)
			return radioObj[i].innerHTML;
	return '';
}
_tbs.GetRadioValue = function( radioObj ) {
	if( !radioObj)
		return '';
	var radioLength = radioObj.length;
	if( radioLength == undefined)
		if( radioObj.checked)
			return radioObj.value;
		else
			return '';
	for( var i = 0; i < radioLength; i++)
		if( radioObj[i].checked)
			return radioObj[i].value;
	return '';
}
_tbs.SetRadioValue = function( radioObj, newValue ) {
	if( !radioObj)
		return;
	var radioLength = radioObj.length;
	if( radioLength == undefined ) {
		radioObj.checked = (radioObj.value == newValue.toString());
		return;
	}
	for( var i = 0; i < radioLength; i++ ) {
		radioObj[i].checked = false;
		if( radioObj[i].value == newValue.toString())
			radioObj[i].checked = true;
	}
}
_tbs.Table = {};
_tbs.Table.Row = {};
_tbs.Table.Row.Add = function( TableID, Cells, RowNum, RowAttribs ) {
	var tbl = document.getElementById( TableID );
	var tbody = tbl.getElementsByTagName("TBODY")[0];
	RowsCount = tbody.getElementsByTagName("TR").length;
	if( RowNum == null )
		RowNum = RowsCount;
	var newRow = tbody.insertRow( RowNum );
	newRow.className = (RowNum % 2) ? 'Od' : 'Ev';
	if( RowAttribs ) {
		for( var i in RowAttribs ) {
			newRow.setAttribute( i, RowAttribs[ i ] );
		}
	}
	for( var i in Cells ) {
		var newCell = newRow.insertCell( i );
		newCell.innerHTML = Cells[ i ];
	}
	return newRow;
}
_tbs.Querystring = function(qs ) {
	this.params = new Object();
	this.get = function(key, default_ ) {
		if( default_ == null)
			default_ = null;
		var value = this.params[key];
		if( value == null)
			value = default_;
		return value;
	};
	if( qs == null)
		qs = location.search.substring(1,location.search.length);
	if( qs.length == 0)
		return;
	qs = qs.replace(/\+/g, ' ');
	var args = qs.split('&');
	for( var i=0; i < args.length; i++ ) {
		var value;
		var pair = args[i].split('=');
		var name = unescape( pair[0] );
		if( pair.length == 2)
			value = unescape( pair[1] );
		else
			value = name;
		this.params[name] = value;
	}
}

_tbs.columnList = function( data, linkStart, colCount, colMin, returnValue ) {
	var colLength	= Math.ceil( data.length / colCount );
	var o = '';
	o+= '<ul class="column">';
	var firstChar	= false;
	var rowsCount	= 0;
	for( var i = 0; i < data.length; ++i ) {
		switch( typeof( data[ i ] ) ) {
			case 'array':
			case 'object':
				var curChar = data[ i ][1].substr(0,1).toLowerCase();
				var isArray = true;
			break;
			default:
				var curChar = data[ i ].substr(0,1).toLowerCase();
				var isArray = true;
		}
		rowsCount++;
		if( rowsCount > colMin && rowsCount > colLength ) {
			if( firstChar ) {
				o+= '</ul>';
			}
			o+= '</ul>';
			o+= '<ul class="column">';
			rowsCount = 1;
			firstChar = '';
		}
		if( firstChar != curChar ) {
			if( firstChar ) {
				o+= '</ul>';
			}
			var firstChar = curChar;
			o+= firstChar + '<ul>';
		}
		o+= '<li>';
		if( linkStart ) {
			o+= '<a href="' + linkStart + data[ i ][0] + '">' + data[ i ][1] + '</a>';
		} else {
			o+= isArray ? data[ i ][0] : data[ i ];
		}
		if( data[ i ][2] ) {
			o+= ' - ' + data[ i ][2];
		}
		o+= '</li>';
	}
	o+= '</ul></ul>';
	if( returnValue ) {
		return o;
	} else {
		dwr( o );
		return true;
	}
}

_tbs.columnListSimple = function( data, colCount, colMin, returnValue ) {
	var colLength	= Math.ceil( data.length / colCount );
	var o = '';
	o+= '<ul class="column">';
	var rowsCount	= 0;
	for( var i = 0; i < data.length; ++i ) {
		switch( typeof( data[ i ] ) ) {
			case 'array':
			case 'object':
				var curChar = data[ i ][1].substr(0,1).toLowerCase();
				var isArray = true;
			break;
			default:
				var curChar = data[ i ].substr(0,1).toLowerCase();
				var isArray = true;
		}
		rowsCount++;
		if( rowsCount > colMin && rowsCount > colLength ) {
			o+= '</ul>';
			o+= '<ul class="column">';
			rowsCount = 1;
		}
		o+= '<li>' + ( isArray ? data[ i ][0] : data[ i ] ) + '</li>';
	}
	o+= '</ul>';
	if( returnValue ) {
		return o;
	} else {
		dwr( o );
		return true;
	}
}

_tbs.enterBlock = function( event ) {
	return ( ( event.keyCode ? event.keyCode : event.which ? event.which : event.charCode ) == 13 ) ? false : true;
}

_tbs.enterTab = function( obj, event ) {
	if( ( event.keyCode ? event.keyCode : event.which ? event.which : event.charCode ) == 13 ) {
		_tbs.nextTab( obj, event );
		return false;
	} else {
		return true;
	}
}

_tbs.nextTab = function( obj, event ) {
	for( var i = 0; i < obj.form.elements.length; i++) {
		if( obj == obj.form.elements[i] ) {
			break;
		}
	}
	i = ( i + 1 ) % obj.form.elements.length;
	obj.form.elements[i].focus();
}

_tbs.autoSize	= function( obj ) { _tbs.autoWidth( obj ); _tbs.autoHeight( obj ); }
_tbs.autoWidth	= function( obj ) { obj.style.width	= Math.max( obj.scrollWidth, obj.clientWidth ) + "px"; }
_tbs.autoHeight	= function( obj ) { obj.style.height= Math.max( obj.scrollHeight, obj.clientHeight ) + "px"; }

