//function mouseXY(e) {var x=0,y=0;if(!e) var e=window.event;if(e.pageX || e.pageY){x=e.pageX;y=e.pageY;}else if(e.clientX || e.clientY){x=e.clientX+(document.documentElement.scrollLeft || document.body.scrollLeft)-document.documentElement.clientLeft;y=e.clientY+(document.documentElement.scrollTop || document.body.scrollTop)-document.documentElement.clientTop;}return {"x":x,"y":y};}
function getDocumentHeight(){return (document.body.scrollHeight > document.body.offsetHeight)?document.body.scrollHeight:document.body.offsetHeight;}
function getDocumentWidth() {return (document.body.scrollWidth > document.body.offsetWidth)?document.body.scrollWidth:document.body.offsetWidth;}
function getBodyScrollTop() {return self.pageYOffset || (document.documentElement && document.documentElement.scrollTop) || (document.body && document.body.scrollTop);}
function getBodyScrollLeft(){return self.pageXOffset || (document.documentElement && document.documentElement.scrollLeft) || (document.body && document.body.scrollLeft);}
function getClientHeight()  {return (document.compatMode=='CSS1Compat'||Prototype.Browser.WebKit) && !window.opera?document.documentElement.clientHeight:document.body.clientHeight;}
function getSelectedValue(el) {	return el.options[el.selectedIndex].value; }
function getRadioValue(el) { if( typeof el.length == 'undefined' ) return el.value; for (var i=0; i < el.length; i++) if( el[i].checked ) return el[i].value; return false; }

var boxid;//2 global vars for timer
var cntid;//need these to show/hide hlbox borders
var swfu;
var previewX=0;
var previewY=0;
var sliderTimer;
var previewdrag=false;
var clicked=false;

$(document).ready(function() {

  $("#col-1").sortable({ 
      connectWith: ["#col-2","#col-3"],
      handle: "h1",
      placeholder: "placeholder",
      revert: true
  }); 
  $("#col-2").sortable({ 
      connectWith: ["#col-1","#col-3"],
      handle: "h1",
      placeholder: "placeholder",
      revert: true
  });
  $("#col-3").sortable({ 
      connectWith: ["#col-1","#col-2"],
      handle: "h1",
      placeholder: "placeholder",
      revert: true
  });

// show highlight Box border
  $('.handle').mouseover(function(){
    boxid = $(this).parent(".box")[0].id
    if(clicked) return;
    if($('#'+boxid).hasClass('hoverState')) return;
    $('.box').removeClass('hoverState');
    appearTimer = setTimeout("$('#'+boxid).addClass('hoverState');clearTimeout(appearTimer);",500);
  }).mouseout(function(){
    if(clicked) return;
    clearTimeout(appearTimer);
    removeTimer = setTimeout("$('.box').removeClass('hoverState');clearTimeout(removeTimer);",500);
  }).mousedown(function(){
    boxid = $(this).parent(".box")[0].id
    $('#'+boxid).addClass('hoverState');
  });
  $('*').mousedown(function(){
    clicked=true;
  }).mouseup(function(){
    clicked=false;
    removeTimer = setTimeout("$('.box').removeClass('hoverState');clearTimeout(removeTimer);",500);
  });


// show/hide highlight Box
  $('.controls a.collapse').click(function() {
    var box=$(this).parents('.box')[0];
    if( box.parentNode.id != "menu" ){
      var collapsed = ($.cookie('collapsed') == null) ? '' : $.cookie('collapsed');
      collapsed = (collapsed.indexOf(box.id) > -1) ? collapsed.replace(box.id, "") : collapsed + box.id;
      createCookie('collapsed',collapsed,365);
      $('#'+box.id+' .wrapper').slideToggle();
      $(this).toggleClass('on');
    }
  });
// options area edit
  $('.controls a.edit').click(function() {
    var box = $(this).parents('.box');
    var opt = box.find('.options');
    opt.slideToggle();
  });
  $('.doCollapse').click(function(){
    var box=$(this).parents('.box')[0];
    $('#'+box.id+' .controls a.collapse').trigger('click');
  });
  
// options area selection
  $('.options p input').click(function() {$(this.parentNode).toggleClass('on');});
// options area save
  $('.wrapper .options .buttons .save').click(function() {
    if( $(this).parents('#menu')[0] ) return;
    var box=$(this).parents('.box')[0];
    var tabs = $('#'+box.id+' .options p input:checked').map(function(){
      return $(this).val();
    }).get().join("");
    var column = $.json.decode($.cookie('box'));
    eval("column."+box.id+" = \""+tabs+"\"");
    createCookie("box",$.json.encode(column),365);
    $('#'+box.id+' .content').load("/"+FOLDER+'ajax/',{action:'tabs',letter:box.id}, controls_tab_bind);
    $('#'+box.id+' .options').slideToggle();
    return false;
  });
// highlight box cancel
  $('.wrapper .options .buttons .cancel').click(function() {
    if( $(this).parents('#menu')[0] ) return;
    var box=$(this).parents('.box')[0];
    var column = $.json.decode($.cookie('box'));
    var tabs;eval("tabs=column."+box.id);
    $('#'+box.id+' .options p input').each(function(){
      $(this.parentNode).removeClass("on");
      if( tabs.indexOf(this.value) == -1 ){
        this.checked = false;
      }else{
        this.checked = true;
        $(this.parentNode).addClass("on");
      }
    });
    $('#'+box.id+' .options').slideToggle();
  });
// menu cancel
  $('#menu .options .buttons .cancel').click(function() {
    var col1 = $.cookie('col1'); if(!col1) col1 = '';
    var col2 = $.cookie('col2'); if(!col2) col2 = '';
    var col3 = $.cookie('col3'); if(!col3) col3 = '';
    var boxids = col1+col2+col3;
    $('#menu p input').each(function(index) {
      if( boxids.indexOf($(this).val()) == -1 ){
        this.checked = false;
        $(this.parentNode).removeClass('on');
      }else{
        this.checked = true;
        $(this.parentNode).addClass('on');
      }
    });
    $('#menu .options').slideToggle();
  });

// colour selection
  $('.colours input').click(function() {
    $('.colours div').removeClass('on');
    $(this.parentNode).addClass('on');
  });
// changer mouseover effect
  $('.changer li').bind('mouseover',function(event) {
    var box=$(this).parents('.box')[0];
    $('#'+box.id+' li').removeClass('on');
    $(this).addClass('on');
  });
// menu reset (not finished)
  $('#topicsSelectionReset').bind('click',function(event) {
    $('#shadowbox').css({ height: $('body').outerHeight() });
    $('#shadowbox').fadeIn(50);
    $('#popup').show();
  });

  $('.slider').mousedown(function(event){
    var step = $(this).hasClass('right') ? -6 : 6;
    sliderMove(step);
  }).mouseup(function(event){
    clearTimeout(sliderTimer);
  }).mouseout(function(event){
    clearTimeout(sliderTimer);
  });

  $('#menu .reset').click(function(){
    popup('reset',{'header':'Attention!','text':'Go back to the home page default settings or cancel'});
  });


  $('#popup #doClose').click(popup_close);

  controls_tab_bind();
  finder_bind();
  hints();

  $('.bookmark').click(function(){
    var url = this.href;
    var title = this.title;

    if( jQuery.browser.opera ) {
      a.rel='sidebar'; // no onclick event!
    }else{
      if( jQuery.browser.mozilla ){
        window.sidebar.addPanel(title, url, "");
      }else if( jQuery.browser.msie ){
        window.external.AddFavorite(url, title);
      }else if( jQuery.browser.safari ){
        popup('close',{'header':'Attention!','text':'Unfortunately, your browser does not support the requested action, please press Ctrl/Cmd + D to bookmark this page manually.'});
      }else{
        popup('close',{'header':'Attention!','text':'Unfortunately, your browser does not support the requested action. In order to bookmark this site you need to do so manually through your browser.'});
      }
      return false;
    }
  });	

});

function popup(mode,text,action,params)
{
  $('#popup .heading').html(text.header);
  $('#popup .frame').html(text.text);

  if( mode=='close' ){
    $('#popup .buttons').html("<input id='doClose' class='save' type='button' value='Close'/>");
  }else{
    if( mode=='reset' ){
      $('#popup .buttons').html("<input id='doReset' class='save' type='button' value='Reset'/><input id='doClose' class='cancel' type='button' value='Close'/>");
      $('#doReset').click(function(){window.location='/'+FOLDER+'settings/reset/'});
    }else if( mode=='confirm' ){
    }
  }

  $('#popup #doClose').click(popup_close);

  $('#shadowbox').css({ height: $('body').outerHeight() });
  $('#shadowbox').fadeIn(50,function(){$('#popup').show();});
  

}
function formCallback(f,success,fn)
{
  if( typeof fn == 'undefined' ) 
    fn = function(data){
      if(data=='ok') popup('close',success);//alert(success.header+"\n\n"+success.text.replace(/<br>/gi, "\n"));
      else popup('close',{'header':'Attention!','text':data});//alert("Error"+"\n\n"+data.replace(/<br\/>/gi, "\n"));
    }

  $.post("/"+FOLDER+"ajax/",$(f).serializeArray(),fn);
}

function popup_close()
{
  $('#popup').hide();
  $('#shadowbox').fadeOut(50);
}

function sliderMove(step)
{
  var p = $('.nav ul').position().left + step;
  var w = $('.nav').width()-10;
  $('.nav li').each(function(index){w -= ($(this).width() + 10);});
  if( step > 0 ){
    if( p > 0 ) return;
  }else{
    if( p < w ) return;
  }

  $('.nav ul').css({left:p+step});
  sliderTimer = setTimeout("sliderMove("+step+")",1);
}


function finder(f)
{
  $(f).parents('.finder').load("/"+FOLDER+"ajax/?action=finder&"+$(f).serialize(),finder_bind);
}
function finder_bind()
{
  
  $('.finder .prev').click(function(event){
    var f=$(this).parents('form')[0];
    if( $(this).hasClass('back') ){
      scroll(0,0);
      f.from.value = parseInt(f.from.value/225)*225 - 225;
    }else{
      f.from.value = parseInt(f.from.value) - parseInt(f.pages.value);
    }
    finder(f);return false;
  });
  $('.finder .next').click(function(event){
    var f=$(this).parents('form')[0];
    if( $(this).hasClass('forward') ){
      scroll(0,0);
      f.from.value = parseInt(f.from.value/225)*225 + 225;
    }else{
      f.from.value = parseInt(f.from.value) + parseInt(f.pages.value);
    }
    finder(f);
    //return false;
  });
  $('.finder .add').click(function(event){
    var f=$(this).parents('form')[0];
    f.pages.value = parseInt(f.pages.value) + 1;
    finder(f);return false;
  });
  $('.finder .remove').click(function(event){
    var f=$(this).parents('form')[0];
    var pages=parseInt(f.pages.value);
    f.pages.value = (pages<2) ? 1 : pages - 1;
    finder(f);return false;
  });
  $('.finder-result-pages a').click(function(){
    scroll(0,0);
    var f=$(this).parents('form')[0];
    f.from.value = 15 * (parseInt(this.innerHTML)-1);
    finder(f);return false;
  });
}
function controls_tab_bind()
{
  $('.ctrl-tab .add').click(function(event){
    var reg = /settings\/add\/tab\/(\w*)/;var arr = reg.exec(this.href);var tab = arr[1];
    $('#'+tab+' li').each(function(index){
      if( this.className == "hidden" ){
        this.className = "";
        updateAUX(tab);
        return false;
      }
    });
    return false;
  });
  $('.ctrl-tab .remove').click(function(event){
    var reg = /settings\/remove\/tab\/(\w*)/;var arr = reg.exec(this.href);var tab = arr[1];
    var col = $('#'+tab+' li');
    var sz = col.size();
    for(var i=(sz-1); i>0; i-- ){
      if( col[i].className == "" ){
        col[i].className = "hidden";
        break;
      }
    }
    updateAUX(tab);
    return false;
  });
}



function hints()
{
  $('input[hint][value=]').focus(function(){
    i=$(this);
    if (i.val() == i.attr('hint')) {
      i.val('');
      i.removeClass('hint');
    }
  }).blur(function(){
    i=$(this);
    if (i.val() == ''){
      i.val(i.attr('hint'));
      i.addClass('hint');
    }
  }).addClass('hint').each(function(i){
    i=$(this);
    i.val(i.attr('hint'));
  });
}

function createCookie(name,value,days)// this is container function to set one path to all cookies
{
  $.cookie(name, value, {path: "/"+FOLDER, expires: 365});
}

function updateAUX(aim)
{
  var aux = $.json.decode($.cookie('aux'));
  eval("aux."+aim+" = $('#"+aim+" li').size() - $('#"+aim+" li.hidden').size()");
  createCookie("aux",$.json.encode(aux),365);
}

function Mclick(e)// these functions cannot be put to ready event because content can change(ajax)
{
  var targ=eventtarget(e);
  if( targ.tagName == "IMG" && targ.parentNode && targ.parentNode.tagName == "A" ) targ = targ.parentNode;
  if( $(targ).parents("#popup_send").size() == 0 ) $("#popup_send").hide();

  if( $(targ).hasClass('mainbox') ){
//    var reg = /finegael\/(\w*)(\/?)(\w*)(\/?)(\d*)(\/?)(\w*)/;
//    var reg = /fg\.be-q\.com\/(\w*)(\/?)(\w*)(\/?)(\d*)(\/?)(\w*)/;
/*
    var reg = /finegael\.org\/(\w*)(\/?)(\w*)(\/?)(\d*)(\/?)(\w*)/;

    var href = $(targ)[0].href;
    var arr = reg.exec(href);

    if( $(targ).hasClass('reload-mainbox') ){
      $('.page').remove();
      $('#col-2').before("<div class='page'><div class='content'><h1 class='heading'></h1><div class='navbar'></div><div class='tabs'><div class='tab main'></div></div><div class='closer top'><div class='w3'> </div><div class='w1'> </div><div class='w1'> </div></div><div class='closer bottom'><div class='w1'> </div><div class='w1'> </div><div class='w3'> </div></div></div></div>");
      $('.page .navbar').load("/"+FOLDER+'ajax/',{action:'navbar',tbl:arr[1],cat:arr[3]});
    }
    if( $(targ).hasClass('remove-banner') ){
      $('#banner').after("<div style='height:9px;clear:both;font-size:1px;'></div>");
      $('#banner').remove();
    }
    
    if( $(targ).hasClass('change-tab-name') ){
      $('.nav li.on a').load("/"+FOLDER+'ajax/',{action:'changeTabName',tbl:arr[1],cat:arr[3],itemid:arr[5]});
    }
    
    showByPage(targ, arr[1], arr[3], arr[5], arr[7]);

    $('.page .content h1.heading').load("/"+FOLDER+'ajax/',{action:'address',tbl:arr[1],cat:arr[3]});
    return false;
*/ 
  }else if( $(targ).hasClass('send') ){
    var pos = $(targ).position();
    $('#popup_send').css({'left':pos.left-50, 'top':pos.top-100});
    $('#popup_send').show();
  }
}

function showByPage(targ, tbl, cat, pg, article)
{
  if( article == 'article' ){
    $('.main').load("/"+FOLDER+'ajax/',{action:'articleSingle',tbl:tbl,cat:cat,itemid:pg});
  }else{
    if( pg.length ){
      $('.main').load("/"+FOLDER+'ajax/',{action:'articlePage',tbl:tbl,cat:cat,pg:pg},function(){hints();});
    }else{
      $('.tabs').load("/"+FOLDER+'ajax/',{action:'articleWhole',tbl:tbl,cat:cat,pg:0},function(){hints();});
      $('.nav li').removeClass('on');
      $($(targ)[0].parentNode).addClass('on');
    }
  }
}

function addslashes( str ) {
  return (str+'').replace(/([\\"'])/g, "\\$1").replace(/\0/g, "\\0");
}

function eventtarget(e)// utility function to catch the target tag of an event
{
	var targ;
	if(!e) var e=window.event;
	if(e.target){targ=e.target;}else if(e.srcElement){targ=e.srcElement;}
	if(targ.nodeType==3) targ=targ.parentNode; // defeat Safari bug
	return targ;
}


document.onclick=Mclick;
