//** ----------------------------------------------------------------------------------------------------------------------------
//** ################################################
//** Modified by GPI on March 2008
//** Tab Content Script for Home Page
//** ################################################
//** ----------------------------------------------------------------------------------------------------------------------------

// confirmation box before submitting a "DROP/DELETE/ALTER" query.
function confirmLink(theLink, theSqlQuery)
{
/**
 * Displays a confirmation box before submitting a "DROP/DELETE/ALTER" query.
 * This function is called while clicking links
 *
 * @param   object   the link
 * @param   object   the sql query to submit
 *
 * @return  boolean  whether to run the query or not
 */
    // Confirmation is not required in the configuration file
    // or browser is Opera (crappy js implementation)
    
   	var confirmMsg  = 'Do you really want to delete this';
    
    if (confirmMsg == '' || typeof(window.opera) != 'undefined') {
        return true;
    }

    var is_confirmed = confirm(confirmMsg + ' ' + theSqlQuery + '?');
    if (is_confirmed) {
        theLink.href += '&is_js_confirmed=1';
    }

    return is_confirmed;
} // end of the 'confirmLink()' function



	// empty form element on focus 
	
function clearElement(el) {
   	if (el.defaultValue==el.value) {
   		el.value = "";
   	}
}

function popupform(myform,windowname)
{
if (! window.focus)return true;
window.open('', windowname, 'height=400,width=400,toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=no');
myform.target=windowname;
return true;
}


var win= null;
function popup(mypage,myname,w,h,scroll){
  var winl = (screen.width-w)/2;
  var wint = (screen.height-h)/2;
  var settings  ='height='+h+',';
      settings +='width='+w+',';
      settings +='top='+wint+',';
      settings +='left='+winl+',';
      settings +='scrollbars='+scroll+',';
      settings +='resizable=yes';
  win=window.open(mypage,myname,settings);
  if(parseInt(navigator.appVersion) >= 4){win.window.focus();}
}

function findOpener() {
	document.forms[0].target = opener.top.name;
	document.forms[0].target.reload();
}

function refreshParent() {
	window.opener.location.href = window.opener.location.href;

	if (window.opener.progressWindow) {
		window.opener.progressWindow.close()
	}
	window.close();
}


function disableButton(checkbox,button) {
	//alert("checkbox: " + eval(checkbox) + ", button:" + eval(button));
	var go = 0;
	for (i = 0; i < checkbox.length; i++) {
		if (checkbox[i].checked == true) {
			go = 1;
			//alert("checked");
		}
	}
	if (go == 1) {
		button.disabled = false;
	} else {
		button.disabled = true;
	}
}

function checkForm(formname,fieldname) {

	var formErrors = false;

	if (document.formname.fieldname.value.length < 2) {
		formErrors = "You must enter a message when posting.";
	}

	if (formErrors) {
		alert(formErrors);
		return false;
	} else {
		buttonstyle(-1);
		//formObj.preview.disabled = true;
		//formObj.submit.disabled = true;
		return true;
	}
}


// store form values in a cookie
function Get_Cookie(name) {
	var temp="";
	var start = document.cookie.indexOf(name+"=");
	var len = start+name.length+1;
	if ((!start) && (name != document.cookie.substring(0,name.length))) {
   		return null;
	}
	if (start == -1) {
		return null;
	}
	var end = document.cookie.indexOf(";",len);
	if (end == -1) {
		end = document.cookie.length;
	}

	if ((document.cookie.substring(len,end)=="")|| (document.cookie.substring(len,end)=="name")||!document.cookie.substring(len,end)) {
		alert('please register');
	}
	if(name=="imacookie") {
		temp=document.cookie.substring(len,end);
	} else {
		var temp1= document.cookie.substring(len,end);
		document.write(temp1 +" "+temp);
	}
	return unescape(document.cookie.substring(len,end));
}

function setCookie(formname,customerID) {
	var i;
	var formElements = formname.elements;
	var elName;
	document.cookie = "customerID=" + customerID;
	for (i=0; i<6; i++) { 	// '6' here because we only want the first 6 element values
	//for (i=0;i<formElements.length;i++) {
		elName = formElements[i];
		//alert(elName.name + ": " + elName.value);
		document.cookie = elName.name + "=" +escape(elName.value);
	}
}

function saveForm(formname,customerID) {
	var i;
	var formElements = formname.elements;
	var elName;	
	var elStruct = formname.name + "_";
	for (i=0;i<formElements.length;i++) {
		elName = formElements[i];
		elNameStruct = elStruct + elName.name;
		/*
		// debug: alert on the first [i] iterations (listing all of them is too much)
		//if (i<5) {
			alert(elNameStruct + ": " + elName.value);
		//}
		*/ 
		document.cookie = elNameStruct + "=" +escape(elName.value);
	}
	document.cookie = elStruct + "customerID=" + customerID;
}

function init(catid)
{
	optionTest = true;
	var lgth = document.forms[1].subcat_id.options.length - 1;
	document.forms[1].subcat_id.options[lgth] = null;
	if (document.forms[1].subcat_id.options[lgth]) {
		optionTest = false;
	}
	populate(catid);
}


function populate(catid) {
	//if (!optionTest) return;
	if (optionTest==false) return;
	//var formname = getElementById();
	var box = document.forms[1].cat_id;
	var number = box.options[box.selectedIndex].value;
	if (!number) return;
	if (store[number]) {
		var list = store[number];
		var box2 = document.forms[1].subcat_id;
		box2.options.length = 0;
		var i = 0;
		for(i=0;i<list.length;i+=2) {
			box2.options[i/2] = new Option(list[i],list[i+1]);
			if (box2.options[i/2].value==catid) {
				box2.options[i/2].selected = true;
			}
		}
	} else {  // no subdirs in this category: clear the listbox
		var box2 = document.forms[1].subcat_id;
		box2.options.length = 0;
	}
}

function scrollToSelected(fieldname,id) {
	//document.forms[0].fieldname.selectedIndex = id;
	fieldname.selectedIndex = id;
}

function moveOptions(selectObj, direction){
  var i = 0;
  var thisValue = "";
  var thisText = "";
  var swapValue = "";
  var swapText = "";
		  
  if(selectObj.selectedIndex != -1)
  {
	if(direction < 0)
	{
	  for(i = 0; i < selectObj.options.length; i++)
	  {
		swapValue = (i == 0 || selectObj.options[i + direction].selected) ? null : selectObj.options[i + direction].value;
		swapText = (i == 0 || selectObj.options[i + direction].selected) ? null : selectObj.options[i + direction].text;
		if(selectObj.options[i].selected && swapValue != null && swapText != null)
		{
		  thisValue = selectObj.options[i].value;
		  thisText = selectObj.options[i].text;
		  selectObj.options[i].value = swapValue;
		  selectObj.options[i].text = swapText;
		  selectObj.options[i + direction].value = thisValue;
		  selectObj.options[i + direction].text = thisText;
		  selectObj.options[i].selected = false;
		  selectObj.options[i + direction].selected = true;
		}
	  }
	}
	else
	{
	  for(i = selectObj.options.length - 1; i >= 0; i--)
	  {
		swapValue = (i == selectObj.options.length - 1 || selectObj.options[i + direction].selected) ? null : selectObj.options[i + direction].value;
		swapText = (i == selectObj.options.length - 1 || selectObj.options[i + direction].selected) ? null : selectObj.options[i + direction].text;
		if(selectObj.options[i].selected && swapValue != null && swapText != null)
		{
		  thisValue = selectObj.options[i].value;
		  thisText = selectObj.options[i].text;
		  selectObj.options[i].value = swapValue;
		  selectObj.options[i].text = swapText;
		  selectObj.options[i + direction].value = thisValue;
		  selectObj.options[i + direction].text = thisText;
		  selectObj.options[i].selected = false;
		  selectObj.options[i + direction].selected = true;
		}
	  }
	}
  }
}

function selectAll(selectObj) {
	var i = 0;
	if(selectObj.options.length)
		for(i = 0; i < selectObj.options.length; i++)
  			selectObj.options[i].selected = true;
	return false;
}


function myOnSubmitEventHandler() {
	try {
		if(typeof(document.getElementById('wysiwyg').EscapeUnicode) == 'undefined') {
			throw "Error"
		} else {
			document.getElementById('wysiwyg').EscapeUnicode = true;
			document.getElementById('rich_text').value = document.getElementById('wysiwyg').value;
		}			
	}
	catch(er) {
		document.getElementById('rich_text').value = document.getElementById('alternate1').value;
	}
}


//function startList() {
startList=function() {
	var i = 0;
	if (document.all&&document.getElementById) {
		var navRoot = document.getElementById("nav");
		for (i=0; i<navRoot.childNodes.length; i++) {
			node = navRoot.childNodes[i];
			if (node.nodeName=="LI") {
				node.onmouseover=function() {
					this.className+=" over";
  				}
  				node.onmouseout=function() {
  					this.className=this.className.replace(" over", "");
   				}
   			}
  		}
 	}
}


/*
-- Date Info - used in footer, possibly elsewhere
-- was deprecated, causing errors in FF 1.5, updated by JD on 4/21/06 */
var months = Array('January','February','March',
    'April','May','June','July','August','September',
    'October','November','December');
var date = new Date();
var day  = date.getDate();
var month = date.getMonth() + 1;
var yy = date.getYear();
var year = (yy < 1000) ? yy + 1900 : yy;


function textCounter(field,cntfield,maxlimit) {
	if (field.value.length > maxlimit) { // if too long...trim it!
		field.value = field.value.substring(0, maxlimit);
	// otherwise, update 'characters left' counter
	}else{
		cntfield.value = maxlimit - field.value.length;
	}
}



//** ----------------------------------------------------------------------------------------------------------------------------
//** ################################################
//** Modified by GPI on March 2008
//** Tab Content Script for Home Page
//** ################################################
//** ----------------------------------------------------------------------------------------------------------------------------


//** 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

//** Updated Feb 18th, 08 to version 2.1: Adds a "tabinstance.cycleit(dir)" method to cycle forward or backward between tabs dynamically

////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.currentTabIndex=0 //Index of currently selected hot tab (tab with sub content) within hottabspositions[] array
	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
	},

	cycleit:function(dir, autorun){ //PUBLIC function to move foward or backwards through each hot tab (tabinstance.cycleit('foward/back') )
		if (dir=="next"){
			var currentTabIndex=(this.currentTabIndex<this.hottabspositions.length-1)? this.currentTabIndex+1 : 0
		}
		else if (dir=="prev"){
			var currentTabIndex=(this.currentTabIndex>0)? this.currentTabIndex-1 : this.hottabspositions.length-1
		}
		if (typeof autorun=="undefined") //if cycleit() is being called by user, versus autorun() function
			this.cancelautorun() //stop auto cycling of tabs (if running)
		this.expandtab(this.tabs[this.hottabspositions[currentTabIndex]])
	},

	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)
		this.setcurrenttabindex(tabref.tabposition) //remember position of selected tab within hottabspositions[] array
	},

	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"
		}
	},

	setcurrenttabindex:function(tabposition){ //store current position of tab (within hottabspositions[] array)
		for (var i=0; i<this.hottabspositions.length; i++){
			if (tabposition==this.hottabspositions[i]){
				this.currentTabIndex=i
				break
			}
		}
	},

	autorun:function(){ //function to auto cycle through and select tabs based on a set interval
		this.cycleit('next', true)
	},

	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
				}
			}
		} //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.autoruntimer=setInterval(function(){tabinstance.autorun()}, this.automodeperiod)
		}
	} //END int() function

} //END Prototype assignment



// added by JD, 1/28/09 -- limit tet field chars

function limitText(limitField, limitCount, limitNum) {
	if (limitField.value.length > limitNum) {
		limitField.value = limitField.value.substring(0, limitNum);
	} else {
		limitCount.value = limitNum - limitField.value.length;
	}
}
