//drag&drop lib

document.onmousedown = drags
document.onmousemove = mouseMove;
document.onmouseup   = mouseUp;
window.onresize      = brs;
window.onscroll      = brs;

var dragObject      = null;
var masterObject    = null;
var mouseOffset     = null;
var mmouseOffset    = null;
var initMouseOffset = null;
var dragMode        = 'drag';
var mbshowed        = false;
var savestop        = 0;
var codeinstalled   = false;
var wminimize       = 0;
var wmaxw           = 0;
var wmaxh           = 0;
var wmaxt           = 0;
var wmaxl           = 0;

function brs() {
   if (mbshowed) {
      ShowModalBackground();
      var st=Math.max(document.body.scrollTop,document.documentElement.scrollTop);
      o=document.getElementById('dd_main');
      if (savestop!=st&&o) {
         srel=st-savestop;
         var t=o.style.top; t=t.substr(0,t.indexOf('px'));
         //document.getElementById('dd_content').innerHTML=Number(t)+srel;
         o.style.top=(Number(t)+srel)+'px';
         savestop=st;
      }
   }
}

function BrowseDimensions()	{
    	var bodyWidth = document.documentElement.clientWidth;
    	var bodyHeight = document.documentElement.clientHeight;
    	
		var bodyWidth, bodyHeight; 
		if (self.innerHeight){ // all except Explorer 
		 
		   bodyWidth = self.innerWidth; 
		   bodyHeight = self.innerHeight; 
		}  else if (document.documentElement && document.documentElement.clientHeight) {
		   // Explorer 6 Strict Mode 		 
		   bodyWidth = document.documentElement.clientWidth; 
		   bodyHeight = document.documentElement.clientHeight; 
		} else if (document.body) {// other Explorers 		 
		   bodyWidth = document.body.clientWidth; 
		   bodyHeight = document.body.clientHeight; 
		} 
		return [bodyWidth,bodyHeight];		
}

function ShowModalBackground(){
   o=document.getElementById('dd_back');
   if (o) {
      var ptop=Math.max(document.body.scrollTop,document.documentElement.scrollTop);
      var pleft=Math.max(document.body.scrollLeft,document.documentElement.scrollLeft);
      o.style.top = 0;
      o.style.left = 0;
	  var brSize = BrowseDimensions();
      o.style.width = (brSize[0]+pleft) + 'px';
      o.style.height = (brSize[1]+ptop) + 'px';
      o.style.display = 'block';
      mbshowed=true;		
   }
}

function HideModalBackground(){
   o=document.getElementById('dd_back');
   if (o) {
      o.style.display = 'none';
      mbshowed=false;
   }		
}

function mouseCoords(ev){
	if(ev.pageX || ev.pageY){
		return {x:ev.pageX, y:ev.pageY};
	}
	return {
		x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
		y:ev.clientY + document.body.scrollTop  - document.body.clientTop
	};
}


function getMouseOffset(target, ev){
	ev = ev || window.event;

	var docPos    = getPosition(target);
	var mousePos  = mouseCoords(ev);
	return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
}

function getPosition(e){
	var left = 0;
	var top  = 0;

	while (e.offsetParent){
		left += e.offsetLeft;
		top  += e.offsetTop;
		e     = e.offsetParent;
	}

	left += e.offsetLeft;
	top  += e.offsetTop;


	return {x:left, y:top};
}

function mouseMove(ev){
	ev           = ev || window.event;
	var mousePos = mouseCoords(ev);

	if(dragObject&&dragMode=='drag'){
		dragObject.style.position = 'absolute';
		dragObject.style.top      = (mousePos.y - mouseOffset.y)+'px';
		dragObject.style.left     = (mousePos.x - mouseOffset.x)+'px';
		return false;
	}
	if(dragObject&&dragMode=='resize'){
        
        ax=initMousePos.x-mouseOffset.x; wx=mousePos.x-ax;
        ay=initMousePos.y-mouseOffset.y; wy=mousePos.y-ay;

        xshift=25-mmouseOffset.x;
        yshift=25-mmouseOffset.y;
        
        if (wx<200) wx=200;
        if (wy<50) wy=50;
        
		dragObject.style.position = 'absolute';
		dragObject.style.width      = (wx+xshift)+'px';
		dragObject.style.height     = (wy+yshift)+'px';
		return false;
	}
}
function mouseUp(){
	dragObject = null;
	masterObject = null;
}

/*function makeDraggable(item){
	if(!item) return;
	item.onmousedown = function(ev){
		dragObject  = this;
		mouseOffset = getMouseOffset(this, ev);
		return false;
	}
}*/

//install support code
function add_wnd_object(whereput,classid) {
   var o = document.createElement('DIV');
   o.className=classid;o.id=o.className;
   whereput.appendChild(o);
   return o;
}

function install_wnd_code() {
   var maino = add_wnd_object(document.body,'dd_main');
   var titleo = add_wnd_object(maino,'dd_title');

   add_wnd_object(titleo,'dd_close');
   add_wnd_object(titleo,'dd_max');
   add_wnd_object(titleo,'dd_min');
   add_wnd_object(titleo,'dd_titlex');

   add_wnd_object(maino,'dd_resizer');
   add_wnd_object(maino,'dd_contentbase');
   add_wnd_object(maino,'dd_content');
   add_wnd_object(maino,'dd_shadow');
   add_wnd_object(maino,'dd_round');

   add_wnd_object(document.body,'dd_back');
   codeinstalled=true;
}


function pop_window(initw,inith,wtitle,url,iclose,imax,imin,iresizer){
   if (!codeinstalled) install_wnd_code();
   var o=document.getElementById('dd_main');
   if (o) {
      dragMode='none';
      ShowModalBackground();
      var st=Math.max(document.body.scrollTop,document.documentElement.scrollTop);
      var brSize = BrowseDimensions();
      savestop=st;
      var xp=Math.round((brSize[0]/2)-(initw/2));
      var yp=Math.round((brSize[1]/2)-(inith/2)-50);
      if (xp<0) xp=0;
      o.style.top=yp+st+'px';
      o.style.left=xp+'px';
      o.style.width=initw+'px';
      o.style.height=inith+'px';
      o.style.display='block';
      //load content
      t=document.getElementById('dd_titlex'); if (t) t.innerHTML=wtitle;
      i=document.getElementById('dd_close'); if(i){if(iclose){i.className='dd_close';}else{i.className='dd_close invi';}}
      i=document.getElementById('dd_max'); if(i){if(imax){i.className='dd_max';}else{i.className='dd_max invi';}}
      i=document.getElementById('dd_min'); if(i){if(imin){i.className='dd_min';}else{i.className='dd_min invi';}}
      i=document.getElementById('dd_resizer'); if(i){if(iresizer){i.className='dd_resizer';}else{i.className='dd_resizer invi';}}
      if (url!='') ajax_loadContent('dd_content',url);
   }
}


function close_window(){
   o=document.getElementById('dd_main');
   if (o&&o.style.display=='block') {
      o.style.display='none';
      HideModalBackground();
   }
}



function drags(ev){
   if (!codeinstalled) install_wnd_code();
   ev = ev || window.event;
   if (ev.target) obj=ev.target;
   if (ev.srcElement) obj=ev.srcElement;
   if (!obj) return
   if (obj.className=="drag"){
      dragObject=obj;
      dragMode='drag';
      mouseOffset = getMouseOffset(obj,ev);
      return false;
   }
   if (obj.className=="dd_title"){
      dragObject=obj.parentNode;
      dragMode='drag';
      mouseOffset = getMouseOffset(obj.parentNode,ev);
      return false;
   }
   if (obj.className=="dd_titlex"){
      dragObject=obj.parentNode.parentNode;
      dragMode='drag';
      mouseOffset = getMouseOffset(obj.parentNode.parentNode,ev);
      return false;
   }
   if (obj.className=="dd_resizer"){
      dragObject=obj.parentNode;
      masterObject=obj;
      dragMode='resize';
      mouseOffset = getMouseOffset(obj.parentNode,ev);
      mmouseOffset = getMouseOffset(obj,ev);
	  initMousePos = mouseCoords(ev);
      return false;
   }
   if (obj.className=="dd_close") {
      dragMode='none';
      close_window();
      return false;
   }
   if (obj.className=="dd_min") {
      dragMode='none';
      t=document.getElementById('dd_main');
      if (wminimize==0&&t) {
          wminimize=t.style.height;
          t.style.height='40px';
      } else {
          t.style.height=wminimize;
          wminimize=0;
      }
      return false;
   }
   if (obj.className=="dd_max") {
      dragMode='none';
      t=document.getElementById('dd_main');
      if (wmaxw==0&&t) {
          wmaxw=t.style.width;
          wmaxh=t.style.height;
          wmaxt=t.style.top;
          wmaxl=t.style.left;
          //get bounds
          var ptop=Math.max(document.body.scrollTop,document.documentElement.scrollTop);
          var pleft=Math.max(document.body.scrollLeft,document.documentElement.scrollLeft);
	      var brSize = BrowseDimensions();
          t.style.width=(brSize[0]-20)+'px';t.style.height=(brSize[1]-20)+'px';t.style.top=(ptop+10)+'px';t.style.left=(pleft+10)+'px';
      } else {
          t.style.width=wmaxw;t.style.height=wmaxh;t.style.top=wmaxt;t.style.left=wmaxl;
          wmaxw=0;
      }
      return false;
   }
   
   
}


//ajax imp
var enableCache = false;
var jsCache = new Array();
var ajaxO = new Array();

function ajax_showContent(divId,ajaxIndex,url){
var targetObj = document.getElementById(divId);
targetObj.innerHTML = ajaxO[ajaxIndex].response;
if(enableCache){jsCache[url] = ajaxO[ajaxIndex].response;}
ajaxO[ajaxIndex] = false;
ajax_parseJs(targetObj)
}

function ajax_loadContent(divId,url) {
if(enableCache && jsCache[url]){document.getElementById(divId).innerHTML = jsCache[url];return;}
var ajaxIndex = ajaxO.length;
document.getElementById(divId).innerHTML = '<div class="dd_loading"><img src="/i/loading4.gif"></div>';
ajaxO[ajaxIndex] = new sack();
ajaxO[ajaxIndex].requestFile = url;
ajaxO[ajaxIndex].onCompletion = function(){ ajax_showContent(divId,ajaxIndex,url); };
ajaxO[ajaxIndex].runAJAX();
}

function ajax_parseJs(obj) {
var scriptTags = obj.getElementsByTagName('SCRIPT');
var string = '';
var jsCode = '';
for(var no=0;no<scriptTags.length;no++){	
	if(scriptTags[no].src){
        var head = document.getElementsByTagName("head")[0];
        var scriptObj = document.createElement("script");

        scriptObj.setAttribute("type", "text/javascript");
        scriptObj.setAttribute("src", scriptTags[no].src);  	
	}else{
		if(navigator.userAgent.indexOf('Opera')>=0){
			jsCode = jsCode + scriptTags[no].text + '\n';
		}
		else
			jsCode = jsCode + scriptTags[no].innerHTML;	
	}
	
}
if(jsCode)ajax_installScript(jsCode);
}

function ajax_installScript(script){		
if (!script) return;		
if (window.execScript){
   window.execScript(script)
}else if(window.jQuery && jQuery.browser.safari){
   window.setTimeout(script,0);
}else{        	
   window.setTimeout( script, 0 );
} 
}	

//active window control fncs
function cmsgb(){close_window()}


//other specific functionality
function show_info(gid) {
   var url='/showinfo.php?id='+gid+'&tick='+Math.ceil( Math.random()*9999);
   pop_window(520,320,'Info',url,true,true,true,false);
}

function unimsg(file,params,wd,he) {
   var url='/'+file+'.php?'+params+'&tick='+Math.ceil( Math.random()*9999);
   pop_window(wd,he,'Info',url,true,true,true,false);
}

function unimsgt(file,params,wd,he,wtitle) {
   var url='/'+file+'.php?'+params+'&tick='+Math.ceil( Math.random()*9999);
   pop_window(wd,he,wtitle,url,true,false,false,false);
}

function boxinfo(gid,iid) {
   var url='/admin/boxinfo.php?id='+gid+'&iid='+iid+'&tick='+Math.ceil( Math.random()*9999);
   pop_window(700,600,'Info',url,true,false,false,false);
}

function boxinfot(title,gid,iid) {
   var url='/boxinfo.php?id='+gid+'&iid='+iid+'&tick='+Math.ceil( Math.random()*9999);
   pop_window(700,500,title,url,true,false,false,false);
}


///other globals
function ssla(str) {
str=str.replace(/\\'/g,'\'');
str=str.replace(/\\"/g,'"');
str=str.replace(/\\\\/g,'\\');
str=str.replace(/\\0/g,'\0');
return str;
}



