// JavaScript Document
function getFormValues(fobj){ 
var str = ""; 
for(var i = 0;i < fobj.elements.length;i++) { 
if (fobj.elements[i].name) {
switch(fobj.elements[i].type){ 
case "text": 
case "textarea": 
case "password": 
if (!fobj.elements[i].disabled) {
  if (fobj.elements[i].name == "txtBody") 
  	str += fobj.elements[i].name + "=" + encodeURIComponent(tinyMCE.activeEditor.getContent()) + "&"; 
  else
    str += fobj.elements[i].name + "=" + encodeURIComponent(fobj.elements[i].value) + "&"; 
}
break; 
case "hidden": 
//hidden cannot be disabled 
  str += fobj.elements[i].name + "=" + encodeURIComponent(fobj.elements[i].value) + "&"; 
break; 
case "checkbox": 
case "radio": 
if(fobj.elements[i].checked && !fobj.elements[i].disabled) 
  str += fobj.elements[i].name + "=" + encodeURIComponent(fobj.elements[i].value) + "&"; 
break; 
case "select-one": 
if (!fobj.elements[i].disabled) 
  str += fobj.elements[i].name + "=" + encodeURIComponent(fobj.elements[i].options[fobj.elements[i].selectedIndex].value) + "&"; 
break; 
case "file":
  str += fobj.elements[i].name + "=" + encodeURIComponent(fobj.elements[i].value) + "&"; 
break;
case "select-multiple": 
if (!fobj.elements[i].disabled){ 
  for (var j = 0; j < fobj.elements[i].length; j++){ 
    var optElem = fobj.elements[i].options[j]; 
    if (optElem.selected == true){ 
      str += fobj.elements[i].name + "[]" + "=" + encodeURIComponent(optElem.value) + "&"; 
    } 
  } 
  
} 
break; 
} }
} 
//Strip final &amp; 
str = str.substr(0,(str.length - 1)); 
return str; 
} 

var http_request = false;
function makePOSTRequest(url, parameters) {
  http_request = false;
  $('#MAINCONTENT').innerHTML = "<img style='background:none;border:none;padding0px;' src='loader.gif'>&nbsp;&nbsp;Loading. Please wait ...";
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
	 http_request = new XMLHttpRequest();
	 if (http_request.overrideMimeType) {
		// set type accordingly to anticipated content type
		http_request.overrideMimeType('text/html');
	 }
  } else if (window.ActiveXObject) { // IE
	 try {
		http_request = new ActiveXObject("Msxml2.XMLHTTP");
	 } catch (e) {
		try {
		   http_request = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (e) {}
	 }
  }
  if (!http_request) {
	 alert('Cannot create XMLHTTP instance');
	 return false;
  }
  
  http_request.onreadystatechange = alertContents;
  http_request.open('POST', url, true);
  http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  http_request.setRequestHeader("Content-length", parameters.length);
if(!document.all) {
  http_request.setRequestHeader("Connection", "close");
}
  http_request.send(parameters);
}

function alertContents() {
  if (http_request.readyState == 4) {
	 if (http_request.status == 200) {
		//alert(http_request.responseText);
		result = http_request.responseText;
		document.getElementById('MAINCONTENT').innerHTML = result;     
	 } else {
		result = http_request.responseText;
		document.getElementById('MAINCONTENT').innerHTML = result + ('');
	 }
	 window.scroll(0,0);
  }
}

function PostForm(obj, url) {
  makePOSTRequest(url, getFormValues(obj));
}

function makePOSTRequestDiv(div, url, parameters) {
  http_request = false;
  document.getElementById(div).innerHTML = "<img style='background:none;border:none;padding0px;' src='loader.gif'>&nbsp;&nbsp;Loading.  Please wait ...";
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
	 http_request = new XMLHttpRequest();
	 if (http_request.overrideMimeType) {
		// set type accordingly to anticipated content type
		http_request.overrideMimeType('text/html');
	 }
  } else if (window.ActiveXObject) { // IE
	 try {
		http_request = new ActiveXObject("Msxml2.XMLHTTP");
	 } catch (e) {
		try {
		   http_request = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (e) {}
	 }
  }
  if (!http_request) {
	 alert('Cannot create XMLHTTP instance');
	 return false;
  }
  
  http_request.onreadystatechange = function() {
  	alertContentsDiv(div);
  }
  http_request.open('POST', url, true);
  http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  http_request.setRequestHeader("Content-length", parameters.length);
if(!document.all) {
  http_request.setRequestHeader("Connection", "close");
}
  http_request.send(parameters);
}

function alertContentsDiv(div) {
  if (http_request.readyState == 4) {
	 if (http_request.status == 200) {
		//alert(http_request.responseText);
		result = http_request.responseText;
		document.getElementById(div).innerHTML = result;     
	 } else {
		result = http_request.responseText;
		document.getElementById(div).innerHTML = result + ('');
	 }
	 GotoLink('cart','content/cont-cart.asp');
	 window.scroll(0,0);
  }
}

function PostFormDiv(div, obj, url) {
  if (checkrequired(document.getElementById(obj)))
    makePOSTRequestDiv(div, url, getFormValues(document.getElementById(obj)));
}

function GotoLink(div, url)
{
	$('#'+div).load(url);
	window.scroll(0,0);
}
function GotoPage(url)
{
	try {
		if (document.getElementById('login') != null && document.getElementById('LOGINFORM') != null)
				makePOSTRequestDiv('login','content/cont-login.asp','LOGINFORM');
	} catch (e) { }
	document.location.href=url;
}

function checkrequired(which) {
	var pass=true;
	try {
	if ((parseInt(window.document.getElementById('PERMISSIONS').value) & 8) == 8)
			return true;
	} catch (e) { }
	try {
	if (document.images) {
		for (i=0;i<which.length;i++) {
			var tempobj=which.elements[i];
			if (tempobj.name) {			
			if (tempobj.name=="chkConfirm") {
				if (tempobj.checked==true &&
					document.getElementById('txtEMail').value.length==0) {
					document.getElementById('txtEMail').focus();
					alert('EMail address is required for confirmation email');	
					return false;
				}
			}
			else if (tempobj.name.substring(0,3).toUpperCase()=="REQ") {
				if (tempobj.type.toUpperCase().substring(0,6)=="SELECT"&&(tempobj.value==''||tempobj.value=='0')) {
					if ((tempobj.name=="reqExpMonth"||tempobj.name=="reqExpYear") &&
						document.getElementById("reqPaymentType").value=="7") 
						pass = true;
					else {
						tempobj.focus();
						alert("Must select from the available "+tempobj.name.substring(3, 35)+" options.");
						return false;
					}
				}
				if (tempobj.type.toUpperCase()=="RADIO")
				{
					if (tempobj.value==0&&tempobj.checked) {
						tempobj.focus();
						alert("Must choose a valid "+tempobj.name.substring(3, 35)+" option.");
						return false;
					}
				}
				if (tempobj.type.toUpperCase()=="TEXT"||tempobj.type.toUpperCase()=="TEXTAREA"||tempobj.type.toUpperCase()=="PASSWORD")
				{
					if (tempobj.name.substring(3,7).toUpperCase()=="CARD")
					{
						tempobj.focus();
						if (!CheckCard()) {
							return false;
						}
					} else {
						if (tempobj.value=='') {
							if ((tempobj.name=="reqcard"||tempobj.name=="reqCode") &&
								document.getElementById("reqPaymentType").value=="7") 
								pass = true;
							 else {
								tempobj.focus();
								alert("Missing information in the "+tempobj.name.substring(3, 35)+" field.");
								return false;
							}
						}
						if (tempobj.name.substring(3,6).toUpperCase()=="DOB")
						{
							if (isNaN (new Date(tempobj.value.toString()).getYear () ) )
							{
								tempobj.focus();
								alert("Date is invalid in "+tempobj.name.substring(3, 35)+" field.");
								return false;
							}
						}
					}
				}
				} 
			
			}
		} 
	}
	} catch (e) { alert(e); pass = false; }
	if (!pass) {
		shortFieldName=tempobj.name.substring(3,35);
		alert("Please make sure the "+shortFieldName+" field was properly completed.");
		return false;
	} else
		return true;
};

var ccErrorNo = 0;
var ccErrors = new Array ()

ccErrors [0] = "Unknown card type";
ccErrors [1] = "No card number provided";
ccErrors [2] = "Credit card number is in invalid format";
ccErrors [3] = "Credit card number is invalid";
ccErrors [4] = "Credit card number has an inappropriate number of digits";
ccErrors [5] = "Card code is required for processing";

function checkCreditCard(cardnumber, cardname) {

  var cards = new Array();
  
  cards [0] = {name: "Visa", 
               length: "13,16", 
               prefixes: "4",
               checkdigit: true};
  cards [1] = {name: "MasterCard", 
               length: "16", 
               prefixes: "51,52,53,54,55",
               checkdigit: true};
  cards [2] = {name: "DinersClub", 
               length: "14,", 
               prefixes: "300,301,302,303,304,305,36,38",
               checkdigit: true};
  cards [3] = {name: "CarteBlanche", 
               length: "14", 
               prefixes: "300,301,302,303,304,305,36,38",
               checkdigit: true};
  cards [4] = {name: "AmEx", 
               length: "15", 
               prefixes: "34,37",
               checkdigit: true};
  cards [5] = {name: "Discover", 
               length: "16", 
               prefixes: "6011",
               checkdigit: true};
  cards [6] = {name: "JCB", 
               length: "15,16", 
               prefixes: "3,1800,2131",
               checkdigit: true};
  cards [7] = {name: "Enroute", 
               length: "15", 
               prefixes: "2014,2149",
               checkdigit: true};
               
  var cardType = -1;
  for (var i=0; i<cards.length; i++) {

    if (cardname.toLowerCase () == cards[i].name.toLowerCase()) {
      cardType = i;
      break;
    }
  }
  
  if (cardType == -1) {
     ccErrorNo = 0;
     return false; 
  }
   
  if (cardnumber.length == 0)  {
     ccErrorNo = 1;
     return false; 
  }
  
  var cardNo = cardnumber
  var cardexp = /^([0-9]{4})\s?([0-9]{4})\s?([0-9]{4})\s?([0-9]{1,4})$/;
  if (!cardexp.exec(cardNo))  {
     ccErrorNo = 2;
     return false; 
  }
    
  cardexp.exec(cardNo);
  cardNo = RegExp.$1 + RegExp.$2 + RegExp.$3 + RegExp.$4;
       
  if (cards[cardType].checkdigit) {
    var checksum = 0;  
    var mychar = "";
    var j = 1;
  
    var calc;
    for (i = cardNo.length - 1; i >= 0; i--) {
    
      calc = Number(cardNo.charAt(i)) * j;
    
      if (calc > 9) {
        checksum = checksum + 1;
        calc = calc - 10;
      }
    
      checksum = checksum + calc;
    
      if (j ==1) {j = 2} else {j = 1};
    } 
  
    if (checksum % 10 != 0)  {
     ccErrorNo = 3;
     return false; 
    }
  }  

  var LengthValid = false;
  var PrefixValid = false; 
  var undefined; 

  var prefix = new Array ();
  var lengths = new Array ();
    
  prefix = cards[cardType].prefixes.split(",");
      
  for (i=0; i<prefix.length; i++) {
    var exp = new RegExp ("^" + prefix[i]);
    if (exp.test (cardNo)) PrefixValid = true;
  }
      
  if (!PrefixValid) {
     ccErrorNo = 3;
     return false; 
  }
    
  lengths = cards[cardType].length.split(",");
  for (j=0; j<lengths.length; j++) {
    if (cardNo.length == lengths[j]) LengthValid = true;
  }
  
  if (!LengthValid) {
     ccErrorNo = 4;
     return false; 
  };   
  
  if (document.getElementById('reqCode') != null)
  {
	  if (document.getElementById('reqCode').value.length < 3)
	  {
		  document.getElementById('reqCode').focus();
		  ccErrorNo = 5;
		  return false;
	  }
  }						 
  
  return true;
};

function CheckCard()
{
	var ret = true;
	try {
	var card = document.getElementById('reqCard');
	var typ = document.getElementById('reqPaymentType');
	switch (typ[0].value)
	{
		case "1":
			ret = checkCreditCard(card[0].value, 'Visa');
			break;
		case "2":
			ret = checkCreditCard(card[0].value, 'MasterCard');
			break;
		default:
			ret = true;
			break;
	}
	if (ret == false) 
		alert(ccErrors[ccErrorNo]);	
	} catch (e) { alert(e); }
	return ret;
};

(function($) {
    var printAreaCount = 0;

    $.fn.printArea = function()
        {
            var ele = $(this);

            var idPrefix = "printArea_";

            removePrintArea( idPrefix + printAreaCount );

            printAreaCount++;

            var iframeId = idPrefix + printAreaCount;
            var iframeStyle = 'position:absolute;width:0px;height:0px;left:-500px;top:-500px;';

            iframe = document.createElement('IFRAME');

            $(iframe).attr({ style : iframeStyle,
                             id    : iframeId
                           });

            document.body.appendChild(iframe);

            var doc = iframe.contentWindow.document;

            $(document).find("link")
                .filter(function(){
                        return $(this).attr("rel").toLowerCase() == "stylesheet";
                    })
                .each(function(){
                        doc.write('<link type="text/css" rel="stylesheet" href="' + $(this).attr("href") + '" >');
                    });

            doc.write('<div class="' + $(ele).attr("class") + '">' + $(ele).html() + '</div>');
            doc.close();

            var frameWindow = iframe.contentWindow;
            frameWindow.close();
            frameWindow.focus();
            frameWindow.print();
        }

    var removePrintArea = function(id)
        {
            $( "iframe#" + id ).remove();
        };

})(jQuery);
function AXObj()
{
 var pg = false;
 if (window.XMLHttpRequest) // Mozilla/Safari/Etc
  pg = new XMLHttpRequest();
 else if (window.ActiveXObject){ // IE
  try {
   pg = new ActiveXObject("Msxml2.XMLHTTP");
  } 
  catch (e) {
   try {
    pg = new ActiveXObject("Microsoft.XMLHTTP");
   }
   catch (e) { }
  }
 }
 return pg;
};
function checkteam(namefld,id)
{
	try {
	var getresult = false;
	var pgx = false; 
	var getting = true;
	if (document.getElementById(namefld).value != '') {
		if (document.getElementById(namefld).value.length < 6) {
			document.getElementById(namefld).focus();
			alert("Team names must be at least 6 characters in length.");
			return false;
		}
	} 
	else 
	{
		document.getElementById(namefld).focus();
		alert("Team name cannot be blank.");
		return false;
	}
	pgx = AXObj();
	var url = window.location.href.substring(0,window.location.href.lastIndexOf("/"));
	pgx.open('GET', url + '/content/checkteam.asp?id=' + id + '&name=' + escape(document.getElementById(namefld).value), false);
    pgx.send(null);
	try {
		if (pgx.responseText == "OK") 
			return true;
		document.getElementById(namefld).focus();
		alert("That team name is currently unavailable.");
	} catch (e) { alert(e); }
	} catch (e) { alert(e); }
	return false;
};
function checkuser(userfld, id)
{
	try {
	var getresult = false;
	var pgx = false; 
	var getting = true;
	if (document.getElementById(userfld).value != '') {
		if (document.getElementById(userfld).value.length < 6) {
			document.getElementById(userfld).focus();
			alert("User names must be at least 6 characters in length.");
			return false;
		}
	} 
	else 
	{
		document.getElementById(userfld).focus();
		alert("User name cannot be blank.");
		return false;
	}
	pgx = AXObj();
	var url = window.location.href.substring(0,window.location.href.lastIndexOf("/"));
	pgx.open('GET', url + '/content/checkuser.asp?id=' + id + 
		'&user=' + escape(document.getElementById(userfld).value), false);
    pgx.send(null);
	try {
		if (pgx.responseText == "OK") 
			return true;
		document.getElementById(userfld).focus();
		alert("That username is currently unavailable.");
	} catch (e) { alert(e); }
	} catch (e) { alert(e); }
	return false;
};
function CheckImageField() {
var bret = false;
try {
	if (document.getElementById('reqImageFile').value.length > 0) {
		alert('Going to upload ' + document.getElementById('reqImageFile').value + ' now.');
		bret = true;
	} else {
		if (confirm('This option will remove your existing file and restore the default image.  Are you sure?'))
			bret = true;
	}
}
catch (e) { 
	alert(e);
	bret = false; 
}
return bret;
};
