function createRequestObject() {
    var ro;
    var browser = navigator.appName;
    var ua = navigator.userAgent.toLowerCase();
    if(browser == "Microsoft Internet Explorer" || ua == "msie"){
                ro = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
                ro = new XMLHttpRequest();
    }
    return ro;
}
var http = createRequestObject();

function getandeval(posting){
    var http3 = createRequestObject();	
    http3.open('get', posting);
    http3.onreadystatechange = function ()
        {
            if(http3.readyState == 4)
	    {
                var response = http3.responseText;
		eval(response);
            }
        }
    http3.send(null);
    http3.close;
}
function areplace(posting, theid){
    var http3 = createRequestObject();	
    http3.open('get', posting);
    http3.onreadystatechange = function ()
        {
            if(http3.readyState == 4)
	    {
                var response = http3.responseText;
		$(theid).innerHTML = response;
            }
        }
    http3.send(null);
    http3.close;
}
Array.prototype.inArray = function (value) {
	var i;
	for (i=0; i < this.length; i++) {
		if (this[i] === value) {
			return true;
		}
	}
	return false;
};

var last = false;
function isCurrent(chg){
	for(a=0;a<cnt;a++){
	       if(typeof(current[a])=='object' && current[a].id == chg){
		       //if(last){ $(last).className='bordered'; }		       
	       	       //$(current[a].name).className='gcurrent';
		       last = current[a].name;
		       $('tbigs').src='/partial.php?i=' + current[a].large;
	       }
	       $('time').value = chg;
	}
}
function findPosX(obj){
    var curleft = 0;
    if(obj.offsetParent)
        while(1) 
        {
          curleft += obj.offsetLeft;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.x)
        curleft += obj.x;
    return curleft;
}

function findPosY(obj)  {
    var curtop = 0;
    if(obj.offsetParent)
        while(1)
        {
          curtop += obj.offsetTop;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.y)
        curtop += obj.y;
    return curtop;
}
  
function setCookie(name,value,expires, options) {
   if (options===undefined) { options = {}; }
   if ( expires ) {
      var expires_date = new Date();
      expires_date.setDate(expires_date.getDate() + expires)
   }
   document.cookie = name+'='+escape( value ) +
      ( ( expires ) ? ';expires='+expires_date.toGMTString() : '' ) + 
      ( ( options.path ) ? ';path=' + options.path : '' ) +
      ( ( options.domain ) ? ';domain=' + options.domain : '' ) +
      ( ( options.secure ) ? ';secure' : '' );
}
function getCookie( name ) {
   var start = document.cookie.indexOf( name + "=" );
   var len = start + name.length + 1;
   if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
      return null;
   }
   if ( start == -1 ) return null;
   var end = document.cookie.indexOf( ';', len );
   if ( end == -1 ) end = document.cookie.length;
   return unescape( document.cookie.substring( len, end ) );
}

function deleteCookie( name, path, domain ) {
   if ( getCookie( name ) ) document.cookie = name + '=' +
      ( ( path ) ? ';path=' + path : '') +
      ( ( domain ) ? ';domain=' + domain : '' ) +
      ';expires=Thu, 01-Jan-1970 00:00:01 GMT';
}
/*
	great little function to dynamically add DOM nodes dynamically as needed..
	very useful for adding in multiple spinners on different items without pre-populating divs for each section
	which is a total pain
	speaking of pain, once I get into IE testing I am sure this function will cause some pain for me..
*/
function graft (parent, t, doc) {

    // Usage: graft( somenode, [ "I like ", ['em',
    //               { 'class':"stuff" },"stuff"], " oboy!"] )

    doc = (doc || parent.ownerDocument || document);
    var e;

    if(t == undefined) {
        throw complaining( "Can't graft an undefined value");
    } else if(t.constructor == String) {
        e = doc.createTextNode( t );
    } else if(t.length == 0) {
        e = doc.createElement( "span" );
        e.setAttribute( "class", "fromEmptyLOL" );
    } else {
        for(var i = 0; i < t.length; i++) {
            if( i == 0 && t[i].constructor == String ) {
                var snared;
                snared = t[i].match( /^([a-z][a-z0-9]*)\.([^\s\.]+)$/i );
                if( snared ) {
                    e = doc.createElement(   snared[1] );
                    e.setAttribute( 'class', snared[2] );
                    continue;
                }
                snared = t[i].match( /^([a-z][a-z0-9]*)$/i );
                if( snared ) {
                    e = doc.createElement( snared[1] );  // but no class
                    continue;
                }

                // Otherwise:
                e = doc.createElement( "span" );
                e.setAttribute( "class", "namelessFromLOL" );
            }

            if( t[i] == undefined ) {
                throw complaining("Can't graft an undefined value in a list!");
            } else if(  t[i].constructor == String ||
                                    t[i].constructor == Array ) {
                graft( e, t[i], doc );
            } else if(  t[i].constructor == Number ) {
                graft( e, t[i].toString(), doc );
            } else if(  t[i].constructor == Object ) {
                // hash's properties => element's attributes
                for(var k in t[i]) {
                    // support for attaching closures to DOM objects
                    if(typeof(t[i][k])=='function'){
                        e[k] = t[i][k];
                    } else {
                        e.setAttribute( k, t[i][k] );
                    }
                }
            } else {
                throw complaining( "Object " + t[i] +
                    " is inscrutable as an graft arglet." );
            }
        }
    }

    parent.appendChild( e );
    return e; // return the topmost created node
}
/*
set opacity of an element by 'this'
*/
function set_opacity(div, val) {
  if (div.filters) {  //For IE
    val *= 100;
    div.style.filter = 'alpha(opacity='+ val +')';
    try {
      div.filters.item("DXImageTransform.Microsoft.Alpha").opacity = val;
    } catch (e) { 
      // If it is not set initially, the browser will throw an error.  This will set it if it is not set yet.
      div.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity='+val+')';
    }
  } else {
    div.style.opacity = val;
    div.style.MozOpacity = val;  //This is for older Mozilla Browsers
  }
}

/*
set opacity of an element by id and add a corner spinner to it if spin, otherwise remove the spinner.
*/
function spin_opacity(tdiv, val, spin) {
  div = $(tdiv);	
  if (div.filters) {  //For IE
    val *= 100;
    div.style.filter = 'alpha(opacity='+ val +')';
    try {
      div.filters.item("DXImageTransform.Microsoft.Alpha").opacity = val;
    } catch (e) { 
      // If it is not set initially, the browser will throw an error.  This will set it if it is not set yet.
      div.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity='+val+')';
    }
  } else {
    div.style.opacity = val;
    div.style.MozOpacity = val;  //This is for older Mozilla Browsers
  }
  if(spin == 1){
	  	//p = div.offsetParent	
		//<div id=cspin name=cspin style="display: none; position: absolute; top: 0px; left: 0px; z-index: 999;"><img src="/images/corner-spin.gif" border=0></div>
		tleft =  findPosX(div) //+ ((div.offsetWidth / 2) - 28));  
		ttop = findPosY(div) //+ ((div.offsetHeight / 2) - 11)); 
		divtouse = 'cspin_' + tdiv;
		graft(
		    div,
		    ["div",
			    {
				    style:'display: block; position: absolute; top: '+ ttop +'px; left: '+ tleft +'px; z-index: 999',
				    id: divtouse
			    },
			    ['img',
				    {
					src:'/images/corner-spin.gif',
					border:'0'
				    }	
			    ]
		    ]
		);

		//$('cspin').style.top = ttop + 'px';
		//$('cspin').style.left = tleft + 'px';
		//$('cspin').style.display = 'block';
		setTimeout("spin_opacity('"+ tdiv +"', 1)", 5000);			
  }else{
	  	setTimeout("$('cspin_"+ tdiv +"').remove();", 500);
  }
}
function center(element){
    try{
        element = $(element);
    }catch(e){
        return;
    }

    var my_width  = 0;
    var my_height = 0;

    if ( typeof( window.innerWidth ) == 'number' ){
        my_width  = window.innerWidth;
        my_height = window.innerHeight;
    }else if ( document.documentElement && 
             ( document.documentElement.clientWidth ||
               document.documentElement.clientHeight ) ){
        my_width  = document.documentElement.clientWidth;
        my_height = document.documentElement.clientHeight;
    }
    else if ( document.body && 
            ( document.body.clientWidth || document.body.clientHeight ) ){
        my_width  = document.body.clientWidth;
        my_height = document.body.clientHeight;
    }

    element.style.position = 'absolute';
    element.style.zIndex   = 99;

    var scrollY = 0;

    if ( document.documentElement && document.documentElement.scrollTop ){
        scrollY = document.documentElement.scrollTop;
    }else if ( document.body && document.body.scrollTop ){
        scrollY = document.body.scrollTop;
    }else if ( window.pageYOffset ){
        scrollY = window.pageYOffset;
    }else if ( window.scrollY ){
        scrollY = window.scrollY;
    }

    var elementDimensions = Element.getDimensions(element);

    var setX = ( my_width  - elementDimensions.width  ) / 2;
    var setY = ( my_height - elementDimensions.height ) / 2 + scrollY;

    setX = ( setX < 0 ) ? 0 : setX;
    setY = ( setY < 0 ) ? 0 : setY;

    element.style.left = setX + "px";
    element.style.top  = setY + "px";

    element.style.display  = 'block';
}
function getForm(formid)
{
	var formobj = document.getElementById(formid);
	var fields = new Array();
	var form_len = formobj.elements.length;
	for (var x = 0; x < form_len; x++) {
	switch(formobj.elements[x].type) {
	   case 'select-one':
	
		fields.push(encodeURIComponent(formobj.elements[x].name)+'='+encodeURIComponent(formobj.elements[x].options[formobj.elements[x].selectedIndex].value));
		break;
		case 'select-multiple':
		var obj = formobj.elements[x];
			for(var y=0; y < formobj.elements[x].options.length; y++) {
			   if(formobj.elements[x].options[y].selected) {
						if(formobj.elements[x].options[y].value == ''){
							fields.push(encodeURIComponent(formobj.elements[x].name)+'='+encodeURIComponent(formobj.elements[x].options[y].text));
						} else {
							fields.push(encodeURIComponent(formobj.elements[x].name)+'='+encodeURIComponent(formobj.elements[x].options[y].value));
						}
			   }
			}
		break;
		case 'radio':
			   if(formobj.elements[x].checked) {
					   fields.push(encodeURIComponent(formobj.elements[x].name)+'='+encodeURIComponent(formobj.elements[x].value));
			   }
        break;
		case 'checkbox':
			if(formobj.elements[x].checked) {
				fields.push(encodeURIComponent(formobj.elements[x].name)+'='+encodeURIComponent(formobj.elements[x].value));
			}
		break;
		default:
		// text, password, textarea, etc
		fields.push(encodeURIComponent(formobj.elements[x].name)+'='+encodeURIComponent(formobj.elements[x].value));
		break;
	}
	}
	var new_qstring = '&' + fields.join('&');
	return new_qstring;
}
function postThisForm(theform){
        var form_vars = getForm(theform);
        getandeval('/actions.php?a=1'+form_vars)
}
function hideinfo(){
	$('infopop').style.display='none';	
}
