//////////////////////////////////////////////////////////////////
// ManovrareSoft Software Solutions 							//
// Copies can not be made without written consent of 			//
// the author Mark Badaracco or being soley employed by 		//
// PageBusters Development Broup however, modifications  		//
// can be made without permission								//
// Any questions or concerns can by addressed by sending an 	//
// Email to Mark.Badaracco@PageBusters.com						//	
//																//
//																//
// AJAX Javascript												//
// Site Administrator v4										//
//////////////////////////////////////////////////////////////////


//'''''''''''''''''''VARIABLES'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''	
var GlobalMethod, GlobalxmlHttp, GlobalAppend = false;
//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''	

function PopulateResponse(TheResponse, Element, evalIt)
{	
	try
	{
		if(evalIt == true)
		{
			try
			{
				eval(TheResponse);
			}
			catch(e)
			{
				alert("Problem evaluating AJAX returned javascript.");
			}
		}
		else
		{
			if (null != Element && undefined != Element && Element != "nothing" && Element != "Logout")
			{
				if (Element != "")
				{
					var DOMElement = document.getElementById(Element);
					DOMElement.innerHTML = "";
					var t = document.createElement('div');
					t.innerHTML = TheResponse;
					DOMElement.appendChild(t);	
				}
				
				//We need to eval and script tags returned.
				if(TheResponse.search(/<script/i) > -1)
				{						
					l = 0;
					newStart = 0;
					LookHere = TheResponse;
					intCloseTag = 0;

					while(LookHere.search(/<script/i) > -1)
					{
						
						intStartScript = LookHere.indexOf("<script", newStart);
						intStartCloseBrace = LookHere.indexOf(">", intStartScript);
						intCloseTag =  LookHere.indexOf("</script>", intStartCloseBrace);
						
						if((intStartCloseBrace+1) == intCloseTag)
						{
							newStart = intCloseTag;
							LookHere = LookHere.substring((newStart+9), LookHere.length);								
						}
						else
						{
							//Give us the next piece to look at
							InnerScript = LookHere.substring(intStartCloseBrace+1, intCloseTag);	
							
							//remove that same piece from above so that we don't eval it again.
							LookHere = LookHere.substring(intCloseTag+9, LookHere.length);
							
							//Get rid of pesky html comments
							InnerScript = InnerScript.replace(/<!--/,'');
							InnerScript = InnerScript.replace(/\/\/-->/,'');							
							
							if(InnerScript != '')
							{
								if(InnerScript.search(/src=/i) <= 0 && InnerScript.replace(/ /ig, "") != "")
								{
									try
									{
										if(InnerScript.search(/jQuery/i) > -1 || InnerScript.search(/$\(/i) > -1 ||  InnerScript.search(/.fancybox/i) > -1 || InnerScript.search(/asmSelect/i) > -1)
											InnerScript = 'window.' + InnerScript;
										else if(InnerScript.search(/function/i) > -1)
										{
											stripFuncStart = (InnerScript.indexOf("function ")) + 9;
											stripFuncEnd = InnerScript.indexOf("(",stripFuncStart);	
											functionName = InnerScript.substring(stripFuncStart, stripFuncEnd);
											InnerScript = InnerScript.substring(stripFuncEnd, InnerScript.length);
											InnerScript = 'window.'+functionName+ ' = function' + InnerScript;
										}
										if(InnerScript != '' )
										{
											eval(InnerScript);			
										}
									}
									catch(e)
									{
									//	alert( "Error PARSING Javascript: " + e.description + "\n\n" + InnerScript);
									}
									
									InnerScript = "";
									newStart = 0; //Reset position to zero so I can go through the response after I removed the script tag
							
								}
								else
									newStart = 0; //Reset position
								
							}
						}
						l++;
					}

				}
			}
			else if(Element == "Logout")
				window.location = "Default.php";			
			
			else if(Element != "nothing")
				window.location = window.location;
		}
	}
	catch(e)
	{
		var error = e.description;
		alert("Problem populating the response:\n\r" + error);
	}
}

	

function ABasic(strURL, strElement)
{  
	try
	{	
		var xmlHttp, blnAppend=false;
		xmlHttp = GetXmlHttpObject();
		xmlHttp.onreadystatechange=function()
		{
			if(xmlHttp.readyState == 4 && xmlHttp.status == 200) 
				PopulateResponse(xmlHttp.responseText, strElement, false);
		}
					
		var url = strURL + "&SID=" + IDMaker();
		xmlHttp.open("GET", url, true);
		xmlHttp.send(null);	
	}
	catch(e)
	{
	}		
}
	
function AWait(strURL, strElement)
{  
	try
	{	
		var xmlHttp, blnAppend=false;
		xmlHttp = GetXmlHttpObject();					
		var url = strURL + "&SID=" + IDMaker();
		xmlHttp.open("GET", url, false);
		xmlHttp.send(null);	
		PopulateResponse(xmlHttp.responseText, strElement, false);
	}
	catch(e)
	{

	}		
}	


//Advanced Ajax post.  Will eval() javascript.  But you can not mix.
function advPost(strUrl, nvParams, strElement, evalIt)
{	
	nvParams = CleanParams(nvParams);
	try
	{
		var xmlHttp=GetXmlHttpObject();	
		if(null != xmlHttp)
		{
			strUrl = strUrl + "&SID=" + IDMaker();
			xmlHttp.open("POST", strUrl, true);
			xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			xmlHttp.setRequestHeader("Content-length", nvParams.length);
			xmlHttp.setRequestHeader("Connection", "close");
			xmlHttp.onreadystatechange = function()
			{
				if(xmlHttp.readyState == 4 && xmlHttp.status == 200) 
					PopulateResponse(xmlHttp.responseText, strElement, evalIt);
					
			};
			xmlHttp.send(nvParams);
			
		}			
	}
	catch(e)
	{
	}
}

//Advanced Ajax post.  Will eval() javascript.  But you can not mix.
function advPostWait(strUrl, nvParams, strElement, evalIt)
{	
	nvParams = CleanParams(nvParams);
	try
	{
		var xmlHttp=GetXmlHttpObject();	
		if(null != xmlHttp)
		{
			strUrl = strUrl + "&SID=" + IDMaker();
			xmlHttp.open("POST", strUrl, false);
			xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			xmlHttp.setRequestHeader("Content-length", nvParams.length);
			xmlHttp.setRequestHeader("Connection", "close");
			xmlHttp.onreadystatechange = function()
			{
				if(xmlHttp.readyState == 4 && xmlHttp.status == 200) 
					PopulateResponse(xmlHttp.responseText, strElement, evalIt);
					
			};
			xmlHttp.send(nvParams);
			
		}			
	}
	catch(e)
	{
	}
}
	
function AAdv(strURL, strElement)
{  
	try
	{	
		var xmlHttp, blnAppend=false;
		xmlHttp = GetXmlHttpObject();
		xmlHttp.onreadystatechange=function()
		{
			if(xmlHttp.readyState == 4 && xmlHttp.status == 200) 
				PopulateResponse(xmlHttp.responseText, strElement, true);
				
		}
					
		var url = strURL + "&SID=" + IDMaker();
		xmlHttp.open("GET", url, true);
		xmlHttp.send(null);	
	}
	catch(e)
	{

	}		
}


function GetXmlHttpObject()
{
	var xmlHttp=null;
	try
	{
		xmlHttp=new XMLHttpRequest();
	}
	catch (e)	
	{
		try
		{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try
			{
				xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(e)
			{
				return null;
			}
		}
	}
	return xmlHttp;
}

	
function CleanParams(frmString)	
{
	try
	{			
		if((Left(frmString,1) == "?") || (Left(frmString,1) == "&"))
			frmString = Right(frmString,String(frmString).length-1);	

		return frmString;
	}
	catch(e)
	{

	}
}


function Left(str, i)
{
	try
	{
		if(i <= 0)
			return null;	

		else if(i > String(str).length)
			return str;
		
		else
			return String(str).substring(0,i);
		
	}
	catch(e)
	{

	}			
}	
	
	
function Right(str, i)
{
	try
	{
		if(i <= 0)
			return null;	
		else if(i > String(str).length)
			return str;
		else
			{
				var xLen = String(str).length;			
				return String(str).substring(xLen, xLen - i);
			}
	}
	catch(e)
	{

	}	
}



function IDMaker()
{
	try
	{
		return Left(Math.random(),4);
	}
	catch(e)
	{

	}		
}



function CheckDynErrors()
{
	var Form = document.getElementById("myForm");	
	
	if(undefined != Form && null != Form)
	{
		var ErrorMessage = '';		
		var arrID = (Form.ReqdFields.value).split("~");
		var arrTxt = (Form.ReqdText.value).split("~");
		var lngth = (arrID.length-1);
		var firstObject = '';
		
		for (i=0;i<=lngth;i++)
		{
			if(undefined != document.getElementById(arrID[i]) && null != document.getElementById(arrID[i]) )
			{
				if(DetermineValue(document.getElementById(arrID[i]), document.getElementById('type'+arrID[i]).value) == false)
				{				
					if(ErrorMessage == '')
						document.getElementById(arrID[i]).focus();
					
					highlightErrors(document.getElementById(arrID[i]));		
					
					ErrorMessage += "\"" + arrTxt[i] + "\" is not defined or incorrectly formatted.\n";
					
					
				}
				else if(arrID[i] == "ContactCaptcha")
				{
					if(url.search(/localhost/i) > 0 || url.search(/msws1/i) > 0 || url.search(/mspcadmin/i) > 0 )
						AWaitaddon = "";
					else
						AWaitaddon = "/";
					
					AWait(AWaitaddon + "Common/capchaCheck.php?val=" + document.getElementById(arrID[i]).value, "capVal");
					
					if(document.getElementById("capValInput").value != "true")
						ErrorMessage += "\"" + arrTxt[i] + "\" is incorrect.\n";	
				}
			}
			else	
				ErrorMessage += "\"" + arrTxt[i] + "\" is not defined.\n";
			
			
		}
		
		if (ErrorMessage != "")
		{
			alert("The following errors must be corrected before we will accept your request:\n\n" + ErrorMessage + '\nPlease review and make corrections as neccesary.');
			return false;			
		}
		else
			return true;
	}
	else
		alert("An error occured. Please contact us by phone.");	
	
}


function highlightErrors(obj)
{
	obj.style.backgroundColor ='yellow';
}


function DetermineValue(obj, strType)
{

	switch(strType)
	{
		case "select":
		case "selectmultiple":
		case "states":
			return Select(obj);
			break;
			
		case "textbox":	
		case "readonly":	
		case "textarea":	
		case "date":			
		case "captcha":	
			
			return Textbox(obj);
			break;	
			
		case "checkbox":	
			return Checkbox(obj);
			break;

		case "radio":	
			return Radio(obj);
			break;
		
		default: 
			return false;
			break;
	}
	
}

function Textbox(obj)
{
	if(obj.value != "")
	{
		if(obj.id == 'UpdateMins')
		{
			if(parseInt(obj.value))
				return true;
			else
				return false;
		}
		else
			return true;	
	}
	else
		return false;
}

function Radio(obj)
{
	if(!obj)
		return "";
	
	radList = document.getElementsByName(obj.name);
	var radioLength = radList.length;

	for(var i = 0; i < radioLength; i++) 
	{
		if(radList[i].checked) 
			return true;
		
	}
	return "";
}

function Checkbox(obj)
{
	var Selected = false;
	for (var i=0; i < obj.length; i++)
	{
		if (obj[i].checked && Selected == false)
			Selected = true;
	}

	return Selected;
}

function Select(obj)
{
	if(obj.selectedIndex > 0)
	{
		if(obj.options[obj.selectedIndex].value != "")
			return true;
		else
			return false;
	}
	else
		return false;
}



//Simple JS loop to process forms submitted with AJAX
function CheckAjaxForm(url, element, formName, Post)
{	

	if (typeof Post == "undefined") 
		Post = false;

	if(CheckDynErrors())
	{
	
		//var Dimmer = document.getElementById("dim");
		//if(undefined != Dimmer)
		//	Dimmer.className = 'divShow';
		
		thisthing = function (url, element, formName){
			var Form = document.getElementById(formName);
			var params = "";
			var newURL = "";
			var x = 0;	
			
			intFormEl =  url.indexOf("Form=true", 0);
			
			if(intFormEl> 0 )
				url = url.substring(0, intFormEl-1);
		
			newURL = url + "&Form=true";
			var CurrentCheckGroup = "";
			for(i=0; i<Form.elements.length; i++)
			{
				if((Form.elements[i].id).search(/asmSelect/i) < 0 && (Form.elements[i].id).search(/ReqdText/i) < 0 && (Form.elements[i].id).search(/ReqdFields/i) < 0)
				{
					x = 0;
					if(Form.elements[i].type == "text" || Form.elements[i].type == "textarea" || Form.elements[i].type == "hidden"  || Form.elements[i].type == "readonly" )
					{	
						if(Form.elements[i].id =='UpdateMins')
						{
							params += "&" +Form.elements[i].id + "=";
							
							if(parseInt(Form.elements[i].value))
								params += parseInt(Form.elements[i].value);		
							else
								params += 0;	
						}
						else if(Form.elements[i].value != '')
						{
							params += "&" +Form.elements[i].id + "=";
							params += clean(Form.elements[i].value);						
						}
					}
					else if(Form.elements[i].type == "radio")
					{
						if(Form.elements[i].checked)
						{
							params += "&" +Form.elements[i].id + "=";
							params += clean(Form.elements[i].value);
						}
					}
					
					else if(Form.elements[i].type == "checkbox")
					{
						if(Form.elements[i].checked == true)
						{
							if(CurrentCheckGroup == "") // First loop
							{ 
								CurrentCheckGroup = Form.elements[i].id;
								params += "&" +Form.elements[i].id + "="; // Start new param
								chkGroup = 0										
							}
							else if(CurrentCheckGroup == Form.elements[i].id)
							{	
							
							}
							else if(CurrentCheckGroup != Form.elements[i].id)
							{
								CurrentCheckGroup = Form.elements[i].id;
								params += "&" +Form.elements[i].id + "="; // Start new param
								chkGroup = 0					
							}
							
							if(chkGroup > 0)
								params += ',';
							
							params += clean(Form.elements[i].value);	
						
							chkGroup++;
						}
					}		
					else if(Form.elements[i].type == "select-one")
					{
						params += "&" +Form.elements[i].id + "=";
						params += clean(Form.elements[i].options[Form.elements[i].selectedIndex].value);
					}
					else if(Form.elements[i].type == "select-multiple")
					{
						
						tempFrm = Form.elements[i];
						lc = 0;
			
						for (x=0; x<tempFrm.length; x++)
						{
							
							if (((Form.elements[i].type == "select-multiple") && tempFrm[x].selected))
							{
								comma = '';
								if(lc>0)
									comma =',';
								else
									params += "&" +Form.elements[i].id + "=";
									
								params += comma + tempFrm[x].value;
								lc++;	
							}
						}		
					}
				}
			}
			
			if(params != "")
			{
				if(Post)
					advPostWait(newURL, params, element, false)
				else
					AWait(newURL + params, element);

			}
				
		}(url, element, formName, Post);
		
		//if(undefined != Dimmer)
		//	Dimmer.className = 'divHide';
	}
	
	return false;
} 

	

