var arrReqs = new Array();
var reqInProgress=false;
var arrRankings = new Array();

function validate_element(valid,elm){
	if(!valid){
		var divs = document.getElementsByTagName('DIV');
		var strType ="";
		
		if(elm.type == "select-one")
			strType = "SELECT";
		else if(elm.type == "textarea")
			strType = "TEXTAREA";
		else
			strType = "INPUT";
			
		 for(i=0; i < divs.length; i++){
			if(/panel/.test(divs[i].className)){					
				var subs = divs[i].getElementsByTagName(strType);
				 for(j=0; j < subs.length; j++){
					if(subs[j].name==elm.name && subs[j].id==elm.id &&elm.name.length > 0){
						var tTab = document.getElementById(divs[i].id);
						mytabs.showTab(divs[i].id);
						break;
					}
				}
			}
		}
	}
}
	
	
function create_sortable(listName){
	Sortable.create(listName,{ghosting:true,constraint:'vertical',tag:'li'})
	arrRankings.push(listName);
}

function objReq(url, funcName, qry, getpost){
	this.url=url;
	this.funcName=funcName;
	this.qry=qry;
	this.getpost=getpost;
}

function queue_rec(url, funcName, qry, getpost){
	var cReq = new objReq(url, funcName, qry, getpost);
	arrReqs.push(cReq);
	setTimeout('tryReq()',250);
}

function tryReq(){
	if(arrReqs.length > 0){
		if(!reqInProgress){
			//reverse to grab the first item in the array
			arrReqs.reverse();
			var cReq = arrReqs.pop();
			//If theres still reqs waiting reverse back again 
			if(arrReqs.length > 0)
				arrReqs.reverse();
			make_req(cReq.url, cReq.funcName, cReq.qry, cReq.getpost);
		}
		setTimeout('tryReq()',250);
	}
}
	
function make_req(url, funcName, qry, getpost){	
	var getpost = (getpost == null) ? "GET" : getpost;
	if(reqInProgress){
		queue_rec(url, funcName, qry, getpost);
	}
	else{
		if (window.XMLHttpRequest) { // Mozilla, Safari, ...
			http_request = new XMLHttpRequest();
			if (http_request.overrideMimeType) {
				//http_request.overrideMimeType('text/xml');
			}
		} else if (window.ActiveXObject) { // IE
			try {
					http_request = new ActiveXObject("Msxml2.XMLHTTP");
				} catch (e) {
					try {
						http_request = new ActiveXObject("Microsoft.XMLHTTP");
					} catch (e) {}
				}
		}
		if (!http_request) {
			alert('Giving up :( Cannot create an XMLHTTP instance');
			reqInProgress=false;		
			return false;
		} else {
			reqInProgress=true;
			http_request.open(getpost, url, true);
			http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
			http_request.onreadystatechange =   function() {
				if (http_request.readyState == 4) {
					strResponse = http_request.responseText;
					//hide_working();
					 switch (http_request.status) {
						case 404:
							alert('Error: Not Found. The requested URL ' + url + ' could not be found.');
							reqInProgress=false;
							break;
						 // Display results in a full window for server-side errors
						case 500:
							alert('Error: Not Found. The requested URL ' + url + ' could not be found. (500)');
							handleErrFullPage(strResponse);
							reqInProgress=false;
							break;
						default:
							if (strResponse.indexOf('Error:') > -1 || 
								strResponse.indexOf('Debug:') > -1) {
								alert(strResponse);
								reqInProgress=false;
							}
								// Call the desired result function
							else {
								eval(funcName + '(strResponse);');
								reqInProgress=false;
							}
							break;
					}
				}
				//else
					//show_working();
			}
			//alert(qry);
			http_request.send(qry);
		}
	}
}

function handleErrFullPage(strIn) {
	var errorWin;
	// Create new window and display error
	try {
			errorWin = window.open('', 'errorWin');
			errorWin.document.body.innerHTML = strIn;
	}
	// If pop-up gets blocked, inform user
	catch(e) {
			alert('An error occurred, but the error message cannot be' +
					' displayed because of your browser\'s pop-up blocker.\n' +
					'Please allow pop-ups from this Web site.');
	}
}

function show_update(divTarget,strMsg){
	var dTarget = document.getElementById(divTarget);
	if(dTarget){
		var dUpdate = document.getElementById('divUpdate');	
		if(!strMsg)
			strMsg="Working...";
		dUpdate.innerHTML= "<div class=\"divAjaxMsg\">" + strMsg+ "</div>";		
		var newTop = getElementTop(divTarget)
		dUpdate.style.display="Block";
		dUpdate.style.visibility = "Visible";
		dUpdate.style.top = newTop;
		dUpdate.style.paddingTop = (dTarget.offsetHeight/2) -10 +'px';
		///dUpdate.style.verticalAlign = "middle";
		dUpdate.style.left =  getElementLeft(divTarget);
		dUpdate.style.width = dTarget.offsetWidth;
		dUpdate.style.height = dTarget.offsetHeight;
	}	else
		alert('Error: cannot find target: ' + divTarget);
}

function hide_update(){
	var dUpdate = document.getElementById('divUpdate');
	dUpdate.style.display="None";
	dUpdate.style.visibility = "Hidden";
	dUpdate.innerHTML="&nbsp;";
}

function getElementLeft(Elem) {	
	var elem;
	if(document.getElementById) {
		var elem = document.getElementById(Elem);
	} else if (document.all){
		var elem = document.all[Elem];
	}
	if(elem){
		xPos = elem.offsetLeft;
		tempEl = elem.offsetParent;
		while (tempEl != null) {
			xPos += tempEl.offsetLeft;
			tempEl = tempEl.offsetParent;
		}
		return xPos;
	}else
		return false;
}

function getElementTop(Elem) {	
	if(document.getElementById) {	
		var elem = document.getElementById(Elem);
	} else if (document.all) {
		var elem = document.all[Elem];
	}
	if(elem){
		yPos = elem.offsetTop;
		tempEl = elem.offsetParent;
		while (tempEl != null) {
			yPos += tempEl.offsetTop;
			tempEl = tempEl.offsetParent;
		}
		return yPos;
	}else
		return false;
}

function destroyModal(frmName){
	if(!frmName)
		frmName = 'myForm';						
	var frmForm = document.getElementById(frmName);
	var screenDiv = document.getElementById('divUpdate');
	var dDiv = document.getElementById('divUpdateForm');
	
	screenDiv.style.display="None";
	screenDiv.style.visibility = "Hidden";
	dDiv.style.display="None";
	dDiv.style.visibility = "Hidden";
	dDiv.innerHTML = "<strong>Updating...</strong>";
	var frmEl = document.getElementById(frmName);
	//IE bug workaround
	if(frmEl){
	if(navigator.appName =="Microsoft Internet Explorer"){
		for (var i = 0; i < frmForm.elements.length; i++) {
			if(frmForm.elements[i].type){
				if(frmForm.elements[i].type.match('select'))
					frmForm.elements[i].style.visibility = 'visible';
			}
		}
	}
	}
}

function showModal(frmName,width){				
	if(!frmName)
		frmName = 'myForm';
	if(!width)
		width=420;
	var frmForm = document.getElementById(frmName);
	var screenDiv = document.getElementById('divUpdate');
	var newDiv = document.getElementById('divUpdateForm');
	//alert('document.body.clientHeight: ' + document.body.clientHeight + ' - document.body.scrollHeight: '  + document.body.scrollHeight + ' - document.body.offsetHeight: '  + document.body.offsetHeight + ' - document.body.scrollTop: '  + document.body.scrollTop)
	var heightOffset=0;
	if(document.documentElement.scrollTop)
		heightOffset = document.documentElement.scrollTop;
	var newHeight = document.body.scrollHeight + heightOffset;
	
	if(newHeight < document.body.clientHeight)
		newHeight = document.body.clientHeight + 10;
		
	screenDiv.className = 'divModalBG';
	screenDiv.style.zIndex = '10000';
	screenDiv.style.width = document.body.clientWidth;
	screenDiv.style.height = newHeight;
	screenDiv.style.top=0;
	screenDiv.style.left=0;
	screenDiv.style.visibility = 'visible';
	screenDiv.style.display = "block";
	screenDiv.style.textAlign = "Center";
	
	newDiv.style.zIndex = '10001';
	newDiv.style.verticalAlign = "middle";
	newDiv.style.opacity = '1';
	newDiv.style.filter = 'alpha(opacity=100)';
	newDiv.style.left = (document.body.clientWidth/2) - (width/2);	
	newDiv.style.top =  document.body.scrollTop + 80 + heightOffset;
	newDiv.style.width=width;
	//document.body.scrollTop = newDiv.style.top;
	//alert('newDiv.style.top: ' + newDiv.style.top + '  document.body.scrollTop: ' + document.body.scrollTop);	
	newDiv.style.visibility = 'visible';
	newDiv.style.display = "block";
	newDiv.style.textAlign = "Center";
	var frmEl = document.getElementById(frmName);
	//IE bug workaround
	if(frmEl){
	//IE bug workaround
	if(navigator.appName =="Microsoft Internet Explorer"){
		for (var i = 0; i < frmForm.elements.length; i++) {
			if(frmForm.elements[i].type){
				if(frmForm.elements[i].type.match('select'))
					frmForm.elements[i].style.visibility = 'hidden';
			}
		}
	}	
	}
	return newDiv;
}
				
function change_option(optIn,changeIn,required,divIn){
	var rad = document.getElementById(optIn);
	var txt = document.getElementById(changeIn);
	if(divIn)
		var dDiv = document.getElementById(divIn);
	if(rad.checked){
		txt.disabled=true;
		if(divIn){
			if(dDiv){
				dDiv.style.display = "none";
				dDiv.style.visibility="hidden";
			}
		}			
		if(required)
			txt.className='formField';
	}
	else{
		if(txt){
			txt.disabled=false;
			if(required)
				txt.className='required';
		}
		if(divIn){
			if(dDiv){
				dDiv.style.display = "";
				dDiv.style.visibility="visible";
			}
		}	
	}
}
//Add the onclick event to link of a certain class   
function safety_links(msg,cFuse){   
	//Check that browser supports the used methods   
	if(!document.getElementsByTagName) {return true;}   
	  
	//Get all links in document   
	var links = document.getElementsByTagName("a");   
	//Loop through links   
	for(i=0;i<links.length;i++){   
		//Check if there is already an onclick 
		if(!links[i].onclick && links[i].href.indexOf(cFuse) < 0){   
			//Add the onclick event to the object/element   
			links[i].onclick = function() { if(confirm(msg)) return true; else return false; }
		}
	}
}

var keepfocus = false;

function hover_tab(idIN){
	var lCorn=document.getElementById('tdMainL' + idIN);	
	var rCorn=document.getElementById('tdMainR' + idIN);	
	var tdTab=document.getElementById('tdMain' + idIN);	
	var aTab=document.getElementById('aMain' + idIN);
	var dSub=document.getElementById('divSubNav');
	var dCSub=document.getElementById('divSubNav' + idIN);
	var tdMainTab=document.getElementById('tdMainTab' + idIN)
	var tblSub=document.getElementById('tblSubNav')
	
	if(tdTab.className != 'tdMainNavON')
		keepfocus = idIN;
		
	if(tdTab.className == 'tdMainNavOFF'){
		//dSub.innerHTML = dCSub.innerHTML;
		
		dCSub.style.display = "block";
		dCSub.style.visibility="visible";	
		dCSub.style.top = getElementTop('divSubNav');
		dCSub.style.left = getElementLeft('divSubNav');
		dCSub.style.width = dSub.style.width;
		dCSub.style.left = getElementLeft('divSubNav');
		tblSub.className = "tblSubNav_Hover";
		
		lCorn.className='tdLeftCornerHOVER';
		rCorn.className='tdRightCornerHOVER';
		tdTab.className='tdMainNavHOVER';
		tdMainTab.className='tdMainTabHOVER';
	}
}

function unhover_tab(idIN){
	
	keepfocus = false;
	//unfocus_tab(idIN);
	setTimeout("unfocus_tab(" + idIN +")",75);
}

function unfocus_tab(idIN){
	if(keepfocus != idIN){
		var lCorn=document.getElementById('tdMainL' + idIN);	
		var rCorn=document.getElementById('tdMainR' + idIN);	
		var tdTab=document.getElementById('tdMain' + idIN);	
		var aTab=document.getElementById('aMain' + idIN);
		var tblSub=document.getElementById('tblSubNav')
		var tdMainTab=document.getElementById('tdMainTab' + idIN)
		
		var dSub=document.getElementById('divSubNav' + idIN);
		var dCSub=document.getElementById('divCurrSubNav');
		
		if(tdTab.className == 'tdMainNavHOVER'){
			lCorn.className='tdLeftCornerOFF';
			rCorn.className='tdRightCornerOFF';
			tdTab.className='tdMainNavOFF';
			tdMainTab.className='tdMainTabOFF';
			dSub.style.display = "none";
			dSub.style.visibility = "hidden";
			//dSub.innerHTML = dCSub.innerHTML;
			if(keepfocus == false){
				tblSub.className = "tblSubNavON";			
			}
		} else if(keepfocus == false)
			tblSub.className = "tblSubNavON";
	}
}
