function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	}
	return [curleft,curtop];
}

function getCookieValue(key, defaultValue) {
	var cookieValue = Cookie.read(key);
	if (cookieValue == null)
		cookieValue = defaultValue;

	return cookieValue;
}

function setCookieValue(key, value) {
	Cookie.write(key, value, {path: '/'});
}

function ajaxRequest(url, qstring, method, onComplete) {
	var localHref = url;
	
	$data = "";
	if (method.toUpperCase() == "POST")
		$data = qstring;
	else
		localHref +=  "?" + qstring;
			
	var request = new Request({url: localHref,
		method: method,
		onComplete: function(response) { 
			if (debug)
				addDebugMessage('Response:\n' + response);
			onComplete(response);
	}});
	
	request.send($data);
	
	if (debug)
		 addDebugMessage(localHref + '\nPOST:\n' + $data);
}

function postTransport(action, qstring, onComplete) {
	var localHref = "ajax/transport.htm?" +
		"cd_method=POST&cd_action=" + encodeURIComponent(action) + "&" + qstring;
			
	var request = new Request({url: localHref,
		method: "get",
		onComplete: function(response) { 
			onComplete(response);
			
			if (debug)
				 addDebugMessage(response);
	}});
	
	request.send();
	
	if (debug)
		 addDebugMessage(localHref);
}

function postFormTransport(form, onComplete) {
	var qstring = form.toQueryString();
	var action = form.getProperty("action");
	if (action == null)
		action = form.action;
	
	postTransport(action, qstring, onComplete);
}

function seeWhyParseResponseIntoArray(responseText) {
	var items, i, keyValue;
	var array = new Array();
	
	items = responseText.split('**CYD**');
	for (i = 0; i < items.length; i++) {
		if (items[i].trim() != "") {
			keyValue = items[i].split("=", 2);
			
			if (array[keyValue[0]]) {
				if (!(array[keyValue[0]] instanceof Array))
					array[keyValue[0]] = [array[keyValue[0]]];
				var count = array[keyValue[0]].length;
				array[keyValue[0]][count] = keyValue[1];
			}
			else
				array[keyValue[0]] = keyValue[1];
		}		
	}
	
	return array;
}

function isDefined(variable) {
	if (typeof(variable) == "undefined")
		return false;
	else
		return true;
}

function getScrollTop(){
    if(typeof(pageYOffset)!= 'undefined'){
        //most browsers
        return pageYOffset;
    }
    else{
        var B= document.body; //IE 'quirks'
        var D= document.documentElement; //IE with doctype
        D= (D.clientHeight)? D: B;
        return D.scrollTop;
    }
}

function showSendingScreen(message) {
	$('busyMessageText').set("text", message);
	$('busyArea').setStyle('display', 'block');
	var parentHeight = $('busyArea').getParent().getStyle('height');
	$('busyArea').setStyle('top', 0);
	$('busyArea').setStyle('height', parentHeight);
	var scrollTop = getScrollTop() + 100;
	$('busyMessage').setStyle('top', '' + scrollTop + 'px');
}

function hideSendingScreen() {
	$('busyArea').setStyle('display', 'none');
}

function sendMail(recipientIndex, subject, body, onComplete) {
	var localHref = "ajax/send.htm?" +
		"RecipientIndex=" + encodeURIComponent(recipientIndex) + "&" +
		"Subject=" + encodeURIComponent(subject) + "&" +
		"Body=" + encodeURIComponent(body);
		
	if (debug)
		 addDebugMessage(localHref);
	
	var request = new Request({url: localHref,
		method: "get",
		onComplete: function(response) { 
			if (onComplete != null)
				onComplete(response);
	}});
	
	request.send();
}

function newsletterSignUpWithEmail(email, onComplete) {
	var url = "ajax/newsletter.php";
	var query = "Email=" + encodeURIComponent(email);
	ajaxRequest(url, query, "post", function(response) {
		if (onComplete == null) {
			onComplete = function(response) {
				submitEmailForNewsletterDone(response);
			};
		}
		onComplete(response);
	});
}

function openNewWindow(anchorElem) {
	window.open(anchorElem.href, 'child');
	anchorElem.blur();
	return false;
}

function inputValid(input, valid) {
	if (valid) {
		input.removeClass('inputInvalid');
		input.addClass('inputValid');
	}
	else {
		input.removeClass('inputValid');
		input.addClass('inputInvalid');
	}
}

function inputChangeTarget(elem, targetMethod) {
	if (elem == null)
		return;
	
	var elemString = elem.get('tag');
	if (elemString == null)
		return;
	switch (elemString.toLowerCase()) {
		case "input" :
			elem.addEvent('keyup', function(e) {
				targetMethod(e);
			});
			elem.addEvent('change', function(e) {
				targetMethod(e);
			});
			break;
		case "select" :
			elem.addEvent('change', function(e) {
				targetMethod(e);
			});
			break;
		case "textarea" :
			elem.addEvent('keyup', function(e) {
				targetMethod(e);
			});
			elem.addEvent('change', function(e) {
				targetMethod(e);
			});
			break;
	}
}

function setInputDefault(elem, valid) {
	if (valid)
		elem.addClass('inputDefault');
	else
		elem.removeClass('inputDefault');
}

function isDefaultText(elemInput) {
	return elemInput.hasClass('inputDefault');
}

function getInputValue(elemInput) {
	if (isDefaultText(elemInput))
		return "";
	
	return elemInput.getProperty('value');
}

function setDefaultTextOnInput(elemInput, text) {
	if (elemInput != null) {
		if (elemInput.getProperty('value') == "")
			elemInput.setProperty('value', text);
		elemInput.addEvent('keyup', function(e) {
			setInputDefault(elemInput, elemInput.getProperty('value') == text);
		});
		elemInput.addEvent('focus', function(e) {
			if (elemInput.getProperty('value') == text) {
				elemInput.setProperty('value', '');
				setInputDefault(elemInput, false);
			}
		});
		elemInput.addEvent('blur', function(e) {
			if (elemInput.getProperty('value') == '') {
				elemInput.setProperty('value', text);
				setInputDefault(elemInput, true);
			}
		});
		setInputDefault(elemInput, elemInput.getProperty('value') == text);
	}
}

function addDebugMessage(message) {
	if (debug) {
		var elemDebug = $('DebugOutput');
		if (elemDebug == null)
			return;
			
		var innerHtml = elemDebug.get('html');
		
		innerHtml += message + "\n\n";
			
		elemDebug.set('html', innerHtml);
		
		elemDebug.setStyle('display', 'block');
	}
}

function validateEmail(emailAddress){  
	var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;  
	return emailPattern.test(emailAddress);
}   
