// http://fmarcia.info/jsmin/test.html
var bNeedReloadTopStats = false;
var bCascadeA = false;
var currentHREF = '';
var errOLDB = 'The XMLHttpRequest Object is not supported, this web site requires a modern web browser.';

function checkURL() {
var myloc = location.href;
var goloc = new Array();
var goplace = '';
var findHash = 0;
findHash = myloc.indexOf('#');
if (findHash != -1 && findHash != 'undefined' && findHash != myloc.length-1)
{
goloc = myloc.split('#');
goplace = goloc[1];
postloadDoc('__Go.asp?x='+goplace);
currentHREF = goplace;
}
}

function relogin() {
window.location = window.location;
}

function reDoCurrentPage() {
if (currentHREF) {
window.scrollTo(0, 0);
loadDoc(currentHREF);
}
}

function makeO() {
var req = null;
if(window.XMLHttpRequest) {
try { req = new XMLHttpRequest(); }
catch(e) { req = false; }
}
else if(window.ActiveXObject) {
try { req = new ActiveXObject("Msxml2.XMLHTTP"); }
catch(e) { try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { req = false; } }
}
return req;
}

var reqO = makeO();
var reqO2 = makeO();
var reqO3 = makeO();

function loadDoc(url) {
currentHREF = url;
var randomnumber = Math.floor(Math.random()*1000001);
document.getElementById('maincontent').innerHTML = '<center><br><div id=\'zzzz\' class=\'nice good\' style=\'display:none; width: 58%;\'><br><b>Please wait while the page loads...</b><br>This should only take a few seconds...<br><img id=\'zzzz1\' src=\'img/run.gif\' alt=\'\'></div></center>'+document.getElementById('maincontent').innerHTML;
window.scrollTo(0,0);
jQuery('#zzzz').slideDown(100);
document.getElementById('loadingMsg').innerHTML = '';
document.getElementById('iBackFix').src='blank.asp?P='+url+'&amp;xRCB='+randomnumber;
}

function postloadDoc(url) {
if(reqO) {
reqO.open("GET", url, true);
reqO.setRequestHeader("CapallsPost", "True");
reqO.onreadystatechange = processReqChange;
reqO.send("");
}
}

function processReqChange() {
if (reqO.readyState == 4) {
window.scrollTo(0,0);
document.getElementById('maincontainer').innerHTML = reqO.responseText;
document.getElementById('loadingMsg').innerHTML = '';
}
}

function processReqPostChange() {
if (reqO.readyState == 4) {
if (reqO.status == 200 || reqO.status == 0) {
window.scrollTo(0,0);
document.getElementById('maincontainer').innerHTML = reqO.responseText;
if (bNeedReloadTopStats == true) {
reloadTopStatBar();
bNeedReloadTopStats = false;
}
} else {
document.getElementById('maincontainer').innerHTML = "There was an issue retrieving the data:<br>Reason: " + reqO.statusText + "<br>";
}
}
}

function postDoc(url, parameters) {
if(reqO) {
reqO.open("POST", url, true);
reqO.onreadystatechange = processReqPostChange;
document.getElementById('maincontainer').innerHTML = '<center><br><br><div class=\'nice good\' style=\'width: 48%;\'><br><b>We are hard at work to process your request...</b><br><img src="img/Run.gif" alt=""></div></center><br>';
reqO.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
reqO.setRequestHeader("Content-length", parameters.length);
reqO.setRequestHeader("CapallsPost", "True");
reqO.send(parameters);
currentHREF = url;
currentPV = parameters;
currentREQ = 'post';
}
}

function bou(t) {
t.style.background="#ADA381";
t.style.border="solid 1px black";
}

function bov(t) {
t.style.background="#beb699";
t.style.border="solid 1px darkgreen";
}

function foDivQ(fdID) {
  jQuery('#'+fdID).slideDown(800);
  document.getElementById('ctrl'+fdID).style.display='none';
  document.getElementById('ctrl2'+fdID).style.display='';
  document.getElementById('topctrl'+fdID).style.display='none';
  document.getElementById('topctrl2'+fdID).style.display='';
  opacity('help'+fdID,50,100,2000);
  document.getElementById('help'+fdID).className='niceh';
  return true;
}

function fcDivQ(fdID) {
  jQuery('#'+fdID).slideUp(800);
  document.getElementById('ctrl'+fdID).style.display='';
  document.getElementById('ctrl2'+fdID).style.display='none';
  document.getElementById('topctrl'+fdID).style.display='';
  document.getElementById('topctrl2'+fdID).style.display='none';
  opacity('help'+fdID,100,50,2000);
  document.getElementById('help'+fdID).className='nice';
  return true;
}

function getchat(xid, rndiddd) {
if(reqO2) {
reqO2.open("GET", "chat_liveChat.asp?get="+xid+"&rndGarbage="+rndiddd, true);
reqO2.onreadystatechange = processChatChange;
reqO2.send("");
}
}

function processChatChange() {
if (reqO2.readyState == 4) {
if (reqO2.status == 200 || reqO2.status == 0) {
if (reqO2.responseText) {
document.getElementById('liveChat').innerHTML = reqO2.responseText;
}
} else {
document.getElementById('maincontainer').innerHTML = "There was an issue retrieving the data:<br>Reason: " + reqO2.statusText + "<br>";
}
}
}

function sendLC(e) {
var key=e.keyCode || e.which;
if (key==13) { genPost('chat_LiveChat.asp','cMSG='+ge('cMsg'),'loadingMsg');document.getElementById('cMsg').value=''; }
}

function searchBreedReq(e) {
var key=e.keyCode || e.which;
if (key==13) { genPost('Go.asp','SearchBreedReq=True&mySearch='+ge('searchT')+'&myType='+ge('sType'),'srchR');window.scrollBy(0,250); }
}

function gotoEnd() {
var c = document.getElementById('liveChat');
var t1 = c.scrollHeight;
var t2 = c.offsetHeight;
if (t1 > 0) // all but Explorer Mac
{
c.scrollTop = c.scrollHeight;
}
else
{
c.scrollTop = c.offsetHeight;
}
}

function removeElement(objN) {
  var d = document.getElementById('liveChat');
  var oldN = document.getElementById(objN);
  d.removeChild(oldN);
}

function closeAlert(s, p, d) {
genPost(s,p,d);
document.getElementById(d).style.visibility='hidden';
document.getElementById('dimB').style.display='none';
}

function ge(obj) {
return encodeURI(document.getElementById(obj).value);
}

function gec(obj) {
var x3 = ge(obj);
x3 = x3.replace(/\&/, "%26");
return x3;
}

function postchat(u) {
var p = "SUBJ=" + gec("SUBJ") + 
   "&MSG=" + gec("MSG") +
   "&msgID=" + ge("msgID");
postDoc(u, p);
}

function previewchat(u) {
var p = "preview=true&MSG=" + gec("MSG");
previewMsg(u, p);
}

function previewMsg(url, parameters) {
if(reqO) {
reqO.open("POST", url, true);
reqO.onreadystatechange = processPreviewReqChange;
document.getElementById('previewMsg').innerHTML = '<center><br><br><br><br><b>Please wait while we process your request...</b><br><img src="img/loading.gif" alt=""></center><br>';
reqO.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
reqO.setRequestHeader("Content-length", parameters.length);
reqO.setRequestHeader("CapallsPost", "True");
reqO.send(parameters);
}
}

function processPreviewReqChange() {
document.getElementById('previewMsg').innerHTML = reqO.responseText;
}

var myGlobalDiv = "";
function genPost(url, parameters, myDIV) {
if(reqO) {
myGlobalDiv = myDIV;
reqO.open("POST", url, true);
reqO.onreadystatechange = processGenReqChange;
document.getElementById(myDIV).innerHTML = '<center><img src="img/run.gif" alt=""></center><br>';
reqO.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
reqO.setRequestHeader("Content-length", parameters.length);
reqO.setRequestHeader("CapallsPost", "True");
reqO.send(parameters);
}
}

function processGenReqChange() {
if (reqO.readyState == 4) {
if (reqO.status == 200 || reqO.status == 0) {
document.getElementById(myGlobalDiv).innerHTML = reqO.responseText;
if (bNeedReloadTopStats == true) {
  reloadTopStatBar();
  bNeedReloadTopStats = false;
}
} else {
document.getElementById(myGlobalDiv).innerHTML = "There was an issue retrieving the data:<br>Reason: " + reqO.statusText + "<br>";
}
}
}

var myGlobalDiv2 = "";
function genPost2(url2, parameters2, myDIV2) {
if(reqO2) {
myGlobalDiv2 = myDIV2;
reqO2.open("POST", url2, true);
reqO2.onreadystatechange = processGenReqChange2;
document.getElementById(myDIV2).innerHTML = '<center><img src="img/run.gif" alt=""></center><br>';
reqO2.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
reqO2.setRequestHeader("Content-length", parameters2.length);
reqO2.setRequestHeader("CapallsPost", "True");
reqO2.send(parameters2);
}
}

function processGenReqChange2() {
if (reqO2.readyState == 4) {
if (reqO2.status == 200 || reqO2.status == 0) {
document.getElementById(myGlobalDiv2).innerHTML = reqO2.responseText;
if (bNeedReloadTopStats == true) {
  reloadTopStatBar();
  bNeedReloadTopStats = false;
}
if (bCascadeA == true) {
  genPost('Go.asp', 'getLstOfCapallsToExercise='+ge('sID'), 'lstCapalls');  
  bCascadeA = false;
}
} else {
document.getElementById(myGlobalDiv2).innerHTML = "There was an issue retrieving the data:<br>Reason: " + reqO2.statusText + "<br>";
}
}
}

function fitnesscenterDouble() {
bCascadeA = true;
genPost2('Go.asp', 'showECItems='+ge('sID'), 'ecItems');
}

function resetstable() {
var poststr = "resetStable=YES";
var answ = confirm("Click OK to reset your Stable Page!");
if (answ) {postDoc('home_StableSettings.asp', poststr);}
}

function saveaccountsettings(filenam) {
var lockact = '';
if(document.getElementById("lockaccount").checked == true){
lockact = ge("lockaccount");
}else{
lockact = '';
}
var emailnotices = '';
if(document.getElementById("emailnotices").checked == true){
emailnotices = ge("emailnotices");
} else {
emailnotices = '';
}
var showttwit = '';
if(document.getElementById("showTwitter").checked == true){
showttwit = ge("showTwitter");
} else {
showttwit = '';
}
var p = "username=" + ge("username") +
  "&displayname=" + ge("displayname") + 
  "&DImg=" + ge("DisplayNameImg") +
  "&emailaddress=" + ge("emailaddress") +
  "&lockaccount=" + lockact +
  "&emailnotices=" + emailnotices +
  "&bankpinnumber=" + ge("bankpinnumber") +
  "&AUTHpinnumber=" + ge("AUTHpinnumber") +
  "&TZ=" + ge("TZ") +
  "&PW=" + ge("updatepassword") +
  "&GUI=" + ge("NavStyle") +
  "&showTwitter=" + showttwit +
  "&NewbieWrangler=" + ge("newbieWrangler") +
  "&save=save";
bNeedReloadTopStats = true;
postDoc(filenam, p);
}

function banktransaction(s) {
var zaction;
var znote = '';
if(document.getElementById('w').checked == true){
zaction = document.getElementById('w').value;
}
if(document.getElementById('d').checked == true){
zaction = document.getElementById('d').value;
}
if(document.getElementById('t').checked == true){
zaction = document.getElementById('t').value;
}
if (document.getElementById('tranNotes')) {
znote = ge('tranNotes');
}
var bpin = prompt("Please Enter Your Bank Pin for Authorization");
var p = "Amount=" + ge("famt") +
  "&doWhat=" + zaction +
  "&pin=" + bpin +
  "&zNote=" + znote +
  "&friendID=" + ge("friendID");
bNeedReloadTopStats = true;
if (bpin) {postDoc(s, p);}
}

function reloadCTAds() {
if(reqO3) {
reqO3.open("GET", "~TopAdsBar.asp", true);
reqO3.onreadystatechange = processCT4AdsChange;
document.getElementById('memAds').innerHTML = '<center><br><br><b>Reloading...</b></center>';
reqO3.send("");
}
}

function reloadTopStatBar() {
if(reqO2) {
reqO2.open("GET", "~TopStatBar.asp", true);
reqO2.onreadystatechange = processStatChange;
document.getElementById('topstatbar').innerHTML = '<center><br><br><b>Reloading...</b></center>';
reqO2.send("");
}
}

function processStatChange() {
if (reqO2.readyState == 4) {
if (reqO2.status == 200 || reqO2.status == 0) {
document.getElementById('topstatbar').innerHTML = reqO2.responseText;
} else {
document.getElementById('topstatbar').innerHTML = "There was an issue retrieving the data:<br>Reason: " + reqO2.statusText + "<br>";
}
}
}

function processCT4AdsChange() {
if (reqO3.readyState == 4) {
if (reqO3.status == 200 || reqO3.status == 0) {
document.getElementById('memAds').innerHTML = reqO3.responseText;
} else {
document.getElementById('memAds').innerHTML = "There was an issue retrieving the data:<br>Reason: " + reqO3.statusText + "<br>";
}
}
}


function surroundText(text1, text2, textarea)
{
// Can a text range be created?
if (typeof(textarea.caretPos) != "undefined" && textarea.createTextRange)
{
	var caretPos = textarea.caretPos, temp_length = caretPos.text.length;
	caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text1 + caretPos.text + text2 + ' ' : text1 + caretPos.text + text2;
	if (temp_length == 0)
	{
		caretPos.moveStart("character", -text2.length);
		caretPos.moveEnd("character", -text2.length);
		caretPos.select();
	}
	else
		textarea.focus(caretPos);
}
// Mozilla text range wrap.
else if (typeof(textarea.selectionStart) != "undefined")
{
	var begin = textarea.value.substr(0, textarea.selectionStart);
	var selection = textarea.value.substr(textarea.selectionStart, textarea.selectionEnd - textarea.selectionStart);
	var end = textarea.value.substr(textarea.selectionEnd);
	var newCursorPos = textarea.selectionStart;
	var scrollPos = textarea.scrollTop;
	textarea.value = begin + text1 + selection + text2 + end;
	if (textarea.setSelectionRange)
	{
		if (selection.length == 0)
			textarea.setSelectionRange(newCursorPos + text1.length, newCursorPos + text1.length);
		else
			textarea.setSelectionRange(newCursorPos, newCursorPos + text1.length + selection.length + text2.length);
		textarea.focus();
	}
	textarea.scrollTop = scrollPos;
}
// Just put them on the end, then.
else
{
	textarea.value += text1 + text2;
	textarea.focus(textarea.value.length - 1);
}
}

function updateCapallInfo(s) {
var p = "editCapallURL=" + ge("editCapallURL") +
  "&editCapallName=" + ge("editCapallName") +
  "&editCapallDesc=" + ge("editCapallDesc") +
  "&breedFee=" + ge("breedFee") +
  "&iPrice=" + ge("iPrice") +
  "&SaleType=" + ge("SaleType") +
  "&SaleText=" + ge("csaleinfo");
postDoc(s,p);
}

function sendItem(s) {
var p = "itemID=" + ge("itemID") +
  "&HowMany=" + ge("howMany") +
  "&ToWhom=" + ge("toID");
postDoc(s,p);
}

function purchaseCapall(s) {
var p = "CapallName=" + ge("CapName") +
  "&Gender=" + ge("Gender") +
  "&PurchaseBreedID=" + ge("Breed");
bNeedReloadTopStats = true;
postDoc(s, p);
}

function opacity(id, opacStart, opacEnd, millisec) {
  //speed for each frame
  var speed = Math.round(millisec / 100);
  var timer = 0;

  //determine the direction for the blending, if start and end are the same nothing happens
  if(opacStart > opacEnd) {
      for(i = opacStart; i >= opacEnd; i--) {
          setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
          timer++;
      }
  } else if(opacStart < opacEnd) {
      for(i = opacStart; i <= opacEnd; i++)
          {
          setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
          timer++;
      }
  }
}

//change the opacity for different browsers
function changeOpac(opacity, id) {
  var object = document.getElementById(id).style;
  object.opacity = (opacity / 100);
  object.MozOpacity = (opacity / 100);
  object.KhtmlOpacity = (opacity / 100);
  object.filter = "alpha(opacity=" + opacity + ")";
}

function oHide(ob) {
opacity(ob,100,1,1000);
document.getElementById(ob).style.visibility='hidden';
}

function oShow(ob) {
document.getElementById(ob).style.visibility='';
opacity(ob,1,100,1000);
}

var delay = 2900;
var Opera = window.opera ? true : false;
var fixedElement, elWidth, elHeight, tid;
function initFixing (id) {
  if (document.layers) {
    fixedElement = document[id];
    elWidth = fixedElement.document.width;
    elHeight = fixedElement.document.height;
  }
  else if (document.getElementById && !Opera) {
    fixedElement = document.getElementById(id);
    elWidth = fixedElement.offsetWidth;
    elHeight = fixedElement.offsetHeight;
  }
  else if (document.all && !Opera) {
    fixedElement = document.all[id];
    elWidth = fixedElement.offsetWidth;
    elHeight = fixedElement.offsetHeight;
  }
  else if (Opera) {
    fixedElement = document.getElementById(id);
    elWidth = fixedElement.style.pixelWidth;
    elHeight = fixedElement.style.pixelHeight;
  }
  fixPosition();
  if (document.layers)
    fixedElement.visibility = 'show';
  else
    fixedElement.style.visibility = 'visible';
  if (document.all && !Opera)
    window.onscroll = fixPosition;
  else
    tid = setInterval('fixPosition()', delay);
}

function fixPosition () {
  if (document.layers) {
    fixedElement.left = window.pageXOffset + window.innerWidth - elWidth - 180;
    fixedElement.top =  window.pageYOffset + 460;
  }
  else if (document.all && !Opera) {
    fixedElement.style.pixelLeft = document.body.scrollLeft + document.body.clientWidth - elWidth - 180;
    fixedElement.style.pixelTop =  document.body.scrollTop + 460;
  }
  else if (document.getElementById && !Opera) {
    if (elWidth == 0)  // workaround for bug of NN6 to compute width
      elWidth = fixedElement.offsetWidth;
    fixedElement.style.left = (window.pageXOffset + window.innerWidth - elWidth - 180) + 'px';
    fixedElement.style.top =  (window.pageYOffset + 460) + 'px';
  }
  else if (Opera) {
    fixedElement.style.pixelLeft = window.pageXOffset + window.innerWidth - elWidth - 180;
    fixedElement.style.pixelTop =  window.pageYOffset + 460;
  }
}

$(function(){
    var config = {    
         sensitivity: 3, // number = sensitivity threshold (must be 1 or higher)    
         interval: 200,  // number = milliseconds for onMouseOver polling interval    
         over: doOpen,   // function = onMouseOver callback (REQUIRED)    
         timeout: 200,   // number = milliseconds delay before onMouseOut    
         out: doClose    // function = onMouseOut callback (REQUIRED)    
    };
    function doOpen() {
        $(this).addClass("hover");
        $('ul:first',this).css('visibility', 'visible');
    }
    function doClose() {
        $(this).removeClass("hover");
        $('ul:first',this).css('visibility', 'hidden');
    }

    $("ul.dropdown li").hoverIntent(config);
    
    $("ul.dropdown li ul li:has(ul)").find("a:first").append(" &raquo; ");

});

(function($){
	/* hoverIntent by Brian Cherne */
	$.fn.hoverIntent = function(f,g) {
		// default configuration options
		var cfg = {
			sensitivity: 7,
			interval: 100,
			timeout: 0
		};
		// override configuration options with user supplied object
		cfg = $.extend(cfg, g ? { over: f, out: g } : f );

		// instantiate variables
		// cX, cY = current X and Y position of mouse, updated by mousemove event
		// pX, pY = previous X and Y position of mouse, set by mouseover and polling interval
		var cX, cY, pX, pY;

		// A private function for getting mouse position
		var track = function(ev) {
			cX = ev.pageX;
			cY = ev.pageY;
		};

		// A private function for comparing current and previous mouse position
		var compare = function(ev,ob) {
			ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
			// compare mouse positions to see if they've crossed the threshold
			if ( ( Math.abs(pX-cX) + Math.abs(pY-cY) ) < cfg.sensitivity ) {
				$(ob).unbind("mousemove",track);
				// set hoverIntent state to true (so mouseOut can be called)
				ob.hoverIntent_s = 1;
				return cfg.over.apply(ob,[ev]);
			} else {
				// set previous coordinates for next time
				pX = cX; pY = cY;
				// use self-calling timeout, guarantees intervals are spaced out properly (avoids JavaScript timer bugs)
				ob.hoverIntent_t = setTimeout( function(){compare(ev, ob);} , cfg.interval );
			}
		};

		// A private function for delaying the mouseOut function
		var delay = function(ev,ob) {
			ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
			ob.hoverIntent_s = 0;
			return cfg.out.apply(ob,[ev]);
		};

		// A private function for handling mouse 'hovering'
		var handleHover = function(e) {
			// next three lines copied from jQuery.hover, ignore children onMouseOver/onMouseOut
			var p = (e.type == "mouseover" ? e.fromElement : e.toElement) || e.relatedTarget;
			while ( p && p != this ) { try { p = p.parentNode; } catch(e) { p = this; } }
			if ( p == this ) { return false; }

			// copy objects to be passed into t (required for event object to be passed in IE)
			var ev = jQuery.extend({},e);
			var ob = this;

			// cancel hoverIntent timer if it exists
			if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); }

			// else e.type == "onmouseover"
			if (e.type == "mouseover") {
				// set "previous" X and Y position based on initial entry point
				pX = ev.pageX; pY = ev.pageY;
				// update "current" X and Y position based on mousemove
				$(ob).bind("mousemove",track);
				// start polling interval (self-calling timeout) to compare mouse coordinates over time
				if (ob.hoverIntent_s != 1) { ob.hoverIntent_t = setTimeout( function(){compare(ev,ob);} , cfg.interval );}

			// else e.type == "onmouseout"
			} else {
				// unbind expensive mousemove event
				$(ob).unbind("mousemove",track);
				// if hoverIntent state is true, then call the mouseOut function after the specified delay
				if (ob.hoverIntent_s == 1) { ob.hoverIntent_t = setTimeout( function(){delay(ev,ob);} , cfg.timeout );}
			}
		};

		// bind the function to the two event listeners
		return this.mouseover(handleHover).mouseout(handleHover);
	};
	
})(jQuery);
