// JavaScript Document
var csHelper = {
	init:function() {
		if (!document.getElementById || !document.createTextNode) { return; }
		csHelper.bindFormValidation();
	},
	bindFormValidation:function() {
		var arrForm = document.getElementsByTagName("form");
		for(var i = 0; i < arrForm.length; i++) {
			csHelper.addEvent(arrForm[i], 'submit', csHelper.validateForm, false);
		}
	},
	validateForm:function(evt) {
		var errMsg = "";
		var testValue = function(elm) {
			var elmClass = elm.getAttribute("class") ? elm.getAttribute("class") : elm.getAttribute("className");
			var targName = elm.getAttribute("for") ? elm.getAttribute("for") : elm.getAttribute("htmlFor");
			var elmTarg = document.getElementById(targName);
			if (!elmClass || !elmClass.match(/required_/i) || !targName || !elmTarg) { return; }
			if (elm.style && elm.style.color) { elm.style.color = ''; }
			var checkType = elmClass.replace(/required_(.+)/i, "$1");
			switch (checkType) {
				case "any":
					if (!elmTarg.value || !elmTarg.value.match(/[a-zA-Z0-9]+/g)) {
						errMsg += elm.innerHTML.toUpperCase() + " is required. <br />\n";
						elm.style.color = '#CC0000';
					}
					break;
				case "email":
					if (!elmTarg.value || !elmTarg.value.match(/^(([\-a-zA-Z0-9_\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\-a-zA-Z0-9]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)(,|, )?)+$/g)) {
						errMsg += elm.innerHTML.toUpperCase() + " is required and must contain an email address. <br />\n";
						elm.style.color = '#CC0000';
					}
					break;
				case "number":
					if (!elmTarg.value || !elmTarg.value.match(/^[0-9\-\.]+$/g)) {
						errMsg += elm.innerHTML.toUpperCase() + " is required and must contain a number. <br />\n";
						elm.style.color = '#CC0000';
					}
				default:
					break;
			}
		}
		var checkFormChildren = function(pnode) {
			var kid = pnode.childNodes;
			for(var i = 0; i < kid.length; i++) {
				if (kid[i].hasChildNodes()) {
					checkFormChildren(kid[i]);
				}
				if (kid[i].nodeName.match(/label/i)) {
					testValue(kid[i]);
				}
			}
		}
		var createErrorNode = function(pnode, msg) {
			var elmErr = document.getElementById('errorNotice');
			if (!elmErr) {
				elmErr = document.createElement('div');
				elmErr.className = 'errorNotice';
				elmErr.id = 'errorNotice';
				pnode.appendChild(elmErr);
			}
			elmErr.innerHTML = msg;
		}
		checkFormChildren(this);
		if(errMsg && errMsg.length > 0) {
			createErrorNode(this, errMsg);
			csHelper.cancelClick(evt);
			return false;
		}
		return true;
	},
	addLoadEvent:function(fn) {
		var oldonload = window.onload;
		if (typeof window.onload != 'function') {
			window.onload = fn;
		} else {
			window.onload = function() {
				oldonload();
				fn();
			}
		}
	},
	addEvent:function(elm, evType, fn, useCapture) {
		if (elm.addEventListener) {
			elm.addEventListener(evType, fn, useCapture);
			return true;
		} else if (elm.AttachEvent) {
			var r = elm.attachEvent('on' + evType, fn);
			return r;
		} else {
			elm['on' + evType] = fn;
		}
	},
	getTarget:function(e) {
		var target = window.event ? window.event.srcElement : e ? e.target : null;
		if (!target) { return false; }
		// Safari bug fix below
		//if (target.nodeName.toLowerCase() != 'a'){ target = target.parentNode; }
		return target;
	},
	stopBubble:function(e) {
		if (window.event && window.event.cancelBubble) {
			window.event.cancelBubble = true;
		}
		if (e && e.stopPropagation) {
			e.stopPropagation();
		}
	},
	stopDefault:function(e) {
		if (window.event && window.event.returnValue) {
			window.event.cancelBubble = true;
		}
		if (e && e.preventDefault) {
			e.preventDefault();
		}
	},
	cancelClick:function(e) {
		if (window.event && window.event.cancelBubble && window.event.returnValue) {
			window.event.cancelBubble = true;
			window.event.returnValue = false;
			return;
		}
		if (e && e.stopPropagation && e.preventDefault) {
			e.stopPropagation();
			e.preventDefault();
		}
	}
}
csHelper.addLoadEvent(csHelper.init);



function CS_bindForms() {
	var arfrm = document.getElementsByTagName("form");
	for(var i = 0; i < arfrm.length; i++) {
		
		if ( arimg[i].getAttribute("id").toString().match(/^udf_photo/) ) {
			arimg[i].onmouseover = CS_swapImage;
			arimg[i].onmouseout = CS_swapImgRestore;
			//arimg[i].onclick = func3;
		}
	}
}

function CS_swapImage(evt) {
	var oTarget = document.getElementById("property_main_photo");
	if (oTarget == null || oTarget == undefined) {
		return;
	}
	var oSrc = oTarget.getAttribute("src");
	var nSrc = this.getAttribute("src");
	if ( (oSrc != null  && oSrc != undefined) && (nSrc != null  && nSrc != undefined) ) {
		oTarget.setAttribute("osrc", oSrc);
		oTarget.setAttribute("src", nSrc);
	}
}

function CS_swapImgRestore(evt) {
	var oTarget = document.getElementById("property_main_photo");
	if (oTarget == null || oTarget == undefined) {
		return;
	}
	var oSrc = oTarget.getAttribute("osrc");
	if (oSrc != null  && oSrc != undefined) {
		oTarget.setAttribute("src", oSrc);
	}
}

function CS_addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function () {
			oldonload();
			func();
		}
	}
}

function CS_AttachEvent(obj,evt,fnc,useCapture){
	if (!useCapture) useCapture=false;
	if (obj.addEventListener){
		obj.addEventListener(evt,fnc,useCapture);
		return true;
	} else if (obj.attachEvent) return obj.attachEvent("on"+evt,fnc);
	else{
		CS_MyAttachEvent(obj,evt,fnc);
		obj['on'+evt]=function(){ CS_MyFireEvent(obj,evt) };
	}
}

//The following are for browsers like NS4 or IE5Mac which don't support either
//attachEvent or addEventListener
function CS_MyAttachEvent(obj,evt,fnc){
	if (!obj.myEvents) obj.myEvents={};
	if (!obj.myEvents[evt]) obj.myEvents[evt]=[];
	var evts = obj.myEvents[evt];
	evts[evts.length]=fnc;
}

function CS_MyFireEvent(obj,evt){
	if (!obj || !obj.myEvents || !obj.myEvents[evt]) return;
	var evts = obj.myEvents[evt];
	for (var i=0,len=evts.length;i<len;i++) evts[i]();
}

function CS_RegisterEvent(element, type, func) {
	if (element.addEventListener) {
		element.addEventListener(type, func, false)
	} else if (element.attachEvent) {
		if (!element._listeners) element._listeners = new Array()
		if (!element._listeners[type]) element._listeners[type] = new Array()
		var workaroundFunc = function() {
			func.apply(element, new Array())
		}
		element._listeners[type][func] = workaroundFunc
		element.attachEvent('on' + type, workaroundFunc)
	}
}
