document.write("<script type='text/javascript' src='_js/contents.js'></script>");
document.write("<script type='text/javascript' src='_js/effects.js'></script>");
document.write("<script type='text/javascript' src='_js/builder.js'></script>");
document.write("<script type='text/javascript' src='_js/dragdrop.js'></script>");
document.write("<script type='text/javascript' src='_js/portal.js'></script>");
document.write("<script type='text/javascript' src='_js/cookiemanager.js'></script>");
document.write("<script type='text/javascript' src='gadget/_js/maxim.js'></script>");
document.write("<script type='text/javascript' src='gadget/_js/watch.js'></script>");
document.write("<script type='text/javascript' src='gadget/_js/marketnews.js'></script>");
document.write("<script type='text/javascript' src='gadget/_js/todaysmarket.js'></script>");
document.write("<script type='text/javascript' src='gadget/_js/soldier.js'></script>");
document.write("<script type='text/javascript' src='_js/excanvas-compressed.js'></script>");
document.write("<script type='text/javascript' src='gadget/_js/chart.js'></script>");
document.write("<script type='text/javascript' src='libs.js'></script>");


var widget_col_num = 2;
var portal;
var manager;
var contents;
var draw_interval;

function onOverWidget(portal, widget)
{
/*
	widget.getElement().insertBefore($('control_buttons'), widget.getElement().firstChild);
	var linkb = $('link_button');
	
	$('control_buttons').show();
	
	if(widget._linkhref)
		$('link_button').show();
	else
		$('link_button').hide();
*/
}

function onOutWidget(portal, widget) {
//	$('control_buttons').hide();
} 


function linkWidget(element) {
	var widget = $(element).up(".widget").widget;
	
	document.location.href = widget._linkhref;
}


function removeWidget(element) {
	var widget = $(element).up(".widget").widget;

	if (confirm('このコンテンツを削除してよろしいですか？'))
	{
//		document.body.appendChild($('control_buttons').hide());
		delContent(widget._contentid);
		portal.remove(widget);
	}
}

function smallWidget(element)
{
	var widget = $(element).up(".widget").widget;
	Element.toggle(widget._contentDiv);
	var small_flag = Element.visible(widget._contentDiv);
	widget.setSmall(!small_flag);
    portal._updateColumnsHeight();  
	changeContent(widget._contentid, !small_flag);
}

function onChange()
{}

function onUpdate(element)
{
	var widget = element._currentOverWidget.widget;
	var columns = element._columns;
	
	clearCookies();
	for(var ci=0;ci<widget_col_num;ci++)
	{
		var co = columns[ci].childNodes;
		for(var ri=0;ri<co.length;ri++)
		{
			var widgetc = co[ri].widget;
			if(widgetc)
			{
				addContent(widgetc._contentid, ci, ri);
				changeContent(widgetc._contentid, widgetc.getSmall());
			}
		}
	}
	manager.setCookie('inited', 't');
}


function startWidget()
{
	initCookie();
	portal = new Xilinus.Portal("#page div", {onOverWidget: onOverWidget, onOutWidget: onOutWidget, onChange: onChange, onUpdate: onUpdate, removeEffect: Effect.SwitchOff});
	
	//コンテンツの取得.
//	loadXml(loadContentsXml,"_xml/contents.xml");
	loadContentsXml();

}

function makeWidget()
{
	printd("makeWidget");
	for(var ci=0;ci<widget_col_num;ci++)
	{
		var num = manager.getCookie('num'+ci);
		for(var ri=0;ri<num;ri++)
		{
			var contentid = manager.getCookie(ci+'_'+ri);
			
			var small_flag = false;
			if(contentid.substring(contentid.length - 2) ==  "_s")
			{
				contentid = contentid.substring(0, contentid.length - 2);
				small_flag = true;
			}
			if(contents.get(contentid))
			{
				var widget = new Xilinus.Widget().setContentid(contentid).setTitle( contents.get(contentid).getAttribute('title') );
				portal.add(widget, ci);
				widget.setContentUrl( contents.get(contentid).getAttribute('src') );
				if(contents.get(contentid).getAttribute('href'))
					widget.setLinkUrl( contents.get(contentid).getAttribute('href') );

				var cntBtn = $('control_buttons').cloneNode(true);
				cntBtn.style.display="";
				
	//			small_flag
				if(small_flag)
				{
					widget._contentDiv.hide();
					widget.setSmall(small_flag);
				}
	//			Element.(widget._contentDiv).hide();

				var linkBtn = null;
				for(var $ii=0;$ii<cntBtn.childNodes.length;$ii++)
				{
					if(cntBtn.childNodes[$ii].getAttribute)
					{
						if(cntBtn.childNodes[$ii].getAttribute('id') == 'link_button')
						{
							linkBtn = cntBtn.childNodes[$ii];
						}
					}
				
				}

				if(linkBtn)
				{
					if(widget._linkhref)
						linkBtn.style.display="";
					else
						linkBtn.style.display="none"
				}

				widget.getElement().insertBefore(cntBtn, widget.getElement().firstChild);
			}
		}
	}

	// Add controls buttons
	portal.addWidgetControls("control_buttons");
    portal._updateColumnsHeight();  
	
	setTimeout(flash_top_draw, 200);

}

function flash_top_draw()
{
	$('flash_top').innerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="519" height="229"><param name="movie" value="index.swf" /><param name="quality" value="high" /><embed src="index.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="519" height="229"></embed></object>';
	
}

function initCookie()
{
	//cookieの初期化.
	manager = new CookieManager();
}

function loadCookies()
{
//	clearCookies();
	var inited = manager.getCookie('inited');
	
	if(inited != 't')
	{
		defaultCookies();
	}

//	makeWidget();
	Event.observe(window, "load", makeWidget);
}

//cookieを初期化.
function defaultCookies()
{
	clearCookies();
	
	var keys = contents.keys();
	
	for(var ii=0;ii<keys.length;ii++)
	{
		if(def = contents.get(keys[ii]).getAttribute('default'))
		{
			addContent(keys[ii], def, -1);
		}
	}
	
	manager.setCookie('inited', 't')
}

function clearCookies()
{
	printd("clearCookies");
	manager.clearCookie('inited');
	for(var ci=0;ci<widget_col_num;ci++)
	{
		manager.setCookie('num' + ci, "0");
	}
}

//colno = 0〜2
function addContent(contentid, colno, rowno)
{
	delContent(contentid);
	
	// -1が指定されれば自動的に一番少ない列へ.
	if(colno == -1)
	{
		var min_colno = 0;
		for(var ci=1;ci<widget_col_num;ci++)
		{
			if(parseInt(manager.getCookie('num' + ci)) < parseInt(manager.getCookie('num' + min_colno)))
			{
				min_colno = ci;
			}
		}
		
		colno = min_colno;
	}
	
	var num = parseInt(manager.getCookie('num' + colno));
	
	// -1が指定されれば自動的に末尾へ.
	if(rowno == -1)
	{
		rowno = num;
	}
	
	var ci = colno;
	for(var ri=num;ri>rowno;ri--)
	{
		manager.setCookie(ci+'_'+ri, manager.getCookie(ci+'_'+(ri-1)));
	}
	manager.setCookie(ci+'_'+rowno,  new String(contentid));
	manager.setCookie('num'+colno,  new String(parseInt(num)+1));
}

function delContent(contentid)
{
	for(var ci=0;ci<widget_col_num;ci++)
	{
		var num = parseInt(manager.getCookie('num' + ci));
		
		var del_flag = false;
		for(var ri=0;ri<num;ri++)
		{
			var contentkey = manager.getCookie(ci+'_'+ri);
			
			if(contentkey)
			{
				if(contentkey.substring(contentkey.length - 2) ==  "_s")
				{
					contentkey = contentkey.substring(0, contentkey.length - 2);
				}
			}
			
			if(contentkey == contentid)
			{
				manager.clearCookie(ci+'_'+ri);
				manager.setCookie('num' + ci,  new String(num-1));
				del_flag = true;
			}
			
			if(del_flag && ri+1<num)
			{
				manager.setCookie(ci+'_'+ri, manager.getCookie(ci+'_'+(ri+1)));
				manager.clearCookie(ci+'_'+(ri+1));
			}
		}
	}
}


function changeContent(contentid, small_flag)
{
	for(var ci=0;ci<widget_col_num;ci++)
	{
		var num = parseInt(manager.getCookie('num' + ci));
		
		var del_flag = false;
		for(var ri=0;ri<num;ri++)
		{
			var contentkey = manager.getCookie(ci+'_'+ri);

			if(contentkey.substring(contentkey.length - 2) ==  "_s")
			{
				contentkey = contentkey.substring(0, contentkey.length - 2);
			}


			if(contentkey == contentid)
			{
				if(small_flag)
					manager.setCookie(ci+'_'+ri, contentid+"_s");
				else
					manager.setCookie(ci+'_'+ri, contentid);
			}
		}
	}
}


function loadXml(funcname, xmlurl)
{
	var pars = "";
	
	var ind = xmlurl.indexOf("?");
	
	if(ind > 0)
	{
		pars = xmlurl.substring(ind+1);
		xmlurl = xmlurl.substring(0, ind);
	}
	
//	var ajax = new Ajax.Request(xmlurl, { method:'post', onComplete: funcname});
	var ajax = new Ajax.Request(xmlurl, { method:'post', onComplete: funcname, parameters: pars});
}



//function loadContentsXml(res)
function loadContentsXml()
{
//	var xcontents = res.responseXML.getElementsByTagName('content');

	contents = $H({});
	for(var ci=0;ci<xcontents.length;ci++)
	{
		var xcontent = xcontents[ci];
		if(!xcontent.getAttribute)
		{
			xcontent.getAttribute = function(name)
			{
				return this[name];
			};
		}
		contents.set(xcontents[ci].getAttribute('id'), xcontents[ci]);
	}
	
	printd("loadContentsXml");
	loadCookies();
}


function printd(str)
{
	try{
		if($("debug"))
		{
			Element.update('debug', str + "<br>" + $("debug").innerHTML);
		}
	} catch(e){};
}

