////////////////////////////////////////////////////////////////////////////
// Jaredwilliam.Com Javascript Calls
////////////////////////////////////////////////////////////////////////////


// include other JS...
//document.write('<script src="/assets/javascript/curvycorners.js"><\/script>');
document.write('<script src="/assets/javascript/scriptaculous/prototype.js"><\/script>');
document.write('<script src="/assets/javascript/scriptaculous/scriptaculous.js"><\/script>');

// call a global variable  (rather than sending it out and parsing it back in)
var theID = '';
var tArray = new Array();

// insert at cursor
function insertAtCursor(myField, myValue) {
  //IE support
  if (document.selection) {
    myField.focus();
    sel = document.selection.createRange();
    sel.text = myValue;
  }
  //MOZILLA/NETSCAPE support
  else if (myField.selectionStart || myField.selectionStart == '0') {
    var startPos = myField.selectionStart;
    var endPos = myField.selectionEnd;
    myField.value = myField.value.substring(0, startPos)
                  + myValue 
                  + myField.value.substring(endPos, myField.value.length);
  } else {
    myField.value += myValue;
  }
}

function updateStyle(tag,cls) {
	seltext = (document.all)? document.selection.createRange() : document.getSelection();
	if (seltext == "")
		seltext == "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.";
	replacetext = '<'+tag;
	if (cls !="")
		replacetext += ' class="'+cls+'"';
	replacetext += '>'+seltext+'</'+tag+'>';
	document.execCommand('insertHTML', false,replacetext);
}

// insert a link for an element
function el() {
	var title=prompt('Enter link title (e.g. The Link):','');var link=prompt('Enter link location (e.g. http://www.gravitybear.com):','http://');var str='<a href="'+link+'">'+title+'</a>';insertAtCursor(document.getElementById('ef'),str);
}

// this function toggles between two visible divs
function toggleLayer(whichLayerShow, whichLayerHide)
{
	document.getElementById(whichLayerHide).style.display = "none";
	document.getElementById(whichLayerShow).style.display = "";
}

// this function shows a div
function showLayer(whichLayer)
{
	//$(document.getElementById(whichLayer)).fadeIn("slow");
	//document.getElementById(whichLayer).style.display = "block";
 new Effect.Appear( document.getElementById(whichLayer));
}

// this function shows a div
function showLayerSimple(whichLayer)
{
	//$(document.getElementById(whichLayer)).fadeIn("slow");
	document.getElementById(whichLayer).style.display = "block";
 //new Effect.Appear( document.getElementById(whichLayer));
}


// this function allows the visible toggle for just one div
function showHideLayer(whichLayer)
{
	theLayer = document.getElementById(whichLayer);
	theLayer.style.display = (theLayer.style.display != "none") ? "none" : "";
}

// this function hides one div
function hideLayer(whichLayer)
{
	document.getElementById(whichLayer).style.display = "none";
	//new Effect.Fade( document.getElementById(whichLayer));
}

// this function hides one div
function hideLayerSmooth(whichLayer)
{
	//document.getElementById(whichLayer).style.display = "none";
	new Effect.Fade( document.getElementById(whichLayer));
}

// this function hides many div
function hideLayers(whichLayers)
{
	var layersArray = whichLayers.split("::");
	for (var i = 0; i < layersArray.length; i++) {
		document.getElementById(layersArray[i]).style.display = "none";		
	}
}

function minAdmin() {
	document.getElementById('chooser').style.display= "none";
	document.getElementById('bannerSpacer').style.height="20px";
	document.getElementById('bannerSpacer').style.top="-50px";
	document.getElementById('bannerBGMiddle').style.marginTop="50px";
	document.getElementById('bannerBG').style.top="-50px";
}
function maxAdmin() {
	document.getElementById('chooser').style.display= "";
	document.getElementById('bannerSpacer').style.height="256px";
	document.getElementById('bannerSpacer').style.top="-300px";
	document.getElementById('bannerBGMiddle').style.marginTop="300px";
	document.getElementById('bannerBG').style.top="-300px";
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
// Elements Functions
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// relign the height of the popup... 
function alignPopup(div) {
	if (window.pageYOffset)
		topValue = 10 + window.pageYOffset;
	else
		topValue = 120;
	//scroll(0,0);
	showLayer('screen');
	document.getElementById('popup').style.top = topValue+'px';
	//document.getElementById('screen').style.height = (window.innerHeight + window.pageYOffset)+'px'; 
}

// close popup div... 
function cancel() {
	hideLayer('popup');
	hideLayer('screen');
}

function pop(x,y,ajCall) {
	popper = document.getElementById('pop');
	popper.style.width=x+'px';
	popper.style.height=y+'px';
	if (document.getElementById('screen').style.display != '')
		showLayer('screen');
	aj(ajCall,'pop');
}

function unPop() {
	hideLayer('pop');
	hideLayer('screen');
}


// find position of an object
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;
  }
 
// browser check
if (navigator.appName.indexOf("Microsoft")!=-1&&parseInt(navigator.appVersion)>=4) {
	var ie = 1;
}
else {
	var ie = null;
}
if (navigator.userAgent.indexOf("Safari")!=-1) {
	var safari = 1;
}
else {
	var safari = null;
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
//  Scrolling Functions
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// these variables control the movement
xTarget = 0;
x = 0;
yTarget = 0;
y = 0;
t = 0;
c = 1;
var stop = 0;
var div = '';
// these functions move the contents of a div
function startScroll(total) {
	t = (total + 1) * -563;
	scrollerTimer = window.setTimeout("scroller();",4000);	
	div = "stage";
}

function scroller() {
	if (stop == 0) {
		scrollerTimer = window.setTimeout("scroller();",6000);
		moveH(-563,div);
	}
	else 
		clearTimeout(scrollerTimer);
}
function moveH (distance,theDiv) {
	div = theDiv;
	xTarget = xTarget + distance;
	moveHorizontal();
}
function goToH(target,theDiv) {
	stop = 1;
	div = theDiv;
	xTarget = target;
	moveHorizontal();
}
function moveHorizontal() {
	var xDiff = xTarget - x;
	
	totalwidth = 1360;
	
	// leaving then coming
	if (xDiff < (totalwidth/2))	
		x += xDiff/25;
	else if (xDiff > 4*(totalwidth/5))
		x += (1/xDiff) * 1400;
	else
		x += 2;

	document.getElementById(div).style.left = x + "px";	
	if (Math.round(xDiff) == 0) {
		window.clearTimeout(move_timeout);
		x = xTarget;
		move_timeout = null;
	} else {
		move_timeout = window.setTimeout("moveHorizontal();",3);
	}
}
function focusY(focusElement,theDiv) {
	target = document.getElementById(focusElement).offsetTop * -1;
//	if (ie) {
//		y = Math.round(y);
//		target = y + target;
//	}
	moveY(target,theDiv);
}
function moveY(target,theDiv) {
	div = theDiv;
	yTarget = target;
	moveVertical();
}
function yScroll(velocity, theDiv) {
	if (y < 0 || velocity < 0) {
		div = theDiv;
		yTarget = (y + velocity);
		moveVertical();
	}
}
function initiateMouseScrollY(theDiv,divToScroll) {
	div = divToScroll;
	if (theDiv.addEventListener && !safari)
     theDiv.addEventListener('DOMMouseScroll', scrollWheelMoveV, false);
	else
		theDiv.onmousewheel = document.onmousewheel = scrollWheelMoveV;
}
function removeMouseScrollY(theDiv,divToScroll) {
	if (theDiv.addEventListener && !safari)
     theDiv.removeEventListener('DOMMouseScroll', scrollWheelMoveV, false);
	else
		theDiv.onmousewheel = document.onmousewheel = null;
}
function scrollWheelMoveV(e) {
	if (window.event || window.Event) {
		if (!e) e = window.event;
		if (e.wheelDelta <= 0 || e.detail > 0 ) 
			velocity = -100;
		else 
			velocity = 100;
		if (y < 0 || velocity < 0) {
			yTarget = (y + velocity);
			moveVertical();
		}
	}
}
function moveVertical() {
	var yDiff = yTarget - y;
	y += yDiff/4;
	if (y > 0) {
		y = 0;
		yTarget = 0;
	}
	document.getElementById(div).style.top = y + "px";
	if (Math.round(yDiff) == 0) {
		window.clearTimeout(move_timeout);
		move_timeout = null;
	} else {
		move_timeout = window.setTimeout("moveVertical();",25);
	}
}

// Capture Escape
document.onkeydown = function(e){ 
	if (e == null) { // ie 
  keycode = event.keyCode; 
 } else { // mozilla 
  keycode = e.which; 
 } 
 if(keycode == 27){ // escape, close box, esc 
  cancel();
  unPop();
 } 
};

// these are generic AJAX functions
var req;

function aj(data,div) 
{
	// hope to deprecate this soon... here, we assign a universal
	// variable  for the div id
	theID = div;
	if (div !='') {
		document.getElementById(theID).innerHTML = '<img src="/images/spinner.gif" alt="loading..." />';
		if (div !='status' && document.getElementById('screen').style.display != '')
			showLayer('screen');			
		showLayer(theID);
	}
	// branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.open("POST", "/assets/ajax/ajax.php", true);
				req.setRequestHeader('Content-Type',
'application/x-www-form-urlencoded');
        req.send(data);
        req.onreadystatechange = processReqChange;
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = processReqChange;
            req.open("POST", "/assets/ajax/ajax.php", true);
						req.setRequestHeader('Content-Type',
'application/x-www-form-urlencoded');
            req.send(data);
        }
    }
}
function processReqChange() 
{
	// only if req shows "complete"
	if (req.readyState == 4) {
		// only if "OK"
		if (req.status == 200 && theID !='') {
			// set the id's HTML to the result
			document.getElementById(theID).innerHTML = req.responseText;
			//showLayer(theID);
		} 
		if (req.status != 200) {
			// explain the problem (we need error checking here)
			//alert("Ajax Javascript Request Error\n" + req.statusText);
		}
	}
}

		function is_child_of(parent, child) {
			if( child != null ) {			
				while( child.parentNode ) {
					if( (child = child.parentNode) == parent ) {
						return true;
					}
				}
			}
			return false;
		}
		function fixOnMouseOut(element, event, JavaScript_code) {
			var current_mouse_target = null;
			if( event.toElement ) {				
				current_mouse_target 			 = event.toElement;
			} else if( event.relatedTarget ) {				
				current_mouse_target 			 = event.relatedTarget;
			}
			if( !is_child_of(element, current_mouse_target) && element != current_mouse_target ) {
				eval(JavaScript_code);
			}
		}

