var xmlhttp
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
  try {
  xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
 } catch (e) {
  try {
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  } catch (E) {
   xmlhttp=false;
  }
 }
@else
 xmlhttp=false
 @end @*/
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
	try {
		xmlhttp = new XMLHttpRequest();
	} catch (e) {
		xmlhttp=false;
	}
}
if (!xmlhttp && window.createRequest) {
	try {
		xmlhttp = window.createRequest();
	} catch (e) {
		xmlhttp=false;
	}
}

function focusSomething(element) {
	if ((element.type=='textarea') || (element.type=="text")) {
		element.focus();
		return 1;
	}
	else if (element.childNodes) {
	  for (var index=0; index<element.childNodes.length; index++) {
		  if (focusSomething(element.childNodes[index])==1) {
        return 1;
      }				
		}
	}
	return 0;
}

function elementPosition(obj) {
  var curleft = 0, curtop = 0;

  if (obj.offsetParent) {
    curleft = obj.offsetLeft;
    curtop = obj.offsetTop;

	  while (obj = obj.offsetParent) {
	    curleft += obj.offsetLeft;
	    curtop += obj.offsetTop;
	  }  
  }
  return { x: curleft, y: curtop };
}

function SmoothScrollToControl(id) {
	var elem = document.getElementById(id);
	var scrollPos = elementPosition(elem).y;
	scrollPos = scrollPos - document.documentElement.scrollTop;
	var remainder = scrollPos % 50;
	var repeatTimes = (scrollPos - remainder) / 50;
	ScrollSmoothly(scrollPos,repeatTimes);
	window.scrollBy(0,remainder);
}

var repeatCount = 0;
var cTimeout;
var timeoutIntervals = new Array();
var timeoutIntervalSpeed;

function ScrollSmoothly(scrollPos,repeatTimes) {
  if(repeatCount < repeatTimes) {
    window.scrollBy(0,50);
  }
  else {
    repeatCount = 0;
    clearTimeout(cTimeout);
    return;
  }
  repeatCount++;
  cTimeout = setTimeout("ScrollSmoothly('" + scrollPos + "','"+ repeatTimes +"')",10);
}

function loadFragmentInToElement(elementid, fragment_url, scrollto, callback) { 
  var element = document.getElementById(elementid);
	if (element) { 
	//	element.innerHTML = '<p><em>Loading from server...</em></p>'; 
  	document.body.style.cursor = "wait";								
	 	xmlhttp.open("GET", fragment_url); 
	  xmlhttp.onreadystatechange = function() { 
	  	if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
    		document.body.style.cursor = "default";
	      element.innerHTML = xmlhttp.responseText; 
				if (scrollto == true) { 
				  SmoothScrollToControl(element.id);
					// element.scrollIntoView(true);
          if (callback) {
				    callback();
				  }					
				}
				focusSomething(element);
	    } 
	  } 
	  xmlhttp.send(null); 
	}
  else alert('loadFragmentInToElement, element not found: ' + elementid);			
} 

function loadFragmentInToElementPost(elementid, fragment_url, postdata, scrollto, callback) { 
  var element = document.getElementById(elementid);
	if (element) {
	//	element.innerHTML = '<p><em>Loading from server...</em></p>'; 

  	document.body.style.cursor = "wait";								
	  xmlhttp.open("POST", fragment_url); 
		xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
		xmlhttp.onreadystatechange = function() { 
	    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
      	document.body.style.cursor = "default";								
	      element.innerHTML = xmlhttp.responseText; 
				if (scrollto == true) { 
				  SmoothScrollToControl(element.id);
//					element.scrollIntoView(true);
				}
				if (callback) {
				  callback();
				}
	    } 
	  } 
	  xmlhttp.send(postdata); 
	}
  else alert('loadFragmentInToElementPost, element not found: ' + elementid);	
} 

function loadFragmentInToElementPostForm(elementid, fragment_url, formname, scrollto) { 
  theForm = document.forms[formname];
	if (!theForm) {
	  alert('loadFragmentInToElementPostForm: form "' + formname + '" not found.');
		return false;
	}	
  var qs = ''
  for (e=0;e<theForm.elements.length;e++) {
	  element = theForm.elements[e];
    if ( (element.name != '') && 
		     ( (element.type != 'radio') || (element.checked) )
			 ) {
				var name = element.name;
				qs+=(qs=='')?'':'&'
				qs+= name+'='+escape(element.value);
		}
  }
	loadFragmentInToElementPost(elementid, fragment_url, qs, scrollto);
	return false; // when used in <form onsubmit="loadFragmentInToElementPostForm('divid','/something.php', 'formid', false)">, so the form's onsubmit won't execute the traditional post and reload the entire document
} 


/**
*
*  AJAX IFRAME METHOD (AIM)
*  http://www.webtoolkit.info/
*
**/

AIM = {

    frame : function(c) {

        var n = 'f' + Math.floor(Math.random() * 99999);
        var d = document.createElement('DIV');
        d.innerHTML = '<iframe style="display:none" src="about:blank" id="'+n+'" name="'+n+'" onload="AIM.loaded(\''+n+'\')"></iframe>';
        document.body.appendChild(d);

        var i = document.getElementById(n);
        if (c && typeof(c.onComplete) == 'function') {
            i.onComplete = c.onComplete;
        }

        return n;
    },

    form : function(f, name) {
        f.setAttribute('target', name);
    },

    submit : function(f, c) {
				AIM.form(f, AIM.frame(c));
        if (c && typeof(c.onStart) == 'function') {
            return c.onStart();
        } else {
            return true;
        }
    },

    loaded : function(id) {
        var i = document.getElementById(id);
        if (i.contentDocument) {
            var d = i.contentDocument;
        } else if (i.contentWindow) {
            var d = i.contentWindow.document;
        } else {
            var d = window.frames[id].document;
        }
        if (d.location.href == "about:blank") {
            return;
        }

        if (typeof(i.onComplete) == 'function') {
            i.onComplete(d.body.innerHTML);
        }
    }

}