/*
 Copyright (c) 2006 Jacob Novero (http://popgun88.org/	T
 This is a list of cool dyanamic DOM functions that I've created to make the site more functional. 
  
 checkExpiration() -> a function that checks if a session expired for AJAX functions. If returns TRUE 
 then it redirects the user to the Login page.
 
 collapse() -> Collapses/Uncollapses a html element.
 
 resetField() -> This resets the fields that aren't being validated.
 
 validateField() -> This validates form fields.
 
 getFormValues() -> This function, essential for AJAX, parses form values and arranges them into a GET string.
 
*/
	

function confirmMsg(msg){
	if(!confirm(msg)){
		return false;
	} else {
		return true;
	}
}


function checkExpiration(data) {
	if(data == "[logout]") {
		window.location = "login.php";
		return true;
	}
	else {
		return false;
	}
}



function loading(element) {
  						
	var element = document.getElementById(element);
  						
	element.innerHTML = "<div class='loading'><img src='/i/loading.gif' alt='loading' /></div>";
}

function unload(element)
{
	var element = document.getElementById(element);
	element.innerHTML = '';	
}

function collapse(div,call) {

	
	element = document.getElementById(div);
		
	
	if(element.style.display == "none") {
		var collapse = 1
		element.style.display = "block";		
	}
	else {
		var collapse = 0
		element.style.display = "none";		
	}
	
	var children = call.childNodes;
		
	if(children)
	{
		for(i=0;i<children.length;i++) {
			if(children[i].className == "collapseImg") {
				
				if(collapse == 1) 
				{
					children[i].src = "i/icons/collapse.gif";
					children[i].title = "Collapse";
					children[i].alt = "Collapse";

				}
				else {
					children[i].src = "i/icons/collapse_un.gif";
					children[i].title = "Uncollapse";
					children[i].alt = "Uncollapse";
				}
			}
		}
	}
}



function resetField(field) {
	
	element = document.getElementById(field.name);
	
	label = document.getElementById(field.name + "_label");
	
	element.className = "field_input";

	label.className = "field_label";

}


function verifyField(field) {
	
	var valid = false;

	label = document.getElementById(field.name + "_label");
	
	if(!label)
		return 0;
	else if(label == null)	
		return 0;
	
	
	if(label.title)
		var vargs = label.title.split("|");
	else
		var vargs = field.title.split("|");
		
		
	var type = vargs[0];
	
	if(vargs[1]) {
		var args = vargs[1].split("-");
	}	
	
	
	if(!type) 
		type = "all";
	
	
	switch(type) {
		case "alpha":
			refno1=/[1-9]{1}/;
			refno2Good = "[A-Za-z]";
		break;
		case "int":
			refno1=/[A-Za-z\.]{1}/;
			refno2Good = "[0-9]";
		break;
		case "float":
			refno1=/[A-Za-z]{1}/;
			refno2Good = "[0-9\.]";
		break;
		case "phone":
			refno1=/[A-Za-z]{1}/;
			refno2Good = "[0-9x\-]";
			args = new Array();
			args[0]=9;
			args[1]=15;
			
		break;
		case "all":
			refno1=/[\:]/;
			refno2Good = "[A-Za-z0-9]";
		break;
	}
	
	if(args) {
		
		if((args[0] > 0)&&(args[1] == undefined)) 
		{
			refno2 = new RegExp(refno2Good + "{"+ args[0] + "}");
		}
		else if((args[1] > 0)&&(args[0] > 0))  
		{
			refno2 = new RegExp(refno2Good + "{"+ args[0] + "," + args[1] + "}");
		}
		else {
			refno2 = new RegExp(refno2Good);
		}
	}
	else 
	{
		refno2 = new RegExp(refno2Good + "{1}");
	}
	
	
	
	if(field.tagName == "SELECT")
	{
		var val = field.options[field.selectedIndex].value;
		
		
	}
	else	
		var val = field.value;
		
	
	
	if((vargs[2] == "no")&&((val==null||val==""))) 
	{
		valid = true;			
	}
	else {
		switch(type) {
			case "alpha":
			case "int":
			case "float":
			case "all":
			case "phone":
				if(!refno1.test(val)) 
					if(refno2.test(val)) 
						valid = true;
						
			break;
			case "email":
			 
				apos=val.indexOf("@")
				dotpos=val.lastIndexOf(".")
				
				if (apos<1||dotpos-apos<2) 
				{
					valid = false;
				}
				else {
					valid = true;
				}
			break;
		}
	}	
		
	if((field.tagName == "SELECT")&&(val==0))
		valid=false;

	
	if(valid) 
	{
		$(field).removeClass('input_error');
		$(label).removeClass('label_error');
		return 0;
	}
	else {
		$(field).addClass('input_error');
		$(label).addClass('label_error');
		field.focus();
		return 1;
	}
	
}


function verifyFields(myform,errors) {
   var errors = errors;
	
   
   var children = myform.elements;
   for (var i = 0; i < children.length; i++) 
   {
   		switch(children[i].tagName) {
			case "INPUT":
			case "SELECT":
            case "TEXTAREA":
            	
            	switch(children[i].type) {
            		case "button":
            		case "submit":
            		case "img":
            		break;
					case 'checkbox':
					case 'radio':
					break;
					case 'text':
            		case "hidden":
					default:
						
						var num = verifyField(children[i]);
						errors =  errors + parseInt(num);
					break;
            	}
  		}
   	
   };
   
   
   
   return errors;
	
}


function getFormValues(fobj,valFunc)  {

       var str = "";

       var valueArr = null;

       var val = "";

       var cmd = "";

       for(var i = 0;i < fobj.elements.length;i++)

       {

           switch(fobj.elements[i].type)

           {
           	  
           	   case "hidden":
               case "text":
               case "textarea":

               case "password":
                    if(valFunc)

                    {

                        //use single quotes for argument so that the value of

                        //fobj.elements[i].value is treated as a string not a literal

                        cmd = valFunc + "(" + 'fobj.elements[i].value' + ")";

                        val = eval(cmd)

                    }

                    str += fobj.elements[i].name +

                     "=" + escape(fobj.elements[i].value) + "&";

               break;
               
               case "select-one":

                    str += fobj.elements[i].name +

                    "=" + fobj.elements[i].options[fobj.elements[i].selectedIndex].value + "&";

                    break;
                    
               case "radio":    
               case "checkbox":

               		if(fobj.elements[i].checked) {
                    	 str += fobj.elements[i].name + "=" +  fobj.elements[i].value + "&";
                    }
                    

                   break;

           }

       }

       str = str.substr(0,(str.length - 1));

       
       
       return str;

}
