//** Tab Content script v2.0- © Dynamic Drive DHTML code library (http://www.dynamicdrive.com)
//** Updated Oct 7th, 07 to version 2.0. Contains numerous improvements:
//   -Added Auto Mode: Script auto rotates the tabs based on an interval, until a tab is explicitly selected
//   -Ability to expand/contract arbitrary DIVs on the page as the tabbed content is expanded/ contracted
//   -Ability to dynamically select a tab either based on its position within its peers, or its ID attribute (give the target tab one 1st)
//   -Ability to set where the CSS classname "selected" get assigned- either to the target tab's link ("A"), or its parent container 

////NO NEED TO EDIT BELOW////////////////////////

function ddtabcontent(tabinterfaceid){
	this.tabinterfaceid=tabinterfaceid //ID of Tab Menu main container
	this.tabs=document.getElementById(tabinterfaceid).getElementsByTagName("a") //Get all tab links within container
	this.enabletabpersistence=true
	this.hottabspositions=[] //Array to store position of tabs that have a "rel" attr defined, relative to all tab links, within container
	this.subcontentids=[] //Array to store ids of the sub contents ("rel" attr values)
	this.revcontentids=[] //Array to store ids of arbitrary contents to expand/contact as well ("rev" attr values)
	this.selectedClassTarget="link" //keyword to indicate which target element to assign "selected" CSS class ("linkparent" or "link")
}

ddtabcontent.getCookie=function(Name){ 
	var re=new RegExp(Name+"=[^;]+", "i"); //construct RE to search for target name/value pair
	if (document.cookie.match(re)) //if cookie found
		return document.cookie.match(re)[0].split("=")[1] //return its value
	return ""
}

ddtabcontent.setCookie=function(name, value){
	document.cookie = name+"="+value+";path=/" //cookie value is domain wide (path=/)
}

ddtabcontent.prototype={

	expandit:function(tabid_or_position){ //PUBLIC function to select a tab either by its ID or position(int) within its peers
		this.cancelautorun() //stop auto cycling of tabs (if running)
		var tabref=""
		try{
			if (typeof tabid_or_position=="string" && document.getElementById(tabid_or_position).getAttribute("rel")) //if specified tab contains "rel" attr
				tabref=document.getElementById(tabid_or_position)
			else if (parseInt(tabid_or_position)!=NaN && this.tabs[tabid_or_position].getAttribute("rel")) //if specified tab contains "rel" attr
				tabref=this.tabs[tabid_or_position]
		}
		catch(err){alert("Invalid Tab ID or position entered!")}
		if (tabref!="") //if a valid tab is found based on function parameter
			this.expandtab(tabref) //expand this tab
	},

	setpersist:function(bool){ //PUBLIC function to toggle persistence feature
			this.enabletabpersistence=bool
	},

	setselectedClassTarget:function(objstr){ //PUBLIC function to set which target element to assign "selected" CSS class ("linkparent" or "link")
		this.selectedClassTarget=objstr || "link"
	},

	getselectedClassTarget:function(tabref){ //Returns target element to assign "selected" CSS class to
		return (this.selectedClassTarget==("linkparent".toLowerCase()))? tabref.parentNode : tabref
	},

	expandtab:function(tabref){
		var subcontentid=tabref.getAttribute("rel") //Get id of subcontent to expand
		//Get "rev" attr as a string of IDs in the format ",john,george,trey,etc," to easily search through
		var associatedrevids=(tabref.getAttribute("rev"))? ","+tabref.getAttribute("rev").replace(/\s+/, "")+"," : ""
		this.expandsubcontent(subcontentid)
		this.expandrevcontent(associatedrevids)
		for (var i=0; i<this.tabs.length; i++){ //Loop through all tabs, and assign only the selected tab the CSS class "selected"
			this.getselectedClassTarget(this.tabs[i]).className=(this.tabs[i].getAttribute("rel")==subcontentid)? "selected" : ""
		}
		if (this.enabletabpersistence) //if persistence enabled, save selected tab position(int) relative to its peers
			ddtabcontent.setCookie(this.tabinterfaceid, tabref.tabposition)
	},

	expandsubcontent:function(subcontentid){
		for (var i=0; i<this.subcontentids.length; i++){
			var subcontent=document.getElementById(this.subcontentids[i]) //cache current subcontent obj (in for loop)
			subcontent.style.display=(subcontent.id==subcontentid)? "block" : "none" //"show" or hide sub content based on matching id attr value
		}
	},


	expandrevcontent:function(associatedrevids){
		var allrevids=this.revcontentids
		for (var i=0; i<allrevids.length; i++){ //Loop through rev attributes for all tabs in this tab interface
			//if any values stored within associatedrevids matches one within allrevids, expand that DIV, otherwise, contract it
			document.getElementById(allrevids[i]).style.display=(associatedrevids.indexOf(","+allrevids[i]+",")!=-1)? "block" : "none"
		}
	},

	autorun:function(){ //function to auto cycle through and select tabs based on a set interval
		var currentTabIndex=this.automode_currentTabIndex //index within this.hottabspositions to begin
		var hottabspositions=this.hottabspositions //Array containing position numbers of "hot" tabs (those with a "rel" attr)
		this.expandtab(this.tabs[hottabspositions[currentTabIndex]])
		this.automode_currentTabIndex=(currentTabIndex<hottabspositions.length-1)? currentTabIndex+1 : 0 //increment currentTabIndex
	},

	cancelautorun:function(){
		if (typeof this.autoruntimer!="undefined")
			clearInterval(this.autoruntimer)
	},

	init:function(automodeperiod){
		var persistedtab=ddtabcontent.getCookie(this.tabinterfaceid) //get position of persisted tab (applicable if persistence is enabled)
		var persisterror=true //Bool variable to check whether persisted tab position is valid (can become invalid if user has modified tab structure)
		this.automodeperiod=automodeperiod || 0
		for (var i=0; i<this.tabs.length; i++){
			this.tabs[i].tabposition=i //remember position of tab relative to its peers
			if (this.tabs[i].getAttribute("rel")){
				var tabinstance=this
				this.hottabspositions[this.hottabspositions.length]=i //store position of "hot" tab ("rel" attr defined) relative to its peers
				this.subcontentids[this.subcontentids.length]=this.tabs[i].getAttribute("rel") //store id of sub content ("rel" attr value)
				this.tabs[i].onclick=function(){
					tabinstance.expandtab(this)
					tabinstance.cancelautorun() //stop auto cycling of tabs (if running)
					return false
				}
				if (this.tabs[i].getAttribute("rev")){ //if "rev" attr defined, store each value within "rev" as an array element
					this.revcontentids=this.revcontentids.concat(this.tabs[i].getAttribute("rev").split(/\s*,\s*/))
				}
				if (this.enabletabpersistence && parseInt(persistedtab)==i || !this.enabletabpersistence && this.getselectedClassTarget(this.tabs[i]).className=="selected"){
					this.expandtab(this.tabs[i]) //expand current tab if it's the persisted tab, or if persist=off, carries the "selected" CSS class
					persisterror=false //Persisted tab (if applicable) was found, so set "persisterror" to false
					//If currently selected tab's index(i) is greater than 0, this means its not the 1st tab, so set the tab to begin in automode to 1st tab:
					this.automode_currentTabIndex=(i>0)? 0 : 1
				}
			}
		} //END for loop
		if (persisterror) //if an error has occured while trying to retrieve persisted tab (based on its position within its peers)
			this.expandtab(this.tabs[this.hottabspositions[0]]) //Just select first tab that contains a "rel" attr
		if (parseInt(this.automodeperiod)>500 && this.hottabspositions.length>1){
			this.automode_currentTabIndex=this.automode_currentTabIndex || 0
			this.autoruntimer=setInterval(function(){tabinstance.autorun()}, this.automodeperiod)
		}
	} //END int() function

} //END Prototype assignment




//SHOW PRODUCT OPTIONS AND INVENORY PRODUCTS E.T.C
function BYZ_QO_SHOWOPTIONS(spanid)
{
	var n=document.getElementById(spanid);
  	if(n)
  	{
		if (n.className=='byz_qo_options_div_show')
		{
			hideOtherDropDown('byz_qo_options_div_show');
			n.className='byz_qo_options_div';
		}
		else
		{
			hideOtherDropDown('byz_qo_options_div_show');
			n.className='byz_qo_options_div_show'
		}
  	}
}





function hideOtherDropDown(classname) {
    if (document.getElementsByTagName) {
         var els = document.getElementsByTagName("*");
         var c = new RegExp('/b^|' + classname + '|$/b');
         var nfinal = new Array();
         var n=0;
         for (var i=0; i < els.length; i++) {
              if (els[i].className) {
                   if(c.test(els[i].className)) {
                   nfinal[n] = els[i];
				   nfinal[n].className='byz_qo_options_div'
                   n++;
                   }
              }
         }
         return nfinal;
    } else{return false;}
}



//validation
function BYZ_QO_ValidateForm(form)
{
	if (form.byz_categories.selectedIndex == 0 )
	{
		alert ( "Please select a Category." );
		form.byz_categories.focus();
		return false;
	}
}
//end validation


//AJAX LOGIN
function BYZ_QO_LOGIN()
{
	var url="byz_quick_orderv2_loginlogic.asp";//ASP PAGE URL
	var password
	var email
	var lastname
	
	var paramseperator = '?'
	
	if(document.getElementById("strPassword"))
	{
	 	password = document.getElementById("strPassword").value
		if (password == '')
		{
			alert ( "Please enter your password." );
			document.getElementById("strPassword").focus();
			return false;
		}
		else
		{
			url=url + paramseperator + "strPassword="+password
			paramseperator = "&"
		}
	}
	
	if(document.getElementById("strLastname"))
	{
	 	lastname = document.getElementById("strLastname").value
		if (lastname == '')
		{
			alert ( "Please enter your last name." );
			document.getElementById("strLastname").focus();
			return false;
		}
		else
		{
			url=url + paramseperator + "strLastname="+lastname
			paramseperator = "&"
		}
	}
	
	if(document.getElementById("strEmail"))
	{
		email = document.getElementById("strEmail").value
		if (email == '')
		{
			alert ( "Please enter your email address." );
			document.getElementById("strEmail").focus();
			return false;
		}
		else
		{
			url=url + paramseperator + "strEmail="+email
			paramseperator = "&"
		}
	}

	//alert(url);
	xmlHttp=GetXmlHttpObject()
	if (xmlHttp==null)
	{
		alert ("Your browser does not support some functions on this site, please use Internet Explorer!");
		return;
	} 	
	//SEND PARAMETERS TO ASP
	url=url+"&ajaxlogin=1";
	url=url+"&sid="+Math.random();
	xmlHttp.onreadystatechange=lgoinStateChanged;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}


function lgoinStateChanged() 
{ 
	if (xmlHttp.readyState==4)
	{ 
		var loggedin = document.getElementById("loggedin")
		var loggedinorlogin = document.getElementById("loggedinorlogin")
		var returnedNotification
		returnedNotification = xmlHttp.responseText 
		
		if (returnedNotification == 'LoginSuccessful')
		{
			BYZ_QO_SHOWOPTIONS('byz_qo_loginform_div')
			loggedin.className='showloginbutton';
			loggedinorlogin.className='hideloginbutton';
		}
		else
		{
			alert(xmlHttp.responseText);
		}
	}
}




//QUICK ORDER AJAX FUNTIONS
function BYZ_QO_GETPRODUCTS(form, passed_param, lsearch)//FUNCTION TO GET PRODUCT LIST
{
	var url="byz_quick_orderv2_productlist.asp";//ASP PAGE URL
	try
	{
		form.byz_categories.focus();
		if(lsearch == 'category')
		{
			if (form.byz_categories.selectedIndex == 0 )
			{
				alert ( "Please select a Category." );
				form.byz_categories.focus();
				return false;
			}
		}
		if(lsearch == 'keyword')
		{
			if (form.searchkey.value == '' )
			{
				alert ( "Please enter search term." );
				form.searchkey.focus();
				return false;
			}
		}
	}
	catch(err){
	}
	
	
	if(lsearch == 'category')
	{
		url=url+"?byz_qo_catid="+passed_param //ASP QUERYSTRING PARAMETRER
	}
	
	else if(lsearch == 'keyword')
	{
		passed_param = document.getElementById("byz_searchkey").value;
		url=url+"?byz_qo_searchkey="+passed_param //ASP QUERYSTRING PARAMETRER
	}
	else if(lsearch == 'previousorders')
	{
		passed_param = 'previousorders';
		url=url+"?byz_qo_previous="+passed_param //ASP QUERYSTRING PARAMETRER
	}
	
	else
	{
		if (isNaN(passed_param) == false)
		{
			passed_param = document.getElementById("byz_searchkey").value;
			url=url+"?byz_qo_searchkey="+passed_param //ASP QUERYSTRING PARAMETRER
			if (passed_param == 0)
			{
				passed_param = document.getElementById("byz_categories").value;
				url=url+"?byz_qo_catid="+passed_param //ASP QUERYSTRING PARAMETRER
			}
		}
	}

	
	showDiv();//SHOW PROGRESS INDICATOR
	xmlHttp=GetXmlHttpObject()
	if (xmlHttp==null)
	{
		alert ("Your browser does not support some functions on this site, please use Internet Explorer!");
		return;
	} 	
	//SEND PARAMETERS TO ASP
	url=url+"&lsearch="+lsearch //ASP QUERYSTRING PARAMETRER
	url=url+"&sid="+Math.random();
	//alert(url)
	xmlHttp.onreadystatechange=stateChanged;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
		
}


function BYZ_QO_ADDTOCART(form, passed_param, passed_param2)//FUNCTION TO ADD TO CART
{
	var quantity
	if (form.quantity)
	{
		if ((form.quantity.value == '') || (isNaN(form.quantity.value) == true))
		{
			alert ( "Please enter product quantity" );
			form.quantity.focus();
			return false;
		}
		quantity = form.quantity.value 
	}
	
	 
	
	BYZ_QO_SHOWOPTIONS('div_prodid'+passed_param)
	xmlHttp=GetXmlHttpObject()
	var url="byz_quick_orderv2_addtocart.asp";//ASP PAGE URL
	var radiodone = ''
	var checkboxdone = ''
	//ASP QUERYSTRING PARAMETRER
	url=url+"?byz_qo_prodid="+passed_param+"&byz_qo_catid="+passed_param2+"&Quantity="+quantity

	var theForm = form, z = 0, y=0;//SET VARIABLE AND PASS FORM NAME
	for(z=0; z<theForm.length;z++){//LOOP THROUGH ALL FORM VALUES IN FORM
		
		if((theForm[z].type == 'checkbox')){//IF FORM ELEMENT IS A CHECKBOX
			if (checkboxdone == '')
			{
				url = url + getUrlparamsCheckbox(form, theForm[z].name)
				checkboxdone = document.getElementsByName(theForm[z].name)
			}
		}
		if((theForm[z].type == 'radio')){//IF FORM ELEMENT IS A RADIOBUTTON
		if (radiodone == '')
		{
			url = url + getUrlparamsRadio(form, theForm[z].name)
			radiodone = document.getElementsByName(theForm[z].name)
		}
			
		}
		if((theForm[z].type == 'dropdown') || (theForm[z].type == 'select-one')){//IF FORM ELEMENT IS A DROPDOWN
			url = url + getUrlparamsDropdown(form, theForm[z].name)
			 //break;
		}
		if((theForm[z].type == 'text') && (theForm[z].name != 'quantity')){//IF FORM ELEMENT IS A TEXTBOX
			url = url + getUrlparamsText(form, theForm[z].name, theForm[z].value)
			 //break;
		}
	}
	
	
	for(z=0; y<theForm.length;y++){//LOOP THROUGH ALL FORM VALUES IN FORM
		if(theForm[y].type == 'hidden')
		{
			if((theForm[y].name != 'productid') && (theForm[y].name != 'byz_catid'))
			{
				url = url +"&"+ getUrlparamsHidden(form, theForm[y].name, theForm[y].value)
			}
		}
	}
	
	if (xmlHttp==null)
	{
		alert ("Your browser does not support some functions on this site, please use Internet Explorer!");
		return;
	} 	
	
	//SEND PARAMETERS TO ASP
	showDiv();
	url=url+"&sid="+Math.random();
	//alert(url);
	xmlHttp.onreadystatechange=cartStateChanged;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}



function BYZ_QO_UPDATECART(passed_param, Action)//FUNCTION TO ADD TO CART
{
 	
	if(Action == 'remove')
	{
		if (confirm("This action will remove item from cart. Confirm?") == false) 
		{
			return ;
		}
	}
	xmlHttp=GetXmlHttpObject()
	var url="byz_quick_orderv2_addtocart.asp";//ASP PAGE URL
	url=url+"?byz_qo_prodid="+passed_param+"&action="+Action //ASP QUERYSTRING PARAMETRER
	if (xmlHttp==null)
	{
		alert ("Your browser does not support some functions on this site, please use Internet Explorer!");
		return;
	} 
	
	showDiv();//SHOW PROGRESS INDICATOR
	//SEND PARAMETERS TO ASP
	url=url+"&sid="+Math.random();
	//alert(url);
	xmlHttp.onreadystatechange=cartUpdateStateChanged;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}


//FUNCTION TO SHOW MINI CART
function ShowMiniCart()
{
	//showDiv();//SHOW PROGRESS INDICATOR
	xmlHttp=GetXmlHttpObject()
	var url="byz_quick_orderv2_mini_cart_show.asp";//ASP PAGE URL
	if (xmlHttp==null)
	{
		alert ("Your browser does not support some functions on this site, please use Internet Explorer!");
		return;
	} 	
	//SEND PARAMETERS TO ASP
	url=url+"?sid="+Math.random();
	xmlHttp.onreadystatechange=showCartStateChanged;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}


function stateChanged() 
{ 
	if (xmlHttp.readyState==4)
	{ 
		//hideDiv();//SHOW PROGRESS INDICATOR
		var returndString
		var lsearch
		var productlist
		
		returndString = xmlHttp.responseText
		returndString = returndString.split("^");
		lsearch = returndString[0]
		productlist = returndString[1]
		
		document.getElementById("productlist").innerHTML=productlist;
		ShowMiniCart();
	}
}

function cartStateChanged() 
{ 
	var returndString
	var lsearch
	
	if (xmlHttp.readyState==4)
	{ 
		returndString = xmlHttp.responseText
		returndString = returndString.split("^");
		lsearch = returndString[0]
		BYZ_QO_GETPRODUCTS(document.getElementById("byz_frmcategories"), returndString[1], lsearch)
	}
}

function cartUpdateStateChanged() 
{ 
	var returndString
	var lsearch
	
	returndString = xmlHttp.responseText
	returndString = returndString.split("^");
	lsearch = returndString[0]
	
	if (xmlHttp.readyState==4)
	{ 
		if(document.getElementById("byz_frmcategories") != 0)
		{
			BYZ_QO_GETPRODUCTS(document.getElementById("byz_frmcategories"), document.getElementById("byz_categories").value, lsearch)
		}
		else{
			ShowMiniCart();
		}

	}
}

function showCartStateChanged() 
{ 
	if (xmlHttp.readyState==4)
	{ 
		document.getElementById("carttab").innerHTML=xmlHttp.responseText;
		hideDiv();//SHOW PROGRESS INDICATOR
	}
}



function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
	// Firefox, Opera 8.0+, Safari
	xmlHttp=new XMLHttpRequest();
}
catch (e)
{
	// Internet Explorer
	try
	{
	xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch (e)
	{
	xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	}
	return xmlHttp;
}



//PROGRESS INDICATOR FUNCTIONS
function showDiv() 
{
	setTimeout('document.images["myAnimatedImage"].src="images/loading.gif"', 200); 
	document.getElementById('myHiddenDiv').style.display ="";
	document.getElementById('productlist').style.display ="none";
	document.getElementById("productlist").innerHTML='';
}
function hideDiv() 
{
	document.getElementById('myHiddenDiv').style.display ="none"; 
	document.getElementById('productlist').style.display ="";
} 
//END QUICK ORDER AJAX FUNCTIONS

//FUNCTION TO GET URL PARAMETERS FOR OPTIONS AND FEATURES
function getUrlparamsCheckbox(form, formelementname)
{
	var OptionControlValues = ''
	var url
	var theChecks = eval(document.getElementsByName(formelementname));
	for(var i = 0; i < theChecks.length; i++)
	{
		if(theChecks[i].checked)
		{
			if (OptionControlValues != '')
			{
				OptionControlValues = OptionControlValues +","+ theChecks[i].value;
			}
			else
			{
				OptionControlValues = theChecks[i].value;
			}
		}
	}
	url = "&"+formelementname+"="+OptionControlValues
	return url;
}


function getUrlparamsRadio(form, formelementname)
{
	var OptionControlValues
	var url
	var theRadios = eval(document.getElementsByName(formelementname));
	for(var i = 0; i < theRadios.length; i++)
	{	
		if(theRadios[i].checked)
		{
			OptionControlValues = theRadios[i].value;
		}
	}
	url = "&"+formelementname+"="+OptionControlValues
	return url;
}


function getUrlparamsDropdown(form, formelementname)
{
	var OptionControlValues
	var url
	var theDropDown = eval(document.getElementsByName(formelementname));
	OptionControlValues = theDropDown[0].value;
	url = "&"+formelementname+"="+OptionControlValues
	return url;
}

function getUrlparamsText(form, formelementname, formelementnamevalue)
{
	var url = ''
	url = url +"&"+ formelementname+"="+formelementnamevalue
	return url;
}

function getUrlparamsHidden(form, formelementname, formelementnamevalue)
{
	var url = ''
	url = formelementname+"="+formelementnamevalue
	return url;
}


//END



