//version 1.1802
var smLocal=smUrl(window.location.href);
var noReload=false;
var incrNum=0;
var isLoading=0;
var jq = jQuery;

var fm2={
   beforeUnloadChk:{}
   ,buf:{}
   ,nextIdNum:0
   ,autoAliasSwitch:0
   ,conf:{}
   ,preloadArr:{}
   ,historySupport:false
   ,initFm2:function(conf){
      if(conf.historyjs){
        fm2.initConvertLinks();
      }
   }
   ,initConvertLinks:function(sel){
         (function(window,undefined){
	    var History = window.History;
	    if ( !History.enabled ) {
	       return false;
	    }
	    fm2.historySupport=true;
	    History.Adapter.bind(window,'statechange',function(){
	       var State = History.getState();
	       var url=State.url;
      	       url=url+(url.match(/\?/)?'&':'?')+'ajax=1';
      	       $.get(url,function(data){
         	 processResponse(data);
      	       });
	    });
	    fm2.converLinks(isset(sel)?sel:'a[href]:not([onclick])'
	           +':not(div.login-l-logged a):not(div.system-admincontent a)'
                    +':not(a.no-parse)');
         })(window);
   }
   ,serialize:function(arr,sub){
     if(typeof(arr)=='object'){
        var a=new Array();
        $.each(arr,function(k,v){
          if(typeof(v)!='function') a[a.length]=k+':'+fm2.serialize(v,1);
        });
        var s=e='';
        if(!isset(sub)){
            s='(';
            e=')';
        }
        return s+'{'+a.join(',')+'}'+e;
     }
     else{
        return arr;
     }
   }
   ,converLinks:function(sel){
      $(sel).live('click.historyjs',function(e){
        var i=$(this);
        var url=i.attr('href');
        e.preventDefault();
        fm2.loadUrl(url);
      });
   }
   ,loadUrl:function(url){
      History.pushState({},document.title,url);
   }
   ,addPreloadImage:function(url,id){
     switch(typeof(url)){
       case 'object':
       $.each(url,function(k,v){
          fm2.addPreloadImage(v,k);
       });
       break;
       case 'string':
        if(!isset(id)) var id='a'+fm2.nextId();
        if(url.length>0) fm2.preloadArr[id]=url;
       break;
     }
     if(!isset(fm2.buf['preloadImage_started'])){
        fm2.preloadImage();
	fm2.buf['preloadImage_started']=1;
     }
   }
   ,preloadImage:function(){
      var nxt=false;
      if(!isset(fm2.buf.preloadImage_Loaded)) fm2.buf.preloadImage_Loaded={};
      $.each(fm2.preloadArr,function(k,v){
         if(isset(v)&&!nxt&&!fm2.buf.preloadImage_Loaded[k]){
	    nxt=k;
	 }
      });
      if(nxt){
         var img=new Image();
	 $(img).load(function(){
	    delete fm2.preloadArr[nxt];
	    fm2.preloadImage();
            fm2.buf.preloadImage_Loaded[nxt]=true;
	 }).attr('src',fm2.preloadArr[nxt].replace(/\&amp\;/g,'&'));
      }
      else{
         setTimeout(function(){
	    fm2.preloadImage();
	 },1000);
      }
    }
   ,nextId:function(){
      var nid=fm2.nextIdNum;
      fm2.nextIdNum++;
      return nid;
   }
   ,cookieS:function(){
      return {
        path:fm2.conf.http_root.replace(/([^\:]+\:\/\/([^\/]+)(\/.*))/,'$3')
	,domain:fm2.conf.http_root.replace(/([^\:]+\:\/\/([^\/]+)(\/.*))/,'$2')
	};
   }
   ,groupDelete:function(cls,tbl){
      if(!confirm(langArr['confirm_del'].replace(/\[table\]/,tbl))) return false;
      if($('.'+cls+':checked').length<1) return;
      setLoading(1);
      var url='index.php?ajax=1&elm=fm2q';
      $('.'+cls+':checked').each(function(k,v){
        var sp=$(this).val().split('-');
	url=url+'&'+fmSerial+'q[]=delete/'+sp[1]+'/'+sp[2];
      });
      $.get(url,function(data){
         processResponse(data);
         setLoading(0);
      });
   }
   ,hlSelectedInit:function(cls){
      $('.'+cls).each(function(k,v){
         var cc=$(this).val().replace(/[^\-]+/,'list');
	 $(this).change(function(){
	   fm2.hlSelectedItem(this,$('#'+cc));
	 });
      });
   }
   ,hlSelectedItem:function(itm,tar){
      if(!isset(tar)) var tar=itm;
      if($(itm).is(':checked')){
         $(tar).addClass('system-selected-item');
      }
      else{
         $(tar).removeClass('system-selected-item');
      }
   }
   ,hlSelectedRow:function(sel){
      $(sel).each(function(k,v){
        var row=$(this);
        var cb=row.find('input[type=checkbox]');
	row.find('td:not(:has(input,a))').click(function(){
	   cb.attr('checked',(cb.is(':checked')?false:true)).trigger('change');
	}).css('cursor','pointer')
	;
	fm2.hlSelectedItem(cb,row);
	cb.change(function(){
	   fm2.hlSelectedItem(cb,row);
	});
      });
   }
   ,jurl:function(url){
      return url.replace(/\&amp\;/g,'&');
   }
   ,initQuickSearch:function(table,url){
      url=fm2.jurl(url);
      var tim;
      var h=$('#quicksearch-'+table);
      var e=$('#qsq-'+table,h);
      fm2.initOrderLinks(table,url);
      $('form',h).submit(function(){
         fm2.doQuickSearch(table,e.val(),url);
         return false;
      });
      $('#quicksearchclear',h).click(function(){
         fm2.doQuickSearch(table,'',url);
	 e.val('');
	 return false;
      });
      e.keypress(function(){
         clearTimeout(tim);
         tim=setTimeout(function(){
	    fm2.doQuickSearch(table,e.val(),url);
	 },500);
      }).attr('autocomplete','off');
   }
   ,initOrderLinks:function(table,url){
      var h=$('#quicksearch-'+table);
      var e=$('#qsq-'+table,h);
      $('.admin-orderlink',$('.system-list-'+table)).click(function(){
	$('#quicksearchorder',h).val(_GETU(fmSerial+'order',$(this).attr('href')));
	fm2.doQuickSearch(table,e.val(),url);
        return false;
      });
   }
   ,doQuickSearch:function(table,q,url){
       setLoading(1);
       var url=url+'&elm=quicksearch&ajax=1&table='+table+'&q='+q;
       var o=$('#quicksearchorder',$('#quicksearch-'+table));
       url=url+'&'+o.attr('name')+'='+o.val();
       $.get(url,function(data){
	 $('.system-list-'+table).html(data);
         fm2.initOrderLinks(table,url);
	 setLoading(0);
       });
   }
   ,initForm:function(sel,noajax){
     if(!isset(fm2.buf['formselector'])) fm2.buf['formselector']={};
     fm2.buf['formselector'][sel]=sel;
     var hasSpaw=false;
     $(sel).each(function(){
        $('.system-spaw-id',this).each(function(){
	   hasSpaw=true;
	});
     });
     if(hasSpaw){
        SpawEngine.addEventHandler('spawallinit','fm2.checkForms');
     }
     $(sel).each(function(ind){
       if(!isset(noajax)){
         $(this).attr('action',$(this).attr('action')+'&mode=ajaxsubmission');
         $(this).submit(function(){
            processForm(this);
            return false;
          });
	}
        if(!$(this).attr('id')) $(this).attr('id','fm2form'+fm2.nextId());
	if(!hasSpaw){
	  fm2.buf[$(this).attr('id')]=fm2.serializeForm(this);
	}
	$(this).submit(function(){
	   fm2.buf[$(this).attr('id')]=undefined;
	});
      });
   }
   ,beforeUnload:function(t){
      var msg=[];
      if(!isset(t)) var t=window;
      if(isset(t.fm2.buf['formselector'])){
        $.each(t.fm2.buf['formselector'],function(k,v){
           $(v).each(function(){
             if(isset(t.fm2.buf[$(this).attr('id')])){
               if(t.fm2.serializeForm(this)!=t.fm2.buf[$(this).attr('id')]){
  	         msg[msg.length]=langArr['form_changed_confirm'];
	       }
	     }
	   });
        });
      }
      if(t.fm2.beforeUnloadChk['jumploader']){
         msg[msg.length]=jumploader.uploadFinish();
      }
      var r=msg.join('\n');
      if(r) return r;
   }
   ,initBeforeUnload:function(b,t){
      if(!isset(t.fm2)) return;
      $(window,b).bind('beforeunload',function(){return t.fm2.beforeUnload(t);});
   }
   ,serializeForm:function(sel){
      $('.system-spaw-id',sel).each(function(){
         var name=$(this).html();
	 var cl=name.replace(/[^A-Za-z0-9_]/g,'_')+'_1';
	 var ob=window[cl+'_obj'];
	 var pg=window[cl+'_page'];
	 if(isset(ob)){
           if(ob.isInitialized()){
	      v=ob.updatePageInput(pg);
	   }
	 }
      });
      var r='';
      var skip={};
      $('.system-empty',sel).each(function(k,v){
         var e=$(v);
         skip[e.attr('name')]=1;
      });
      $.each($(sel).serializeArray(),function(k,e){
        if(!isset(e.value)) return;
	if(e.value>0&&!isset(skip[e.name])){
	  r=r+'&'+e.name+'='+e.value;
	}
      });
      $('input[type=file]',sel).each(function(){
         var t=$(this).val();
	 if(t.length>0){
            r=r+'&'+$(this).attr('name')+'='+t;
	 }
      });
      return r;
   }
   ,checkForms:function(){
      if(!isset(fm2.buf['formselector'])) return;
      $.each(fm2.buf['formselector'],function(k,v){
         $(v).each(function(){
           fm2.buf[$(this).attr('id')]=fm2.serializeForm(this);
	 });
      });
   }
   ,hideEditDiv:function(id,holder){
     if(!isset(holder)) var holder=document;
     var a=true;
     if(isset($('#'+id,holder).find('iframe')[0].contentWindow.fm2)){
        var t=$('#'+id,holder).find('iframe')[0].contentWindow;
        var c=t.fm2.beforeUnload();
        if(c){
           var a=confirm(c);
        }
     }
     if(a){
        $('#'+id,holder).hide();
	if(isset(t)) t.fm2.checkForms();
     }
   }
   ,initMoveBoxes:function(){
      $('div.system-eboxholder').sortable({connectWith:'div.system-eboxholder'
                 ,over:function(){
		    $('div.system-eboxholder').removeClass('system-eboxover');
		    $(this).addClass('system-eboxover');
		 }
	         ,update:function(event,ui){
		    $(ui.item).find('input').val($(this).attr('rel'));
		    $(this).removeClass('system-eboxover');
		 }
		 }).disableSelection();
      $('.del','div.system-eboxholder').click(function(){
           $(this).parent().appendTo('div.system-box-custom > div.system-eboxholder')
	          .find('input').val($('div.system-box-custom > div.system-eboxholder').attr('rel'));
       });
       $('div.system-moveboxes-buttons').find('input.save').click(function(){
       setLoading(1);
       $.post('index.php?ajax=1&elm=moveboxes'
              ,$('div.system-eboxholder').find('input').serializeArray()
	      ,function(data){
	         var box=$('<div></div>').html(data).dialog({modal:true});
		 setTimeout(function(){
		    box.dialog('destroy').remove();
		 },3000);
	         setLoading(0);
	      });
       });
       $('div.system-moveboxes-buttons').find('input.reset').click(function(){
          window.location.reload();
       });
   }
   ,checkAlias:function(sel,table,id,errcl){
      fm2.buf.checkAliasSettings={'table':table,'id':id,'errcl':errcl};
      $(sel).change(function(){
         fm2.checkAliasStr(this);
      }).focus(function(){
         fm2.checkAliasStr(this);
      }).focusout(function(){
         fm2.checkAliasStr(this);
      });
   }
   ,checkAliasStr:function(elm){
      var e=$(elm);
      e.val(fm2.formatAlias(e.val()));
      fm2.validateAlias(e.val());
   }
   ,validateAlias:function(val){
      if(!isset(fm2.buf.validateAlias)||fm2.buf.validateAlias!=val) fm2.buf.validateAlias=val;
      else return;
      $.get(fm2.conf.http_root+'index.php?ajax=1&elm=validateAlias&table='+fm2.buf.checkAliasSettings.table+'&id='+fm2.buf.checkAliasSettings.id+'&val='+$.URLEncode(val),function(data){
	 var ec=$('div.'+fm2.buf.checkAliasSettings.errcl);
	 switch(data){
	   default:
	   if(data.length) ec.html(data).show();
	   break;
	   case '1':
	      ec.hide();
	   break;
	 }
      });
   }
   ,formatAlias:function(str){
      return str
        .replace(/[^A-z0-9 \-\&.,\u00E5\u00E4\u00F6]/ig,'')
        .replace(/[ .,\-\&]/ig,'-')
        .replace(/[\u00E5\u00E4]/g,'a')
        .replace(/\u00F6/g,'o')
        .replace(/[\u00C5\u00C4]/g,'A')
        .replace(/\u00D6/g,'O')
        .replace(/[-]{2,}/ig,'-')
        .replace(/^[-]|[-]$/ig,'')
	.toLowerCase()
     ;
   }
   ,autoAlias:function(src,dst,lnk){
     fm2.autoAliasSwitch=lnk;
     var d=$('#'+dst);
     var s=$('#'+src);
     s.keyup(function(){
        if(!fm2.autoAliasSwitch) return;
	clearTimeout(fm2.buf.autoAliasTimer);
	fm2.buf.autoAliasTimer=setTimeout(function(){
           d.val(s.val());
   	   fm2.checkAliasStr(d);
	   d.keyup();
	},300);
     });
     var src=$('.'+dst+'-s').find('img').attr('src');
     src=src.replace(/(\-broken)?\.[^\.]+$/,'');
     var lnks=$('.'+dst+'-s');
     lnks.hover(function(){
        lnks.find('img').attr('src',src+(fm2.autoAliasSwitch?'-broken':'')+'.png');
     },function(){
        lnks.find('img').attr('src',src+(fm2.autoAliasSwitch?'':'-broken')+'.png');
     }).click(function(e){
        e.preventDefault();
	if(fm2.autoAliasSwitch){
	   fm2.autoAliasSwitch=0;
           lnks.find('img').attr('src',src+'-broken.png');
	}
	else{
	   fm2.autoAliasSwitch=1;
           lnks.find('img').attr('src',src+'.png');
           d.val(s.val());
	   fm2.checkAliasStr(d);
	   d.keyup();
	}
     });
   }
   ,initAdminMenu:function(){
     var a=$('.adminbox-content');
     var h=$('.adminbox-control');
     var min=h.find('.minimize');
     var max=h.find('.maximize');
     var cn=fmSerial+'adminmenuhidden';
     switch($.cookie(cn,fm2.cookieS())){
       default:
       max.hide();
       break;
       case '1':
       min.hide();
       a.hide();
       break;
     }
     min.click(function(e){
        e.preventDefault();
        min.hide();
	max.show();
	a.hide();
	$.cookie(cn,'1',fm2.cookieS());
     });
     max.click(function(e){
        e.preventDefault();
        max.hide();
	min.show();
	a.show();
	$.cookie(cn,'0',fm2.cookieS());
     });
   }
   ,toggleGroup:function(lnk){
     $(lnk).find('div.system-fieldbox')
           .slideToggle('fast',function(){
	      if(typeof(autofitIframe)=='function') autofitIframe(1);
	   });
   }
   ,menuArr:function(s){
      var r=[];
         if(typeof(s)!='object') return;
	 jq.each(s.btn,function(k,v){
	    var a={};
	    switch(k){
	    	case 'edit':
                 a[langArr['edit']+' '+s.table]={onclick:function(){openEditDiv(s.table,s.id);}
		 		     ,icon:fm2.conf.http_root+'images/icons/page_edit.gif'};
		break;
		case 'delete':
		  var name=s.table;
		  if(isset(s.name)) name=name+': '+s.name;
		  var m=langArr['confirm_del'].replace('[table]',name);
		a[langArr['delete']]={onclick:function(){delItem('#list-'+s.table+'-'+s.id,fm2.conf.http_root+'?'+fmSerial+'table='+s.table
		   +'&'+fmSerial+'id='+s.id+'&mode=del&back_str='+s.back_str,m);}
		 		     ,icon:fm2.conf.http_root+'images/icons/page_delete.gif'};
		break;
		case 'order':
                 a[langArr['order']]={onclick:function(){openEditDiv(s.table,s.id,'order');}
		 		     ,icon:fm2.conf.http_root+'images/icons/arrow_up.gif'};
		break;
		case 'new':
		var ak=0;
		jq.each(v,function(ck,cv){
		  var pvs={};
		  if(cv.par_t&&cv.par_id){
		      if(!isset(cv.prevval)) cv.prevval={};
		      cv.prevval["prevval[__rel__]["+cv.par_t+"]"]=cv.par_id;
		  }
		  if(isset(cv.prevval)){
  		    if(array_size(cv.prevval)){
  		      $.each(cv.prevval,function(pk,pv){
		         pvs[pk]=pv;
		      });
		    }
		  }
		  a[langArr['add']+(ak>0?' '+ak:'')]={onclick:function(){openEditDiv(s.table,s.id,'new',cv.par_t,cv.par_id,pvs);}
		 		     ,icon:fm2.conf.http_root+'images/icons/page_new.gif'};
		  ak++;
		});
		break;
		case 'crop':
		var ak=0;
		jq.each(v,function(ck,crop_fld){
		  a[langArr['crop']+(ak>0?' '+ak:'')]={onclick:function(){openCropDiv(s.table,s.id,'order',crop_fld);}
		 		     ,icon:fm2.conf.http_root+'images/icons/arrow_up.gif'};
		  ak++;
		});
		break;
		case 'blacklist':
                 a[langArr['blacklist']]={onclick:function(){blacklist(s.table,v.id,v.bl,cls);}};
		break;
	    }
            r[r.length]=a;
	 });
	 jq.each(s.other,function(k,v){
	   var a={};
	   var b={};
	   b['onclick']=function(){
	     eval(v.click);
	     if(isset(v.href)) window.location=v.href;
	   };
	   if(isset(v.image)) b['icon']=v.image;
	   a[v.text]=b;
	   r[r.length]=a;
         });
	 return r;
     }
     ,addDigg:function(elm){
        $.get($(elm).attr('href'),function(data){
	  $.each(strToJson(data),function(k,v){
	     $('.'+k).hide();
	     $('.'+k+'_msg').show();
	     $('.'+k+'_val').html(v);
	  });
	});
     }
}

function initButton(btn,val){
//fm2.conf.editmenytype='rightclick';
    switch(fm2.conf.editmenytype){
     case 'rightclick':
       $('.'+btn).contextMenu(fm2.menuArr(val));
       break;
      default:
    $('.'+btn).mouseenter(function(){
	if(hoverMenu==1) return false;
	if(!$(this).attr('id')){
	    cbid=btn+btncnt;
	    $(this).attr('id',cbid);
	    btncnt=btncnt+1;
	}
	else cbid=$(this).attr('id');
	if(fromedit!=cbid){
	    $('#editbutton').hide();
	    $('#editbutton').unbind('mouseenter').unbind('mouseleave').unbind('click');
	    $('.SimpleContextMenu').hide();
	    fromedit='';
	}
	clearTimeout(thide);
	clearTimeout(tshow);
	canhide=0;
	if($(this).find('img').attr('tagName')=='IMG'&&$(this).attr('tagName')!='DIV'){
	    var telm=$(this).find('img');
	}
	else{
	    var telm=$(this);
	}
	var pos=telm.offset();
	var wdth=telm.width();
	tshow=setTimeout(function(){
	    if(!canhide){
		clearTimeout(thide);
                $('#editbutton').css('left',pos.left+wdth/*-$('#editbutton').width()*/).css('top',pos.top).show().click(function(e){
		    $(document).trigger('click').unbind('click.fm2editmenu').bind('click.fm2editmenu',function(){
		       $('#editbutton').hide();
		    });
		    e.pageX=pos.left+wdth;
   		    e.pageY=pos.top;
   		    fm2.buf.initButton=$.contextMenu.create(fm2.menuArr(val),{});
		    $('div.'+fm2.buf.initButton.className).unbind('click.fm2editmenu').bind('click.fm2editmenu',function(){
		       $('#editbutton').hide();
		    });
   		    fm2.buf.initButton.show(this,e);
		    canhide=0;
		    return false;
		}).mouseleave(function(){
		    canhide=1;
		    fromedit=cbid;
		    clearTimeout(tshow);
		    thide=setTimeout(function(){
			if(canhide){
			    $('#editbutton').hide();
			    $('#editbutton').unbind('mouseenter').unbind('mouseleave').unbind('click');
			    fromedit='';
			}
		    },3000);
		}).mouseenter(function(){              
		    canhide=0;
                    clearTimeout(thide);
		});
	    }
	},0);
    }).mouseleave(function(){
	canhide=1;
	fromedit=cbid;
	clearTimeout(thide);
	clearTimeout(tshow);
	thide=setTimeout(function(){
	    if(canhide){
		$('#editbutton').hide();
		$('#editbutton').unbind('mouseenter').unbind('mouseleave').unbind('click');
		fromedit='';
	    }
	},3000);
    });
      break;
    }
}

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 'append':
		 elm.append(v['con']);
		 convertLinks(linkType,'a');
		break;
		case 'prepend':
		 elm.prepend(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);
    fm2.beforeUnloadChk['form']=0;
    $(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(typeof(elm)=='string') var url=elm;
	 	else var url=jq(elm).attr('href');//+'&ajax=1';
		if(isset(rl)||t.length<1){
		   if(typeof(elm)=='string') window.location=url;
		   return true;
		}
		setLoading(1);
		url=url+'&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){
	 toggleHoverMenu();
	 $.contextMenu.theme = 'vista';
	 jq.each(arr,function(btn,v){
  	    initButton(btn,v);
	 });
}

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

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

function array_size(obj){
   var size = 0;
   $.each(obj,function(k,v){
      size++;
   });
   return size;
}

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){
		  var pvs='';
		  if(cv.par_t&&cv.par_id){
		      if(!isset(cv.prevval)) cv.prevval={};
		      cv.prevval["prevval[__rel__]["+cv.par_t+"]"]=cv.par_id;
		  }
		  if(isset(cv.prevval)){
  		    if(array_size(cv.prevval)){
  		      $.each(cv.prevval,function(pk,pv){
		         if(pvs.length) pvs=pvs+',';
		         pvs=pvs+'"prevval['+pk+']":"'+pv+'"';
		      });
		      pvs=',{'+pvs+'}';
		    }
		  }
		  r=r+"<a href='#' onclick='openEditDiv(\""+s.table+"\",\""+s.id+"\",\"new\",\""+cv.par_t+"\",\""+cv.par_id+"\""
		      +pvs
		      +");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>";
	 });
	 jq.each(s.other,function(k,v){
           r=r+"<li class='adminContextMenu'>";
	   r=r+"<a href='"+(isset(v.href)?v.href:"#")+"'"
	       +(isset(v.click)?" onclick='"+v.click.replace(/\'/g,'"')+"return false;'":"")
	       +(isset(v.other)?v.other:"")
	       +">"
	       +(isset(v.image)?"<img src='"+v.image+"' border='0'> ":"")
	       +v.text+"</a>";
	   r=r+"</li>";
         });
	 return r+'</ul>';
}

function toggleHoverMenu(tg){
	 if(hoverMenu==2||!hoverMenu){
	    if(isset(tg)){
	     var lt=langArr['hoverMOn'];
	     hoverMenu=1;
	     }
	     else{
	     var lt=langArr['hoverMOff'];
	     }
	 }
	 else{
	    if(isset(tg)){
	     var lt=langArr['hoverMOff'];
	     hoverMenu=2;
	     }
	     else{
	     var lt=langArr['hoverMOn'];
	     }
	 }
//	 $.cookie('hoverMenu', hoverMenu,fm2.cookieS());
 	$('#admin-toggle-hover').html('<a href="#" '
	+'onclick="toggleHoverMenu(1);return false;">'+lt+'</a>');

}

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 _GETU(gk,url){
   var u=isset(url)?url:location.href;
   u=u.replace(/([^\?\#]*[\?\#])?/,'').replace(/&amp;/g,'&').split('&');
   for(var n=0;n<u.length;n++){
      var ex=u[n].split('=');
      if(ex[0]==gk){
        return ex[1];
      }
   }
}

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,opt){
	 switch(tp){
	 default:
	   var cnf={ placeholder: 'sortable-hl'
                 ,start:function(e,ui){
                    ui.placeholder.height(ui.helper.height()).html(ui.helper.html());
                 }
	   };
	   if(isset(opt)){
	     $.each(opt,function(k,v){
	        cnf[k]=v;
	     });
	   }
	   jq(sel).sortable(cnf);
	 break;
	 }
}
function moreFields(id){
    jq('#writeroot'+id).append('<div>'+jq('#readroot'+id).html()+'<\/div>');
    if(typeof autofitIframe == 'function') autofitIframe(1);
}
function expandTextInput(sl,maxwv){
	 $(sl).each(function(i){
	     if(isset($(this).data('haskeyup.expandTextInput'))) return;
	     var origW=$(this).width();
	     if(isset(maxwv)) var maxw=maxwv;
	     else var maxw=$(this).parent().width()-10;
	     setTIWidth(this,origW,maxw);
	     $(this).data('haskeyup.expandTextInput',1).bind('keyup.expandTextInput',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);
	    });
	 }
}
function treeMenu(sel){
   $(sel).click(function(){
      $(this).parent().find('>ul').slideToggle('fast');
    });
}
function delThis(elm){
    jq(elm).parent().remove();
}
function processPromptLRForm(box){
  var vals='';
  box.find('input:checked').each(function(){
    vals=vals+'&'+$(this).attr('name')+'='+$(this).val();
  });
  $.get('index.php?elm=refreshSession&ajax=1'+vals,function(data){
     processPromptLRResponse(data,box);
  });
}
function processPromptLRResponse(data,box){
   var res=strToJson(data);
   if(res.ok==1){
      $.cookie(fmSerial+'keepLoggedAcc','0',fm2.cookieS());
      box.html(res.msg);
      setTimeout(function(){
         promptLoginRefresh();
         box.dialog('close');
      },1500);
   }
   else{
     box.html(res.msg).find('form').submit(function(event){
            event.preventDefault();
            promptLoginReLogin(box);
         });
     box.append($('<span></span>').html(langArr['btnLogin'])
        .button().click(function(){
	    promptLoginReLogin(box);
         }));
    }
}
function promptLoginReLogin(box){
  $.post(box.find('form').attr('action'),box.find('form').serialize(),function(data){
     processPromptLRResponse(data,box);
  });
}
function promptLoginRefresnAction(){
       $.cookie(fmSerial+'keepLoggedAcc','1',fm2.cookieS());
       if($.cookie(fmSerial+'keepLogged',fm2.cookieS())){
          $.get('index.php?elm=refreshSession&ajax=1',function(data){
	     var res=strToJson(data);
	     if(res.ok==1){
	       promptLoginRefresh();
	     }
	     else{
	       $.cookie(fmSerial+'keepLogged',null,fm2.cookieS());
	       promptLoginRefresnAction();
	     }
	  });
          return;
       }
       var box=getDiv('promtLR',langArr['msgRefreshSession'],{'title':langArr['titleAlert']});
       box
        .append("<br><input type='checkbox' name='keeplogged' value='1' id='keeplogged'><label for='keeplogged'>"
          +langArr['cbKeepLogged']+"</label><br>")
        .append("<input type='checkbox' name='keeploggedsave' value='1' id='keeploggedsave'><label for='keeploggedsave'>"
          +langArr['cbSaveUS']+"</label>")
        .append($('<div></div>').addClass('system-alertbns')
         .append($('<span></span>').html(langArr['btnRefresh']).addClass('system-alert-button').button()
          .click(function(){
	       processPromptLRForm(box);
	   }
	 ))
        .append($('<span></span>').html(langArr['btnCancle']).addClass('system-alert-button').button()
          .click(function(){
	     box.dialog('close');
	   }
	 ))
	)
	;
       
       box.dialog({
           modal:true
	   ,beforeClose:function(){
	     clearTimeout(loginRefreshTimerAH);
	   }
         });
       autoHideLoginPrompt(box);
}
function autoHideLoginPrompt(box){
   clearTimeout(loginRefreshTimerAH);
   loginRefreshTimerAH=setTimeout(function(){
      if($.cookie(fmSerial+'keepLoggedAcc',fm2.cookieS())=='0'){
         box.dialog('close');
         promptLoginRefresh();
      }
      else{
         autoHideLoginPrompt(box);
      }
   },1000);
}
function promptLoginRefresh(){
    clearTimeout(loginRefreshTimer);
    loginRefreshTimer=setTimeout(function(){
         promptLoginRefresnAction();
    },loginRefreshLifetime*1000);
}
function getDiv(id,con,attr,visible){
   if($('#'+id).length!=0){
      $('#'+id).remove();
   }
   var r=$('<div></div>').attr('id',id);
   if(isset(con)) r.html(con);
   if(isset(attr)){
     $.each(attr,function(k,v){
       r.attr(k,v);
     });
   }
   if(isset(visible)){
     if(!visible) r.hide();
   }
   else r.hide();
   return r;
}
function basename(fn){
   return fn.replace(/((^.*\/)|(\?.*))?/ig,'');
}
function openDiv(id){
    if (document.getElementById){
       var obj = document.getElementById(id);
       obj.style.left=mousePos().x+'px';
       obj.style.top=mousePos().y+'px';
       showhide(id);
    }
}
function showhide(id) {
  var e =document.getElementById(id);
  if(e.style.display == 'block') e.style.display = 'none';
  else e.style.display = 'block';
  if(typeof autofitIframe == 'function') autofitIframe();
}
function autofitIframe(nottotop){
    var id=_GETU('divid')+'_iframe';
    var divid=_GETU('divid');
    if(document.getElementById) {
      var pe=parent.document.getElementById(id);
      var ped=parent.document.getElementById(divid);
      var bodyH=jq('body').height();
      var setH=jq('#edit-content-holder').height();
      if(bodyH<setH) setH=jq('body')[0].scrollHeight;
      jq(pe).height(setH+25);
      jq(pe).width(jq('#edit-content-holder').width()+38);
      $(ped).width(jq(pe).width());
      var ps=($('body',parent.document).width()/2)-($(ped).width()/2);
      if(ps<0) ps=0;
      $(ped).css('left',ps+'px');
      if(!isset(nottotop)) jq(parent.document).scrollTop(0);
    }
}

