// Function opens link in new window
//
function openInNewWindow(address) {
var newWindow = window.open(address, 'newWindow');
newWindow.focus();
return false;
}

var hasFlash=function(){
	var a=6;
	if(navigator.appVersion.indexOf("MSIE")!=-1&&navigator.appVersion.indexOf("Windows")>-1){
		document.write('<script language="VBScript"\> \non error resume next \nhasFlash = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash." & '+a+'))) \n</script\> \n');
		if(window.hasFlash!=null)return window.hasFlash
	}
	if(navigator.mimeTypes&&navigator.mimeTypes["application/x-shockwave-flash"]&&navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin){
		return true
	}
	return false
}();
function renderSlideshow () {
	var headerSWF;

	headerSWF  = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="700" height="340">';
	headerSWF += '	<param name="movie" value="/_flash/slideshow.swf" />';
	headerSWF += '	<param name="bgcolor" value="#ffffff" />';
	headerSWF += '  <param name="wmode" value="transparent" />';
	headerSWF += '	<embed src="/_flash/slideshow.swf" width="700" height="340" wmode="transparent" bgcolor="#ffffff" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer" />';
	headerSWF += '<'+'/object>';
	
	if($('#slideshow').length) {
		$('#slideshow').addClass('active');
		$('#slideshow').html(headerSWF);
	}
}


// Function runs on window load, going through link tags looking for rel="external".
// These links receive onclick events that cause the link to open in a new window.
//
function initLinker()
{
	
	if (!document.getElementsByTagName){ return; }
	var anchors = document.getElementsByTagName("a");

	// loop through all anchor tags
	for (var i=0; i<anchors.length; i++){
		var anchor = anchors[i];
		
		// external links
		if (anchor.getAttribute("href") && (anchor.getAttribute("rel") == "external")){
			anchor.onclick = function () {openInNewWindow(this.getAttribute("href")); return false;}
		}
		
		// navigation slideout menus
		if (anchor.getAttribute("href") && (anchor.className == "slider")){
			anchor.onmouseover = function() { ypSlideOutMenu.showMenu(this.id); }
			anchor.onmouseout = function() { ypSlideOutMenu.hideMenu(this.id); }
		}
	}
}

//
// getElementsByClassName(parent element,tag,class)
// returns all elements of a certain class name
function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements)
}

// Function turns spam-bot protected e-mail addresses
// into functioning e-mail links
//
function emailCloak() {
	if (document.getElementById) {
		//var alltags = document.all? document.all : document.getElementsByTagName("*");
		var alltags = document.all? document.all : document.getElementsByTagName("span");
		for (i=0; i < alltags.length; i++) {
		  var strClassName = "cloak";
		  strClassName = strClassName.replace(/\-/g, "\\-");
		  var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
		  if (oRegExp.test(alltags[i].className)) {
			var oldText = alltags[i].firstChild;
			var emailAddress = alltags[i].firstChild.nodeValue;
			var user = emailAddress.substring(0, emailAddress.indexOf("("));
			var website = emailAddress.substring(emailAddress.indexOf(")")+1, emailAddress.length);
			var newText = user+"@"+website;
			var a = document.createElement("a");
			a.href = "mailto:"+newText;
			var address = document.createTextNode(newText);
			a.appendChild(address);
			alltags[i].replaceChild(a,oldText);
		  }
		}
	}
}

//
// addLoadEvent()
// Adds event to window.onload without overwriting currently assigned onload functions.
// Function found at Simon Willison's weblog - http://simon.incutio.com/
//
function addLoadEvent(func)
{	
	var oldonload = window.onload;
	if (typeof window.onload != 'function'){
    	window.onload = func;
	} else {
		window.onload = function(){
		oldonload();
		func();
		}
	}

}

//
// validates evalution form
//
var frmFalse;
function formCheck(form) {
	// check textareas
	var elements = form.elements;
	var elmLength = elements.length;
	var regNoCheck = new RegExp("(^|\\s)" + 'nocheck' + "(\\s|$)");
	var regEmail = new RegExp("(^|\\s)" + 'email' + "(\\s|$)");
	
	for(i=0;i<elmLength;i++) {
		var element = elements[i];
		if(element.type == "textarea" || element.type == "text" || element.type == "select-one") {
			if(element.value == "" && regNoCheck.test(element.className) == false) {
				var elmParent = element.parentNode;
				elmParent.className += " missing";
				element.onblur = function() { inputVal(this); }
				var frmReturn = "false";
			}
			if(regEmail.test(element.className)) { 
				var mailcheck = echeck(element.value); 
				if(mailcheck == false) {
					var elmParent = element.parentNode;
					elmParent.className += " missing";
					element.onblur = function() { inputVal(this); }
					var frmReturn = "false";
				}
			}
		}
		if(element.type == "radio" || element.type == "checkbox") {
			var elmName = element.name;
			//var radios = form.eval(elmName);
			var radios = form[elmName];
			var radiosLength = radios.length;
			var radiosCheck = "no";
			for(j=0;j<radiosLength;j++) {
				var radio = radios[j];
				if(radio.checked == true || regNoCheck.test(radio.className)) radiosCheck = "yes";
				else radio.onclick = function() { radioVal(this); }
			}
			if(radiosCheck == "no") {
				var elmParent = radio.parentNode.parentNode;
				elmParent.className = "missing";
				var frmReturn = "false";
			}
		}
	}
	if(frmReturn == "false" && frmFalse != "true") {
		frmFalse = "true";
		var errorPara = document.createElement('p');
			errorPara.setAttribute('id','frm-error');
		var errorText = document.createTextNode("You didn't complete the entire form. Parts highlighted in red need to be filled out.");
		errorPara.appendChild(errorText);
		form.insertBefore(errorPara,form.firstChild);
	}
	if(frmReturn == "false") {
		scroll(0,0);
		return false;
	}
}

function echeck(str) {

		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1){
		   //alert("Invalid E-mail ID")
		   return false
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   //alert("Invalid E-mail ID")
		   return false
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    //alert("Invalid E-mail ID")
		    return false
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    //alert("Invalid E-mail ID")
		    return false
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    //alert("Invalid E-mail ID")
		    return false
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    //alert("Invalid E-mail ID")
		    return false
		 }
		
		 if (str.indexOf(" ")!=-1){
		    //alert("Invalid E-mail ID")
		    return false
		 }

 		 return true					
	}


function inputVal(input) {
	if(input.value != "") {
		var parentClass = input.parentNode.className;
		parentClass = parentClass.replace(/missing/g,"");
		//parentClass = "";
		input.parentNode.className = parentClass;
	}
}
function radioVal(input) {
	var parent = input.parentNode.parentNode;
	var parentClass = parent.className;
	parentClass = parentClass.replace("missing","");
	parent.className = "";
}

//
// initContact()
// configures show/hide events for the contact form
//
function initContact(frm) {
	var plans = document.getElementById('plans');
	plans.onchange = function() { swapPlans(this); }
	swapPlans(plans);
}

//
// swapPlans()
// shows/hides fieldsets depending on the person's plans
//
function swapPlans(el) {
	var frm = document.getElementById('frmContact');
	var fs_sell = getElementsByClassName(frm,'*','fs-sell');
	var fs_buy = getElementsByClassName(frm,'*','fs-buy');
	var plans = el.value;
	if(plans == 'Buy') {
		// hide sell fieldsets
		for(i=0;i<fs_sell.length;i++) {
			fs_sell[i].style.display = "none";
		}
		// show buy fieldsets
		for(i=0;i<fs_buy.length;i++) {
			fs_buy[i].style.display = "block";
		}
	}
	if(plans == 'Sell') {
		// hide sell fieldsets
		for(i=0;i<fs_sell.length;i++) {
			fs_sell[i].style.display = "block";
		}
		// show buy fieldsets
		for(i=0;i<fs_buy.length;i++) {
			fs_buy[i].style.display = "none";
		}
	}
}
//
// initForm()
// sets onsubmit form validation for all forms with a class of 'validate'
//
function initForm() {
	if(pageForm = getElementsByClassName(document,'form','validate')) {
		for(i=0;i<pageForm.length;i++) {
			pageForm[i].onsubmit = function() { return formCheck(this); }
		}
	}
	if(document.getElementById('frmContact')) { 
		var frmContact = document.getElementById('frmContact');
		initContact(frmContact); 
	}
}

//
// initSearch()
// configures the search box value
//
function initSearch() {
	var searchbox = document.getElementById("q");
	searchbox.onfocus = function () { if(searchbox.value == 'Search...') searchbox.value = ''; }
	searchbox.onblur = function () { if(searchbox.value == '') searchbox.value = 'Search...'; }
	var searchform = document.getElementById("site-search");
	searchform.onsubmit = function() { 
		var searchbox = document.getElementById("q");
		if(searchbox.value == '' || searchbox.value == 'Search...') { alert("Please enter a search term"); searchbox.focus(); return false; }
		else return true;
	}
}

faq={
	//
	init:function(){
		$("dl.faq dd").hide();
		$("dl.faq dt").css({'cursor' : 'pointer'});
		$("dl.faq dt").click(function () {
			$(this).next().slideToggle("slow");
		});
	}
};


$(document).ready(function(){ // jquery onload
	//initSearch();
	initForm();
	initLinker();
	emailCloak();
	if(hasFlash) { renderSlideshow(); }
});
