
// Hook into window load:
//var oWinLoadPrev = null;
//if (window.onload != null)
//	oWinLoadPrev = window.onload;
window.onload = function()
{
	// Test for load events:
	var arLoadEvts = document.getElementsByTagName("ataye:event");
	if (arLoadEvts.length == 0)
		arLoadEvts = document.getElementsByTagName("ataye-event");
	for(var idx=0; idx<arLoadEvts.length; idx++)
	{
		try
		{
			var evt = arLoadEvts[idx];
			if (evt.getAttribute("attach") != 'onload')
				continue;
			eval(evt.getAttribute("function"));
		}catch(e){ alert(e); }
	}
	try{
		window_load();
	}catch(e){}
//	if (typeof(oWinLoadPrev) == 'function')
//		oWinLoadPrev();
}

// Add jquery:
document.write("<scr" + "ipt src='/RipeCMS/scripts/jquery-1.3.2.js'></scr" + "ipt>");

//$(document).ready(function()
//{
//	// test:
//	alert('ready');
//});

// Code:
var Calendar = {
	oPopupWindow : null
	
	, Show : function(txt)
	{
		var obj = document.getElementById(txt);
		var sURL = "/RipeCMS/components/calendar.asp?lang=AU&dt=" + obj.value.replace(/\//g, "-") + "&rslt=" + txt;
		
		oPopupWindow = WindowOpenCentre(sURL, 255, 200, 'no', 'no', 'no');
	}
	
	, LoadResult : function(dt, sRsltID)
	{
		try{
			var obj = document.getElementById(sRsltID);
			if(dt != null && dt != undefined)
			{
				if(obj != null)
					obj.value=dt;
			}
			oPopupWindow.close();
		} catch(e) { alert(e); }
	}
	
	, RenderDateControl : function(ID, InitialValue)
	{
		var sSCom = String.fromCharCode(34);
		document.write("<input type='text' value='" + InitialValue + "' name='" + ID + "' id='" + ID + "' onClick='Calendar.Show(this.id);'/>");
		document.write("&nbsp;<input name='" + ID + "' type='button' onClick='Calendar.Show(" + sSCom + ID + sSCom + ");' value='...' />");
	}
}

/* Javascript forms helper */
var FormsHelper = {
	IsValid: false
	, LoadedHTMLScripts: false
	, _LiveSubmitCallback: null
	
	// Validates a text field, shows message if empty.
	, ValidateTextField : function(CtrlID, ValMessage)
	{
		var oCtrl = document.getElementById(CtrlID);
		if (oCtrl)
			if (oCtrl.value == '')
			{
				alert(ValMessage);
				oCtrl.focus();
				return false;
			}
		return true;
	}
	
	, SubmitFormAction : function(FormID, Action, ActionValue)
	{
		if (!$get(FormID).hdAction){
			var e = document.createElement("input");
			e.setAttribute("type","hidden");
			e.setAttribute("id","hdAction");
			e.setAttribute("name","hdAction");
			$get(FormID).appendChild(e);
		}
		if (!$get(FormID).hdActionValue){
			var e = document.createElement("input");
			e.setAttribute("type","hidden");
			e.setAttribute("id","hdActionValue");
			e.setAttribute("name","hdActionValue");
			$get(FormID).appendChild(e);
		}

		$get(FormID).hdAction.value = Action;
		$get(FormID).hdActionValue.value = ActionValue;
		$get(FormID).submit();		  
	}
	
	, ValidateEmail : function(emailStr) {
		
		// checks if the e-mail address is valid
		var emailPat = /^(\".*\"|[A-Za-z0-9\_][A-Za-z0-9\.\-\_]*)@(\[\d{1,3}(\.\d{1,3}){3}]|([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,3})$/; //"
		var matchArray = emailStr.match(emailPat);
		if (matchArray == null) {
			//field.select();
			//field.focus();
			alert("Please enter a valid Email address.\n(check the '@' and '.' characters)");
			return false;
		}
		
		// make sure the IP address domain is valid
		var IPArray = matchArray[2].match(/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/);
		if (IPArray != null) {
			for (var i=1; i<=4 ;i++) 
			{
				if (IPArray[i]>255) 
				{
					//field.select();
					//field.focus();
					alert("Please enter a valid destination IP address.")
					return false;
				}
			}
		}
		return true;
	}
	
	, SetSubmit: function(Bool) {
		FormsHelper.IsValid = Bool;
		return Bool
	}
	
	
	// Hidden form submitting:
	, RegisterLiveSubmit: function(FormID, SubmitCallback)
	{
		var oFrame = $get('fmSubmitter');
		if (!oFrame || oFrame == undefined)
		{
			oFrame = document.createElement("iframe");
			oFrame.setAttribute("id","fmSubmitter");
			oFrame.setAttribute("name","fmSubmitter");
			oFrame.setAttribute("height","1");
			oFrame.style.visibility = "hidden";
			oFrame.style.height = "1";
			document.body.appendChild(oFrame);
		}
		
		this._LiveSubmitCallback = SubmitCallback;
		
		// Mozilla, Opera and webkit nightlies currently support this event
		if ( document.addEventListener ) {//alert('moz');
			oFrame.removeEventListener("load", FormsHelper._DoLiveSubmitCallback, false);
			oFrame.addEventListener("load", FormsHelper._DoLiveSubmitCallback, false);
	
		// If IE event model is used
		} else if ( document.attachEvent ) {//alert('ie');
			oFrame.detachEvent("onload", FormsHelper._DoLiveSubmitCallbackIE);
			oFrame.attachEvent("onload", FormsHelper._DoLiveSubmitCallbackIE);
			
		}
		$get(FormID).target = oFrame.id;
	}
	, _DoLiveSubmitCallback: function(){ 
		if (FormsHelper.IsValid)
		{
			var sRtn = $get("fmSubmitter").contentDocument.body.innerHTML;
			sRtn = sRtn.replace(/^\s+|\s+$/g,"");
			FormsHelper._LiveSubmitCallback(sRtn); 
			//SubmitCallback($get("fmSubmitter").contentDocument.body.innerHTML); 
		}
	}
	, _DoLiveSubmitCallbackIE: function(){ 
		if (FormsHelper.IsValid)
		{
			var sRtn = $get("fmSubmitter").contentWindow.document.body.innerHTML;
			sRtn = sRtn.replace(/^\s+|\s+$/g,"");
			FormsHelper._LiveSubmitCallback(sRtn);
			//SubmitCallback($get("fmSubmitter").contentWindow.document.body.innerHTML);
		}
	}
	
	
	// Helper Methods
	, ReloadPage: function() {
		document.location.href = document.location.href;
	}
	
	, OpenWindow: function(url,wd,hg,ov,p,opt)
	{
		// Has scripts??
		/*if (!FormsHelper.LoadedHTMLScripts)
		{
			document.write("<scr" + "ipt src='/RipeCMS/HTMLEditor/scripts/innovaeditor.js'></scr" + "ipt>");
			FormsHelper.LoadedHTMLScripts = true;
		}*/
		var id = "ID"+(new Date()).getTime();
		var f = new ISWindow(id);
		f.iconPath = "/RipeCMS/HTMLEditor/scripts/icons/";
		f.show({width:wd+"px", height:hg+"px",overlay:ov,center:true, url:url, openerWin:p, options:opt});
	}
}

function $get(CtrlID)
{
	var oCtrl = document.getElementById(CtrlID);
	if (oCtrl)
		return oCtrl;
}


function WindowOpenCentre(URL, width, height, resizable, scrollable, status)
{
	// Show edit form:
	var left   = (screen.width  - width)/2;
	var top    = (screen.height - height)/2;
	var params = 'width='+width+', height='+height;
	params += ', top='+top+', left='+left;
	params += ', directories=no';
	params += ', location=no';
	params += ', menubar=no';
	params += ', resizable=' + resizable;
	params += ', scrollbars=' + scrollable;
	params += ', status=' + status;
	params += ', toolbar=no';
	newwin=window.open(URL, 'Popup', params, true);
	if (window.focus)
		newwin.focus()
	else
		alert("It appears you have a popup blocker installed.  Please add us to your popup blocker.");
	return newwin;
}

function SetCheckboxSet(SetName, Checked)
{
	var chks = document.getElementsByTagName('input');
	for(var idx=0; idx<chks.length; idx++)
	{
		var oInp = chks[idx];
		if (oInp.type == 'checkbox' && oInp.name == SetName)
			oInp.checked = Checked;
	}
}



/* Ataye AJAX now common */
var ATAYE_RESPONSE_OK = 200;		// Successful response.
var AtayeAJAX_2 = function()
{
	this._workingProcessor = null;
	this._ProcessorList = Array("Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP");
	this._hasError = false;
	this.RequestURL = null;
	this.ErrorText = null;
    this.Silent = false;
	this.Debugging = false;
	
	this.Get = function(params, callbackFunction)
	{
		this.Debug("SEND: " + params);
		this.OnComplete = callbackFunction;
		this.GetURL(params);
	}
	
	this.GetURL = function(params)
	{
		if (!this._workingProcessor)
			if (!this._getProcessor())
			{
            	_hasError = true;
                ErrorText = "Error getting processor";
				return false;
			}
		
		// Start:
		try
		{
			// If no url set, use url of current page:
			if (!this.RequestURL)
			{
				this.RequestURL = document.location.href;
				this.RequestURL = this.RequestURL.split('#')[0];
			}
            else if (this.RequestURL.charAt(0) == '/')
            {
            	this.RequestURL = document.location.protocol + '//' + document.location.host + this.RequestURL;
            }
			
			// Send request:
			this._workingProcessor.open("POST", this.RequestURL, true);
			this._workingProcessor.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			this._workingProcessor.onreadystatechange = this._onResponse.bind(this, this._workingProcessor);
			this._workingProcessor.send(params);
			
			return true;
		} 
		catch(e)
		{
        	this._hasError = true;
            this.ErrorText = e.description;
			if (!this.Silent)
            	alert("There was an error with the request: " + e.description);
            this.OnError(e);
		}
	}
	
	Function.prototype.bind = function(object) 
	{      
		var method = this;
		arguments.slice = Array.prototype.slice;
		var oldArguments = arguments.slice(1);
		return function() { 
			return method.apply(object, oldArguments); 
		};
	}
	
	this._onResponse = function(AjaxObj)
	{
		if (AjaxObj == undefined)
			return;
			
			//alert(AjaxObj);
		var Status = {
			'State' : AjaxObj.readyState
			, 'Status' : (AjaxObj.readyState == 4)? AjaxObj.status : null
		}
		this.OnStatusChange(Status);
		
		if (Status.State == 4)
		{
			this.OnComplete(Status, this._workingProcessor.responseText);
		}
	}

	
	
	// Public method, handle response:
	this.OnStatusChange = function(Status)
	{
		//alert("Status: " + Status.State);
	}
	
	this.OnComplete = function(Status, Response)
	{
		//alert("State: " + Status.Status + ", Response: " + Response);
	}
    
    this.OnError = function(Err)
    {
    
    }
	

// Private method. Get a processor:
	this._getProcessor = function()
	{
		var objException = null;
		var oProc = null;
		var arProcessorList = new Array("Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP");
        
		// Browser:
		if ( document.all && document.getElementById && !window.opera ) {
            AtayeAJAX.IE = true;
        }
        if ( !document.all && document.getElementById && !window.opera ) {
            AtayeAJAX.FF = true;
        }
        if ( document.all && document.getElementById && window.opera ) {
            AtayeAJAX.OP = true;
        }
		
		// Get processor:
		try
		{
			oProc = new XMLHttpRequest();
			//AtayeAJAX._workingProcessor = new XMLHttpRequest();
		} 
		catch (e)
		{
			//var bFound = false;
			//for(var i=0; i < idList.length && !AtayeAJAX._workingProcessor; i++)
			for(var i=0; i < arProcessorList.length && !oProc; i++)
			{
				try
				{
					oProc = new ActiveXObject(arProcessorList[i]);
					//AtayeAJAX._workingProcessor = new ActiveXObject(arProcessorList[i]);
				}catch (objException){}
			}
		}
		
		//if (!AtayeAJAX._workingProcessor) 
		if (!oProc) 
		{
			_hasError = true;
			alert("Could not retreive a valid progID of Class: " + arProcessorList[arProcessorList.length-1]+". (original exception: "+e+")");
			return false;
		}
		else
		{
			AtayeAJAX._workingProcessor = oProc;
			AtayeAJAX._workingProcessor.onreadystatechange = AtayeAJAX._onResponse;
		}
		return true;
	}
	//this._getProcessor = function()
//	{
//		var objException = null;
//		var oProc = null;
//		
//		// Browser:
//		if ( document.all && document.getElementById && !window.opera ) {
//            this.IE = true;
//        }
//        if ( !document.all && document.getElementById && !window.opera ) {
//            this.FF = true;
//        }
//        if ( document.all && document.getElementById && window.opera ) {
//            this.OP = true;
//        }
//		
//		// Get processor:
//		try
//		{
//			oProc = new XMLHttpRequest();
//			//AtayeAJAX._workingProcessor = new XMLHttpRequest();
//		} 
//		catch (e)
//		{
//			//var bFound = false;
//			//for(var i=0; i < idList.length && !AtayeAJAX._workingProcessor; i++)
//			for(var i=0; i < idList.length && !oProc; i++)
//			{
//				try
//				{
//					oProc = new ActiveXObject(this._ProcessorList[i]);
//					//AtayeAJAX._workingProcessor = new ActiveXObject(AtayeAJAX._ProcessorList[i]);
//				}catch (objException){}
//			}
//		}
//		
//		//if (!AtayeAJAX._workingProcessor) 
//		if (!oProc) 
//		{
//			_hasError = true;
//			alert("Could not retreive a valid progID of Class: " + this._ProcessorList[this._ProcessorList.length-1]+". (original exception: "+e+")");
//			return false;
//		}
//		else
//		{
//			this._workingProcessor = oProc;
//			this._workingProcessor.onreadystatechange = this._onResponse;
//		}
//		return true;
//	}
	
	// Public support method.  Returns the value of the given control:
	this.GetFormFieldValue = function(CtrlID)
	{
		var oCtrl = document.getElementById(CtrlID);
		if (oCtrl)
		{
			//return oCtrl.type;
			//return oCtrl.value;
			switch(oCtrl.type.toLowerCase())
			{
				case "checkbox":
					return oCtrl.checked;
					
				default:
					return oCtrl.value;
			}
			// Get type and then get value:
			
		}
	}
	
	this.Debug = function(Message)
	{
		if (!this.Debugging)
			return;
		
		var oOutput = $get('dvAJAXDebugOutput');
		if (oOutput == undefined)
		{
			oOutput = document.createElement("div");
			oOutput.setAttribute("id","dvAJAXDebugOutput");
			oOutput.setAttribute("style","height:100px;background:#fff;overflow:auto;");
			document.body.appendChild(oOutput);
			oOutput.innerHTML = "<span style='font-size:12pt;font-weight:bold;'>Ataye AJAX Debug window.</span><br/>";
		}
		
		oOutput.innerHTML = Message + "<br/>" + oOutput.innerHTML;
	}
}

var AtayeAJAX = new AtayeAJAX_2();

/*var AtayeAJAX = {
	_workingProcessor : null
	, _ProcessorList : new Array()["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]
	, _hasError : false
	, RequestURL : null
	, ErrorText : null
    , Silent: false
    
	// Public method. Call the URL using AJAX:
	, GetURL : function(params)
	{
		if (!AtayeAJAX._workingProcessor)
			if (!AtayeAJAX._getProcessor())
			{
            	_hasError = true;
                ErrorText = "Error getting processor";
				return false;
			}
		
		// Start:
		try
		{
			// If no url set, use url of current page:
			if (!AtayeAJAX.RequestURL)
			{
				AtayeAJAX.RequestURL = document.location.href;
				AtayeAJAX.RequestURL = AtayeAJAX.RequestURL.split('#')[0];
			}
            else if (AtayeAJAX.RequestURL.charAt(0) == '/')
            {
            	AtayeAJAX.RequestURL = document.location.protocol + '//' + document.location.host + AtayeAJAX.RequestURL;
            }
			
			// Send request:
			AtayeAJAX._workingProcessor.open("POST", AtayeAJAX.RequestURL, true);
			AtayeAJAX._workingProcessor.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			AtayeAJAX._workingProcessor.onreadystatechange = AtayeAJAX._onResponse;
			AtayeAJAX._workingProcessor.send(params);
			
			return true;
		} 
		catch(e)
		{
        	AtayeAJAX._hasError = true;
            AtayeAJAX.ErrorText = e.description;
			if (!Silent)
            	alert("There was an error with the request: " + e.description);
            AtayeAJAX.OnError(e);
		}
	}
	
	// Public method, handle response:
	, OnStatusChange : function(Status)
	{
		//alert("Status: " + Status.State);
	}
	
	, OnComplete : function(Status, Response)
	{
		//alert("State: " + Status.Status + ", Response: " + Response);
	}
    
    , OnError : function(Err)
    {
    
    }
	
	
	// Private method.
	, _onResponse : function()
	{
		
		var Status = {
			'State' : AtayeAJAX._workingProcessor.readyState
			, 'Status' : (AtayeAJAX._workingProcessor.readyState == 4)? AtayeAJAX._workingProcessor.status : null
		}
		AtayeAJAX.OnStatusChange(Status);
		
		if (Status.State == 4)
		{
			//alert("Response: " + AtayeAJAX._workingProcessor.responseText);
			AtayeAJAX.OnComplete(Status, AtayeAJAX._workingProcessor.responseText);
		}
	}
	
	
	// Private method. Get a processor:
	, _getProcessor : function()
	{
		var objException = null;
		var oProc = null;
		
		// Browser:
		if ( document.all && document.getElementById && !window.opera ) {
            AtayeAJAX.IE = true;
        }
        if ( !document.all && document.getElementById && !window.opera ) {
            AtayeAJAX.FF = true;
        }
        if ( document.all && document.getElementById && window.opera ) {
            AtayeAJAX.OP = true;
        }
		
		// Get processor:
		try
		{
			oProc = new XMLHttpRequest();
			//AtayeAJAX._workingProcessor = new XMLHttpRequest();
		} 
		catch (e)
		{
			//var bFound = false;
			//for(var i=0; i < idList.length && !AtayeAJAX._workingProcessor; i++)
			for(var i=0; i < idList.length && !oProc; i++)
			{
				try
				{
					oProc = new ActiveXObject(AtayeAJAX._ProcessorList[i]);
					//AtayeAJAX._workingProcessor = new ActiveXObject(AtayeAJAX._ProcessorList[i]);
				}catch (objException){}
			}
		}
		
		//if (!AtayeAJAX._workingProcessor) 
		if (!oProc) 
		{
			_hasError = true;
			alert("Could not retreive a valid progID of Class: " + AtayeAJAX._ProcessorList[AtayeAJAX._ProcessorList.length-1]+". (original exception: "+e+")");
			return false;
		}
		else
		{
			AtayeAJAX._workingProcessor = oProc;
			AtayeAJAX._workingProcessor.onreadystatechange = AtayeAJAX._onResponse;
		}
		return true;
	}
	
	// Public support method.  Returns the value of the given control:
	, GetFormFieldValue : function(CtrlID)
	{
		var oCtrl = document.getElementById(CtrlID);
		if (oCtrl)
		{
			//return oCtrl.type;
			//return oCtrl.value;
			switch(oCtrl.type.toLowerCase())
			{
				case "checkbox":
					return oCtrl.checked;
					
				default:
					return oCtrl.value;
			}
			// Get type and then get value:
			
		}
	}
}*/