var gridbox;
var is_pro=0;

var g_file                      = "inc/engine.php";
var g_qs                            = "";
//var g_tableName           = "closeouts";
var g_recordsPerPage    = 50;
var g_cur_page = 1;
//var g_query                     = g_file+"?act=load_xml&table_name="+g_tableName;
var g_query                     = g_file+"?act=load_json&table_name="+g_tableName;
var g_requestStr            = "";
var g_sortColInd            = -1;
var g_sortDir                   = "";
var g_sort                      = "";
var g_mediaType1            = "ads";
var g_mediaType2            = "news";
var isPro                           = false;
var myGrid;  

var g_width;

var colsCount;
var AgridColumnsName=new Array();
var AgridColumnsColor=new Array();
var AgridColumnsWidth=new Array();
var AgridColumnsAlign=new Array();
var AgridColumnsSort=new Array();
var AgridColumnsSortDir=new Array();

var idata;


function reload_grid(table_name, qs, no_page_reset){
 g_tableName=table_name;
 g_qs=qs;
 if (no_page_reset!=1) g_cur_page=1;

 var pos_req='&posStart='+(g_cur_page-1)*g_recordsPerPage+'&count='+g_recordsPerPage;
 
 var mt_req=(g_mt_id>0)?'&mt_id='+g_mt_id:'';

 var url=g_file+"?act=load_json&table_name="+g_tableName+"&qs="+g_qs+g_requestStr+g_sort+pos_req+mt_req;
 reload_grid_url(url);
}

function reload_grid_url(url){
 $$('#cover').show();
 $$('#dtrows').hide();

// console.log('before json');

 $$.getJSON(url, function(data){
    idata=data;
    if (idata.status=='1'){
       alert(idata.err_msg);
       window.location.reload();
       return;
    }

    g_mt_id=parseInt(idata.mt_id);
//    console.log('mt_id=', g_mt_id);
//    console.log(data);
    render_grid();
 });
}

function render_grid(){
//  return ''; //!DEBUG
  var h='';

  var trhtml='';
  if (/userlogin=/.test (document.cookie)) trhtml+=' onclick="oncell_click(this)"';

  var colsCountReal=colsCount;
  var COLIDS=[];
  if (g_mt_id>0){
//     console.log(g_mt_id);
//     console.log(gridTabsD);

     var COLIDS=gridTabsD[g_mt_id];
     colsCountReal=COLIDS.length;
  }

//  console.time('aaa');
  //headers
  var hdr='';
  var hdr1='';
  var tcol='';
  for (var ii = 0; ii < colsCountReal; ii++){
      var i=(g_mt_id)?AID2IDX['#'+COLIDS[ii]]:ii;

      var cw=AgridColumnsWidth[i]-2;
      var sortimg=(g_sortColInd==i)?'<img id="sortimg" src="'+g_static+'/images/grid/sort_'+g_sortDir+'.gif"/>':'';
      var sorter =(AgridColumnsSort[i]!='na')?'onclick="resort_grid(this,'+i+')"':'';
      var sorter2=(AgridColumnsSort[i]=='na')?' curdef':'';
      sorter2+= (AgridColumnsSortDir[i]==1)?' sortD':'';

      hdr+='<td onmouseover="this.style.cursor=\'e-resize\';" onmousedown="toDragMode('+i+');" onmouseup="stopMoving();"><div '+sorter+' class="hrdcell'+sorter2+'">'+sortimg+AgridColumnsName[i]+'</div></td>';
//      hdr1+='<th style="height:0px;width:'+cw+'px"></th>';
      tcol+='<col style="width:'+cw+'px" />';
  }
//  hdr1='<tr style="height:auto">'+hdr1+'</tr>';
  tcolh=tcol+'<col style="width:50px" /><col style="width:100%" />';
  tcol+='<col style="width:100%" />';
  hdr+='<td> </td>';

  //rows
  var r='';
  for (var k = 0; k < idata.rows.length; k++){
      var row='';
      for (var ii = 0; ii < colsCountReal; ii++){
          var i=(g_mt_id)?AID2IDX['#'+COLIDS[ii]]:ii;

          var dta=idata.rows[k].data[i];
          if (AgridColumnsType[i]=='price') dta='$<span>'+dta+'</span>';  //price col  #gridColumnsType[i]='price'
          row+='<td nowrap="nowrap" class="'+AgridColumnsColor[i]+' '+AgridColumnsAlign[i]+'">'+dta+'</td>';
//+' '+AgridColumnsAlign[i]
      }
      r+='<tr'+trhtml+'>'+row+'<td> </td></tr>';
  }

  gridbox.innerHTML='<div id="dtheads" style="overflow:hidden;width:100%;"><table id="theads" width="100%" cellspacing="0" cellpadding="0" style="table-layout:fixed;"><colgroup>'+tcolh+'</colgroup><tbody>'+hdr1+'<tr style="height:auto">'+hdr+'</tr></tbody></table></div>'
                   +'<div id="dtrows" style="overflow:auto;width:100%;"><table id="trows" width="100%" cellspacing="0" cellpadding="0" style="table-layout:fixed;"><colgroup>'+tcol+'</colgroup><tbody>'+hdr1+r+'</tbody></table></div>';

//  console.timeEnd('aaa');

  $$('#cover').hide();

  setTimeout('render_secondary()',100);

}

//display-refresh secondary info
function render_secondary(){

  //add scroll events on body (to sync headers for horiz scrolling)
  $$('#dtrows').scroll(function(){
    $('dtheads').scrollLeft=this.scrollLeft;
  });

  //align sort image text
  $$('#sortimg').next().css('margin-right', '-9px');

  //set highligher
  $$("#trows tr").hover(function(){
    $$(this).addClass("highlight");
  },function(){
    $$(this).removeClass("highlight");
  });

  //refresh info
  var limit1=parseInt(idata.pos)+1;
  var limit2=limit1+g_recordsPerPage-1;
  $$('#grid_records').html('Results '+limit1+' - '+limit2+' of '+setCommas(idata.total_count)+' matches ('+idata.userdata.loading_time+' seconds)');

  $("qs_type").innerHTML       = idata.userdata.qs_type;
  $("qs_lastupdate").innerHTML = "Last update: "+idata.userdata.qs_lastupdate;

  adjust_grid_size();

  redraw_pages();
}

//adjust internal grid sizes
function adjust_grid_size(){
  var $dtheads=$$('#dtheads');
  var $dtrows=$$('#dtrows');

  $dtrows.height( $$(gridbox).height()-$dtheads.height() );
//.width( $gb.width() );
}

//check/set grid sizes
function resize_grid(){
 var is_iefix='hidden';
 if ( !$$("#filter_box").is(':visible') && !$$("#watchlist").is(':visible') ) is_iefix='visible';

// $$(gridbox).width(g_width);
  $$('#container').width(g_width-6).css('overflow', is_iefix); //6 - 2x3 borders

  $$('#td_gridbox').width(g_width);

 if (gridbox.offsetHeight < 480) gridbox.style.height = '480px';    
 $('watchlist').style.height = $('filter_box').style.height = $('gridbox').offsetHeight+ 'px';

 adjust_grid_size();
}

//make height of the grid same as inner data
function autoheight_grid(){
 $$('#dtrows').css('height','auto');
 $$(gridbox).height(gridbox.scrollHeight);
 $$('#filter_box').css('height','auto');
}

function oncell_click(tr){
 var tdhtml=$$('td:first', tr).html();
 
 var re = /<span[^>]*>([^<]*)/;
 var match = re.exec (tdhtml);
 var domainName = match[1];

 addDomainToWatchlist(domainName, g_tableName);
}

function resort_grid(td, ind){
 if (g_sortColInd!=ind){ //if col changed - reset sorting
    var jtd=$$(td);
    if ( jtd.is('.sortD') ){ //if def col sorting is DESC
       g_sortDir='asc';  //set to asc (because further reverting)
    }else{
       g_sortDir='des';
    }
 }

 g_sortDir = (g_sortDir=='asc')?'des':'asc';
 g_sortColInd = ind;
 g_sort = "&column_index="+(ind+1)+"&direction="+g_sortDir;

 gridReload(g_tableName, g_qs);
// reload_grid(g_tableName, g_qs);
}

//******************
function redraw_pages(){
 var currentPage = g_cur_page;
 var totalRecords  = parseInt(idata.total_count);
 var pagesInGroup  = 5;
 var currentPageBlock = Math.floor((currentPage-1)/pagesInGroup)*pagesInGroup;
 var pagesPerBlock = Math.min (pagesInGroup, Math.ceil((totalRecords - currentPageBlock*g_recordsPerPage)/ g_recordsPerPage));

 var pagingHtml = '';
 pagingHtml += '<a>Result page: </a>';
 if (currentPage > pagesInGroup)
     pagingHtml += '<a class="pagingPage" onClick="goto_page('+(currentPageBlock)+');"><</a>';
 for (var i = 1; i <= pagesPerBlock; i++) {
   pagingHtml += '<a class="' + (i != currentPage - currentPageBlock ? 'pagingPage' : 'pagingCurrentPage')+ '" onClick="goto_page('+ (currentPageBlock+i) +')">' + (i + currentPageBlock) + '</a>';
 }
 if ((currentPageBlock+pagesInGroup)*g_recordsPerPage < totalRecords)
     pagingHtml += '<a class="pagingPage" onClick="goto_page('+(currentPageBlock+pagesPerBlock+1)+');">></a>';

 $('grid_pages').innerHTML = pagingHtml;

}

function goto_page(page){
    g_cur_page=page;

    reload_grid(g_tableName, g_qs, 1);
}




//******** column resizing
var dragMode=false;
var tdobj="";
var crth, crtd, crpos;
function toDragMode(what){
  dragMode=true;
  tdobj=what;
//  crth=$$('#theads tr:first th:eq('+tdobj+')');
//  crtd=$$('#trows tr:first th:eq('+tdobj+')');;
  crth=$$('#theads colgroup col:eq('+tdobj+')');
  crtd=$$('#trows colgroup col:eq('+tdobj+')');;
  crpos=crth.position();
}
function startMoving(e){
  if(!dragMode) return false;

  var w=e.clientX-crpos.left;
  if (w<10) w=10;
  crth.width( w );
  crtd.width( w );
}
function stopMoving(){
  dragMode=false;
  tdobj="";
}


function on_window_resize(){

 var iefix=$$.browser.msie?0:20;    //20 - scrollbar in IE
 var ws=get_win_size();
 var wfix=iefix+12; //2x6 - margin
 g_width = ws.w-$$('#filter_box').width()-wfix;

 $$('#grid_n_filter').width(ws.w-wfix);
 $$('#grid').width(ws.w-wfix);

 resize_grid();
}


function get_win_size() {
  var res=new Array();
  res.w=0;
  res.h=0;

  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    res.w = window.innerWidth;
    res.h = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    res.w = document.documentElement.clientWidth;
    res.h = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    res.w = document.body.clientWidth;
    res.h = document.body.clientHeight;
  }

  return res;
}

function show_add_domains(){
 $$('#ta_domains').val('');

 $$("#ta_domains").show();
 $$("#ta_domains_progress").hide();
 $$("#ta_domains_error").hide();

 showForm('addDomainsForm');
 return false;
}

function add_domain_submit(F){

 var data={
     'task': 'addDomains',
     'domains': F.domains.value
 };

 $$("#ta_domains").hide();
 $$("#ta_domains_progress").show();
 $$("#ta_domains_error").hide();

 $$.getJSON('setup.php', data, function(data){
     if (data.status==1){
        $$("#ta_domains_progress").hide();
        $$("#ta_domains_error").show();
        $$("#ta_domains_error_ctr").html(data.ctr_added);
     }else{
        hideForm ('addDomainsForm');
     }
 });
}

function show_del_domains(){
 showForm('delDomainsForm');

 $$('#del_dom_list').html("<div style='padding-top:50px'><img src='"+g_static+"/images/loading.gif' width='16' height='16' border='0' /> loading...</div>");

 var data={
     'task': 'getDomains'
 };
 $$.getJSON('setup.php', data, function(data){
     var html='';
     for (var v in data) {
         v=data[v];
         if (parseInt(v.id)>0){
            html+='<label><input type="checkbox" name="d['+v.id+']" value="1"> '+v.name+'</label><br/>';
         }
     }
     if (html=='') html='<b>no domains to delete</b>';
     $$('#del_dom_list').html(html);
 });

}

function del_domain_submit(F){

 var data={
     'task': 'delDomains'
 };

 $$('input:checked', F).each(function(){
       data[this.name]=1;
 });

 $$.getJSON('setup.php', data, function(data){
     hideForm ('delDomainsForm');
 });
}


function set_tab_market(){
 $$('#df_container').removeClass('green');
 $$('#df').show();
 $$('#df_my').hide();
 $$('.btn_market').css('z-index',10);
 $$('.btn_myfreshdrop').css('z-index',0);
}


function set_tab_freshdrop(){
 $$('#df_container').addClass('green');
 $$('#df').hide();
 $$('#df_my').show();
 $$('.btn_market').css('z-index',0);
 $$('.btn_myfreshdrop').css('z-index',10);
}

function grid_tab_click(mt_id){
 $$('#title_tabs .tab_green_narrow').removeClass('tab_green_narrow').addClass('tab_blue_narrow');
 $$('#title_tabs .tab_green_wide').removeClass('tab_green_wide').addClass('tab_blue_wide');

 $$('#tab_'+mt_id+'.tab_blue_narrow').removeClass('tab_blue_narrow').addClass('tab_green_narrow');
 $$('#tab_'+mt_id+'.tab_blue_wide').removeClass('tab_blue_wide').addClass('tab_green_wide');

 g_mt_id=mt_id;
 reload_grid(g_tableName, g_qs);
}
