
var js_map        = [];
var MAP_DELIM     = '_';
var ex_cords      = '';

for (xi = tw.map_zone.x; xi <= tw.map_zone.view_width; xi++)
{
  for (yi = tw.map_zone.y; yi <= tw.map_zone.view_height; yi++)
  {
//    console.log(xi + MAP_DELIM + yi);
    js_map[xi + MAP_DELIM + yi] = xi + MAP_DELIM + yi;
  }
}

function tw_map_fXYMapper(x, y)
{
  getX = x == 0 ? 0 : Math.ceil((x / tw.map_zone.size) * -1);
  getY = y == 0 ? 0 : Math.ceil((y / tw.map_zone.size) * -1);

  getX1 = tw.map_zone.view_width + getX + 1;
  getY1 = tw.map_zone.view_height + getY + 1;

  getX1 = getX1 < tw.map_zone.width ? getX1 : tw.map_zone.width;
  getY1 = getY1 < tw.map_zone.height ? getY1 : tw.map_zone.height;

  getX2 = getX - 1;
  getY2 = getY - 1;
  getX2 = getX2 <= 0 ? 0 : getX2;
  getY2 = getY2 <= 0 ? 0 : getY2;

  if (ex_cords != getX1 + ', ' + getY1 + ', ' + getX2 + ', ' + getY2)
  {
    getCoord(getX1, getY1);
    getCoord(getX2, getY2);
  }
  ex_cords = getX1 + ', ' + getY1 + ', ' + getX2 + ', ' + getY2;
  _('ta_debug').value = 'X1: ' + getX1 + ', Y1:' + getY1 + "\r\n" + 'X2: ' + getX2 + ', Y2:' + getY2 + "\r\n" + (new Date()).getTime();
}

function loadCoord(x, y)
{
  key = x + MAP_DELIM + y;
  js_map[key] = key;
  doReq({url:'fesa.router.php?c=tw.get.coords.xy_rows&y=' + x + '&x=' + y, onLoad:onLoaded_loadCoord});
}

function onLoaded_loadCoord(o)
{

  eval('var obj = ' + o);
  for (keyObj in obj)
  {
    _('map_ceil_' + keyObj).clear().html(obj[keyObj]);
  }
}

function getCoord(x, y)
{
//  console.log(typeof(js_map[x + MAP_DELIM + y]));
  if (typeof(js_map[x + MAP_DELIM + y]) == 'undefined')
  {
    loadCoord(x, y);
  }
}


// USER Functions...
function userLoggedIn()
{
  getForm('main', 'main', '', showUserSpace);
}

function showUserSpace()
{
  MIT.WNDW.init('wndw');
  MIT.WNDW.addBar('', 'hammadde', '', 'tc');
  MIT.WNDW.addBar('build_space', 'binalar', '', 'lb');
  MIT.WNDW.addBar('', 'test2', '', 'rb');
  MIT.WNDW.addBar('', 'menu', '', 'rt');
  MIT.WNDW.addToBar('settings', '<a href="javascript: _void();" onclick="MIT.WNDW.add(\'settings\', \'Ayarlar\', \'fesa.router.php?c=tw.form&form=settings\', 400, 300)">Ayarlar</a>', 'menu');
  MIT.WNDW.addToBar('settings', '<a href="javascript: _void();" onclick="MIT.SMSG.alert(\'Uyarı testi\')">Uyarı</a>', 'menu');
  MIT.WNDW.addToBar('settings', '<a href="javascript: _void();" onclick="if(confirm(\'Çıkmak istediğinize emin misiniz?\')){userLogout()}">Çıkış</a>', 'menu');
  MIT.WNDW.addToBar('ta_debug', '<textarea id="ta_debug">debug</textarea>', 'test2');
  MIT.WNDW.addToBar('hammadde', 'Tritium: <b id="res_tritium"><img src="/images/loading/wo-16.gif"></b>', 'hammadde');

  min_x = tw.own_map.width - _('tw_own_world_inner').offsetWidth;
  min_y = tw.own_map.height - _('tw_own_world_inner').offsetHeight;

  resourcesShowInitialize();

  Drag.init(_('tw_own_world_inner'), _('tw_own_world_inner'), min_x, min_y, 0, 0);//, tw_map_fXYMapper);
}

function userLogout()
{
  doReq({url:'fesa.router.php?c=tw.logout', onLoad:userLoggedOut});
}

function userLoggedOut()
{
  alert('çıktın');
  MIT.WNDW.removeBar('binalar');
  MIT.WNDW.removeBar('test2');
  MIT.WNDW.removeBar('menu');
  MIT.WNDW.removeBar('hammadde');
  resourcesShowStop();
  getForm('login', 'main');
}

function l_loginForm(ths)
{
  //
  doReq({url:'fesa.router.php', method:'GET', data:MIT.CORE.getElementInForm(ths)});
  return false;
}

function showMessageLabel(label, message)
{
  _(label + '_border').setStyle('background-color:#FF9922;border:1px solid red;color:#FFFFFF;font-weight:bold;');
    window.setTimeout('_("' + label + '_border").setStyle("background-color:#FFF;border:none;color:#000;font-weight:normal;")', 2000);
  if (message)
  {
    _(label + '_msg').clear()._span(message).setStyle('color:red;');
    window.setTimeout('_("' + label + '_msg").clear()', 2000);
  }
}

function userNotLoggedIn(err)
{
  err = err ? err : -100;
  alert('Err: ' + err);
}


// RESOURCE Functions..
function calcResource()
{
//  if (resources.current_tritium - resources.needed_avg_tritium > 0)
//  {
    resources.current_tritium -= resources.needed_avg_tritium;
    resources.current_tritium += resources.normal_produce;
//  }
  showResource();
}

function showResource()
{
  _('res_tritium').html('<font color="' + (resources.normal_produce > resources.needed_avg_tritium ? 'green' : 'red') + '" title="' + resources.normal_produce + '">' + number_format(resources.current_tritium, 0, '.', ',') + '</font>');
}

function resourcesShowInitialize()
{
  resourcesShowStop();
  doReq({url:'fesa.router.php?c=tw.js_resources', onLoad:onLoad_resourcesShowInitialize});
}

function refreshConstructionPercent(building_id, percent)
{
  percent++;
  if (percent <= 100 && percent >= 0)
  {
    _('map_building_' + building_id).html('%' + percent);
    _('c_building_percent_' + building_id).html('%' + percent);
    $s(_('c_building_percent_style_' + building_id), 'width', (100 - percent) + '%');
//    drawArc(building_id, 360 - (percent * 360 / 100));
    constructions[building_id].timer = window.setTimeout('refreshConstructionPercent(' + building_id + ', ' + percent + ')', constructions[building_id].tick_time);
  }
  else
  {
    try
    {
      _('c_building_' + building_id).remove();
    } catch(e) {}
    _('map_building_' + building_id).html('');
  }
}

function drawArc(building_id, angel)
{
  var drawArcObj = isIE ? window["drawArc_" + building_id] : document["drawArc_" + building_id];
	drawArcObj.drawArc(angel);
}

function onLoad_resourcesShowInitialize(data)
{
  eval(data);
  if (resources.refresh_time > 0)
  {
    window.setTimeout('resourcesShowInitialize()', resources.refresh_time * 1000 + 1000);
  }
  resourcesShowStart();
  var constructions_arr = [];
  for (building_id in constructions)
  {
    var percent = number_format(constructions[building_id].percent, 0, '.', ',');
    _('map_building_' + building_id).html('%' + percent);
    var percent_html = '<div id="c_building_percent_style_' + building_id + '" style="float:right;positiion:relative;width:' + (100 - constructions[building_id].percent) + '%;height:100%;background-image:url(' + tw.main_url + 'game_images/trans.png);"></div>';
//    var flash_id = 'drawArc_' + building_id;
//    var percent_html = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" id="' + flash_id + '" width="64" height="64" align="middle"><param name="allowScriptAccess" value="sameDomain"><param name="movie" value="drawArc.swf"><param name="quality" value="best"><param name="wmode" value="transparent"><param name="bgcolor" value="#ffffff"><embed src="drawArc.swf" quality="best" wmode="transparent" bgcolor="#ffffff" width="64" height="64" swLiveConnect=true name="' + flash_id + '" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></object>';
    constructions_arr.push('<div id="c_building_' + building_id + '" style="width:64px;height:64px;display:block;background-image:url(' + tw.main_url + 'game_images/building_s_' + building_id + '.png);"><div style="positiion:relative;width:64px;height:64px;">' + percent_html + '</div><div id="c_building_percent_' + building_id + '" style="left:13px;top:-36px;position:relative;font-size:18px;font-weight:bold;">%' + percent + '</div></div>');
    if (constructions[building_id].timer)
    {
      windows.clearTimeout(constructions[building_id].timer);
    }
    constructions[building_id].timer = window.setTimeout('refreshConstructionPercent(' + building_id + ', ' + percent + ')', constructions[building_id].tick_time);
  }
  _('div_constructions').html('<table width="100%" height="100%" cellpadding="2" cellspacing="0" style="border:2px solid #FF7722;"><tr><td height="20" align="center" style="border-bottom:2px solid #FF7722;background-color:#FF7722;font-size:16px;">Üretim</td></tr><tr><td id="contructions" valign="top" style="color:#FF7722;">' + constructions_arr.join('') + '</td></tr></table>');
}

function resourcesShowStart()
{
  resourcesShowStop();
  resources.timer = window.setInterval('calcResource()', 1000);
}

function resourcesShowStop()
{
  if (typeof(resources) == 'object')
  {
    if (typeof(resources.timer) != 'undefined')
    {
      window.clearInterval(resources.timer);
    }
    resources.timer = 0;
  }
}


// BUILDING  Functions...
function startBuilding(bID, window_id)
{
  doReq({url:'fesa.router.php?c=tw.build&bid=' + bID, onLoad:onLoad_startBuilding, onLoadParam:window_id});
}

function onLoad_startBuilding(window_id, data)
{
  MIT.WNDW.closeTo(window_id, _('contructions'));
  resourcesShowInitialize();
}

function clickBuilding(building_id, building_name)
{
  MIT.WNDW.add('building_' + building_id, building_name, 'fesa.router.php?c=tw.buildings&id=' + building_id, 400, 300, 'binalar');
}


// SYSTEM Functions..
function ready()
{
  if (logged == 1)
  {
    userLoggedIn();
  }
  else
  {
    MIT.FESA.rootURL = '/';
    getForm('login', 'main');
  }
}


// MISC Functions..
function number_format(number, decimals, dec_point, thousands_sep)
{
  var n = !isFinite(+number) ? 0 : +number,
  prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
  sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
  dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
  s = '',
  toFixedFix = function (n, prec) {
    var k = Math.pow(10, prec);
    return '' + Math.round(n * k) / k;
  };
  // Fix for IE parseFloat(0.55).toFixed(0) = 0;
  s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
  if (s[0].length > 3) {
    s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
  }
  if ((s[1] || '').length < prec) {
    s[1] = s[1] || '';
    s[1] += new Array(prec - s[1].length + 1).join('0');
  }
  return s.join(dec);
}
