String.prototype.trim = function() {
	// Strip leading and trailing white-space
	return this.replace(/^\s*|\s*$/g, "");
}

String.prototype.normalize_space = function() {
	// Replace repeated spaces, newlines and tabs with a single space
	return this.replace(/^\s*|\s(?=\s)|\s*$/g, "");
}

activateStylesheet("jsonly.css");
function activateStylesheet(sheetref) {
	if(document.getElementsByTagName) {
		var ss = document.getElementsByTagName('link');
	} else if (document.styleSheets) {
		var ss = document.styleSheets;
	}
	for(var i=0;ss[i];i++ ) {
		if(ss[i].href.indexOf(sheetref) != -1) {
			ss[i].disabled = true;
			ss[i].disabled = false;
		}
	}
}

var showHideVideos = {
	'.category' : function(element) {
		var divs = element.getElementsByTagName("div");
		for (var i=0, len=divs.length; i<len; i++) {
			if (hasClass(divs[i],"videos")) {
				element.vids = divs[i];
				break;
			}
		}
		element.h2 = element.getElementsByTagName("h2")[0];
		element.h2.getElementsByTagName("a")[0].setAttribute("href","#" + element.h2.id);
		var imgs = element.getElementsByTagName("img");
		for (var i=0, len=imgs.length; i<len; i++) {
			if (hasClass(imgs[i],"cat-thumb")) {
				element.img = imgs[i];
				break;
			}
		}
		element.img = element.img || element.h2;
		if (element.img.nodeName.toUpperCase() == "IMG" && element.img.parentNode.nodeName.toUpperCase() == "A") {
			element.img.parentNode.setAttribute("href","#" + element.h2.id);
		}
		element.vids.style.height = "0px";
		addClass(element.vids,"hideChildren");
		element.shown = false;
		element.button = document.createElement("a");
		element.button.setAttribute("href","#" + element.h2.id/* + "-videos"*/);
		element.button.showText = document.createTextNode("Show Lessons " + String.fromCharCode('8595'));
		element.button.hideText = document.createTextNode("Hide Lessons " + String.fromCharCode('8593'));
		element.button.appendChild(element.button.showText);
		addClass(element.button,"toggle");
		element.vids.parentNode.insertBefore(element.button,element.vids);
		element.button.onclick = element.h2.onclick = element.img.onclick = function(event) {
			if(element.shown) {
				element.vids.style.height = "0px";
				element.button.replaceChild(element.button.showText,element.button.hideText);
				addClass(element.vids,"hideChildren");
				element.shown = false;
			} else {
				element.vids.style.height = element.vids.scrollHeight + "px";
				element.vids.style.zIndex = "9999";
				element.button.replaceChild(element.button.hideText,element.button.showText);
				removeClass(element.vids,"hideChildren");
				element.shown = true;
			}
			// SI.ClearChildren.initialize();
			// return false;
		}
	}
};	
//Behaviour.register(showHideVideos);

var callout = {
	'.callout' : function(element) {
		var callout = element.cloneNode(true);
		var wrapper = document.createElement("div");
		addClass(wrapper,"callout");
		var parent = element.parentNode;
		parent.replaceChild(wrapper,element);
		wrapper.appendChild(callout);
		callout.className = callout.className.replace("callout","wrapper");
		var endElem = document.createElement("div");
		addClass(endElem,"call-end");
		var endWrapper = document.createElement("div");
		addClass(endWrapper,"wrapper");
		endWrapper.innerHTML = "<!-- end -->";
		endElem.appendChild(endWrapper);
		insertAfter(endElem,wrapper);
	}
};	
//Behaviour.register(callout);

var callHeader = {
	'.call-hdr' : function(element) {
		var callout = element.cloneNode(true);
		var wrapper = document.createElement("div");
		addClass(wrapper,"call-hdr");
		var parent = element.parentNode;
		parent.replaceChild(wrapper,element);
		wrapper.appendChild(callout);
		callout.className = callout.className.replace("call-hdr","wrapper");
		var endElem = document.createElement("div");
		addClass(endElem,"call-hdr-end");
		endElem.innerHTML = "<!-- end -->";
		//insertAfter(endElem,wrapper);
	}
};	
//Behaviour.register(callHeader);

// Neat little script that loops though all input elements 
// and gives them a class value equal to their attribute.

var appendInputTypeClasses = {
	'input' : function(element) {
        if (element.getAttribute("type")) {
            var className = element.getAttribute("type");
            addClass(element,className);
        }
		if (element.getAttribute("disabled") && element.getAttribute("disabled") == "disabled") {
			addClass(element,"disabled");
		}
    }
};
//Behaviour.register(appendInputTypeClasses);

var appendInputLastClass = {
	'fieldset' : function(element) {
		var inputs = [];
		var els = element.getElementsByTagName("*");
		for (var i=0, len=els.length; i<len; i++) {
			if (!els[i].nodeName || (els[i].nodeName.toUpperCase() != 'INPUT' && els[i].nodeName.toUpperCase() != 'TEXTAREA')) continue;
			inputs.push(els[i]);
		}
		var i = (inputs.length - 1);
		var lastInput = inputs[i];
		if (lastInput.nextSibling) {
			var clearElem = lastInput.nextSibling;
			while (clearElem && (clearElem.nodeType != 1 && clearElem.nextSibling)) {
				clearElem = clearElem.nextSibling;
			}
			if (clearElem.nodeType == 1) {
				addClass(clearElem,"clear");
			}
		}
		while (lastInput && 
			   (lastInput.getAttribute("type") && 
					(lastInput.getAttribute("type") == "hidden" ||
					 lastInput.getAttribute("type") == "submit" ||
					 lastInput.getAttribute("type") == "image" ||
					 lastInput.getAttribute("type") == "button" ||
					 lastInput.getAttribute("type") == "reset"))) {
			i--;
			lastInput = inputs[i];
		}
		if (lastInput.type == "checkbox" || lastInput.type == "radio") {
			addClass(lastInput,"lastOpt");
		} else {
			addClass(lastInput,"last");
		}
		var lastLabel = lastInput.parentNode;
		while (lastLabel && (lastLabel.nodeName.toUpperCase() != "LABEL")) {
			lastLabel = lastLabel.parentNode;
	}
		if (lastLabel) addClass(lastLabel,"last");
	}
};
//Behaviour.register(appendInputLastClass);

var spanButton = {
	'input' : function(element) {
	if (element.type == "submit" || element.type == "button") {
			var span = document.createElement("span");
			addClass(span, "wrap-"+element.type);
			var newInput = element.cloneNode(true);
			element.parentNode.insertBefore(span,element);
			element.parentNode.removeChild(element);
			span.appendChild(newInput);
		}
	}
};
if (document.all) {
	//Behaviour.register(spanButton);
}

var footerBtn = {
	'body.popup' : function(element) {
		var btn = document.createElement("input");
		btn.type = "button";
		btn.value = "Close This Window";
		btn.className = "button";
		btn.onclick = function() {
			top.window.close();	
		}
		if (document.all) {
			var span = document.createElement("span");
			span.className = "wrap-button";
			span.appendChild(btn);
			element.appendChild(span);
		} else {
			element.appendChild(btn);
		}
	}
};	
//Behaviour.register(footerBtn);

var watchVideoBtn = {
	'p.watchVideo' : function(element) {
		var oldLink = element.getElementsByTagName("a")[0];
		var btn = document.createElement("input");
		btn.type = "button";
		btn.value = oldLink.innerText || oldLink.text || oldLink.innerHTML;
		btn.className = "button alt-button";
		var dest = oldLink.getAttribute("href");
		btn.onclick = function() {
			parent.location = dest;
		}
		if (document.all) {
			var span = document.createElement("span");
			span.className = "wrap-button";
			span.appendChild(btn);
			element.replaceChild(span, oldLink);
		} else {
			element.replaceChild(btn, oldLink);
		}
	}
};	
//Behaviour.register(watchVideoBtn);

var lessonPlayer = {
	'object' : function(element) {
		var params = element.getElementsByTagName("param");
		for (var i=0, len=params.length; i<len; i++) {
			var param = params[i];
			if (param.name.toUpperCase() == "MOVIE") var movie = param.value;
			if (param.name.toUpperCase() == "FLASHVARS") var flashVars = param.value;
			if (param.name.toUpperCase() == "WMODE") var wMode = param.value;
		}
		var w = element.getAttribute("width");
		var h = element.getAttribute("height");
		var so = new SWFObject(movie, element.id || "flv", w, h, "7", "#ffffff");
		if (flashVars) so.addParam("flashvars", flashVars);
		if (wMode) so.addParam("wmode", wMode);
		so.write(element.parentNode);
	}
};
/*if (SWFObject&&document.all) {
	Behaviour.register(lessonPlayer);
}*/

// Open PopUp Window
function openPopUp (winURL, winName, winFeatures){
	newWindow = window.open(winURL,winName,winFeatures);
	newWindow.focus();
}

// New Gallery Window
function newGalleryWindow(galleryURL, galleryWinName, galleryFeatures){
	window.open(galleryURL, galleryWinName, galleryFeatures);
}

// Display WIndow
function displayWindow (url, width, height){
		var Win = window.open (url,"displayWindow",'width=' + width + ',height=' +
		height + ',resizable=0,scrollbars=no,menubar=no,status=yes');
		Win.focus();
}

// Clear Text
/*function doClear(theText) {
	if (theText.value == theText.defaultValue) {
	  theText.value = ""
	}
}*/

// Change Password (I think)
function password(){
	self.name = "Parent_Window"; 
	window.open('/portal/user/send_pass.asp','EmailLoginInfo','toolbar=no,location=no,directories=no,status=no,resizable=yes,copyhistory=no,width=350,height=260');
}


function confirmCancelMembership()
{
	var conf;	
	conf = confirm("Warning! You are about to cancel your auto renewal for your membership! Are you sure you want to do this?")	
	if (conf)
		return true;
	else
		return false;
}

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

function insertAfter(newElement,targetElement) {
  var parent = targetElement.parentNode;
  if (parent.lastChild == targetElement) {
    parent.appendChild(newElement);
  } else {
    parent.insertBefore(newElement,targetElement.nextSibling);
  }
}

function addClass(element, className) {
	if (!hasClass(element, className)) {
		if (element.className) element.className += " " + className;
		else element.className = className;
	}
}

function removeClass(element, className) {
	var regexp = new RegExp("(^|\\s)" + className + "(\\s|$)");
	element.className = element.className.replace(regexp, "$2");
};

function hasClass(element, className) {
	var regexp = new RegExp("(^|\\s)" + className + "(\\s|$)");
	return regexp.test(element.className);
};
function focusLabels() {
  if (!document.getElementsByTagName) return false;
  var labels = document.getElementsByTagName("label");
  for (var i=0; i<labels.length; i++) {
    if (!labels[i].getAttribute("for")) continue;
    labels[i].onclick = function() {
      var id = this.getAttribute("for");
      if (!document.getElementById(id)) return false;
      var element = document.getElementById(id);
      element.focus();
    }
  }
}

function resetFields(whichform) {
  var inputs = whichform.getElementsByTagName("input");  
  for (var i=0, len=inputs.length; i<len; i++) {
	var input = inputs[i];
    if (input.type == "submit" || input.type == "button" || input.type == "reset" || input.type == "image") continue;
    //if (!input.defaultValue) continue;
    if (!input.defaultValue) input.defaultValue = input.value;
    input.onfocus = function() {
    if (this.value == this.defaultValue) {
      //this.value = "";
      this.select(this.value.length);
     }
    }
    input.onblur = function() {
      if (this.value == "") {
        //this.value = this.defaultValue;
      }
    }
  }
}

function validateForm(whichform)
 {
    var validate = new Object();
    for (var i=0; i<whichform.elements.length; i++)
    {
        var element = whichform.elements[i];
               
        if(element.className.indexOf("checkstate") != -1)
        {
            var elTitle = element.title || element.name;
            if (document.EditShipping.strShippingAddress_country.value =="United States")
            {
                    if (element.value == "")						
						{
							alert("Please fill in the "+elTitle+" field.");
	                        element.focus();
                            return false;
						}	
						else
						{
						    document.EditShipping.strShippingAddress_state.value = document.EditShipping.strShippingAddress_state_local.value;				
						}
			}
			else						
			{
			    	 document.EditShipping.strShippingAddress_state.value = document.EditShipping.strShippingAddress_state_inter.value;
              
            }
        }
    
        
        if (element.className.indexOf("required") != -1)
        {
            if (!isFilled(element))
            {
		        var elTitle = element.title || element.name;
                alert("Please fill in the "+elTitle+" field.");
                element.value = trimString(element.value);
                element.focus();
                return false;
            }
            element.value = trimString(element.value);
        }
        
        if (element.className.indexOf("username") != -1)
        {
            if (!isFullUsername(element))
            {
                var elTitle = element.title || element.name;
                alert("The "+elTitle+" field must be at least 6 - 30 characters in length.");
                element.value = trimString(element.value);
                element.focus();
                return false;
            }
            element.value = trimString(element.value);
        }
    
        if (element.className.indexOf("email") != -1)
        {
            if (!isEmail(element))
            {
		        var elTitle = element.title || element.name;
                alert("The "+elTitle+" field must be a valid email address.");
                element.focus();
                return false;
            }
        }
        
        if (element.className.indexOf("password") != -1)
        {
            if (!isFullPassword(element))
            {
		        var elTitle = element.title || element.name;
                alert("The "+elTitle+" field must be at least 6 characters in length.");
                element.focus();
                return false;
            }
            
            if (!isValidPassword(element))
	         {
	                var elTitle = element.title || element.name;
                    alert("The "+elTitle+" field contains invalid characters.");
                    element.focus();
                    return false;
            }
            
           if (!hasClass(element,"confirmpass")) validate.password = element.value;
	       
        }
    
        if (element.className.indexOf("confirmpass") != -1)
        {
            if (!validate.password || validate.password && (element.value != validate.password))
            {
                alert("The passwords you entered don't match.");
                element.focus();
                return false;
            }
        }
  }
  return true;
}

function isFilled(field) {
    var strtemp = trimString(field.value);
  if (strtemp.length < 1) { // || field.value == field.defaultValue
    return false;
  } else {
    return true;
  }
}

function isEmail(field) {
   var regexpEmail = /\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/;
  return regexpEmail.test(field.value);
}

function isFullPassword(field) {
  if (field.value.length < 6 || field.value.length > 20) {
    return false;
  } else {
    return true;
  }
}

function isFullUsername(field)
 {
    var strtemp = trimString(field.value);
    if (strtemp.length < 6 || strtemp.length > 30)
    {
        return false;
    }
    else
    {
        return true;
    }
}

function trimString(sString)
 {
	while (sString.substring(0,1) == ' ')
	{
		sString = sString.substring(1, sString.length);
	}
	
	while (sString.substring(sString.length-1, sString.length) == ' ')
	 {
		sString = sString.substring(0,sString.length-1);
	}
	
	return sString;
}

function isValidPassword(field) {
	var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-";
	var checkStr = field.value;
	var allValid = true;

	for (i = 0;  i < checkStr.length;  i++)
	{
	  ch = checkStr.charAt(i);
	  for (j = 0;  j < checkOK.length;  j++)
	    if (ch == checkOK.charAt(j))
	      break;
	  if (j == checkOK.length)
	  {
	    allValid = false;
	    break;
	  }
	}
	return allValid;
}
/*function isValidPassword(field) {
	var regexp = new RegExp(!"/[-A-Za-z1-9]/");
	return regexp.test(element.value);
}*/
function prepareForms() {
  for (var i=0; i<document.forms.length; i++) {
    var thisform = document.forms[i];
    if (thisform.name =="frmPayment" || thisform.name == "frmCheckOut") break;	
    
    resetFields(thisform);
   
	/*if (thisform.addEventListener) {
		thisform.addEventListener('submit', function(){return validateForm(this);}, false);
	} else if (thisform.attachEvent) {
		thisform.attachEvent('onsubmit', function(){return validateForm(this);});
	}*/
    thisform.onsubmit = function() {
      return validateForm(this);
    }
  }
}

function showContributers(pos) {
	if(!document.getElementById("contributers" + pos)) return false;
	if(!document.getElementById("trig" + pos)) return false;
	contNode = document.getElementById("contributers" + pos);
	trig = document.getElementById("trig" + pos);
	if (hasClass(contNode, "hidden")) {
		removeClass(contNode, "hidden");
		trig.innerHTML = "Hide Contributers";
	} else {
		addClass(contNode, "hidden");
		trig.innerHTML = "Show Contributers";
	}
}

addLoadEvent(focusLabels);
addLoadEvent(prepareForms);


function Trim(TRIM_VALUE){
	if(TRIM_VALUE.length < 1){
		return"";
	}
TRIM_VALUE = RTrim(TRIM_VALUE);
TRIM_VALUE = LTrim(TRIM_VALUE);
if(TRIM_VALUE==""){
return "";
}
else{
return TRIM_VALUE;
}
} //End Function

function RTrim(VALUE){
var w_space = String.fromCharCode(32);
var v_length = VALUE.length;
var strTemp = "";
if(v_length < 0){
return"";
}
var iTemp = v_length -1;

while(iTemp > -1){
if(VALUE.charAt(iTemp) == w_space){
}
else{
strTemp = VALUE.substring(0,iTemp +1);
break;
}
iTemp = iTemp-1;

} //End While
return strTemp;

} //End Function

function LTrim(VALUE){
var w_space = String.fromCharCode(32);
if(v_length < 1){
return"";
}
var v_length = VALUE.length;
var strTemp = "";

var iTemp = 0;

while(iTemp < v_length){
if(VALUE.charAt(iTemp) == w_space){
}
else{
strTemp = VALUE.substring(iTemp,v_length);
break;
}
iTemp = iTemp + 1;
} //End While
return strTemp;
} //End Function




