/* JAVASCRIPT UTILITY METHODS
   Karol Golka
   May 12, 2007
   http://webstruments.com   
*******************************/

// GLOBALS
String.prototype.trim = 
function () {
    return this.replace(/^\s*|\s*$/,"");
}

/* CurrentNav
--------------------------- */
function CurrentNav(nav)
{
    $(nav).className = 'current';
}

/* Toggle Checkboxes
--------------------------- */
function ToggleCheckboxes()
{
    // loop thru and instantiate lightwindow
     // manually initialize lightboxes
     chxboxes = $("content").getElementsByClassName("chx");
     for(i = 0; i < chxboxes.length; i++) {
	    // toggle checked
	    $(chxboxes[i]).checked = !$(chxboxes[i]).checked;
    }
}

/* Grab Form - Generic Form => XML method (DOESN'T HAVE TO BE A FORM)
--------------------------------------------------------------------------------- */
function GrabForm(formname)
{
    var debugindex = 0;
    
    // grab 'form' container (doesn't have to be an actual form)
    var myForm = $(formname).descendants();
    
    // BEGIN BUILDING XML
    formXML = Builder.node('form');	
	
    // loop thru form inputs, switch, and build XML
    for(var i=0; i<myForm.length; i++) {
        
        // get element
	    ele = myForm[i];
	    
	    // debug
	    
	    
	    // switch and build
	    switch(ele.tagName.toLowerCase()) {
		    case "hidden":
		        // build form element XML
        	    formXML.appendChild(Builder.node(ele.name.toUpperCase(), ele.value));
        	    break;
		    case "button":
			    break;
		    case "textarea":
			    // build form element XML
        	    formXML.appendChild(Builder.node(ele.name.toUpperCase(), ele.value));
			    break;
		    case "select":
		        // build form element XML
        	    formXML.appendChild(Builder.node(ele.name.toUpperCase(), $F(ele.name)));
			    break;	
		    case "input":
		        switch(ele.type) {
				    case "text":
				    case "hidden":
				    case "password":
				        // build form element XML
//				        if (debugindex <= 2)
//				        {
//				            debugindex++;
//				            alert(ele.name.toUpperCase());
//        	            }
        	            formXML.appendChild(Builder.node(ele.name.toUpperCase(), $F(ele.name)));
			            break;	
				    case "checkbox":
				        // check if "checked"
				        if (ele.checked)
					        // build form element XML
        	                formXML.appendChild(Builder.node(ele.name.toUpperCase(), ele.value));
					    break;
				    case "radio":
				        // check if "checked"
				        if (ele.checked)
					        // build form element XML
        	                formXML.appendChild(Builder.node(ele.name.toUpperCase(), ele.value));
					    break;
				    default:
					    break;
			    } // end switch
				
			    break;
		    default:
			    break;
	    } // end switch
    } // end for loop
	
	 try
    {
        // SAFARI FIX (or rather anti-fix)
        var xml = '<form>' + tagsToUpperCase(formXML.innerHTML) + '</form>';
    }
    catch(err)
    {
        alert(err.description);
        var xml = '<form>' + formXML.innerHTML + '</form>';
    }
	
//    // finish xml
//    var xml = '<form>' + formXML.innerHTML + '</form>';
	
    // debug
    //$('debug').style.display = 'block';
    //$('debug').value = xml; // innerHTML works for FireFox but not IE
     
    
    // ajax
    return xml;	    	

} // end GrabForm()

 
 

/* Get URL Parameter
--------------------------- */
function gup( name )
{
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var tmpURL = window.location.href;
  var results = regex.exec( tmpURL );
  if( results == null )
    return "";
  else
    return results[1];
}

/* URL decode / encode
--------------------------- */
function urldecode(text) {

    text= text.replace(/\%2f/g,"/");
    text= text.replace(/\%3f/g,"\\");
    text= text.replace(/\%3d/g,"=");
    text= text.replace(/\%26/g,"&");
    return text;
}
function urlencode(text) {

    text= text.replace(/\//g,"%2f");
    text= text.replace(/\?/g,"%3f");
    text=  text.replace(/=/g,"%3d");
    text=   text.replace(/&/g,"%26");
    return text;
}

/* ENTER Submits
--------------------------- */
function ENTERSubmits(func, e)
{
    if(!e) var e = window.event;
    if(e.keyCode) key = e.keyCode;
    else if(e.which) key = e.which;

    if(key == 13)
    {
        setTimeout(func+'()', 1);
    }
    else
        return true;
}

/* tagsToUpperCase
   Modified http://shauninman.com/ JS
--------------------------- */
function tagsToUpperCase(html)
{
    html = html.replace(/([a-z])s*(=)s*("|')/gi, '$1$2$3');
    if (parts = html.match(/(<\/?[a-z][a-z0-9]*| [a-z]+=)/gi))
    {
        for (var i = 0; i < parts.length; i++)
        {
            var part = parts[i];
            html = html.replace(new RegExp(part, 'g'), part.toUpperCase());
        };
    };
    return html;
}


/* List
--------------------------------------------------------------------------------- */
function List(entity)
{	
	// spinner
	$('iSpinner').show();
	
	// call
    CT.List(entity, List_callback);

}

// CALLBACK
function List_callback(res)
{ 
	// spinner
	$('iSpinner').hide();
	
	if (res.value[0] != "0")  
		// show error 
		alert(res.value[1]);
	else {   
		// variables
		var div = 'divList'+res.value[1]+'s';
		
		// inject
		$(div).innerHTML = res.value[2];		
		
		// cycle and activate lightwindows manually
//		lbox = $(div).getElementsByClassName("lightwindow");
//		for(i = 0; i < lbox.length; i++) {
//			if(myLightWindow)
//				myLightWindow.createWindow(lbox[i]);
//		}
	}
}

/* Deactivate
--------------------------------------------------------------------------------- */
function Deactivate(id, entity)
{
    if(confirm("Are you sure you want to DEACTIVATE this user?"))  
    {	
	    // spinner
	    $('iSpinner').show();
    	
	    // call
        CT.Deactivate(id, entity, Deactivate_callback);
    }
}

// CALLBACK
function Deactivate_callback(res)
{ 
	// spinner
	$('iSpinner').hide();
	
	if (res.value[0] != "0")  
		// show error 
		alert(res.value[1]);
	else {   
	
		// reload
        setTimeout('List("'+res.value[1]+'");', 1);
	}
}