// Initialised by a <BODY> or window event call to function:
// jtkDragInit(['groupWrapper','groupItem',1,'itemHeader','blank']);
// where parameter 0 is an array
//  field 0 = the class name of the draggable objects parent node class name.          (string)
//  field 1 = the class name of the draggable objects class name.                      (string)
//  field 2 = (optional) the duration of the cookie persistance in days.               (digits, default = no cookie)
//  field 3 = (optional) the node type draggable objects class name.                   (string, default = '*')
//  field 4 = (optional) the class name if the draggable objects title bar class name. (string, default is the draggable div)
//  field 5 = (optional) the class name if the draggable objects blank class name.     (string, default is the draggable object outline)

// functional code size about 5.9K


// Functional Code - No Need to change

var jtkDragObj=false;

function jtkDragInit(jtkcls){
 jtkcls[2]=jtkcls[2]||-1;
 jtkcls[3]=jtkcls[3]||'*';
 for (var jtknu=0,jtkobjs,jtkpary=jtkElsByClass(jtkcls[0],false,'DIV'),jtktitle,jtkdary=[],jtk0=0;jtk0<jtkpary.length;jtk0++){
  jtkobjs=jtkElsByClass(jtkcls[1],jtkpary[jtk0],jtkcls[3]);
  for (var jtk0a=0;jtk0a<jtkobjs.length;jtk0a++){
   jtkdary.push(jtkobjs[jtk0a]);
   jtkobjs[jtk0a].nu=(jtknu++)+'';
  }
 }
 var jtkcookievalue=jtkReadCookie(jtkcls[0]);
 if (jtkcls[2]>0&&jtkcookievalue){
  jtkcookievalue=jtkcookievalue.split('#')
  for (var jtkp,jtks,jtk1=0;jtk1<jtkcookievalue.length-1;jtk1++){
   jtks=jtkcookievalue[jtk1].split(':');
   jtkp=jtkpary[jtks[0]];
   for (var jtk1a=1;jtk1a<jtks.length-1;jtk1a++){
    jtkdary[jtks[jtk1a]].set=true;
    jtkp.appendChild(jtkdary[jtks[jtk1a]]);
   }
  }
  for (var jtk1b=0;jtk1b<jtkdary.length;jtk1b++){
   if (!jtkdary[jtk1b].set) jtkdary[jtk1b].parentNode.removeChild(jtkdary[jtk1b]);
  }
 }
 var jtkblank=jtkES('DIV',{position:'relative'});
 jtkblank.className=jtkcls[5]||jtkcls[1];
 for (var jtk0=0;jtk0<jtkdary.length;jtk0++){
  jtkdary[jtk0].data=[jtkblank,jtkpary,jtkcls];
  var jtkdrag=jtkES(jtkdary[jtk0].cloneNode(true),{position:'absolute',visibility:'hidden',zIndex:'101',left:'0px',top:'5px',width:jtkdary[jtk0].offsetWidth+'px',height:jtkdary[jtk0].offsetHeight+'px'},document.getElementsByTagName('BODY')[0]);
  var jtkobj=jtkElsByClass(jtkcls[4],jtkdary[jtk0],jtkcls[3])[0]||jtkdary[jtk0];
  jtkobj.drag=jtkdrag;
  jtkobj.drag.obj=jtkdary[jtk0];
  jtkAddEvt(jtkobj,'jtkMseDown','mousedown');
 }
 jtkcls.length=3;
 window[jtkcls[0]]=new Object;
 window[jtkcls[0]].data=['','','','','',jtkpary,jtkcls];
}

function jtkMseDown(jtkevt){
 var jtkp=this.drag.obj;
 var jtkppos=jtkPos(jtkp);
 jtkES(jtkp.data[0],{width:jtkp.offsetWidth+'px',height:jtkp.offsetHeight+'px'});
 jtkp.parentNode.replaceChild(jtkp.data[0],jtkp);
 //           0        1       2              3    4 = blank    5 = parary   6 =cls
 jtkDragObj=[this.drag,jtkppos,jtkMse(jtkevt),jtkp,jtkp.data[0],jtkp.data[1],jtkp.data[2]];
 jtkES(this.drag,{visibility:'visible',left:jtkppos[0]+'px',top:jtkppos[1]+'px'});

 return false;
}

function jtkDrag(jtkevt){
 if (jtkDragObj){
  var jtkdrag=jtkDragObj;
  var jtkmse=jtkMse(jtkevt);
  var jtkdpos=[jtkdrag[1][0]-(jtkdrag[2][0]-jtkmse[0]),jtkdrag[1][1]-(jtkdrag[2][1]-jtkmse[1])];
  jtkES(jtkdrag[0],{left:jtkdpos[0]+'px',top:jtkdpos[1]+'px'});
  jtkBlank(jtkdrag,jtkdpos);
  jtkNoDefault(jtkevt);
 }
 return false;
}

function jtkBlank(jtkdrag,jtkdpos){
 for (var jtkdc=jtkdpos[0]+jtkdrag[0].offsetWidth/2,jtkary=jtkdrag[5],jtkpc,jtkc=1000,jtknu=-1,jtk0=0;jtk0<jtkary.length;jtk0++){
  var jtkpc=Math.abs((jtkPos(jtkary[jtk0])[0]+jtkary[jtk0].offsetWidth/2)-jtkdc);
  if (jtkpc<jtkc){ jtkc=jtkpc; jtknu=jtk0; }
 }
 var jtkcol=jtkary[jtknu];
 jtkary=jtkElsByClass(jtkdrag[6][1],jtkcol,jtkdrag[6][3]);
 for (var jtkset=false,jtk1=0;jtk1<jtkary.length;jtk1++){
  jtkpc=jtkPos(jtkary[jtk1])[1]+jtkary[jtk1].offsetHeight/2;
  if (jtkpc>jtkdpos[1]){
   jtkcol.insertBefore(jtkdrag[4],jtkary[jtk1]);
   jtkset=true;
   break;
  }
 }
 if (!jtkset) jtkcol.appendChild(jtkdrag[4]);
}

function jtkMseUp(){
 if (jtkDragObj){
  jtkDragObj[4].parentNode.replaceChild(jtkDragObj[3],jtkDragObj[4]);
  jtkDragObj[0].style.visibility='hidden';
  jtkSetCookie(jtkDragObj);
  jtkDragObj=false;
 }
}

function jtkSetCookie(jtkdrag){
 if (typeof(jtkdrag)=='string') jtkdrag=window[jtkdrag].data;
 if (jtkdrag){
  var jtkstring='';
  var jtkary=jtkdrag[5];
  for (var jtk1=0;jtk1<jtkary.length;jtk1++){
   jtkstring+=jtk1+':';
   var jtkobjs=jtkElsByClass(jtkdrag[6][1],jtkary[jtk1],jtkdrag[6][3]);
   for (var jtk1a=0;jtk1a<jtkobjs.length;jtk1a++){
    jtkstring+=jtkobjs[jtk1a].nu+':';
   }
   jtkstring+='#';
  }
  jtkCreateCookie(jtkdrag[6][0],jtkstring,jtkdrag[6][2]);
 }
}

function jtkDeleteObj(jtkid){
 var jtkobj=document.getElementById(jtkid);
 jtkobj.parentNode.removeChild(jtkobj);
 jtkSetCookie(jtkobj.data[2][0]);
}

function jtkMse(jtkevt){
 if (document.all) return [jtkevt.clientX,jtkevt.clientY];
 return [jtkevt.pageX,jtkevt.pageY];
}

function jtkNoDefault(jtkevt){
 if (jtkevt.preventDefault) jtkevt.preventDefault();
 jtkevt.defaultValue=false;
}

function jtkElsByClass(jtkcls,jtkp,jtktag) {
 jtkp=jtkp||document;
 jtkp=typeof(jtkp)=='object'?jtkp:document.getElementById(jtkp);
 jtktag=jtktag||'*';
 for (var jtkels=jtkp.getElementsByTagName(jtktag),jtkreg=new RegExp('\\b'+jtkcls+'\\b'),jtkary=[],jtk0=0;jtk0<jtkels.length;jtk0++){
  if (jtkreg.test(jtkels[jtk0].className)) jtkary.push(jtkels[jtk0]);
 }
 return jtkary;
}

function jtkStyleValue(jtkobj,jtkp){
 if (jtkobj.style[jtkp.replace(/-/g,'')]) return jtkobj.style[jtkp.replace(/-/g,'')];
 if (jtkobj.currentStyle) return jtkobj.currentStyle[jtkp.replace(/-/g,'')];
 return document.defaultView.getComputedStyle(jtkobj,null).getPropertyValue(jtkp.toLowerCase());
}

function jtkES(jtkele,jtkstyle,jtkp,jtktxt){
 if (typeof(jtkele)=='string') jtkele=document.createElement(jtkele);
 for (key in jtkstyle) jtkele.style[key]=jtkstyle[key];
 if (jtkp) jtkp.appendChild(jtkele);
 if (jtktxt) jtkele.appendChild(document.createTextNode(jtktxt));
 return jtkele;
}

function jtkPos(jtkobj){
 jtklft=jtkobj.offsetLeft;
 jtktop=jtkobj.offsetTop;
 while(jtkobj.offsetParent!=null){
  jtkpar=jtkobj.offsetParent;
  jtklft+=jtkpar.offsetLeft;
  jtktop+=jtkpar.offsetTop;
  jtkobj=jtkpar;
 }
 return [jtklft,jtktop];
}

function jtkCreateCookie(jtknme,jtkv,jtkdays){
 document.cookie=jtknme+'='+jtkv+';expires='+(new Date(new Date().getTime()+jtkdays*86400000).toGMTString())+';path=/';
}

function jtkReadCookie(jtknme){
 jtknme+='=';
 var jtksplit = document.cookie.split(';');
 for(var jtk0=0;jtk0<jtksplit.length;jtk0++){
  var jtks=jtksplit[jtk0];
  while (jtks.charAt(0)==' ') jtks=jtks.substring(1,jtks.length);
  if (jtks.indexOf(jtknme)==0) return jtks.substring(jtknme.length,jtks.length);
 }
 return null;
}

function jtkEventAdd(jtko,jtkt,jtkf,jtkp) {
 if ( jtko.addEventListener ){ jtko.addEventListener(jtkt, function(e){ return jtko[jtkf](e);}, false); }
 else if ( jtko.attachEvent ){ jtko.attachEvent('on'+jtkt,function(e){ return jtko[jtkf](e,jtkp); }); }
 else {
  var jtkPrev=jtko["on" + jtkt];
  if (jtkPrev){ jtko['on'+jtkt]=function(e){ jtkPrev(e); jtko[jtkf](e,jtkp); }; }
  else { jtko['on'+jtkt]=jtko[jtkf]; }
 }
}

function jtkAddEvt(jtkobj,jtkfun,jtkevt,jtkp){
 if (jtkobj['jtkadd'+jtkfun+jtkevt]) return;
 jtkobj['jtkadd'+jtkfun+jtkevt]=window[jtkfun];
 jtkEventAdd(jtkobj,jtkevt,'jtkadd'+jtkfun+jtkevt,jtkp);
}

//jtkAddEvt(window,'jtkDragInit','load',['groupWrapper','groupItem','itemHeader',1,'blank']);
jtkAddEvt(document,'jtkMseUp','mouseup');
jtkAddEvt(document,'jtkDrag','mousemove');
