function rankDown(element_id)
{
	var pageActive = findActivePage(element_id);
	if (!pageActive)
	{
		return;
	}

	var page = pageActive;
	while(page = page.nextSibling)
	{
		if (page.tagName == 'DIV')
		{
			page.className ='active';
			pageActive.className = 'inactive';
			break;
		}
	}
}

function rankUp(element_id)
{
	var pageActive = findActivePage(element_id);
	if (!pageActive)
	{
		return;
	}

	var page = pageActive;
	while(page = page.previousSibling)
	{
		if (page.tagName == 'DIV')
		{
			page.className ='active';
			pageActive.className = 'inactive';
			break;
		}
	}
}

function pageDown(pagegroup_id)
{
		pageChange(pagegroup_id, 1);
}

function pageUp(pagegroup_id)
{
		pageChange(pagegroup_id, -1);
}

function enableRecursive(element, enabled)
{
		element = element.firstChild;
		if (element == null)
		{
				return;
		}
		do
		{
				if (element.tagName)
				{
						element.className = enabled ? 'enabled' : 'disabled';
						//console.log(element);
						//console.log(enabled);
				}
				if (element.firstChild != null)
				{
						enableRecursive(element.firstChild, enabled);
				}
		} while((element = element.nextSibling) != null);	
}
function updatePageGroupState(pagegroup_id, button_up_id, button_down_id)
{
	 	var button_up   = document.getElementById(button_up_id);
	 	var button_down = document.getElementById(button_down_id);
	 	var pagegroup   = document.getElementById(pagegroup_id);
		var page;
		var page_first = null;
		var page_last = null;
		var page_active = null;
		var page_inactive_last = null;

		for ( page = pagegroup.firstChild;
				   page != null;
				   page = page.nextSibling )
		{

				if (page.className == 'active' || page.className == 'inactive')
				{
						page_last = page;
						if (page_first == null)
						{
								page_first = page;
						}
						if (page.className == 'active')
						{
								page_active = page;
						}
						else
						{
								page_inactive_last = page;
						}
				}
		}
		/* initial condition: all active */
		if (page_inactive_last == null)
		{
				pageChange(pagegroup_id, -1);
				enableRecursive(button_up, false);
				if (page_first == page_last)
				{
						enableRecursive(button_down, false);
				}
				return;
		}
		else if (page_active == page_first)
		{
				enableRecursive(button_up, false);
		}
		else
		{
				enableRecursive(button_up, true);
		}
		if (page_active == page_last)
		{
				enableRecursive(button_down, false);
		}
		else
		{
				enableRecursive(button_down, true);
		}
}

function pageChange(pagegroup_id, updown)
{
		var pagegroup = document.getElementById(pagegroup_id)
		var page = (updown == 1 ? pagegroup.firstChild : pagegroup.lastChild);
		var page_changed = null;
		do
		{

				//console.log(page);
				if (page.className == 'inactive' && page_changed != null)
				{
						break;
				}
				if (page.className == 'active')
				{

						page.className = 'inactive';
						page_changed = page;
						continue;
				}

		} while((page = (updown == 1 ? page = page.nextSibling : page.previousSibling)) != null);
		if (page == null)
		{
				page = page_changed
				//console.log("last\n");
		}
		page.className = 'active';		
}

function findActivePage(window_id)
{
	var rankwindow = document.getElementById(window_id)
	if (!rankwindow)
	{
		console.log("element is not found. : %s\n", window_id);
		return null;
	}
  for (i = 0; i < rankwindow.childNodes.length; i++) {
    node = rankwindow.childNodes[i];
    if (node.tagName == 'DIV' && node.className =='active')
    {
		 	return node;
    }
  }
	console.log("no active pages\n");
  return null;
}

function maximize(window_id)
{
	var rankwindow = document.getElementById(window_id)
	if (!rankwindow)
	{
		console.log("element is not found. : %s\n", window_id);
		return null;
	}
	if (rankwindow.className == 'rank-window')
	{
		rankwindow.className = 'rank-window-maximize';
	}
}

function minimize(window_id)
{
	var rankwindow = document.getElementById(window_id)
	if (!rankwindow)
	{
		return null;
	}
	if (rankwindow.className == 'rank-window-maximize')
	{
		rankwindow.className = 'rank-window';
	}
}

function operationAll(operation, window_id_list)
{
	var i;
	for ( i = 0; i < window_id_list.length; ++i )
	{
		operation(window_id_list[i]);
	}
}

function getQueryWords()
{
	var fromURL = document.referrer;
	if(fromURL){
		var yStr="http://search.yahoo.co.jp/search";
		var gStr="http://www.google.co.jp/search";
		var g2Str="http://www.google.com/search";
		var amStr="http://search.ameba.jp/search";
		var msnStr="http://search.msn.co.jp/results";
		if(fromURL.indexOf(gStr,0) != -1
			 ||fromURL.indexOf(amStr,0) != -1
			 ||fromURL.indexOf(g2Str,0) != -1
			 ||fromURL.indexOf(msnStr,0) != -1)
		{
			var queryStr="q=";
		}
		else if(fromURL.indexOf(yStr,0) != -1)
		{
			var queryStr="p=";
		}
		if(queryStr && fromURL.indexOf(queryStr,0) != -1)
		{
			var strStart = fromURL.indexOf(queryStr,0);
			fromURL = fromURL.slice(strStart+queryStr.length);
			var queryStrend="&";
			var strEnd = fromURL.indexOf(queryStrend,0);
			if(strEnd == -1){
				var word = fromURL;
			}
			else{
				var word = fromURL.slice(0,strEnd);
			}
			return decodeURI(word);
		}
	}
	return null;
}