var isDOM = (document.getElementById ? true : false);
var isIE4 = ((document.all && !isDOM) ? true : false);
var isNS4 = (document.layers ? true : false);
var end_flag=0,form_length=0,form_submit=0,form,compute_index=0,fifo=new Array(),backbone=new Array(),computeObj=new Object();
var pause_flipper=0,start_flipper=0,flipped_object,option,add_index=1;
var form_elements=new Array("INPUT","TEXTAREA","SELECT"),buttons=new Object(),button_index=0;                             // elements from form, for AI
var form_buttons=new Array("button","image","submit");
var alerter_default="You have to enter a: ";
var flip_index=0,max_flip_index=10,input_init_color="";                                                                   // how many times the eror field should flip colors
var flip_color_even='#ff9933',flip_color_odd='#ffffff',flip_color_rest='#fff00f';                                          //the alternated colors of the error flipper
var flip_border_even='#000000',flip_border_odd='#000000',flip_border_rest='';
var hash_table=new Array(),form_elements_id=new Array();
var color="#ff00f1";  
var dragObject,mouse_update_flag=0,drag_interval_id,drag_flag=0,drag_started=0,XY={},dragArray=new Array(),resizeArray=new Array();
var cursors = new Array(
	'default',
	'crosshair',
	'e-resize',
	'hand',
	'help',
	'move',
	'n-resize',
	'ne-resize',
	'nw-resize',
	's-resize',
	'se-resize',
	'sw-resize',
	'text',
	'w-resize',
	'wait'
); 
 var node_types = new Array(  
     "FAKE NODE", // fix array offset  
     "ELEMENT NODE",  
     "ATTRIBUTE NODE",  
     "TEXT NODE",  
     "CDATA SECTION NODE",  
     "ENTITY REFERENCE NODE",  
     "ENTITY NODE",  
     "PROCESSING INSTRUCTION NODE",  
     "COMMENT NODE",  
     "DOCUMENT NODE",  
     "DOCUMENT TYPE NODE",  
     "DOCUMENT FRAGMENT NODE",  
     "NOTATION NODE"  
 );  
function updateMouse(e)
 { 
	if(!e) var e=window.event;
	  XY=pos.getMouse(e); 
	 
	 }
function getIndex(arr,el)
{
	for(var j=0;j<=arr.length-1;j++)
	 {
		 if(arr[j]==el){ 
		  return j;
	    	 }
		 }
	}
function compactare(arr,index,meth,element)
{ 
   if(meth==null) meth="out";
  if(meth=="out"){
	if(index!=null)  { 
	for(var j=index;j<=arr.length-1;j++)
	{ 
		arr[j]=arr[j+1];
		}
		arr.length=arr.length-1;
  }//else alert("ERROR: unsupported index for compactare()");
  }
  else
  {
	  	for(var j=0;j<=arr.length-1;j++)
	   { 
		   if(j==index){
		    var temp=arr[j];
	    	arr[j]=element; 
	         index++;
			 element=temp;
		   }

		}

	  }
	return arr;
	}
function DragON()
{   
  
       if(dragObject!=null && drag_flag==1)
	      { 	
		  if(XY.x!=undefined){
		    var x_rel=XY.x-pos.offsetX;
	        var y_rel=XY.y-pos.offsetY;
			pos.move(dragObject,x_rel,y_rel);
		  }
			}

	}
function ResizeON()
{   
  var coord={},zone=0;
       if(resObject!=null && res_flag==1)
	      { 
		  if(XY.x!=undefined){
		  resize_handler.obj=resObject;	  
		  coord=dom.getMargins(resObject); 
		 
		  if(XY.x==coord.left){ 
		     zone=1;
		   	 document.body.style.cursor=cursors[13];
		  }
		  else if(XY.x==coord.right){ 
		     zone=1;
		   	 document.body.style.cursor=cursors[2];
		  }
		  else if(XY.y==coord.top){ 
		     zone=1;
		   	 document.body.style.cursor=cursors[6];
		  }
		  else if(XY.y==coord.bottom){ 
		     zone=1;
		   	 document.body.style.cursor=cursors[6];
		  }
		  else if(XY.x==coord.left && XY.y==coord.top){ 
		     zone=1;
		   	 document.body.style.cursor=cursors[8];
		  }
		  else if(XY.x==coord.left && XY.y==coord.bottom){ 
		     zone=1;
		   	 document.body.style.cursor=cursors[8];
		  }
		   else if(XY.x==coord.right && XY.y==coord.bottom){ 
		     zone=1;
		   	 document.body.style.cursor=cursors[8];
		  }
		   else if(XY.x==coord.right && XY.y==coord.top){ 
		     zone=1;
		   	 document.body.style.cursor=cursors[8];
		  }
		  else
		      { 
		       zone=0;
			   document.body.style.cursor=cursors[0];
			  }
		  }
         if(zone==1)
		  { 
	  	 observer.activate("onmousedown",resObject,"",'',resize_handler.startResize);
		   }
		 else
		  {
			 if(contains(observer.active_observers,"onmousedown"+resObject))
		        observer.activate("kill_onmousedown",resObject,"",'',resize_handler.startResize);
		 }
		  
			}

	}	
function addCSS(obj,rule,value)
{
	 switch(rule)
	  {
		  case "innerHTML": obj.innerHTML=value; break;
		  case "position": obj.style.position=value; break;
		  case "top": obj.style.top=value+"px"; break;
		  case "left": obj.style.left=value+"px"; break;
		  case "border": obj.style.border=value; break;
		  case "color": obj.style.color=value; break;
		  case "backgroudColor": obj.style.backgroudColor=value; break;
		  case "src": obj.src=value; break;
		  case "href": obj.href=value; break;
		  case "className": obj.className=value; break;
		  case "id": obj.id=value; break;
	  }
	  return obj;
	}


function getIt(id) {  
	if (isDOM) return document.getElementById(id);
	if (isIE4) return document.all[id];
	if (isNS4) return document.layers[id];
}
function contains(a, e) { 
	for(j=0;j<a.length;j++)
	   if(a[j]==e)return true;
	     return false;
}
function unique(arr) {  
	tmp = new Array(0);
	for(i=0;i<arr.length;i++){
		if(!FormGuru_contains(tmp, arr[i])){
			tmp.length+=1;
			tmp[tmp.length-1]=arr[i];
		}
	}
	return tmp;
}
function limit_text(id)
{  
	var nrc=FormGuru_GetIt(id).value.length; 
	var ramase=500-nrc;
	if(ramase<=0)
	{
	var text_redus=FormGuru_GetIt(id).value.substr(0,500);
	FormGuru_GetIt(id).value=text_redus;
	ramase=500;
     }
}
function hash(type,hashable,value)
{   
	var hash_length=hashable.length,hash=0;
	var sum=0;
    for(var i=0;i<=hash_length-1;i++){
	   sum+=hashable.charCodeAt(i).toString();
	} 
	  hash=parseInt(sum); 
	 if(type=="set")
	 { 
	 hash_table[hash]=value; 
 	 } 
	 else if(type=="get")
	   return hash_table[hash];
	}
function getLetter(nr)
{
	var chars = "ABCDEFGHIJKLMNOPQRSTUVWXTZ";
	 return chars[nr]; 
	}
function randomString() {
	var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
	var string_length = 8;
	var randomstring = '';
	for (var i=0; i<string_length; i++) {
		var rnum = Math.floor(Math.random() * chars.length);
		randomstring += chars.substring(rnum,rnum+1);
	}
	return randomstring;
}
function isInteger (s)
   {
      var i;

      if (FormGuru_isEmpty(s))
      if (FormGuru_isInteger.arguments.length == 1) return 0;
      else return (FormGuru_isInteger.arguments[1] == true);

      for (i = 0; i < s.length; i++)
      {
         var c = s.charAt(i);

         if (!FormGuru_isDigit(c)) return false;
      }

      return true;
   }
function isEmpty(s)
   {
      return ((s == null) || (s.length == 0))
   }
function isDigit (c)
   {
      return ((c >= "0") && (c <= "9"))
   }	
function EngineTest()
{
	return true;
	}  
