//global functions and vars
var SITE_URL='/';

var IE = document.all?true:false;
if(!IE) document.captureEvents(Event.KEYPRESS);
if(!IE) document.captureEvents(Event.MOUSEMOVE);

var receiveReq=getXmlHttpRequestObject();
var receiveReqMess=getXmlHttpRequestObject();
function getXmlHttpRequestObject(){
  if(window.XMLHttpRequest){
          return new XMLHttpRequest();
  }else if(window.ActiveXObject){
          return new ActiveXObject("Microsoft.XMLHTTP");
  }
}
function doAjax(url,func){
  receiveReq.open("GET", url, true);
  receiveReq.onreadystatechange=eval(func);
  receiveReq.send(null);
}

document.onmousedown=getMouseXY;
var mouseX=0;
var mouseY=0;
function getMouseXY(e) {
  if(IE){
    mouseX=event.clientX+document.body.scrollLeft;
    mouseY=event.clientY+document.body.scrollTop;
  }else{
    mouseX=e.pageX;
    mouseY=e.pageY;
  }
  if(mouseX<0) mouseX=0;
  if(mouseY<0) mouseY=0;
  return true;
}

function getBounds(element){
  var left=element.offsetLeft;
  var top=element.offsetTop;
  for(var parent=element.offsetParent; parent; parent=parent.offsetParent){
    left+=parent.offsetLeft-parent.scrollLeft;
    top+=parent.offsetTop-parent.scrollTop
  }
  return {left: left, top: top, width: element.offsetWidth, height: element.offsetHeight};
}

function getCharCode(e){
  if(!e) if(window.event) e=window.event;
  if(typeof(e.keyCode)=='number') char_code=e.keyCode;
  else if(typeof(e.which)=='number') char_code=e.which;
  else if(typeof(e.charCode)=='number') char_code=e.charCode;
  return char_code;
}

String.prototype.trim=function() { return this.replace(/^\s+|\s+$/g, ''); }
String.prototype.explode=function(sep){
  if(sep.length!=''){
    var res_arr=Array();
    var str=this;
    var i=0;
    while((pos=str.indexOf(sep))!=-1){
      res_arr[i++]=str.substr(0,pos);
      str=str.substr(pos+sep.length);
    }
    res_arr[i++]=str.substr(0,str.length);
    if(res_arr.length>0) return res_arr;
    else Array(this);
  }return false;
}
Array.prototype.in_array=function(obj){
  var len=this.length;
  for(var x=0; x<=len; x++){
    if(this[x]==obj) return true;
  }
  return false;
}
function isInt(x){
  var y=parseInt(x);
  if(isNaN(y)) return false;
  return x==y && x.toString()==y.toString();
}
function input_check_numeric(elemID,after_dot){
  if(!after_dot) after_dot=0;
  elem=document.getElementById(elemID);
  var temp_str='';
  for(i=0; i<elem.value.length; i++){
    ch=elem.value.substr(i,1);
    if((ch.charCodeAt(0)>=48 && ch.charCodeAt(0)<=57) || (after_dot>0 && ch=='.' && temp_str.indexOf('.')==-1)) temp_str+=ch;
  }
  if((pos=temp_str.indexOf('.'))!=-1) temp_str=temp_str.substr(0,pos+after_dot+1);
  elem.value=temp_str;
}

if(!getCookie('newWinCounter')) createCookie('newWinCounter','0',1);
function open_window(link,w,h){
  var newWinCounter=getCookie('newWinCounter');
  var top = (screen.height - h) / 2;
  var left = (screen.width - w) / 2;
  var win = "width="+(w+20)+",height="+(h+20)+",top="+top+",left="+left+",menubar=no,location=no,resizable=yes,scrollbars=yes";
  newWin = window.open(link,'newWin'+newWinCounter,win);
  newWinCounter
  newWin.focus();
  createCookie('newWinCounter',newWinCounter+1,1);
}
function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else var expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

function getCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return null;
}

function eraseCookie(name) {
  createCookie(name,"",-1);
}
//---
function clear_select(select_elem,first_text){
  while (select_elem.firstChild) {
    select_elem.removeChild(select_elem.firstChild);
  }
  if(first_text) select_elem.options[0]=new Option(first_text,0);
}
function show_or_hide(flag,elem_id){
  var elem=document.getElementById(elem_id);
  if(elem){
    if(flag){
      elem.style.visibility='visible';
      elem.style.display='';
    }else{
      elem.style.visibility='hidden';
      elem.style.display='none';
    }
  }
}
function dataTable(table_id,head_tr){
  var tabla=document.getElementById(table_id);
  for(i=0; i<tabla.rows.length; i++){
    if(!(head_tr && i==0)) dataTableTr(tabla.rows[i]);
  }
}
function dataTableTr(obj){
  obj.onmouseover=function(){
    this.className='dataTableRowOver';
  }
  obj.onmouseout=function(){
    this.className='dataTableRow';
  }
  obj.onclick=function(){
    if(this.className!='dataTableRowSelected'){
      this.className='dataTableRowSelected';
      this.onmouseover=function(){};
      this.onmouseout=function(){};
    }else{
      this.className='dataTableRowOver';
      dataTableTr(this);
    }
  }
}
//end global

function show_tooltip_div(flag,elem){
  var tooltip_div=document.getElementById('tooltip_div');
  if(flag){
    var elem_bounds=getBounds(elem);
    tooltip_div.style.top=(elem_bounds.top+elem_bounds.height-2)+'px';
    tooltip_div.style.left=elem_bounds.left+'px';
    tooltip_div.style.visibility='visible';
    tooltip_div.style.display='';
  }else{
    tooltip_div.style.top='0px';
    tooltip_div.style.left='0px';
    tooltip_div.style.visibility='hidden';
    tooltip_div.style.display='none';
  }
}

function tooltip(url,elem){
  show_tooltip_div(true,elem);
  var tooltip_div=document.getElementById('tooltip_div');
  if(receiveReq.readyState>0 && receiveReq.readyState<4) receiveReq = new getXmlHttpRequestObject();
  receiveReq.open("GET", url, true);
  receiveReq.onreadystatechange=function(){
    if(receiveReq.readyState==4){
      tooltip_div.innerHTML=receiveReq.responseText;
    }else if(receiveReq.readyState>0){
      tooltip_div.innerHTML='Loading...';
    }
  }
  receiveReq.send(null);
}

//board
if(!getCookie('viewed_msgs')) createCookie('viewed_msgs','',7);
function form_submit(form_id,act){
  var forma=document.getElementById(form_id);
  if(act){
    if(document.getElementById('act')) document.getElementById('act').value=act;
    else forma.action=act;
  }
  forma.submit();
}
function search_submit(){
  var forma=document.getElementById('search_form');
  var act1=SITE_URL+'board/';
  var action='';
  if(document.getElementById('category_id').value!=0) action=act1+document.getElementById('category_id').value+'/';
  else alert('Выберите Категорию');
  if(action){
    if(document.getElementById('today').checked) action+='today/';
    location.href=action+'?city='+document.getElementById('city').value+'&message='+document.getElementById('message').value;
  }
  return false;
}
function in_search_inp(elem){
  document.getElementById('search_inp').value=elem.innerHTML;
}

var next_id=0;
var all_mess_flag=true;
function get_message(message,selected){
  if(message=='all' && message_ids && message_ids.length!=0){
    if(next_id!=message_ids.length){
      mess_id=message_ids[next_id];
      next_id++;
    }else{
      next_id=0;
      all_mess_flag=!all_mess_flag;
      return true;
    }
    flag=all_mess_flag;
  }else{
    mess_id=message;
    flag=(document.getElementById('message_'+mess_id).style.visibility=='hidden');
  }
  message_div=document.getElementById('message_'+mess_id);
  if(message_div){
    if(flag){
      if(message_div.innerHTML){
        show_or_hide(true,'message_'+mess_id);
        if(message=='all') get_message(message);
        //else document.location.replace('#message_'+mess_id);
      }else{
        if(receiveReqMess.readyState>0 && receiveReqMess.readyState<4) alert('Пожалуйста подождите пока догрузится предыдущее сообщение');
        else{
          receiveReqMess.open("GET", SITE_URL+'ajax.php?act=get_message&message_id='+mess_id+'&selected='+selected+(getCookie('notepad_msgs') && getCookie('notepad_msgs').explode(',').in_array(mess_id) ? '&in_notepad=1' : ''), true);
          receiveReqMess.onreadystatechange=function(){
            if(receiveReqMess.readyState==4){
              if(receiveReqMess.responseText){
                message_div.innerHTML=receiveReqMess.responseText;
                show_or_hide(true,'message_'+mess_id);
                if(message=='all') get_message(message);
                //else document.location.replace('#message_'+mess_id);
              }
            }
          }
          receiveReqMess.send(null);
        }
      }
    }else{
      show_or_hide(false,'message_'+mess_id);
      if(message=='all') get_message(message);
      //else document.location.replace('#message_'+mess_id);
    }
  }
}
var all_mess_date_flag=true;
function show_date(mess_id){
  if(mess_id=='all'){
    if(message_ids && message_ids.length!=0){
      for(i=0; i<message_ids.length; i++) show_or_hide(all_mess_date_flag,'date_'+message_ids[i]);
      all_mess_date_flag=!all_mess_date_flag;
    }
  }else{
    if(document.getElementById('date_'+mess_id).style.visibility=='hidden') show_or_hide(true,'date_'+mess_id);
    else show_or_hide(false,'date_'+mess_id);
    document.location.replace('#message_'+mess_id);
  }
}
var all_cat_flag=false;
function get_categories(cat_id){
  if(cat_id=='all'){
    if(category_ids && category_ids.length!=0){
      for(i=0; i<category_ids.length; i++) show_or_hide(all_cat_flag,'category_'+category_ids[i]);
      all_cat_flag=!all_cat_flag;
    }
  }else{
    var cat_elem=document.getElementById('category_'+cat_id);
    if(cat_elem.style.visibility=='hidden') show_or_hide(true,'category_'+cat_id);
    else show_or_hide(false,'category_'+cat_id);
  }
  document.location.replace('#category_'+cat_id);
}



/////////////img_scroll//////////////
function scroll(obj, increase, delay, length) { 
if (!delay) delay = 1 
var pos = (increase < 0) ? increase * -1 : increase 
pos = Math.ceil(length/pos) 
var first = obj.scrollLeft 
function doScroll() { 
if (length && pos-- <= 0) { 
clearInterval(obj.interval) 
return 
} 
obj.scrollLeft += increase 
if (obj.scrollLeft !== first + increase) clearInterval(obj.interval) 
first = obj.scrollLeft 
} 
if (obj.interval) { 
clearInterval(obj.interval) 
} 
obj.interval = setInterval(doScroll, delay) 
}
