//get element/elemens by id
function $(element)
{
  if (arguments.length > 1) {
    for (var i = 0, elements = [], length = arguments.length; i < length; i++)
      elements.push($(arguments[i]));
    return elements;
  }
  if (typeof element == 'string')
    element = document.getElementById(element);
  return element;
}

//event handlers
$Event = function()
{
      this._handlers = new Array(); 
}
 
$Event.prototype.add = function(handler)
{
      this._handlers.push(handler);
}
 
$Event.prototype.remove = function(handler)
{           
      var i;
      for(i = 0; i < this._handlers.length; i++)
      {
            var h = this._handlers[i];
            if(h.constructor == handler.constructor)
                  break;
      }
 
      if(i < this._handlers.length)
            this._handlers.splice(i, 1);
} 
 
$Event.prototype.Invoke = function()
{
      for (var i = 0; i < this._handlers.length; ++i)
            this._handlers[i]();
} 

//window object
var $Window=new Object();
$Window.OnLoad = new $Event();

$Window.Load=function()
{
    $Window.OnLoad.Invoke();
}

window.onload=$Window.Load;

//binding functions
Function.prototype.bind=function(o)
{
	if(!window.__objs) {
		window.__objs = [];
		window.__funcs = [];
	}

	var objId = o.__oid;
	if(!objId)
		__objs[objId = o.__oid = __objs.length] = o;

	var me = this;
	var funcId = me.__fid;
	if(!funcId)
		__funcs[funcId = me.__fid = __funcs.length] = me;

	if(!o.__closures)
		o.__closures = [];

	var closure = o.__closures[funcId];
	if(closure)
		return closure;

	o = null;
	me = null;

	return __objs[objId].__closures[funcId] = function() {
		return __funcs[funcId].apply(__objs[objId], arguments);
	};
}

//AJAX supporting
$Ajx = function()
{
    this.READY_STATE_UNINITIALIZED=0;
    this.READY_STATE_LOADING=1;
    this.READY_STATE_LOADED=2;
    this.READY_STATE_INTERACTIVE=3;
    this.READY_STATE_COMPLETE=4;
    
    this.url=$Ajx.ServerPath+"AjxHandler.ashx";
    this.contentType="application/x-www-form-urlencoded";
    this.method="POST";
    this.onerror=this.defaultError;
    this.req=null;
    this.onload=null;
    this.data=null;
    this.log='';
    
    
}

$Ajx.ServerPath="";

$Ajx.prototype.defaultError=function(error)
{
   
}

$Ajx.prototype.onReadyState=function()
{
  var executed=false;  
  try
  {     
      if (this.req.readyState==this.READY_STATE_COMPLETE)
      {      
        executed=true;
        if (this.req.status==200 || this.req.status==0)
        {
          if(this.onload)
            this.onload(this.req.responseText);          
        }
        else
        {          
          this.onerror('Unknown error');
        }
      }
  }
  catch(e){}
  finally
  {
    if(executed&&this.onload)
        this.release();
  }
}

$Ajx.prototype.release=function()
{
    delete this.req.onreadystatechange;
    delete this.req;
    delete this.onload;
    delete this.onerror;
    delete this.data;
    
}

$Ajx.prototype.Update=function(url)
{
    this.url=url;
    this.Invoke();    
}

$Ajx.prototype.createRequestInstance=function()
{
        this.req = null;
        
        if(window.XMLHttpRequest)
            this.req =new XMLHttpRequest();
        else if (window.ActiveXObject) 
        {
         try
         {
            this.req=new ActiveXObject('Msxml2.XMLHTTP');
         } catch (e)
         {
             try
             {
                this.req=new ActiveXObject('Microsoft.XMLHTTP');
             } 
             catch (e)
               {
                   try
                   {
                      this.req=new ActiveXObject('Msxml2.XMLHTTP.4.0');
                   } 
                   catch (e)
                   {
                   }
               }
         }
        }       
          
        if(!this.req) 
        {
            if(!parent.frames['hiddenFrame'])
                window.location.replace(this.url+"?useFrames=true&href='"+window.location.href+"'"); 
            else
                this.req=new $Ajx.XmlHttpFrameRequest();                
        }    
}

$Ajx.prototype.Invoke=function()
{

    var isAsync=this.onload!=null;
    
    try
    {              
        this.createRequestInstance();
        if(!this.req) 
        {
            return;
        }
        
//        var thiz=this;
        this.req.onreadystatechange=this.onReadyState.bind(this);
        
      try
       {     
           this.req.open(this.method,this.url,isAsync);
       }
       catch(e)
       {        
	   
            var s=window.location.href.split("/");
	        var s1=this.url.split("/");
	        if(s[2]!=s1[2])
	        {
		        this.url=s[0]+"//"+s[2]+"/"+this.url.substr((s1[0]+"//"+s1[2]).length+1);		        
		        this.req.onreadystatechange=this.onReadyState.bind(this);
		        this.req.open(this.method,this.url,isAsync);
	        } 
       }
      
       this.req.setRequestHeader('Connection', 'close');
//       http_request.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
      
      if (this.contentType)
      {
        this.req.setRequestHeader('Content-Type', this.contentType);
      }
      this.req.send(this.data);
  
      if(!isAsync)
       return this.req.ResponseText;        
      
    }
    catch (err)
    {      
      this.onerror(err.message);      
    }
    finally
    {
     if(!isAsync)
      {       
        this.release();        
      }
    }
}

$Ajx.prototype.Execute=function()
{ 
   return this.execute(arguments);
}

$Ajx.Execute=function()
{
    var ajx=new $Ajx(); 
    return ajx.execute(arguments);    
}

$Ajx.Test=function()
{
    var ajx=new $Ajx();
    ajx.createRequestInstance();
    if(!ajx.req) 
    {
        return false;
    }
    
    return true;
}

$Ajx.prototype.execute=function(args)
{
    var i=args.length;
    
    if(i<1)
        return;    
        
    var arg0=args[0];
    var j=1;   
    
    if(typeof(arg0)=='function')
    {
        if(i<2)
            return;
            
        this.onload=arg0;
        arg0=args[1];
        j=2;
    }
    
    this.url+="?methodName="+arg0;        
    for(;j<i;j++)
    {
        if(!this.data)
        {
            this.data=args[j]+".;args";
        }
        else
        {                
            this.data+=args[j]+".;args";
        }            
        
    }
    
    return this.Invoke();
}

$Ajx.XmlHttpFrameRequest=function()
{
    this.url;
    this.method;
    this.onreadystatechange;
    this.isAxync;
    this.headers=[];
    this.data;
}

$Ajx.XmlHttpFrameRequest.prototype.open=function(method,url,isAsync)
{
    this.url=url;
    this.method=method;
    this.isAxync=isAsync;
}

$Ajx.XmlHttpFrameRequest.prototype.setRequestHeader=function(name,value)
{
        for(var i=0; i<this.headers.length; i++) 
        {
			if(this.headers[i].name == name)
			{
				this.headers[i].value = value;
				return;
			}
		}
		this.headers.push({"name":name,"value":value});
}

$Ajx.XmlHttpFrameRequest.prototype.send=function(data)
{
    this.data=data;
    return this.trySend();
}

$Ajx.XmlHttpFrameRequest.prototype.trySend=function()
{ 
      if(!this.isAxync)
      {
//            alert("Synchronous call is not supported.");
//			return;
      }
      
//    if(!this.isAxync)
//    {
//        while($Ajx.XmlHttpFrameRequest.waiting)
//        {
//         pause(1000);
//        }
//    }
//    else
    if($Ajx.XmlHttpFrameRequest.waiting)
    {
        setTimeout(this.trySend.bind(this), 100);
        return;
    } 
    
    $Ajx.XmlHttpFrameRequest.waiting=true;    
    
     var frame=parent.frames['hiddenFrame']; 
     
    var doc = frame.document;   
   
    var form = doc.createElement('form'); 	
	
	doc.body.appendChild(form);
		
	form.setAttribute("action", this.url);
	form.setAttribute("method", this.method);		
	
	for(var i=0; i<this.headers.length; i++)
	{
		switch(this.headers[i].name.toLowerCase()) 
		{
//			case "content-length":
//			case "accept-encoding":
//				break;
//			case "content-type":
//				form.setAttribute("enctype", this.headers[i].value);
//				break;
//			default:
//				this.addInput(doc, form, this.headers[i].name, this.headers[i].value);
		}
	}
	
	
	var element=doc.createElement("input");
	element.setAttribute("type", 'hidden');
	element.setAttribute("name", 'data');
	element.setAttribute("value", this.data);
	form.appendChild(element);	
	
	form.submit();
	
//	if(!this.isAxync)
//    {
//        while(doc.readyState != "complete")
//        {
//        }
//        
//        $Ajx.XmlHttpFrameRequest.waiting=false;
//        return doc.body.innerText;
//    }
//    else
     
     $Ajx.thiz=this;
     window.setTimeout('$Ajx.thiz.readystatechanged()', 1);
}

$Ajx.XmlHttpFrameRequest.prototype.readystatechanged=function()
{    
    var doc = parent.frames['hiddenFrame'].document;    
	if(doc.readyState == "complete")
	{		 
		this.status = 200;
		this.readyState = 4;
		this.responseText = doc.body.innerHTML;				
		if(this.onreadystatechange)
		    this.onreadystatechange();
		$Ajx.XmlHttpFrameRequest.waiting=false;
		return;
	}	
	window.setTimeout('$Ajx.thiz.readystatechanged()', 100);	
}

function Tracking()
{
    this.custID;
    this.proactive=''; 
    this.timerInterval=3000;
    document.write("<div id='TrackingDiv'></div>");
    $Window.OnLoad.add(this.Load.bind(this));       
}

Tracking.prototype.loaded=function(result)
{
   if(result||result.length>0)
    {    
       if(result=='proactive')
       { 
        this.proactive=result;
        
        if(this.timerInterval&&this.timerInterval>0)
            window.setTimeout("Tracking.Check()", this.timerInterval);
       }
       else
        {
           eval(result);
        }
    }
    else
    {
        if(this.timerInterval&&this.timerInterval>0)
            window.setTimeout("Tracking.Check()",this.timerInterval);   
    }     
          
}

Tracking.prototype.Load=function()
{
    if(this.timerInterval&&this.timerInterval>0)
        window.setTimeout("Tracking.Check()",this.timerInterval);
    else window.setTimeout("Tracking.Check()",1000);    
    
}
 
 Tracking.prototype.Check=function()
 {           
    $Ajx.Execute(this.loaded.bind(this),"dotnetLIVEHELP.Checker.CheckForChatting",this.custID+"|"+this.proactive); 
 }
 
 Tracking=new Tracking();
 
ConfirmContent =function(){};

ConfirmContent.open =function()
{
    ConfirmContent.close();
    return window.open(ConfirmContent.url, '_blank', 'width=600, height=600, resizable=0, scrollbars=1, toolbar=0, status=0');
}

ConfirmContent.close =function()
{
    $('confirmWindow').style.display='none';
}

CheckConfirmation=function(url,showDiv)
{
    ConfirmContent.url=url;
    var win=ConfirmContent.open();
    if(!win&&showDiv&&showDiv=='1')
    {
        $('confirmWindow').style.display='block';
        $('btYes').onclick= ConfirmContent.open;
        $('btNo').onclick= ConfirmContent.close;
    }
}
Tracking.custID='5664';
Tracking.timerInterval=3000;
$Ajx.ServerPath='http://www.jjtechnologyconsulting.com/LiveHelp/';