var TimeToFade = 300.0;

function giveFocusTo(obj, tooltip, type) {
	var parDoc = window.parent.document;
	if (type == "two_date" || type == "maes_two_date") {
		parDoc.getElementById(obj+'_mon').style.backgroundColor = "#eaf1fa";
		parDoc.getElementById(obj+'_year').style.backgroundColor = "#eaf1fa";
	} else if(type != "radio") {
		parDoc.getElementById(obj).style.backgroundColor = "#eaf1fa";
	}
	parDoc.getElementById(obj+"_row").className = "form3CRowHighligted";
	parDoc.getElementById(obj+"_tick").style.visibility = "hidden";
	if (tooltip == 1) {
		//if (type == "phone") { alert(isPhone(parDoc.getElementById(obj).value)); }
		if ((type == "text" && parDoc.getElementById(obj).value == "") || (type == "number" && ! isNumber(parDoc.getElementById(obj).value)) || (type == "cc_no" && ! isCCno(parDoc.getElementById(obj).value)) || (type == "forced") || (type == "selected") || (type == "radio") || (type == "image") || (type == "maes_issue") || (type == "phone" && ! isPhone(parDoc.getElementById(obj).value)) || (type == "email" && ! isEmail(parDoc.getElementById(obj).value)) || (type == "two_date") || (type == "maes_two_date") || (type == "cvn" && ! isCVN(parDoc.getElementById(obj).value))) {
			parDoc.getElementById(obj+"_tip").style.visibility = "visible";
		}
	}
}

function removeFocusFrom(obj, style, tooltip, type, mandatory) {
	var parDoc = window.parent.document;
	// style: 0 = Normal, 1 = Grey, 2 = Red
	if (type == "two_date" || type == "maes_two_date") {
		parDoc.getElementById(obj+'_mon').style.backgroundColor = "#FFF";
		parDoc.getElementById(obj+'_year').style.backgroundColor = "#FFF";
	} else if(type != "radio") {
		parDoc.getElementById(obj).style.backgroundColor = "#FFF";
	}
	if (style == 1) {
		parDoc.getElementById(obj+"_row").className = "form3CRowGrey";
	} else if (style == 2) {
		parDoc.getElementById(obj+"_row").className = "form3CRowError";
	} else {
		parDoc.getElementById(obj+"_row").className = "form3CRowNormal";
	}
	if (tooltip == 1) {
		parDoc.getElementById(obj+"_tip").style.visibility = "hidden";
	}
	parDoc.getElementById(obj+"_tick").style.visibility = "visible";
	checkField(obj, type, mandatory, style);
}

function showPopup(obj) {
	document.getElementById("overlay").style.display = "";
	var Element = document.getElementById(obj);
    Element.style.opacity = '0';
    Element.style.filter = 'alpha(opacity = 0)';
	Element.style.display = 'block';
	centerElement(obj);
	fadeElement(obj);
	//added by sean 22/01/10 - the following line fixes a bug on the positioning of an ajax suggestion box inside a centered div.
	if(typeof onloadhandler == 'function') {onloadhandler();} 
	document.onclick=function() { hidePopup(obj) };
}

function hidePopup(obj) {
	var Element = document.getElementById(obj);
	fadeElement(obj);
	setTimeout("document.getElementById('"+obj+"').style.display = 'none'", parseInt(TimeToFade+50));
	setTimeout("document.getElementById('overlay').style.display = 'none'", parseInt(TimeToFade+50));
	document.onclick=null
}

function checkField(obj, type, mandatory, style) {
	var parDoc = window.parent.document;
	/* Values of 'type'
	text
	selected
	image
	radio 
	forced
	phone
	email 
	cc_no 
	two_date
	cvn 
	maes_issue 
	maes_two_date */
	if (type == "image") {
		return false;
	}
	field = parDoc.getElementById(obj);
	var ok = false;
	if (type == "forced") {
		ok = false;
	} else if (type == "text") {
		var fieldContent = field.value;
		if (! mandatory && fieldContent == "") {
			ok = true;
		} else if (fieldContent.length > 0) {
			ok = true;
		}
	} else if (type == "password") {
		var fieldContent = field.value;
		if (! mandatory && fieldContent == "") {
			ok = true;
		} else if (fieldContent.length > 5) {
			ok = true;
		}
	} else if (type == "password_check") {
		var fieldContent = field.value;
		if (! mandatory && fieldContent == "") {
			ok = true;
		} else if (fieldContent.length > 5) {
			ok = true;
		}
		if(fieldContent!=document.getElementById('co_password').value)
		{
			ok = false;
		}
	} else if (type == "selected") {
		var fieldLength = field.length;
		var count = 0;
		for (var i = 0; i < fieldLength; i++) {
			if (field[i].selected) { 
				count++;
			}
		}
		if (field.selectedIndex > 0 && count <= 5) {
			ok = true;
		}
	} else if (type == "radio") {
		var radioChosen = false;
		radioChosen = checkRadio(obj);
		if (radioChosen) {
			ok = true;
		}
	} else if (type == "url") {
		var fieldContent = field.value;
		if (! mandatory && fieldContent == "") {
			ok = true;
		} else if (! mandatory && fieldContent == "http://") {
			ok = true;
		} else if (isUrl(fieldContent)) {
			ok = true;
		}
	} else if (type == "phone") {
		var fieldContent = field.value;
		if (! mandatory && fieldContent == "") {
			ok = true;
		} else if (isPhone(fieldContent)) {
			ok = true;
		}
	} else if (type == "email") {
		var fieldContent = field.value;
		if (! mandatory && fieldContent == "") {
			ok = true;
		} else if (isEmail(fieldContent)) {
			ok = true;
		}
	} else if (type == "cc_no") {
		var fieldContent = field.value;
		if (isCCno(fieldContent)) {
			ok = true;
		}
	} else if (type == "two_date") {
		var month = parDoc.getElementById(obj + '_mon');
		var monthSelected = month.selectedIndex;
		var year = parDoc.getElementById(obj + '_year');
		var yearSelected = year.selectedIndex;
		if (monthSelected > 0 && yearSelected > 0) {
			ok = true;
		}
	} else if (type == "maes_two_date") {
		// check if the card is maestro and the issue number is used (instead of this)
		var cardType = document.getElementById('pay_card_type')[document.getElementById('pay_card_type').selectedIndex].value;
		/*var issueNumber = document.getElementById('pay_issue').value;
		if (cardType == '024' && issueNumber == '') {*/
		if (cardType == '024') {
			var month = parDoc.getElementById(obj + '_mon');
			var monthSelected = month.selectedIndex;
			var year = parDoc.getElementById(obj + '_year');
			var yearSelected = year.selectedIndex;
			if (monthSelected > 0 && yearSelected > 0) {
				ok = true;
			}
		} else {
			ok = true;
		}
	} else if (type == "cvn") {
		var fieldContent = field.value;
		if (isCVN(fieldContent)) {
			ok = true;
		}
	} else if (type == "number") {
		var fieldContent = field.value;
		if (! mandatory && fieldContent == "") {
			ok = true;
		} else if (isNumber(fieldContent)) {
			ok = true;
		}
	} else if (type == "checkbox") {
		ok = true;
	} else if (type == "actualnumber") {
		var fieldContent = field.value;
		if (! mandatory && fieldContent == "") {
			ok = true;
		} else if (isNumeric(fieldContent)) {
			ok = true;
		}
	} else if (type == "maes_issue") {
		// If selected card is maestro check only if a start date isn't selected - both have to be??
		var cardType = document.getElementById('pay_card_type')[document.getElementById('pay_card_type').selectedIndex].value;
		if (cardType == '024') {
			var fieldContent = field.value;
			/*var startMonth = document.getElementById('pay_starts_mon').selectedIndex;
			var startYear = document.getElementById('pay_starts_year').selectedIndex;
			if (fieldContent == "" && startMonth > 0 && startYear > 0) {
				ok = true;
			} else if (fieldContent != "" && startMonth == 0 && startYear == 0) {
				ok = true;
			}*/
			if (fieldContent != "") {
				ok = true;
			}
		} else {
			ok = true;
		}
	}
	if (ok) {
		parDoc.getElementById(obj+"_tick").innerHTML = '<img src="/place_an_ad/images/form_tick.png" width="18" height="18" alt="Completed" />';
		if (style == 2) {
			parDoc.getElementById(obj+"_row").className = "form3CRowNormal";
		}
	} else {
		parDoc.getElementById(obj+"_tick").innerHTML = '<img src="/place_an_ad/images/form_cross.png" width="18" height="18" alt="Needs attention" />';
	}
}

function CheckFieldLength(fn,wn,rn,mc) {
  var len = fn.value.length;
  if (len > mc) {
    fn.value = fn.value.substring(0,mc);
    len = mc;
  }
  //document.getElementById(wn).innerHTML = len;
  document.getElementById(rn).innerHTML = mc - len;
}

function checkRadio(obj) { 
	field = document.PAAform[obj];
	for(var i=0; i < field.length; i++) {
		if(field[i].checked) return true;
	} 
	return false; 
}

function isUrl(s) {
 	var regexp = /http:\/\/[A-Za-z0-9\.-]{3,}\.[A-Za-z]{3}/;
 	return regexp.test(s);
}

function isPhone(s) {
	if (s.length > 5) {
	 	var regexp = /[^0-9 \+\(\)-\.]/;
	 	return (! regexp.test(s));
	} else {
		return false;
	}
}

function isEmail(s) {
 	var regexp = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
 	return regexp.test(s);
}

function isCCno(s) {
	s = s.replace(/[^0-9]/g, '');
	if (s.length >=14 && s.length <= 20) {
	 	return true;
	} else {
		return false;
	}
}

function isCVN(s) {
	s = s.replace(/[^0-9]/g, '');
	if (s.length > 0 && s.length <= 4) {
	 	return true;
	} else {
		return false;
	}
}

function isNumber(s) {
	s = s.replace(/[^0-9]/g, '');
	if (s.length > 0) {
	 	return true;
	} else {
		return false;
	}
}



function centerElement(obj) {
	var Element = document.getElementById(obj);
	objh = parseFloat(Element.style.height)/2;
	objw = parseFloat(Element.style.width)/2;

	//IE
	if (!window.pageYOffset) {
		if (!(document.documentElement.scrollTop == 0)) {
			//strict mode
			offsetY = document.documentElement.scrollTop;
			offsetX = document.documentElement.scrollLeft;
		} else 		{
			//quirks mode
			offsetY = document.body.scrollTop;
			offsetX = document.body.scrollLeft;
		}
	} else {
		//w3c
		offsetX = window.pageXOffset;
		offsetY = window.pageYOffset;
	}

	var windowWidth = 0;
	var windowHeight = 0;

	//IE
	if (!window.innerWidth) {
		if (!(document.documentElement.clientWidth == 0)) {
			//strict mode
			windowWidth = document.documentElement.clientWidth;
			windowHeight = document.documentElement.clientHeight;
		} else {
			//quirks mode
			windowWidth = document.body.clientWidth;
			windowHeight = document.body.clientHeight;
		}
	} else {
		//w3c
		windowWidth = window.innerWidth;
		windowHeight = window.innerHeight;
	}
	if (document.getElementById('midContent')) {
		offsetY = offsetY - document.getElementById('midContent').offsetTop;
		offsetX = offsetX - document.getElementById('midContent').offsetLeft;
	}
	Element.style.top = Math.floor(Math.round((windowHeight/2)+offsetY)-objh)+'px';
	Element.style.left = Math.floor(Math.round((windowWidth/2)+offsetX)-objw)+'px';
}


function fadeElement(eid) {
	var element = document.getElementById(eid);
	if (element == null) { return; }
	if (element.FadeState == null) {
	    if(element.style.opacity == null
        || element.style.opacity == ''
        || element.style.opacity == '1') {
			element.FadeState = 2;
	    } else {
			element.FadeState = -2;
		}
	}
	if (element.FadeState == 1 || element.FadeState == -1) {
		element.FadeState = element.FadeState == 1 ? -1 : 1;
		element.FadeTimeLeft = TimeToFade - element.FadeTimeLeft;
	} else {
		element.FadeState = element.FadeState == 2 ? -1 : 1;
		element.FadeTimeLeft = TimeToFade;
		setTimeout("animateFadeElement(" + new Date().getTime() + ",'" + eid + "')", 33);
	}
}

function animateFadeElement(lastTick, eid) { 
	var curTick = new Date().getTime();
	var elapsedTicks = curTick - lastTick;
	var element = document.getElementById(eid);
	if (element.FadeTimeLeft <= elapsedTicks) {
		element.style.opacity = element.FadeState == 1 ? '1' : '0';
		element.style.filter = 'alpha(opacity = ' + (element.FadeState == 1 ? '100' : '0') + ')';
		element.FadeState = element.FadeState == 1 ? 2 : -2;
		return;
	}
	element.FadeTimeLeft -= elapsedTicks;
	var newOpVal = element.FadeTimeLeft/TimeToFade;
	if (element.FadeState == 1) { newOpVal = 1 - newOpVal; }
	element.style.opacity = newOpVal;
	element.style.filter = 'alpha(opacity = ' + (newOpVal*100) + ')';
	setTimeout("animateFadeElement(" + curTick + ",'" + eid + "')", 33);
}
