/*GENERIC LIGHTBOX (litebox2.js)*/
function validate_email(controlid){
    var email = document.getElementById(controlid).value.toLowerCase();
    regex = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/
      var results =   regex.exec(email);
    if(results!=null)
        return true;
    else
        return false;

}
function validate_selected(controlid){
    if(document.getElementById(controlid).selectedIndex>0)
        return true;
    else 
        return false;
    

}
function validate_required(controlid){
    var c = document.getElementById(controlid).value;
    if (c.length<1)
        return false;
    else
        return true;

}


function hasWhitespace(s){
    if(s.indexOf(" ")>-1)
        return true;
    else
        return false;


}
//show popup, lowlite background
function show_loading(litebox){
 
	var loading = getElementByClassName(document.getElementById(litebox),"div","loading");
	loading.style.display ="block";


}

function hide_loading(litebox){
   
    var loading = getElementByClassName(document.getElementById(litebox),"div","loading");
	loading.style.display ="none";

}

function show_litebox(litebox, message_max_count, email_max_count){

	//ie6 hack
	if((navigator.userAgent).indexOf("MSIE 6") != -1){
		document.getElementById(litebox).childNodes[0].childNodes[0].style.backgroundImage = "url(/images/litebox2/popup_tab.gif)";
		document.getElementById(litebox).childNodes[1].style.backgroundImage = "url(/images/litebox2/popup_bg.gif)";
	}
	
	//ie transparency hack
	if((navigator.userAgent).indexOf("MSIE") != -1){
		document.getElementById("shadow").style.filter = "alpha(opacity=35)";
	}
	
	//shadow
	if(document.getElementById("page").offsetHeight < document.documentElement.clientHeight){
		document.getElementById("shadow").style.height = document.documentElement.clientHeight + "px";
	}else{
		document.getElementById("shadow").style.height = document.getElementById("page").offsetHeight + "px";
	}
	
	document.getElementById("shadow").style.width = document.getElementsByTagName("body")[0].clientWidth + "px";
	document.getElementById("shadow").style.display = "block";
	
	
	document.getElementById(litebox).style.left = Math.floor((document.getElementsByTagName("body")[0].clientWidth - document.getElementById(litebox).offsetWidth) / 2)-125 + "px";	
	var offset_y;
	if((navigator.userAgent).indexOf("MSIE") != -1){
		offset_y = document.documentElement.scrollTop;
	}else{
		offset_y = window.scrollY;
	}
	document.getElementById(litebox).style.top = Math.floor(((document.documentElement.clientHeight - document.getElementById(litebox).offsetHeight) / 2) + offset_y)+25 + "px";	
	document.getElementById(litebox).style.visibility = "visible";
    var pane_container = getElementByClassName(document.getElementById(litebox),"div","pane-container");
	pane_container.style.display = "block";
	
	//Flash layer Mac fix
	if((navigator.userAgent).indexOf("Mac OS") != -1){
		try{
			document.getElementById("myflash").style.visibility = "hidden";
		}catch(er){}
	}
	
	//init char-limited message field
	if(message_max_count) set_field(litebox, "char-count", message_max_count);
	if(email_max_count) set_field(litebox, "email-count", email_max_count);
	
}

//determine if this lightbox has a limited message or email field
function set_field(litebox, field_type, max_count){
	var fieldsets = document.getElementById(litebox).getElementsByTagName("tr");
	var fieldset;
	for(i=0;i<fieldsets.length;i++){
		var em = fieldsets[i].getElementsByTagName("em");
		for(j=0;j<em.length;j++){
			if(em[j].className == field_type) fieldset = fieldsets[i];
		}
	}
	if(fieldset){
		var field;
		if(field_type == "char-count"){
			field = fieldset.getElementsByTagName("textarea")[0];
		}else if(field_type == "email-count"){
			field = fieldset.getElementsByTagName("input")[0];
		}
		var tip = getElementByClassName(fieldset,"p","tip");
		var char_output = getElementByClassName(fieldset,"em",field_type);
		if(field_type == "char-count"){
			init_message_field(field, char_output, max_count);
		}else if(field_type == "email-count"){
			init_email_field(field, char_output, max_count);
		}
	}	
}

//close litebox - make sure we 'undo' everything we 'did' when opening it.
function litebox_close(litebox){
	if((navigator.userAgent).indexOf("MSIE 6") != -1){
		document.getElementById(litebox).childNodes[0].childNodes[0].style.setAttribute('cssText','',0);
		document.getElementById(litebox).childNodes[1].style.setAttribute('cssText','',0);
	}
	if((navigator.userAgent).indexOf("MSIE") != -1){
        document.getElementById(litebox).style.setAttribute('cssText','',0);
	    document.getElementById("shadow").style.setAttribute('cssText','',0);
	} else {
        document.getElementById(litebox).setAttribute('style','');
	    document.getElementById("shadow").setAttribute('style','');
	}
	
	//reset messages
	clear_errors(litebox);
	clear_success(litebox);
	var pane = document.getElementById(litebox);
	getElementByClassName(pane,"div","pane-container").style.display="none";
	
	//Flash layer Mac fix
	if((navigator.userAgent).indexOf("Mac OS") != -1){
		try{
		document.getElementById("myflash").style.visibility = "visible";
		}catch(er){}
	}
	
}

//on successful submit
function send_success(litebox, message){	
	clear_errors(litebox);
	clear_failure(litebox);
	show_success(litebox, message);	
}

//on send failure
function send_failure(litebox, message){	
	clear_errors(litebox);
	clear_success(litebox);
	show_failure(litebox, message);	
}

//clear field value
function clear_field(litebox, fieldset_id){
	var fieldset = getElementByClassName(document.getElementById(litebox),"tr",fieldset_id);
	var inputs = fieldset.getElementsByTagName("input");
	var textareas = fieldset.getElementsByTagName("textarea");
	for(i=0;i<inputs.length;i++){
		inputs[i].value = "";
	}
	for(i=0;i<textareas.length;i++){
		textareas[i].value = "";
	}
}

//Message box character counting and limiting

var message_field;
var message_display;
var message_max_count;
var message_cur_count = 0;
var message_count_loop;
var message_selected = false;
var message_button; //submit button

//init message box
function init_message_field(field_id, output_id, max_count){

	//assign values
	message_display = output_id;
	message_field = field_id;
	message_max_count = max_count;
	//message_display.innerHTML = message_max_count;
	message_display.innerHTML = message_max_count - (message_field.value).length;
	
	//assign event handlers
	message_field.onkeyup = toggle_button_state;
	message_field.onkeypress = count_chars;
	message_field.onfocus = function(){
		message_count_loop = setInterval("eval_chars()",10);
	}
	message_field.onblur = function(){
		clearInterval(message_count_loop);
	}
	message_field.onselect = function(){
		message_selected = true;
	}
}

//change button state as soon as there is text present
function toggle_button_state(evt){
	if(window.event){
		evt = event;
	}
	if(message_button){
		//alert((message_field.value).length);
		if((message_field.value).length > 0){
			//activate submit button
			message_button.className = "post-button-active";
		}else{
			//disable submit button
			message_button.className = "post-button";
		}
	}
}

//limit number of characters typed into a field
function count_chars(evt){
	if(window.event){
		evt = event;
	}	
	if(message_cur_count < message_max_count){
		return true;
	}else{
		if(message_selected || evt.keyCode == 8 || evt.keyCode == 46 || evt.keyCode == 35 || evt.keyCode == 36 || evt.keyCode == 37 || evt.keyCode == 38 || evt.keyCode == 39 || evt.keyCode == 40 || evt.keyCode == 63272 || evt.keyCode == 63232 || evt.keyCode == 63233 || evt.keyCode == 63234 || evt.keyCode == 63235){
			message_selected = false;
			return true;
		}else{
			return false;
		}
	}
}

//count the number of characters in the field
function eval_chars(){
	message_cur_count = (message_field.value).length;
	if((message_max_count - message_cur_count) <= 0){
		message_display.innerHTML = 0;
		message_display.parentNode.className = "flag";
		if((message_max_count - message_cur_count) < 0) message_field.value = (message_field.value).slice(0,message_max_count);
	}else{
		message_display.innerHTML = message_max_count - message_cur_count;
		message_display.parentNode.className = "";
	}
}

//Email field counting and limiting

var email_field;
var email_display;
var email_max_count;
var email_cur_count = 0;
var email_count_loop;
var email_selected = false;

//init email fiend
function init_email_field(field_id, output_id, max_count){

	//assign values
	email_display = output_id;
	email_field = field_id;
	email_max_count = max_count;
	email_display.innerHTML = email_max_count;
	
	eval_emails(); //update initial count remaining, if emails are already present
	
	//assign event handlers
	email_field.onkeydown = count_emails;
	email_field.onfocus = function(){
		email_count_loop = setInterval("eval_emails()",10);
	}
	email_field.onblur = function(){
		clearInterval(email_count_loop);
	}
	email_field.onselect = function(){
		email_selected = true;
	}
}

//limit number of email addresses (commas) typed into a field
function count_emails(evt){
	if(window.event){
		evt = event;
	}
	if(evt.keyCode != 13){
		if(email_cur_count < email_max_count){
			return true;
		}else{
			if(evt.keyCode != 188){
				email_selected = false;
				return true;
			}else{
				return false;
			}
		}
	}else{
		return false;
	}
}

//count number of email addresses (commas) in the field
function eval_emails(){	
	var temp = email_field.value;
	var split = temp.split(",");	
	if(temp == ""){
		email_cur_count = 0;
	}else if(split.length > 0){
		email_cur_count = split.length;
	}	
	if(email_cur_count >= email_max_count){
		email_display.innerHTML = 0;
		email_display.parentNode.className = "flag";
		if(email_cur_count > email_max_count){
			var temp2 = "";
			for(i=0;i<email_max_count;i++){
				temp2 += split[i];
				if(i < (email_max_count - 1)) temp2 += ",";
			}
			email_field.value = temp2;
		}
	}else{
		email_display.innerHTML = email_max_count - email_cur_count;
		email_display.parentNode.className = "";
	}
}

//display error messages
function show_error(litebox, field_id, error_message){
	clear_success(litebox);
	clear_failure(litebox);	
	var field = getElementByClassName(document.getElementById(litebox),"tr",field_id);
	var error = getElementByClassName(field,"div","error-message");
	if(error_message) error.getElementsByTagName("p")[0].innerHTML = error_message;
	error.style.display = "block";	
	//scroll main area back to top
	var pane_container = getElementByClassName(document.getElementById(litebox),"div","pane-container");
	pane_container.scrollTop = 0;
}

//hide error messages
function clear_errors(litebox){
	clear_failure(litebox);
	var pane = getElementByClassName(document.getElementById(litebox),"div","pane");
	var divs = pane.getElementsByTagName("div");
	for(i=0;i<divs.length;i++){
		if(divs[i].className == "error-message") divs[i].style.display = "none";
	}
}

//display success message
function show_success(litebox,message){	
	var confirm_message = getElementByClassName(document.getElementById(litebox),"div","success-message");
	confirm_message.getElementsByTagName("p")[0].innerHTML = message;
	confirm_message.style.display = "block";	
	//scroll main area back to top
	var pane_container = getElementByClassName(document.getElementById(litebox),"div","pane-container");
	pane_container.scrollTop = 0;
}

//display success message in page (such as for Travel Pack deletions)
function show_success_page(message){
	var confirm_message = document.getElementById("success-message");
	confirm_message.getElementsByTagName("p")[0].innerHTML = message;
	confirm_message.style.display = "block";
}

//display failure message
function show_failure(litebox,message){	
	var failure_message = getElementByClassName(document.getElementById(litebox),"div","failure-message");
	failure_message.getElementsByTagName("p")[0].innerHTML = message;
	failure_message.style.display = "block";	
	//scroll main area back to top
	var pane_container = getElementByClassName(document.getElementById(litebox),"div","pane-container");
	pane_container.scrollTop = 0;
}

//hide success message
function clear_success(litebox){
	var container = getElementByClassName(document.getElementById(litebox),"div","success-message");
	container.style.display = "none";
}

//hide success message in page (such as for Travel Pack deletions)
function clear_success_page(){
	var confirm_message = document.getElementById("success-message");
	confirm_message.style.display = "none";
	confirm_message.getElementsByTagName("p")[0].innerHTML = "";
}

//hide failure message
function clear_failure(litebox){
	var container = getElementByClassName(document.getElementById(litebox),"div","failure-message");
	container.style.display = "none";
}

//edit text field
function edit_field_val(litebox,field_id){
	var field_row = getElementByClassName(document.getElementById(litebox),"tr",field_id);
	var static_val = getElementByClassName(field_row,"p","static");
	var field = field_row.getElementsByTagName("input")[0];
	static_val.style.display = "none";
	field.style.display = "block";
}
