//version 1.01
var smLocal=smUrl(window.location.href);
var noReload=false;
var incrNum=0;
var isLoading=0;
function getNum(){
	 incrNum++;
	 return incrNum;
}

function updateElm(arr){
	 if(!isset(arr)) return false;
	 jq.each(arr,function(k,v){
	     var elm=jq(k);
	     switch(v['mod']){
	        default:
		case 'replace':
		 if(elm.length>0){
		    elm.replaceWith(v['con']);
		 }
		 else if(isset(v['par'])){
		    if(v['last']=='1') jq(v['par']).append(v['con']);
		    else jq(v['par']).prepend(v['con']);
		 }
		break;
		case 'html':
		 elm.html(v['con']);
		 convertLinks(linkType,'a');
		break;
		case '+':
		var val=(elm.html()*1)+(v['con']*1);
		elm.html(val);
		break;
		case '-':
		var val=(elm.html()*1)-(v['con']*1);
		elm.html(val);
		break;
		case 'remove':
		elm.remove();
		break;
	     }
	 });
}

function isset(v){
	 if(v===undefined) return false;
	 else return true;
}

function strToJson(str){
	 return eval('('+str+')');
}

function processForm(form){
    setLoading(1);
    $(form).find('input[type=submit]').attr('disabled','disabled');
    $('.form-error').html('');
    $(form).ajaxSubmit(function(data){
	  var r=processResponse(data);
	  if(data.substr(0,4)=='ajax'){
	   	  if(isset(r.resetForm)) $(form).resetForm();
		  $(form).find('input[type=submit]').removeAttr('disabled');
	  }
	  else alert(data);
	  setLoading(0);

    });
    setTimeout(function(){
       $(form).find('input[type=submit]').removeAttr('disabled');
    },2000);
   return false;
}

function setJavascripts(arr){
	 if(!isset(arr)) return false;
	 jq.each(arr,function(k,v){
	      var id='js-'+k;
	      if(jq('#'+id).length>0) jq('#'+id).html(v);
	      else if(!isset(javascriptArr[k])){
	        jq('body').append("<script type='text/javascript' id='"+id+"'>"+v+"</script>");
		javascriptArr[k]=1;
	      }
	 });
}

function processResponse(data){
  if(data.substr(0,4)=='ajax') {
      var r=strToJson(data.substr(4));
      if(isset(r.redirect)) window.location.replace(r.redirect);
      if(isset(r.alert)) alert(r.alert);
      if(isset(r.stopRefTimer)) clearTimeout(loginRefreshTimer);
      else if(isset(r.logged)) promptLoginRefresh();
      setJavascripts(r.js);
      updateElm(r.data);
      jq.each(r.onload,function(k,v){
           eval(v);
      });
      addMenus(r.menu);
      return r;
  }
  else if(isset(data)){
      if(data.length>0) alert(data);
  }
}

function delItem(id,elm,msg,rl){
	 var cn=confirm(msg);
	 if(cn){
	 	var t=jq(id);
	 	if(isset(rl)||t.length<1) return true;
		setLoading(1);
	 	var url=jq(elm).attr('href')+'&ajax=1';
	 	jq.get(url,function(data){
		   processResponse(data);
		   setLoading(0);
		});
	 }
	 return false;
}

function makeUrl(str){
	 var url='index.php?ajax=1';
	 var sa=str.substr(1).split('/');
	 var steps=sa.length/2;
	 var c=0;
	 for(n=0;n<steps;n++){
	     var k=sa[(n*2)];
	     var v=sa[((n*2)+1)];
	     if(isset(k)&&k){
	        if(!isset(v)) v='';
	        url=url+'&'+k+'='+v;
	     } 
	 }
	 return url;
}

function updateState(str,raw){
	 if(str.length<1||noReload){
	   noReload=false;
	   return false;
	 }
	 setLoading(1);
	 if(isset(raw)){
	  var url=str;
	 }
	 else{
	  var url=makeUrl(str);
	 }
	 jq.get(url,function(data){
	     setLoading(0);
	     processResponse(data);
	 });
}

function setLoading(sv){
	 if(sv=='1'||sv==1){
	   isLoading=1;
	   if(jq('.loading').is(':hidden')) jq('.loading').fadeIn();
	 }
	 else{
	     isLoading=0;
	     jq('.loading').fadeOut();
	 }
}

function hasClick(e){
	 if(e.hasEvent('click')||e.attr('onclick')) return true;
	 else return false;
}

function smUrl(url){
	 if(!isset(url)) return '';
	 return url.replace(/^http\:\/\/w{3}?\.|\/[a-z\.]+\??[^\/]*$/g,'');
}

function isLocal(url){
	 if(!isset(url)) return true;
	 var w=url.match(/^[a-zA-Z0-9]+\:\/\//);
	 if(w){
	    if(smUrl(url)==smLocal) return true;
	    else return false;
	 }
	 else return true;;
}

function convertLinks(tpe,sel,force){
	 if(!isset(sel)) var sel='a';
	 switch(tpe){
	 case '2':
	 jq(sel).each(function(a){
	      var e=jq(this);
                 if(!hasClick(e)&&isLocal(e.attr('href'))&&!e.hasClass('no-parse')
		 &&!e.hasClass('article-gallery')||isset(force)){
  	         e.attr('href',convertLink(e.attr('href')));
	      }
	 });
	 break;
	 }
}

function convertLink(txt){
	 if(isset(txt)){
          var t=txt.replace(/[\=|\&]|\&amp\;/g,'/').replace(/\?/,'#');
	  if(!t.match(/\#/)) t=t+'#home';
	  return t;
	 }
	 else return '#home';
}

function setButton(cls){
	 jq('#editmenu').html(getMenu(cls));
}

function initButtons(arr){
	 jq.each(arr,function(btn,v){
  	    initButton(btn);
	 });
}

function addMenus(arr){
	 jq.each(arr,function(cls,v){
	    menuStructure[cls]=v;
	    initButton(cls);
	 });
}

function getMenu(cls){
	 var s=menuStructure[cls];
	 var r="<ul id='"+cls+"_btn' class='SimpleContextMenu'>";
	 jq.each(s.btn,function(k,v){
	    r=r+"<li class='adminContextMenu'>";
	    switch(k){
	    	case 'edit':
		 r=r+"<a href='#' onclick='openEditDiv(\""+s.table+"\",\""+s.id+"\"); return false;'>"
                 +"<img src='images/icons/page_edit.gif' border='0'> "+langArr['edit']+" "+s.table+"</a>";
		break;
		case 'delete':
		 r=r+"<a onclick=\"return delItem('#list-"+s.table+"-"+s.id+"',this,'"+langArr['confirm_del'].replace('[table]',s.table)+"')\""
+"href='?"+fmSerial+"table="+s.table+"&amp;"+fmSerial+"id="+s.id+"&amp;mode=del&amp;back_str="+s.back_str+"'>"
		 +"<img src='images/icons/page_delete.gif' border='0'> "+langArr['delete']+"</a>";
		break;
		case 'order':
		r=r+"<a href='#' onclick='openEditDiv(\""+s.table+"\",\""+s.id+"\",\"order\");"
		+" return false;'><img src='images/icons/arrow_up.gif' border='0'> "+langArr['order']+"</a>";
		break;
		case 'new':
		jq.each(v,function(ck,cv){
		  r=r+"<a href='#' onclick='openEditDiv(\""+s.table+"\",\""+s.id+"\",\"new\",\""+cv.par_t+"\",\""+cv.par_id+"\");return false;'>"
		  +"<img src='images/icons/page_new.gif' border='0'> "+langArr['add']+"</a>";
		});
		break;
		case 'crop':
		jq.each(v,function(ck,crop_fld){
		  r=r+"<a href='#' onclick='openCropDiv(\""+s.table+"\",\""+s.id+"\",\"order\",\""+crop_fld+"\"); return false;'>"
		  +"<img src='images/icons/arrow_up.gif' border='0'> "+langArr['crop']+"</a>";
		});
		break;
		case 'blacklist':
		r=r+"<a href='#' onclick='blacklist(\""+s.table+"\","+v.id+","+v.bl+",\""+cls+"\");return false;'>"+langArr['blacklist']+"</a>";
		break;
	    }
	    r=r+"</li>";
	 });
	 return r+'</ul>';
}

function blacklist(tbl,id,bl,cls){
      setLoading(1);
	 $.get('index.php?elm=blacklist&table='+tbl+'&id='+id+'&bl='+bl+'&cls='+cls+'&ajax=1',function(data){
	      setLoading(0);
              processResponse(data);
	 });
}

function getContent(elm){
	 var url=jq(elm).attr('href')+'&ajax=1';
	 updateState(url,1);
	 return false;
}

function slideOnHover(sel,tar){
	 if(!isset(sel)||!isset(tar)) return;
	 if(jq(sel).length<=0) return;
	 var ch=0;
	 var timer;
	 jq(sel).hover(function(){
	     var tp=jq(sel);
             jq(tar).css('left',tp.position().left);
	     if($.browser.msie) jq(tar).css('top',(tp.position().top+tp.height()));
	     ch=1;
	     jq(tar).slideDown(400).hover(function(){
	       ch=1;
	     },function(){
	        timer=setTimeout(function(){
		   if(!ch) jq(tar).slideUp(400);
		},400);
	       ch=0;
	     });
	 },function(){
	     ch=0;
	     timer=setTimeout(function(){
	     	     if(!ch) jq(tar).slideUp(400);
		   },400);
	 });
}

function setHash(str){
    if(isset(str)) location.hash=str;
}

function _GET(k){
    var sp=location.hash.substr(1).split('/');
    var st=sp.length/2;
    for(var n=0;n<st;n++){
      if(sp[(n*2)]==k){
        return sp[((n*2)+1)];
      }
    }
}

function getvals(a,d){
    if(isset(a)||isset(d)){
     var sp=location.hash.substr(1).split('/');
     var st=sp.length/2;
     var r='#';
     var ek={};
      for(var n=0;n<st;n++){
       var k=sp[(n*2)];
       var v=sp[((n*2)+1)];
       if(!in_array(v,d)){
         ek[k]=v;
       }
      }
      jq.each(a,function(k,v){
        ek[k]=v;
      });
      var f=1;
      jq.each(ek,function(k,v){
        if(isset(k)&&isset(v)){
        if(f){
         r=r+k+'/'+v;
         f=0;
        }
        else r=r+'/'+k+'/'+v;
	}
      });
      return r;
    }
  return location.hash;
}

function in_array(value,arr) {
    if(!isset(value)||!isset(arr)) return false;
        for (var i=0; i < arr.length; i++) {
          if (arr[i] === value) {
            return true;
          }
        }
   return false;
}

function getKey(val,arr){
    if(isset(val)&&isset(arr)){
      var match;
      jq.each(arr,function(k,v){
         if(v.toString()==val.toString()) match=k;
      });
    return match;
   }
}

function makeSortable(sel,tp){
	 switch(tp){
	 default:
	   jq(sel).sortable({ placeholder: 'sortable-hl' });
	 break;
	 }
}
function moreFields(id){
    jq('#writeroot'+id).append('<div>'+jq('#readroot'+id).html()+'<\/div>');
}
function expandTextInput(sl,maxwv){
	 $(sl).each(function(i){
	     var origW=$(this).width();
	     if(isset(maxwv)) var maxw=maxwv;
	     else var maxw=$(this).parent().width()-10;
	     setTIWidth(this,origW,maxw);
	     $(this).keyup(function(e){
	     	    setTIWidth(this,origW,maxw);
	     });
	 });
}
function setTIWidth(elm,origW,maxw){
	 var mrg=25;
	 var wd=$(elm).width();
	 var cw=getTextWidth(elm,1);
	 var tw=cw+mrg;
	 if(tw>origW){
	   if(tw<maxw){
  	     $(elm).width(tw);
	   }
	   else $(elm).width(maxw);
	 }
	 else $(elm).width(origW);
}
function getTextWidth(sel,val){
	 var e=$(sel);
	 var id='getTextWidth';
	 if($('#'+id).length<=0){
	    $('body').append("<span id='"+id+"' style='display:none;'></span>");
	 }
	 var s=$('#'+id);
	 s.css('font-family',e.css('font-family'))
	 .css('font-size',e.css('font-size'));
	 if(!isset(val)) var v=e.html();
	 else var v=e.val();
	 s.html(v.replace(/\s/g,'&nbsp;').replace(/\</g,'&#60;'));
	 return s.width();
}
function preloadImages(arr){
	 if(isset(arr)){
	    $.each(arr,function(k,v){
	      $(new Image()).attr('src',v);
	    });
	 }
}
