addEvent(window, "load", alternate_init);

function simpleAjaxUpdate(url,updateDiv){

new Ajax.Updater(updateDiv, url, { method: 'get',
								onLoading:function(request){
    									//$('ajaxload').style.display='';
    							}, 
    						
    						onComplete:function(request){
    									//$('ajaxload').style.display='none';
								}

 });

}

function loadSubOptions(url,updateDiv){
	
	//$(updateDiv).innerHTML = '';
	
	
	for(i=1;i<loadSubOptions.arguments.length;i++){
		
		$(loadSubOptions.arguments[i]).innerHTML =  '<option value="">-</option>';
	}
	
	simpleAjaxUpdate(url,updateDiv);
	
}

var browserHeight = false;
var docHeight = false;
function getHeights(){
    
	if(window.innerHeight){
		if(window.opera){
		    browserHeight = window.outerHeight + 30;
		    
		}else{
		    browserHeight = window.innerHeight;
		}
                    		
	} else if(document.documentElement.clientHeight) {
		browserHeight = document.documentElement.clientHeight;
	} else if(document.body.clientHeight){
		browserHeight = document.body.clientHeight;
	}
	if(document.body.scrollHeight ){
		docHeight = document.body.scrollHeight ;
	}
	//alert('Document Height: ' + docHeight + '\nBrowser Height: ' + browserHeight);
	
}


function adjustFooter(){
	getHeights();	
	if(browserHeight && docHeight)	{
		if(docHeight<browserHeight){
			if($('footerpadding')){
				$('footerpadding').style.height = parseInt(browserHeight-docHeight+0)+'px';
			}else {

				}
			window.setTimeout('getHeights()',1000);
		}
	}
}


function ajaxify(formObj,updateDiv){
	
	var log = $(updateDiv).empty().addClass('ajax-loading');
 
	/**
	 * send takes care of encoding and returns the Ajax instance.
	 * onComplete removes the spinner from the log.
	 */
	$(formObj).send({
		update: log,
		
		onComplete: function() {
			log.removeClass('ajax-loading');
		}
	});

	return false;
}



function winPopup(popupUrl){
	
	var window_features = 'fullscreen=yes,resizeable=yes,dependent=yes,scrollbars=1';
	window_name = 'poppedup';
	newpwindow = window.open(popupUrl,window_name,window_features);
	
	if (window.focus) {
		newpwindow.focus()
	}
	
	return false;
	
}

function changeUrl(actionUrl){
	
	
	targetUrl = SITE_ROOT + SITE_CONTROLLER + actionUrl;
	location.href=targetUrl;
	
}


function switchRow(id){
 if(document.getElementsByTagName){  
   var table = document.getElementById(id);  
   var rows = table.getElementsByTagName("tr");  
   for(i = 0; i < rows.length; i++){          
 //manipulate rows
     if(i % 2 == 0){
       rows[i].className = "even";
     }else{
       rows[i].className = "odd";
     }      
   }
 }
}



function alternate_init() {
	
	// Find all tables with class sortable and make them sortable
	if (!document.getElementsByTagName) return;
	tbls = document.getElementsByTagName("table");
	for (ti=0;ti<tbls.length;ti++) {
		thisTbl = tbls[ti];
		//if (((' '+thisTbl.className+' ').indexOf("gridlike") != -1) && (thisTbl.id)) {
		if (((' '+thisTbl.className+' ').indexOf("listing") != -1)) {
			alternate(thisTbl);
		}
	}
}

function addEvent(elm, evType, fn, useCapture)
// addEvent and removeEvent
// cross-browser event handling for IE5+,	NS6 and Mozilla
// By Scott Andrew
{
	if (elm.addEventListener){
		elm.addEventListener(evType, fn, useCapture);
		return true;
	} else if (elm.attachEvent){
		var r = elm.attachEvent("on"+evType, fn);
		return r;
	} else {
		alert("Handler could not be removed");
	}
}

function replace(s, t, u) {
  /*
  **  Replace a token in a string
  **    s  string to be processed
  **    t  token to be found and removed
  **    u  token to be inserted
  **  returns new String
  */
  i = s.indexOf(t);
  r = "";
  if (i == -1) return s;
  r += s.substring(0,i) + u;
  if ( i + t.length < s.length)
    r += replace(s.substring(i + t.length, s.length), t, u);
  return r;
}

function alternate(table) {
	// Take object table and get all it's tbodies.
	var tableBodies = table.getElementsByTagName("tbody");
	// Loop through these tbodies
	for (var i = 0; i < tableBodies.length; i++) {
		// Take the tbody, and get all it's rows
		var tableRows = tableBodies[i].getElementsByTagName("tr");
		// Loop through these rows
		for (var j = 0; j < tableRows.length; j++) {
			// Check if j is even, and apply classes for both possible results
			if ( (j % 2) == 0  ) {
				if (tableRows[j].className == 'odd' || !(tableRows[j].className.indexOf('odd') == -1) ) {
					tableRows[j].className = replace(tableRows[j].className, 'odd', 'even');
				} else {
					tableRows[j].className += " even";
				}
			} else {
				if (tableRows[j].className == 'even' || !(tableRows[j].className.indexOf('even') == -1) ) {
					tableRows[j].className = replace(tableRows[j].className, 'even', 'odd');
				}
				tableRows[j].className += " odd";
			} 
		}
	}
}

function clickclear(thisfield, defaulttext) {
	if (thisfield.value == defaulttext) {
	thisfield.value = "";
	}
}
function clickrecall(thisfield, defaulttext) {
	if (thisfield.value == "") {
	thisfield.value = defaulttext;
	}
}
function getElementIdsByClassName(findClass) {
	relevantElements = new Array;
	a =0;
	var aElm=document.body.getElementsByTagName('*');
	for(var i=0; i<aElm.length; i++) {
		if(aElm[i].className==findClass) {
		//do something
			relevantElements[a] = aElm[i].id;
			a++;
		}
	}
	return relevantElements;
}


function isBlank(stringtext){
	//return stringtext.clean();
	return !trim(stringtext);
	
}

function isEmail(stringtext){
	if(isBlank(stringtext)) return true;
	validRegExp = /^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/i;
	
	if(stringtext.search(validRegExp) == -1) {
		return false;
	}
	
	return true;
	
}

function isNumeric(stringtext){
	var regex = /(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/;
 	 if (stringtext != '' && !regex.test(stringtext)) {
    //errFlag['name'] = true;
  	  return false
  	}
	return true;
	
}

function isAlpha(stringtext){
	
	var regex = /^[a-zA-Z]+$/;
 	 if (stringtext != '' && !regex.test(stringtext)) {

 	 	return false
  	}
	return true;
	
	
	
}


function isAlphaNumeric(stringtext){
	
	var regex = /^[a-zA-Z0-9]+$/;
 	 if (stringtext != '' && !regex.test(stringtext)) {

 	 	return false
  	}
	return true;
	
	
	
}

function isLonger(stringtext,maxlength){
	
	if(stringtext.length>maxlength){
		return true;
	}
	return false;
	
}

function isShorter(stringtext,minlength){
	
	if(stringtext.length<minlength){
		return true;
	}
	return false;
	
}
if(typeof($)=='undefined'){
	function $(elementId){
		
		if(typeof(document.getElementById(elementId)) !='undefined'){
			return document.getElementById(elementId);
		}
		return false;
		
	}
}
function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

function fvRemoveErrorMsg(elementName){
	
	if(typeof(errorHolder[elementName])!='undefined' && typeof(inValidationPass[elementName])=='undefined'){
		
		errorSpanId = errorHolder[elementName];
		if($(errorSpanId)){
			$(elementName).parentNode.removeChild($(errorSpanId));
		}
		
	}
}

function fvAddErrorMsg(elementName,elementError){
	
	errorMessages += elementError +'\n' ;
	
	if (document.createTextNode){
		
		var errorText = document.createTextNode(elementError);
		
		errorContainer = document.createElement('span');
		errorContainer.setAttribute('class','eltred');
		
		newLineTag = document.createElement('br');
		newLineTag.setAttribute('class','slimbr');
		
		
		errorSpanId =  'errorText'+elementName;
		
		errorContainer.setAttribute('id',errorSpanId);
		
		errorHolder[elementName] = errorSpanId;
		
		inValidationPass[elementName] = errorSpanId;
		errorContainer.appendChild(newLineTag);
		errorContainer.appendChild(errorText);
		
		
		if(typeof($(elementName).options)=='undefined'){
			
			if($(elementName).parentNode.childNodes.length!=2 && typeof($(elementName).parentNode.childNodes[2])!='undefined'){
			
				node  = $(elementName).parentNode.childNodes[2];
				if(node.id==errorSpanId){
					$(elementName).parentNode.removeChild(node);
				}
				
			}
			
			
			$(elementName).parentNode.appendChild(errorContainer);
			
		}else{
			
			selectDivExists = false;
			
			if($(elementName).parentNode.childNodes.length==1){
				node  = $(elementName).parentNode.childNodes[0];
				if(node.id==errorSpanId){
					$(elementName).parentNode.removeChild(node);
				}
				selectDivExists  = true;	
			}
			
			if($(elementName).parentNode.childNodes.length==2){
			
				node  = $(elementName).parentNode.childNodes[1];
				$(elementName).parentNode.removeChild(node);
				selectDivExists  = true;	
			}
			
			
			
			
				
		
			var currentObject = $(elementName);
			currentObjectId = $(elementName).id;
			var replacementObject = currentObject.cloneNode(true);
			replacementObject.id = 'Cloned'+ $(elementName).id;
			
			if(!selectDivExists){
				
				formattedError = document.createElement('div');
				
				formattedError.appendChild(replacementObject);
				
				formattedError.appendChild(errorContainer);
			
			}else{
				formattedError = document.createElement('femi');
				
				formattedError.appendChild(replacementObject);
				
				formattedError.appendChild(errorContainer);
				
			}
			
			
			currentObject.parentNode.insertBefore(formattedError, currentObject);
			
			$(elementName).parentNode.removeChild(currentObject);
			
			replacementObject.id = currentObjectId;
						
						
		//	 Works if there's a div surrounding the selectbox
		/*	if($(elementName).parentNode.childNodes.length==2){
			
				node  = $(elementName).parentNode.childNodes[1];
				$(elementName).parentNode.removeChild(node);
				
			}
			
			$(elementName).parentNode.appendChild(formattedError);*/	
			
		
			
		}
			
			
		
	}
	
}

