String.prototype.getExtent = function( ruler ) {
	var e = $(ruler);
	var c;
	while (c = e.lastChild) e.removeChild(c);
	var text = e.appendChild(document.createTextNode(this));
	var width = e.offsetWidth;
	e.removeChild(text);
	return width;
}

String.prototype.truncateTailInWidth = function( maxWidth, ruler ) {
	if (this.length == 0) return '';
	if (this.getExtent(ruler) <= maxWidth) return this;
	for (var i=this.length-1; i>=1; --i) {
		var s = this.slice(0, i) + '...';
		if (s.getExtent(ruler) <= maxWidth) return s;
	}
	return '';
}

var isMSIE = /*@cc_on!@*/false; 
var windowSize = 0;
var eventTab = 0;
var arrShimen = new Array( "economy", "politics", "sports", "education", "sightseeing", "region", "country", "local", "international", "environment" );
var fontMode = 1;
var fontSize = [["15px","11px"],["16px","12px"],["19px","13px"]];

function initFontMode() {
	cookie = readCookie("style");
	if ( cookie == "FS" ) fontMode = 0;
	else if ( cookie == "FL" ) fontMode = 2;
	else fontMode = 1;
}
function setFontMode( mode ) {
	fontMode = mode;
}
function initRuler() {
	
	initFontMode();
	windowSize = getWindowWidth();
	
}
function getWindowWidth() {
	
	return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
	
}

function articleStrResize() {
	
	if ( windowSize != getWindowWidth() ) {
		windowSize = getWindowWidth();
		setTimeout( "updArticleStr()" , 100 );
	}
}

function updArticleStr() {
	
	document.getElementById( "ruler" ).style.fontSize = fontSize[fontMode][0];
	try { jQuery( "#topNewsList" ).html( getTopArticleStr( arrAticleNew, 70, "#topNewsInner" ) ); } catch(e) {}
	try { jQuery( "#topNewsHistory" ).html( getTopArticleStr( arrAticleTop, 30, "#topSubNewsInner" ) ); } catch(e) {}
	try { jQuery( "#localArticleList" ).html( getArticleListStr( arrLocalNews, 100, "#localArticleList" ) ); } catch(e) {}
	try { jQuery( "#countryArticleList" ).html( getArticleListStr( arrCountryNews, 100, "#countryArticleList" ) ); } catch(e) {}
	
	for ( var i = 0; i < arrShimen.length; i++ ) {
		if ( jQuery( "#" + arrShimen[ i ] + "List" ).length ) jQuery( "#" + arrShimen[ i ] + "List" ).html( getTopArticleStr( this[ "arr" + arrShimen[ i ] ], 30, "#" + arrShimen[ i ] + "List" ) );
	}
	
	if ( jQuery( "#NEvent" ).length ) updateEvent();
	
}

function getTopArticleStr( obj, offset, box ) {
	
	// jqueryを使って、表示エリアの横幅を取得する
	var width = "";
	var imgOffset = 170 - jQuery( "#top_img" ).width();
	if ( imgOffset > 170 ) imgOffset = 0;
	if ( box == "#topNewsInner" ) width = jQuery( "#Container" ).width() - 580 + imgOffset;
	else if ( box == "#topSubNewsInner" ) width = jQuery( "#topMain" ).width() - 520 + imgOffset;
	else width = jQuery( box ).width() - offset;
	var html = "";
	try{ console.log(width); }catch(e){}
	document.getElementById( "ruler" ).style.fontSize = fontSize[fontMode][0];
	
	if ( obj ) {
		for ( var i = 0; i < obj.length; i++ ) {
			html += '<li class="' + obj[ i ][ 0 ] + '" id="at' + i + '"><a href="' + obj[ i ][ 1 ] + '" alt="' + obj[ i ][ 3 ] + '" title="' + obj[ i ][ 3 ] + '">';
			// 枠のサイズにテキストを調整する
			var kijiStr = obj[ i ][ 3 ].truncateTailInWidth( width, 'ruler' );
			
			if ( obj[ i ][ 2 ] ) html += '<span class="iconPict">' + kijiStr + '</span>';
			else html += kijiStr;
			html += '</a></li>';
		}
	}
	
	return html;
	
}

function getArticleListStr( obj, offset, box ) {
	
	// jqueryを使って、表示エリアの横幅を取得する
	var width = jQuery( box ).width() - offset;
	var html = "";
	
	document.getElementById( "ruler" ).style.fontSize = fontSize[fontMode][0];
	
	for ( var i = 0; i < obj.length; i++ ) {
		html += '<li class="' + obj[ i ][ 0 ] + '" id="at' + i + '"><a href="' + obj[ i ][ 1 ] + '" alt="' + obj[ i ][ 3 ] + '" title="' + obj[ i ][ 3 ] + '">';
		
		// 枠のサイズにテキストを調整する
		var kijiStr = obj[ i ][ 3 ].truncateTailInWidth( width, 'ruler' );
		
		if ( obj[ i ][ 2 ] ) html += '<span class="iconPict">' + kijiStr + '</span>';
		else html += kijiStr;
		html += '</a></li>';
//		html += '</a>&nbsp;【' + obj[ i ][ 4 ] + '】</li>';
	}
	
	return html;
	
}

function setActiveTab( num ) {
	eventTab = num;
	setTimeout( "updateEvent()" , 500 );
}

function updateEvent() {
	if ( eventTab == 0 ) jQuery( "#event" + eventTab ).html( getEventKnpStr( this[ "arrEventTitle" + eventTab ], this[ "arrEvent" + eventTab ], "#event" + eventTab ) );
	else jQuery( "#event" + eventTab ).html( getEventStr( this[ "arrEventTitle" + eventTab ], this[ "arrEvent" + eventTab ], "#event" + eventTab ) );
}

function getEventStr( obj_t, obj, box ) {
	
	// jqueryを使って、表示エリアの横幅を取得する
	var width = jQuery( box ).width() - 75;
	var html = '<tr class="linkall"><td colspan="2"><span class="icon"><a href="' + obj_t[ 0 ] + '">' + obj_t[ 1 ] + 'のイベント</a></span></td></tr>';
	
	document.getElementById( "ruler" ).style.fontSize = fontSize[fontMode][1];
	
	for ( var i = 0; i < obj.length; i++ ) {
		
		// 枠のサイズにテキストを調整する
		var kijiStr = obj[ i ][ 5 ].truncateTailInWidth( width, 'ruler' );
		html += '<tr' + obj[ i ][ 0 ] + '><td><span class="' + obj[ i ][ 1 ] + '">【' + obj[ i ][ 2 ] + '】</span> <span class="m-10b ' + obj[ i ][ 1 ] + '">' + obj[ i ][ 3 ] + '</span>　<span style="font-size:10px;color:#999;">(' + obj[ i ][ 4 ] + ')</span><br />' + kijiStr + '</td></tr>';
		
	}
	
	return html;
	
}

function getEventKnpStr( obj_t, obj, box ) {
	
	// jqueryを使って、表示エリアの横幅を取得する
	var width = jQuery( box ).width() - 90;
	var html = '<tr class="linkall"><td colspan="2"><span class="icon"><a href="' + obj_t[ 0 ] + '">' + obj_t[ 1 ] + 'のイベント</a></span></td></tr>';
	
	if ( width < 100 ) width = 520;
	
	document.getElementById( "ruler" ).style.fontSize = "12px";
	
	for ( var i = 0; i < obj.length; i++ ) {
		
		// 枠のサイズにテキストを調整する
		var tw = width; if ( obj[ i ][ 4 ] ) tw -= 30;
		var kijiStr = obj[ i ][ 3 ].truncateTailInWidth( tw, 'ruler' );
		html += '<tr' + obj[ i ][ 0 ] + '><td>' + obj[ i ][ 4 ] + '<span class="m-10b Knp">' + obj[ i ][ 1 ] + '</span>　<span style="font-size:10px;color:#999;">(' + obj[ i ][ 2 ] + ')</span><br />' + kijiStr + '</td></tr>';
		
	}
	
	return html;
	
}

window.onresize = articleStrResize;

/*
if (isMSIE) window.onresize = articleStrResize;
else window.onresize = updArticleStr;
*/
