

var loadingImg = "<center><table border=0><tr><td align=center><center><img style='vertical-align: middle;' src='/img/loading.gif'>&nbsp;<small>Loading...</small></center></td></tr></table></center>";
var duration_fade = 0.5;
/*
        Developed by Robert Nyman, http://www.robertnyman.com
        Code/licensing: http://code.google.com/p/getelementsbyclassname/
*/
var getElementsByClassName = function (className, tag, elm){
        if (document.getElementsByClassName) {
                getElementsByClassName = function (className, tag, elm) {
                        elm = elm || document;
                        var elements = elm.getElementsByClassName(className),
                                nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
                                returnElements = [],
                                current;
                        for(var i=0, il=elements.length; i<il; i+=1){
                                current = elements[i];
                                if(!nodeName || nodeName.test(current.nodeName)) {
                                        returnElements.push(current);
                                }
                        }
                        return returnElements;
                };
        }
        else if (document.evaluate) {
                getElementsByClassName = function (className, tag, elm) {
                        tag = tag || "*";
                        elm = elm || document;
                        var classes = className.split(" "),
                                classesToCheck = "",
                                xhtmlNamespace = "http://www.w3.org/1999/xhtml",
                                namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
                                returnElements = [],
                                elements,
                                node;
                        for(var j=0, jl=classes.length; j<jl; j+=1){
                                classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
                        }
                        try     {
                                elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
                        }
                        catch (e) {
                                elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0,null);
                        }
                        while ((node = elements.iterateNext())) {
                                returnElements.push(node);
                        }
                        return returnElements;
                };
        }
        else {
                getElementsByClassName = function (className, tag, elm) {
                        tag = tag || "*";
                        elm = elm || document;
                        var classes = className.split(" "),
                                classesToCheck = [],
                                elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
                                current,
                                returnElements = [],
                                match;
                        for(var k=0, kl=classes.length; k<kl; k+=1){
                                classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
                        }
                        for(var l=0, ll=elements.length; l<ll; l+=1){
                                current = elements[l];
                                match = false;
                                for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
                                        match = classesToCheck[m].test(current.className);
                                        if (!match) {
                                                break;
                                        }
                                }
                                if (match) {
                                        returnElements.push(current);
                                }
                        }
                        return returnElements;
                };
        }
        return getElementsByClassName(className, tag, elm);
};

function cacheBust(urlToLoad)
{
	var myDate = new Date();	
	if (urlToLoad.indexOf("?")==-1)
		urlToLoad = urlToLoad + "?cacheBust=" + myDate.getTime();
	else
		urlToLoad = urlToLoad + "&cacheBust=" + myDate.getTime();
	return urlToLoad;
}

function ajaxRefresh(id)
{
	loadToDiv($(id).contentFrom,$(id));
}
function findContainer(el)
{
        el=$(el);

        var parent = el.parentNode;
        while (parent!=null && parent.className.indexOf("container")==-1 && parent.className.indexOf("deletable")==-1)
        {
                parent = parent.parentNode;
        }
        return parent;

}
function removeMe(obj)
{
	var parent = findContainer(obj);
	container = findContainer(parent);
	Effect.Fade(parent,{duration: duration_fade, afterFinish: function()
			{container.removeChild(parent);}});
	
}
function ajaxLoad()
{
        var lnk = arguments[0]; //object
        var url = arguments[1]; //url
        var div = arguments[2]; //div to load into
        var hist = arguments[3];
        
        if ($(url))
        {
        	div = $(url);
        	url = lnk.href;
        }
        
        if (!$(lnk))
        {
        	url = arguments[0];
        	div = arguments[1];
        	hist = arguments[2];
        }
        else if (!$(div))
        {
                div=findContainer(lnk);
        }

        loadToDiv(url,div,hist);
        
        if ($(lnk))
        return false;
}
function ajaxFormSubmit()
{
        var fobj = arguments[0];
        var div = arguments[1];
        var method = fobj.method;
        var action = fobj.action;
	

        var vals = getFormValues(fobj);
       

        if (!$(div))
        {
                div=findContainer(fobj);
        }
        
        if ($("ajaxForm"))
        	div = $("ajaxForm");
        	
        /*$(div).innerHTML = loadingImg;*/ //for now
	//$(div).contentFrom = urlToLoad;

        //if (checkform())
                //loadToDiv(action + "?" + vals,div);
        //else
        //        return false;
        

		new Ajax.Request(action, {
		parameters: $(fobj).serialize(true),
		method: method,
		onSuccess: function(transport){
				$(div).innerHTML = transport.responseText;
				doEmbeddedJS($(div));
			}
		});
 	 
 	 
}

function loadToDiv(urlToLoad,div)
{
	var myDate = new Date();
	var el = $(div);
	if (el==null)
		el = div;
	if (el==null)
		alert("no object");
	
	el.innerHTML = "<div id='loading'>" + loadingImg + "</div>";
	
	el.contentFrom = urlToLoad;
	urlToLoad = cacheBust(urlToLoad);
	var myAjax = new Ajax.Request(urlToLoad,
	{
		method:'get',
		onSuccess: function(transport)
		{
			var response = transport.responseText || "";
			el.innerHTML = response;
			
			
			
			el.style.display='';
			doEmbeddedJS(el);				
			//dsHistory.addFunction(function() {loadToDiv(urlToLoad,div)});
		},
		onFailure: function(){ el.innerHTML = errorTxt; }
	});
}

function doEmbeddedJS(obj)
{
		window.jsCode = new Array();
		
		var scriptTags = obj.getElementsByTagName('script');
		for(var no=0;no<scriptTags.length;no++)
		{
			if (scriptTags[no].src)
			{
				var head = document.getElementsByTagName("head")[0];
				var scriptObj = document.createElement("script");		
				scriptObj.setAttribute("type", "text/javascript");
				scriptObj.setAttribute("src", scriptTags[no].src); 		
				head.appendChild(scriptObj);
			}
			else
			{
					var code = scriptTags[no].innerHTML;				
					window.jsCode[no] = code;
					setTimeout('window.eval(window.jsCode[' + no + '])',no+1);	// Has to wait because we want to make all objects part of the window object(global variables) instead of locale
			}
		}
}

function getFormValues(fobj)
{
	var str = "";
	var valueArr = null;
	var val = "";
	var cmd = "";
	for(var i = 0;i < fobj.elements.length;i++)
	{
		if (fobj.elements[i].name!=null && fobj.elements[i].name!="")
		{
			if (fobj.elements[i].type == "checkbox")
				val = fobj.elements[i].checked;
			else
				val = fobj.elements[i].value;
				
			if (fobj.elements[i].type != "radio" || fobj.elements[i].checked)
			{
				str += fobj.elements[i].name +
				"=" + escape(val) + "&";
			}
			
		}
	}
	str = str.substr(0,(str.length - 1));
	return str;
}

function clearDefault(el) {
  if (el.defaultValue==el.value)
  {
  	el.value = ""
  	el.defaultValue = "";
  }
}

function x(){}


/*
window.onload = initialize;

function initialize()
{
	dsHistory.addFunction(function(){loadToDiv("something.php","ajaxContent")});
}
*/


function successBar(message)
{
		$('resultBar').innerHTML='<div>'+message+'</div>'
		$('resultBar').setAttribute('class','successBar')
		Effect.Appear('resultBar',{duration: 0.5})
		Effect.SlideDown('resultBar',{duration: 0.5,afterFinish:function(){
			setTimeout("Effect.SlideUp('resultBar',{duration: 1})",2000);
		}})
}
function errorBar(message)
{
		$('resultBar').innerHTML='<div>'+message+'</div>'
		$('resultBar').setAttribute('class','errorBar')
		Effect.Appear('resultBar',{duration: 0.5})
		Effect.SlideDown('resultBar',{duration: 0.5,afterFinish:function(){
			setTimeout("Effect.SlideUp('resultBar',{duration: 1})",2000);
		}})
}

function showAndScroll(id)
{
	//Effect.BlindDown(id,{duration: 0.25});
	Effect.Appear(id, {duration: 0.5});
	Effect.ScrollTo(id,{speed: 10});
}

function goAway(id)
{
	if ($(id))
	{
		if ($(id).style.display!='none')
		{
			Effect.BlindUp(id,{duration: 0.5});
			Effect.Fade(id,{duration: 0.5});
		}
	}
}
function comeBack(id)
{
	//$(id).style.display='none';
	Effect.Appear(id, {duration: 0.5});
}
function appear(id)
{
	Effect.Appear(id,{duration: 0.5,from:0});
	//Effect.Highlight(id,{duration: 5.0});
}

function get_radio_value(element)
{
	for (var i=0; i < element.length; i++)
		if (element[i].checked)
			return element[i].value;
}
function check_valid_email(str){
var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
if (filter.test(str))
	return true
else{
	return false
}
}

function toggle(obj)
{
	obj = $(obj);
	
	if (obj.style.display=='none')
	{
		Effect.Appear(obj);
		Effect.BlindDown(obj);
	}
	else
	{
		Effect.Fade(obj);
		Effect.BlindUp(obj);
	}
}
