// JavaScript Document

var teignJS = {
	  padlength: function (element, what){
		  var output=(what.toString().length==1)? "0"+what : what
		  return output
	  },
	  
	  relSlideDown: function (element) {
		if(maxMargin < topMargin) {
			topMargin = topMargin - 142;
			$(element).morph({marginTop: topMargin+'px'})
		}
	},
	  
	  
	  //Macromedia functions -- keep them out the way
	  MM_preloadImages: function (){ //v3.0
  			var d=document; 
			if(d.images){ 
				if(!d.MM_p) d.MM_p=new Array();
    			var i,j=d.MM_p.length,a=teignJS.MM_preloadImages.arguments; 
				for(i=0; i<a.length; i++){
    				if (a[i].indexOf("#")!=0){
						d.MM_p[j]=new Image;
						d.MM_p[j++].src=a[i];
					}
				}
			}
		},

 		MM_swapImgRestore: function() { //v3.0
  			var i,x,
			a=document.MM_sr; 
			for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++){
				x.src=x.oSrc;
			}
		},

		MM_findObj: function (n, d) { //v4.01
  			var p,i,x;  if(!d) {d=document; }
			if((p=n.indexOf("?"))>0&&parent.frames.length) {
    			d=parent.frames[n.substring(p+1)].document; 
				n=n.substring(0,p);
			}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=teignJS.MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=$(n); return x;
},

MM_swapImage: function () { //v3.0
  var i,j=0,x,a=teignJS.MM_swapImage.arguments; document.MM_sr=new Array; 
  for(i=0;i<(a.length-2);i+=3){
   if ((x=teignJS.MM_findObj(a[i]))!=null){
	   document.MM_sr[j++]=x; 
	   if(!x.oSrc) {x.oSrc=x.src; x.src=a[i+2];}
	   }
	  }
}
}

// JavaScript Document

//David Aspden Dec 08

//Can we force actions to Ajax calls for myForms?

function overRideSubmit(myForm,targetDivId){
	if(quickValidate(myForm)){
		if(typeof(targetDivId) == "string"){
				var targetDiv = $(targetDivId);
		}
		else{
			targetDiv = targetDivId; 
		}
		var action = myForm.action;
		var method = myForm.method;
		//So we know what would have happened, re route through the ajax request.
		if(method=="get"){
			var getString = buildParameterString(myForm);
			if(action.indexOf('?') == -1){
				getString = '?'+getString;
			}
			else{
				getString = '&'+getString;
			}
			makeRequesttoObject(action+getString, targetDiv);
		}
		if(method=="post"){
			var postStr = buildParameterString(myForm);
			makeRequestPOST(action, postStr, targetDiv);
		}
	}
	return false;
}

//This will be the getString or PostParameters
function buildParameterString(myForm){
	var parameterString="";
	var radioParams = new Object;
	for(i=0; i<myForm.length; i++){
			if(myForm.elements[i].type !='submit' | myForm.elements[i].type !='reset' | myForm.elements[i].type !='button' | myForm.elements[i].type !='image' | myForm.elements[i].type !='file'){
			if(myForm.elements[i].type =='text' | myForm.elements[i].type =='hidden'){
				parameterString+=myForm.elements[i].name+'='+encodeURI(myForm.elements[i].value)+'&';
			}
			if(myForm.elements[i].type =='radio'){
				//Radio Buttons ->With same name...
						if(!radioParams[myForm.elements[i].name]){
							//Ensure we capture the fact that it is there.
							radioParams[myForm.elements[i].name] = "";
						}
						if (myForm.elements[i].checked==true){
							//Capture value
							radioParams[myForm.elements[i].name] = encodeURI(myForm.elements[i].value);
      					}
						else{
							//We do not add to the radioParams object
						}
						
				//Delay Adding Rad Vals until the end in case radio values are in different places
			}
			if(myForm.elements[i].type =='checkbox'){
				//Checkbox Checks
				if (myForm.elements[i].checked == true){
					var check_val = 1;
      			}
				else{
					var check_val = 0;
				}
				//
				parameterString+=myForm.elements[i].name+'='+encodeURI(check_val)+'&';
			}
		}
		
	}
	//parse Radio Array
	var radios="";
	for(prop in radioParams){
		radios += prop+'='+radioParams[prop]+'&';
	}
	urlString = parameterString.substr(0,parameterString.length-1)+'&'+radios
	
	return urlString.substr(0, urlString.length-1);
}
//We just check that things are actually filled in.
function quickValidate(myForm){
	for(i=0; i<myForm.length; i++){
		if(myForm.elements[i].parentNode.tagName == 'DIV'){
			if((myForm.elements[i].parentNode.className == "required" | myForm.elements[i].parentNode.className == 'required_false') && myForm.elements[i].value ==''){
				myForm.elements[i].parentNode.className = "required_false"
				return false;	
			}
			if(myForm.elements[i].parentNode.className == 'required_false' && myForm.elements[i].value !=''){
					myForm.elements[i].parentNode.className = 'required';
			}
		}
		if(myForm.elements[i].parentNode.tagName == 'LABEL'){
			if(myForm.elements[i].parentNode.parentNode.tagName == 'DIV'){
				if((myForm.elements[i].parentNode.parentNode.className == 'required' | myForm.elements[i].parentNode.parentNode.className == 'required_false') && myForm.elements[i].value ==''){
					//Should be a div
					myForm.elements[i].parentNode.parentNode.className = 'required_false';
					return false;	
				}
				if((myForm.elements[i].parentNode.parentNode.className == 'required_false') && myForm.elements[i].value !=''){
					myForm.elements[i].parentNode.parentNode.className = 'required';
				}
			}
		}
		
	} //For Loop
	return true;
}

// JavaScript Document

   var http_request = false;
   function makeRequestPOST(url, parameters, target) {
      http_request = false;
      if (window.XMLHttpRequest) { // Mozilla, Safari,...
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) {
         	// set type accordingly to anticipated content type
            //http_request.overrideMimeType('text/xml');
            http_request.overrideMimeType('text/html');
         }
      } else if (window.ActiveXObject) { // IE
         try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
      if (!http_request) {
         alert('Cannot create XMLHTTP instance');
         return false;
      }
      
      http_request.onreadystatechange = function() {alertContentsPost(http_request, target);}
      http_request.open('POST', url, true);
      http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      http_request.setRequestHeader("Content-length", parameters.length);
      http_request.setRequestHeader("Connection", "close");
      http_request.send(parameters);
   }

   function alertContentsPost(http_request, target) {
      if (http_request.readyState == 4) {
         if (http_request.status == 200 || http_request.status == 302) {
			var wait = $(target);
            var result = http_request.responseText;
            wait.innerHTML = result;            
         } else {
            $(target).innerHTML = "A Server Error Occured: PostStr " + poststr
         }
      }
	  else{
			var wait = $(target)
			wait.innerHTML = "<img border=0 src=Resources/Images/Theming/green-waiting.gif /><br/><br/>Loading. If this page does not show the menu, please contact the WebTeam.";
		}
   }
   
