function getWindowWidth()
{
	return window.innerWidth ? window.innerWidth : document.documentElement.offsetWidth;
}

function getWindowHeight()
{
	return window.innerHeight ? window.innerHeight : document.documentElement.offsetHeight;
}

function getHash()
{
	return location.hash.split('#')[1].split(',');
}

function isPS3() {
	if(navigator.userAgent.match(/PLAYSTATION 3/)) { return true; }
	else { return false; }
}

var isMSIE = /*@cc_on!@*/false; 

var Browser = function ()
{
	this.width  = getWindowWidth();
	this.height = document.body.scrollHeight || document.documentElement.scrollHeight;
	this.top    = document.body.scrollTop || document.documentElement.scrollTop;
}

function encodeURL(str)
{
  var character = '';
  var unicode   = '';
  var string    = '';
  var i         = 0;

  for (i = 0; i < str.length; i++) {
    character = str.charAt(i);
    unicode   = str.charCodeAt(i);

    if (character == ' ') {
      string += '+';
    } else {
      if (unicode == 0x2a || unicode == 0x2d || unicode == 0x2e || unicode == 0x5f || ((unicode >= 0x30) && (unicode <= 0x39)) || ((unicode >= 0x41) && (unicode <= 0x5a)) || ((unicode >= 0x61) && (unicode <= 0x7a))) {
        string = string + character;
      } else {
        if ((unicode >= 0x0) && (unicode <= 0x7f)) {
          character   = '0' + unicode.toString(16);
          string += '%' + character.substr(character.length - 2);
        } else if (unicode > 0x1fffff) {
          string += '%' + (oxf0 + ((unicode & 0x1c0000) >> 18)).toString(16);
          string += '%' + (0x80 + ((unicode & 0x3f000) >> 12)).toString(16);
          string += '%' + (0x80 + ((unicode & 0xfc0) >> 6)).toString(16);
          string += '%' + (0x80 + (unicode & 0x3f)).toString(16);
        } else if (unicode > 0x7ff) {
          string += '%' + (0xe0 + ((unicode & 0xf000) >> 12)).toString(16);
          string += '%' + (0x80 + ((unicode & 0xfc0) >> 6)).toString(16);
          string += '%' + (0x80 + (unicode & 0x3f)).toString(16);
        } else {
          string += '%' + (0xc0 + ((unicode & 0x7c0) >> 6)).toString(16);
          string += '%' + (0x80 + (unicode & 0x3f)).toString(16);
        }
      }
    }
  }
	
  return string;
}

function menu_list_storage (tree_id)
{
	if($('#'+tree_id+' > dd').css("display") == 'none')
	{
		$('#'+tree_id+' > dd').css("display", "block");
	}
	else
	{
		$('#'+tree_id+' > dd').css("display", "none");
	}
}

var openCarList = function (url)
{
	window.open( url,"carlist","resizable=1, width=650, height=800,menubar=yes, toolbar=yes, scrollbars=yes");
	return false;
}

var car_list = function (maker, locale_url)
{
	var url = "/"+locale_url+"/products/gt5p/car/data/"+maker+".xml";
	var xotree = new XML.ObjTree ();
	var tree = xotree.parseHTTP (url, {method: 'get'}, createCardataPopup);
}

var course_list = function (course_id, locale_url)
{
	current_id = course_id;
	var url = "/"+locale_url+"/products/gt5p/course/course_data.xml";
	var xotree = new XML.ObjTree ();
	var tree = xotree.parseHTTP (url, {method: 'get'}, createCoursedataPopup);
}


var createCardataPopup = function (tree)
{
	global_tree = tree.car_list;
	window_width  = getWindowWidth();
	window_height = getWindowHeight();
	contents_field = initOverflow();
	
	contents_field.innerHTML = getHtmlOverflowTable(tree.car_list);
	
	var createPager = new CreatePager ();
	createPager.car_data(tree.car_list, 1, 6, 10, locale_url);
	
	var view_table = document.getElementById ('view_table');
	view_table.style.width = '855px';
	view_table.style.top   = window_height / 2 - 274 + 'px';
	view_table.style.left  = window_width  / 2 - 427 + 'px';
}
var updateCarDataPopup = function (car_id)
{
	contents_field.innerHTML = getHtmlOverflowTable(global_tree, car_id);
	var view_table = document.getElementById ('view_table');
	view_table.style.width = '855px';
	view_table.style.top   = window_height / 2 - 274 + 'px';
	view_table.style.left  = window_width / 2 - 427 + 'px';
	
	var current_number = 0;
	for(i =0; i < global_tree.car_data.length; i++)
	{
		if(car_id == global_tree.car_data[i].id)
		{
			current_number = i;
		}
	}
	var createPager = new CreatePager ();
	createPager.car_data(global_tree, current_number+1, 6, 10, locale_url);
}

var createCoursedataPopup = function (tree)	
{
	global_tree = tree.course_list;
	window_width  = getWindowWidth();
	window_height = getWindowHeight();
	contents_field = initOverflow();
	
	contents_field.innerHTML = getHtmlCourseGuideTable(tree.course_list);
	
	var view_table = document.getElementById ('view_table');
	view_table.style.width = '630px';
	view_table.style.top   = window_height / 2 - 291 + 'px';
	view_table.style.left  = window_width  / 2 - 310 + 'px';
	
	var createPager = new CreatePager ();
	createPager.course_data(global_tree, current_id, 6, 10, locale_url);
}
var updateCorseDataPopup = function (course_id)
{
	current_id = course_id;
	contents_field.innerHTML = getHtmlCourseGuideTable(global_tree);
	var view_table = document.getElementById ('view_table');
	view_table.style.width = '630px';
	view_table.style.top   = window_height / 2 - 291 + 'px';
	view_table.style.left  = window_width  / 2 - 310 + 'px';
	
	var createPager = new CreatePager ();
	createPager.course_data(global_tree, current_id, 6, 10, locale_url);
}

var initOverflow = function ()
{
	var scroll_top    = document.body.scrollTop || document.documentElement.scrollTop;
	var scroll_height = document.body.scrollHeight || document.documentElement.scrollHeight;
	var base = document.getElementById('base_overflow');
	base.innerHTML = '<div id="overflow">&nbsp;</div><div id="overflow_contents_field">&nbsp;</div>';
	base.style.display = 'block';
	
	var overflow = document.getElementById('overflow');
	overflow.style.height = scroll_height+'px';
	
	var contents_field = document.getElementById('overflow_contents_field');
	contents_field.style.top = scroll_top+'px';
	
	if (isMSIE || isPS3())
	{
		overflow.attachEvent("onclick", exsitOverflow);
	}
	else
	{
		overflow.addEventListener('click', exsitOverflow, false);
	}
	
	return contents_field;
}


var getHtmlCourseGuideTable = function (tree)
{
	var course_data_01 = '';
	var course_data_02 = '';
	var course_data_details = '';
	
	if(tree.course_data[current_id-1].data01)
	{
		course_data_01 = tree.course_data[current_id-1].data01;
	}
	if(tree.course_data[current_id-1].data02)
	{
		course_data_02 = tree.course_data[current_id-1].data02;
	}
	if(tree.course_data[current_id-1].details)
	{
		course_data_details = tree.course_data[current_id-1].details;
	}
	
	return '\
<table cellspacing="0" cellpadding="0" border="0" class="view_table" id="view_table">\
<tr>\
	<td class="top_left">&nbsp;</td>\
	<td class="top_center"><p id="page_number">'+current_id+' / 6</p></td>\
	<td class="top_right"><a onclick="exsitOverflow()" href="javascript:void(0)"><img height="24" width="77" alt="close" class="pngfix" src="/local/'+locale_url+'/images/article/viewer/table_button_close.png"/></a></td>\
</tr>\
<tr>\
	<td class="middle_left">&nbsp;</td>\
	<td class="middle_center">\
\
		<dl style="position:relative; height:344px;">\
			<dd style="position:absolute; bottom:0px; right:0px;"><img style="margin:0;" src="/common/images/products/gt5p/course/logo'+current_id+'.jpg" /></dd>\
			<dd style="position:absolute; top:-11px; left:-12px;"><img src="/common/images/products/gt5p/course/image'+current_id+'.jpg" /></dd>\
			<dd style="height:270px;">&nbsp;</dd>\
			<dt style="margin:15px 10px 4px 10px; font-size:110%;">'+tree.course_data[current_id-1].name+'</dt>\
			<dd style="margin:0 10px; font-size:91%;">'+course_data_01+'</dd>\
			<dd style="margin:0 10px; font-size:91%;">'+course_data_02+'</dd>\
		</dl>\
		<div class="hr_x580" style="margin:15px 0 15px 10px;">&nbsp;</div>\
		<p style="width:580px; margin:0 0 28px 10px; height:111px; overflow-y:scroll; font-size:100%;">'+course_data_details+'</p>\
\
	</td>\
	<td class="middle_right">&nbsp;</td>\
</tr>\
<tr>\
	<td class="bottom_left">&nbsp;</td>\
	<td class="bottom_center">\
		<div id="pager">\
			\
		</div>\
	</td>\
	<td class="bottom_right">&nbsp;</td>\
</tr>\
</table>\
		';
}

var getHtmlOverflowTable = function (tree)
{
	return getHtmlOverflowTable (tree, null);
}
var getHtmlOverflowTable = function (tree, car_id)
{
	var car_data = new Array();
	var item_count = 1;
	if(tree.car_data.length)
	{
		item_count = tree.car_data.length;
		for(i = 0; i < item_count; i++)
		{
			car_data[i] = tree.car_data[i];
		}
	}
	else
	{
		car_data[0] = tree.car_data;
	}
	var left_list_menu = '';
	var current_number = 0;
	if(car_id == null)
	{
		car_id = car_data[0].id;
	}
	for(i =0; i < car_data.length; i++)
	{
		if(car_id == car_data[i].id)
		{
			left_list_menu += '<dd class="checked">- '+car_data[i].shortname+'</dd>';
			current_number = i;
		}
		else
		{
			left_list_menu += '<dd><a href="javascript:void(0)" onClick="updateCarDataPopup('+car_data[i].id+')">- '+car_data[i].shortname+'</a></dd>';
		}
	}
	
	var car_data_details = "";
	if(car_data[current_number].details)
	{
		car_data_details = car_data[current_number].details;
	}
	return '\
<table cellspacing="0" cellpadding="0" border="0" class="view_table" id="view_table">\
<tr>\
	<td class="top_left">&nbsp;</td>\
	<td class="top_center"><p id="page_number">'+(current_number+1)+' / '+car_data.length+'</p></td>\
	<td class="top_right"><a onclick="exsitOverflow()" href="javascript:void(0)"><img height="24" width="77" alt="close" class="pngfix" src="/local/'+locale_url+'/images/article/viewer/table_button_close.png"/></a></td>\
</tr>\
<tr>\
	<td class="middle_left">&nbsp;</td>\
	<td class="middle_center">\
\
<div class="products_car_head_data">\
	<h1><img class="maker_logo" src="/common/images/products/gt5p/maker/'+tree["-maker_id"]+'.gif" /></h1>\
	<p>'+tree["-maker"]+'<img style="margin:0; position:absolute; right:0;" src="/common/images/flags/flag_'+tree["-country"]+'.png" /></p>\
	<div class="hr_x200" style="margin:15px 0;">&nbsp;</div>\
	<dl class="overflow_car_list">\
		<dt>'+popup_car_data_listname+'</dt>\
'+left_list_menu+'\
	</dl>\
	<div class="products_car_main_data">\
'+loadswf.getCardetailsPopup(car_data[current_number].id, locale_url)+'\
		<dl class="overflow_car_details" style="margin-left:20px;">\
			<dt>'+car_data[current_number].fullname+'</dt>\
			<dd>'+popup_car_data_mission+'&nbsp;:&nbsp;'+car_data[current_number].drive_system+'&nbsp;&nbsp;'+popup_car_data_maxpower+'&nbsp;:&nbsp;'+car_data[current_number].power_01+'PS/'+car_data[current_number].power_02+'rpm&nbsp;&nbsp;'+popup_car_data_maxtorque+'&nbsp;:&nbsp;'+car_data[current_number].torque_01+'kgf/'+car_data[current_number].torque_02+'rpm&nbsp;&nbsp;'+popup_car_data_weight+'&nbsp;:&nbsp;'+car_data[current_number].weight+'kg</dd>\
		</dl>\
		<div class="hr_x580" style="margin:15px 0 15px 20px;">&nbsp;</div>\
		<p class="details">'+car_data_details+'</p>\
	</div>\
</div>\
\
	</td>\
	<td class="middle_right">&nbsp;</td>\
</tr>\
<tr>\
	<td class="bottom_left">&nbsp;</td>\
	<td class="bottom_center">\
		<div id="pager">\
			\
		</div>\
	</td>\
	<td class="bottom_right">&nbsp;</td>\
</tr>\
</table>\
';
}

var exsitOverflow = function ()
{
	var close = document.getElementById('base_overflow');
	close.style.display = 'none';
	close.innerHTML = '';
}

var exsitOverflow_parent = function (host_name, locale_url)
{
	parent.location.href = 'http://'+host_name+'/'+locale_url+'/';
}

var exitToJpTop = function ()
{
	location.href="/jp/";
}

function submitLimitation(e){
    if (!e) var e = window.event;
    if(e.keyCode == 13)
	{
        return false;
	}
}
