var default_floater_width = "352px";
var default_floater_height = "121px";

function show_message_floater (header, msg, icon, js) {
	var loc = BASE_WEB_APP + "/floater_message.php";
	var fh = (document.all) ? document.documentElement.clientHeight : window.innerHeight;
	var fw = (document.all) ? document.documentElement.clientWidth : window.innerWidth;
	var xy_scroll = getScrollXY();
	loc += "?header=" + encodeURIComponent(header);
	loc += "&msg=" + encodeURIComponent(msg);
	loc += "&icon=" + encodeURIComponent(icon);
	loc += "&js=" + encodeURIComponent(js);

	fh = (fh > document.documentElement.clientHeight) ? fh : document.documentElement.clientHeight;
	document.getElementById("floater_mask").style.height = (fh + "px");	
	document.getElementById("floater_mask").style.width = (fw + "px");	

	document.getElementById("floater").src = loc;
	document.getElementById("floater").style.top = (xy_scroll[1] + 100) + "px";	
	// document.getElementById("floater").style.left = Math.ceil((screen.availWidth / 2) - (121 / 2) - 100) + "px";	
	document.getElementById("floater").style.marginLeft = "-176px";
	document.getElementById("floater").style.left = "50%";
	document.getElementById("floater").style.width = default_floater_width;
	document.getElementById("floater").style.height = default_floater_height;
	document.getElementById("floater").style.display = "inline";
	document.getElementById("floater").style.visibility = "visible";	
	document.getElementById("floater_mask").style.visibility = "visible";	
}

function show_custom_floater (loc, w, h) {
	var fh = (document.all) ? document.body.offsetHeight : window.innerHeight;
	var fw = (document.all) ? document.documentElement.clientWidth : window.innerWidth;
	var xy_scroll = getScrollXY();
	// alert((fw / 1) + " / " + (w / 2) + " = " + Math.ceil((fw / 2) - (w / 2)));
	fh = (fh > document.documentElement.clientHeight) ? fh : document.documentElement.clientHeight;
	document.getElementById("floater_mask").style.height = (fh + 20 + "px");	
	document.getElementById("floater_mask").style.width = (fw + "px");	

	document.getElementById("floater").src = loc;
	document.getElementById("floater").style.width = w + "px";	
	document.getElementById("floater").style.height = h + "px";	
	document.getElementById("floater").style.top = (xy_scroll[1] + 100) + "px";	
	// document.getElementById("floater").style.left = Math.ceil((screen.availWidth / 2) - (w / 2) - 100) + "px";	
	document.getElementById("floater").style.marginLeft = "-" + (w / 2) + "px";
	document.getElementById("floater").style.left = "50%";
	document.getElementById("floater").style.display = "inline";
	document.getElementById("floater").style.visibility = "visible";	
	document.getElementById("floater_mask").style.visibility = "visible";	
}

function show_centered_content_overlay (loc, h) {
	document.getElementById("floater_cover_content").src = loc;
	document.getElementById("floater_cover_content").style.height = h + "px";	
	document.getElementById("floater_cover_content").style.display = "inline";
	document.getElementById("floater_cover_content").style.visibility = "visible";	
}

function hide_floater () {
	document.getElementById("floater").src = BASE_WEB_APP + "/Controller.php?cmd=blank";
	document.getElementById("floater").style.visibility = "hidden";
	document.getElementById("floater").style.display = "none";
	document.getElementById("floater_cover_content").src = BASE_WEB_APP + "/Controller.php?cmd=blank";
	document.getElementById("floater_cover_content").style.visibility = "hidden";
	document.getElementById("floater_cover_content").style.display = "none";
	document.getElementById("floater").style.overflow = "auto";
	document.getElementById("floater_mask").style.visibility = "hidden";
}

// populate required with a hash of field to name values
function dq(form, required) {
	var msg = "The following fields are required for submission:\n\n";
	var ok = true;
	for (var r in required) {
		if ((form.elements[r].type == "text") || (form.elements[r].type == "file")) {
			if (form.elements[r].value == "") {
				msg += ("- " + required[r] + "\n");
				ok = false;
			}
		} else if (form.elements[r].type.indexOf("select") != -1) {
			var index = (form.elements[r].type.indexOf("multiple") != -1) ? -1 : 0;
			if (form.elements[r].selectedIndex == index) {
				msg += ("- " + required[r] + "\n");
				ok = false;
			}
		}
	}
	if (!ok) {
		alert(msg);
	}

	return ok;
}

// change an iframe url without affecting browser history
function load_iframe (frame_id, src) {

    var frame_doc;
    var fr = document.getElementById(frame_id);

    try {

	    if ((! fr) && (document.createElement)) {
	        var temp_fr = document.createElement('iframe');
	        temp_fr.setAttribute('id','RSIFrame');
	        temp_fr.style.border='0px';
	        temp_fr.style.width='0px';
	        temp_fr.style.height='0px';
	        fr = document.body.appendChild(temp_fr);
	    }
  
        frame_doc = get_frame_obj(fr);
        frame_doc.location.replace(src);
    } catch (err) {
	}

    return false;
} 

function get_frame_obj (el) {

    var iframe = null;

    if (el.contentDocument) {
        iframe = el.contentDocument; 
    } else if (el.contentWindow) {
        iframe = el.contentWindow.document;
    } else if (el.document) {
        iframe = el.document;
    }

    return iframe;
}

function getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}

// adds an element to the specified location
// needs 
var prnt = null;
var add_str = null;
var add_sub_str = null;
var add_sub_note = null;
var delete_key = null;
var custom_function = null;
// set to work
function add_element(add_to, id_num, default_value) {

	// This is sufficiently random and the < 1 num tells us it's new vs existing
	id_num = (id_num == null)
		? "NEW" + Math.random().toString().substring(3,12)
		: id_num;

	var text_field = document.createElement('INPUT');
	var wrapper = document.createElement('DIV');
	var links = '';
	var prnt_num = '';
	var focus_name = '';

	if (add_to != prnt) {
		prnt_num = add_to.replace('save_wrap_', '')+'_';
	}
	
	if (add_to == prnt) {
		links += (default_value == undefined)
			? '<b style="color:#666;">Save to Add ' + add_sub_note + '</b> &nbsp; '
			: '<a href="javascript:add_element(\'save_wrap_' + id_num + '\')">+ Add ' + add_sub_str + '</a> &nbsp; ';
	}
	links += (custom_function != null)
		? '<a style="" href="javascript:' + custom_function[0] + '(\'' + id_num + '\')"><span style="color:#D54C3E;">' + custom_function[1] + '</span></a>'
		: '';
	links += (delete_key == "") ? '<span style="display:none">' : '';
	links += '<a class="deleteLink" href="javascript:hide_element(\'' + prnt_num+id_num + '\')">+ Delete ' + add_str + '</a>';
	links += (delete_key == "") ? '</span>' : '';

	text_field.type = 'text';
	text_field.setAttribute('value', ((default_value == null) ? '' : default_value));
	text_field.style.display = 'block';
	text_field.style.float = 'left';
	text_field.style.width = '190px';
	if (document.all) {
		text_field.style.marginRight = '10px';
	} else {
		text_field.style.marginTop = '-15px';
	}
	
	if (add_to == prnt) {
		text_field.setAttribute('Name', 'save_'+id_num);
		focus_name = 'save_'+id_num;
		wrapper.style.width = (document.all) ? '460px' : '430px';
		wrapper.style.marginLeft = '0px';
	} else {
		text_field.setAttribute('Name', 'save_'+prnt_num+id_num);
		focus_name = 'save_'+prnt_num+id_num;
		wrapper.style.width = (document.all) ? '350px' : '310px';
		wrapper.style.marginLeft = '20px';
	}
	wrapper.setAttribute('id', 'save_wrap_'+prnt_num+id_num);

	if (! document.all) {
		wrapper.style.textAlign = 'right';
	}
	wrapper.style.marginTop = '10px';
	
	if (document.all) {
   		wrapper.appendChild(text_field);
		wrapper.innerHTML += links;	
	} else {
		wrapper.innerHTML += links;	
		wrapper.appendChild(text_field);
	}

	// append out
	document.getElementById(add_to).appendChild(wrapper);
	document.forms[0].elements[focus_name].focus();
}

// hid the specified element
function hide_element(pos) {
	document.getElementById('save_wrap_'+pos).style.display = "none";
	for (var i=0; i<document.forms[0].elements.length; i++) {
		if ((document.forms[0].elements[i].name.indexOf('save_'+pos+'_') != -1) ||
				(document.forms[0].elements[i].name == 'save_'+pos)) {
// alert(document.forms[0].elements[i].name);
			document.forms[0].elements[i].value = delete_key;
		}
	}
}

