/* =Load Functions
-----------------------------------------------------------------------------*/
var URL;
jQuery(document).ready(function(){
	URL = getURL();
	doNewWin();
	linkIcons();
	psutoClass();
	ActivePic();
	if($(".tip").length>0) tipsToggle();
	// form ajax
	if($("body.form").length>0) ajaxForm();
	// add class to current page link in nav
	$("#nav li a[href*='"+URL.file+"']").parent().addClass("curPage");
	$("#outer a").each(function(){
		if(!empty(URL.param) && $(this).attr("href").match(URL.param)) $(this).addClass("curPage");
		if(!empty(URL.anch) && $(this).attr("href").match(URL.anch)) $(this).addClass("curPage");
		if(empty(URL.param)){
			if($(this).is(".checkPage") && $(this).attr("href").match(URL.file)) $(this).addClass("curPage");
		}
	});
	imgGal();
	if($("input.srch").length>0) suggest();
});


/* = rand functions for site
-----------------------------------------------------------------------------*/
// image gallery
function imgGal(){
	var gal = $(".imgGal");
	var box = gal.find(".imgBox");
	if(box.length<1) return false;
	var li = gal.find("ul li");
	li.find("a").click(function(){
		var img = $(this).find("img:first");
		var src = img.attr("src");
		var name = img.attr("alt");
		var desc = img.attr("title");
		var thumbIndex = src.lastIndexOf("-t");
		var extIndex = src.lastIndexOf(".");
		var pref = src.substring(0,thumbIndex);
		var ext = src.substring(extIndex);
		var parent = $(this).parents(".imgGal:first");
		parent.find(".imgBox").find("img:first").attr("src", pref+'-m'+ext).removeAttr("width").removeAttr("height");
		//box.find("span:first").html(name);
		parent.find("p.description").html(desc);
		return false;
	});
};

// Active Pictures
function ActivePic(){
	$("#Ext_ActivePic, #Inj_ActivePic").prepend("<span class='extTitle'></span>")
		.find(".extTitle").css({
			display:	"block",
			position:	"absolute",
			top:		"-10px",
			left:		"0px",
			right:		"0px",
			height:		"14px",
			lineHeight:	"14px",
			fontSize:	"13px",
			textAlign:	"center"
		}).end().each(function(){
			var prefix = $(this).attr("id").split("_")[0];
			$(this).find("ul li a").hover(
				function(){
					//$("#"+stringVar($(this).attr("class"),'lnk')).show();
					$("#"+prefix+"_ActivePic").find(".extTitle").html($(this).html());
				},
				function(){
					//$("#"+stringVar($(this).attr("class"),'lnk')).hide();
					$("#"+prefix+"_ActivePic").find(".extTitle").html("");
				}
			);
		});
		
	
};

// Tips Toggle
function tipsToggle(){
	var tips = $(".tip");
	var dl = tips.find("dl");
	var toggleDD = function(el,action){
		var dd = true;
		while(dd===true){
			var ne = el.next();
			var se = ne.get(0);
			if(se!=undefined && se.tagName == "DD"){
				eval("ne."+action+"()");
				el = ne;
			}
			else dd=false;
		};
	};
	dl.find("dt").click(function(){
		if($(this).is(".open")){
			toggleDD($(this),"slideUp");
			$(this).removeClass("open");
		}else{
			toggleDD($(this),"slideDown");
			$(this).addClass("open");
		}
	}).css({"cursor":"pointer", "text-decoration":"underline"});
	
	dl.find("dd").hide();
};




/* = load url info
-----------------------------------------------------------------------------*/
function getURL(){
	var http = (("https:" == document.location.protocol) ? "https://" : "http://");
	var wloc = window.location+'';
	var locarr = wloc.split("/");
	var locLeng = locarr.length-1;
	var loc = '';
	for(var i=0; i<locLeng; i++){
		loc += locarr[i]+"/";
	}
	if(!empty(locarr[locLeng])){
		var l = locarr[locLeng];
		var lArr = l.split("?");
		var param = (lArr[1]) ? lArr[1].split("#")[0] : '';
		var anch = (l.split("#")[1]) ? l.split("#")[1] : '';
		l = lArr[0].split("#")[0];
		var file = (empty(l)) ? 'index.php' : l;
	}else{ var file = 'index.php'; }
	return {
		cur:	http+loc.split("://")[1],
		domain:	document.domain,
		base:	http+document.domain+"/",
		file:	file,
		param:	param,
		anch:	anch
	}
}

/* =Open a new window
-----------------------------------------------------------------------------*/
function doNewWin() {
	$("a[href^='http://']").addClass("newWin");
	$("a[href*='"+URL.domain+"']").removeClass("newWin");
	$("a.newWin").each(function(){
		var x = $(this);
		var linkTitle = "(This link opens a new window)";
		var newTitle = (empty(x.attr("title"))) ? linkTitle : x.attr("title")+" "+linkTitle;
		x.attr("title", newTitle);
		x.removeClass("newWin").addClass("ext");
		x.click(function(){window.open(x.attr("href"));return false;});
	});
}
function linkIcons(){
	$("#outer a[href$='.pdf']").each(function(){
		var x = $(this);
		var linkTitle = "(Download PDF)";
		var newTitle = (empty(x.attr("title"))) ? linkTitle : x.attr("title")+" "+linkTitle;
		x.addClass("pdf").attr("title", newTitle);
	});
	// new window icon in doNewWin()
}


/* =Add class "hover to all li's and buttons and add focus class
-----------------------------------------------------------------------------*/
function psutoClass(){
	$("li, button").hover(function(){$(this).addClass("hover")},function(){$(this).removeClass("hover")});
	$("input, textarea, select")
		.focus(function(){$(this).addClass("focus");})
		.blur(function(){$(this).removeClass("focus")});
}

/* Search page functions
-----------------------------------------------------------------------------*/
function suggest(){
	$("input.srch").after("<div id='suggBox'></div>");
	var sugBox = $("input.srch").next("#suggBox");
	sugBox.hide();
	$("input.srch").keyup(
		function(event){
			var key = event.keyCode;
			if(key == 38 || key == 40){
				var sel = sugBox.find("a.sel");
				sel = (sel.length==0) ? false : sel;
				if(sel) sel.removeClass("sel");
				if(key==38){
					if(!sel){
						next = sugBox.find("a:last");
					}else{
						next = sel.prev("a");
						if(next.length==0) next = sugBox.find("a:last");
					}
					next.addClass("sel");
				}else{
					if(!sel){
						next = sugBox.find("a:first");
					}else{
						next = sel.next("a");
						if(next.length==0) next = sugBox.find("a:first");
					}
					next.addClass("sel");
				}
				$("input.srch").val($.trim(next.text()));
			}else{
				var data = $.trim($(this).val());
				if(!empty(data)){
					$.ajax({
						type: "GET",
						url: "includes/suggest.php",
						data: "s="+data,
						success: function(msg){
							var sug = JSON.parse(msg);
							var suggs = '';
							if(sug.length==0 || ( sug.length==1 && empty(sug[0]) ) ){
								$("#suggBox").hide().empty();
							}else{
								for(var i=0; i<sug.length; i++){
									suggs+='<a href="appdir.php?srch='+encodeURIComponent(sug[i])+'">'+sug[i]+'</a>';
								}
								$("#suggBox").html(suggs);
								$("#suggBox").show();
							}
						}
					});
				}
			}
		}
	);
};



/* Pull a Variable wraped in "[]" from a string. 
 * EG: 
 * 		var string = "this is a string with a variable[value] wraped in brackets".
 * 		var variable = stringVar(string,'variable');
 * 		// variable == 'value';
 *
 * Works Well with Class Names
 *---------------------------------------------------------------------------*/
function stringVar(string,Var){
	var $return = ''; 
	if (string==undefined || string.constructor!==String) return false;
	var findIndex = string.indexOf(Var+"[");
	if(findIndex>=0){
		var nameLeng = Var.length; var maxleng = string.length; var i = findIndex += nameLeng+1; var par = isok = true;
		while(par){var char = string.charAt(i);if(char === "]"){par = false;}else if(i>maxleng){isok = false; par = false;}i++;}
		if(isok){$return = string.substring(findIndex,i-1);}
	}
	return $return;
}


/* =Ajax Form & Interface
-----------------------------------------------------------------------------*/
function ajaxForm(){
	var $form = $("form:first");
	var formID = $form.attr("id");
	var $formID = '#'+formID;
	var formRel = $form.attr("rel");
	formRel = (formRel ==  'sendForm') ? 'includes/'+formRel : formRel;
	var options = {
		url:			formRel+'.php?ajax=true',
		target: 		'#formCanvas',
		beforeSubmit: 	function(formData, jqForm, options){ validateForm(formData, jqForm, options); },
		success: 		function(){ 
			$("label.error:first").children("input:first, textarea:first, select:first, radio:first, checkbox:first").focus();
			$.getScript(URL['cur']+"js/behavior.js");
		}
	};
	$($formID).ajaxForm(options);
	UserFriendlyForm($formID);
	
}
function validateForm(formData, jqForm, options){
	var queryString = $.param(formData);
	//alert('About to submit: \n\n' + queryString);
	return true;
}
function UserFriendlyForm($formID){
	var $form = $($formID);
	// payment type
	var $payment = $form.find("select[name*=Payment_Method]");
	var payVal = $payment.val();
	paymentFN(payVal);
	if(payVal != undefined){
		paymentFN(payVal);
		// add on change event to pulldown
		$payment.change(function(){
			var payVal = $(this).val();
			paymentFN(payVal);
		});
	}
	$("form").find("button").click(function(){
		var b = $(this);
		var bwidth = b.width();
		var bhtml = b.html();
		b.after("<span class='loading' style='display:block; width:"+bwidth+"px;'>"+bhtml+"</span>");
		b.parent().children("button").hide();
		return true;
	});
}
function paymentFN(payVal){
	if(
	   payVal == 'Visa' ||
	   payVal == 'MasterCard' ||
	   payVal == 'Discover'
	   ){$("#creditInfo").show("fast");}
	else{$("#creditInfo").hide("fast");}
	if(payVal == 'check'){$("#checkInfo").show("fast");}
	else{$("#checkInfo").hide("fast");}
}
/* =Helper Functions
-----------------------------------------------------------------------------*/
function empty(x){	return ((x == '' || x == null) ? true : false);}
