//JAVASCRIPT METHODS USED IN DVIDS
var checked = true;

function ClipBoard (sometext)
{
	document.getElementById('holdtext').innerText = sometext;
	Copied = document.getElementById('holdtext').createTextRange();
	Copied.execCommand("Copy");
}
function opacity(id, opacStart, opacEnd, millisec) {
    //speed for each frame
    var speed = Math.round(millisec / 100);
    var timer = 0;

    //determine the direction for the blending, if start and end are the same nothing happens
    if(opacStart > opacEnd) {
        for(i = opacStart; i >= opacEnd; i--) {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    } else if(opacStart < opacEnd) {
        for(i = opacStart; i <= opacEnd; i++)
            {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    }
}

//change the opacity for different browsers
function changeOpac(opacity, id) {
    var object = document.getElementById(id).style;
    //object.opacity = (opacity / 100);
    document.getElementById(id).style.MozOpacity = (opacity / 100);
    //object.KhtmlOpacity = (opacity / 100);
    document.getElementById(id).style.filter = "Alpha(opacity=" + opacity + ")";
}

function shiftOpacity(id, millisec) {
    //if an element is invisible, make it visible, else make it ivisible
    if(document.getElementById(id).style.opacity == 0) {
        opacity(id, 100, 0, millisec);
    } else {
        opacity(id, 100, 0, millisec);
    }
    //document.getElementById(id).innerHMTL = '';
    setTimeout("document.getElementById('" + id + "').innerHTML = ''", (millisec+100));
    setTimeout("changeOpac(100, '" + id + "')", (millisec+100));
    //setTimeout("alert('ben')", (millisec+100)); 
    //alert('ben');
}





function unit_addresses(type)
{
	var street1 	= document.getElementById(type + '_street1').value;
	var street2 	= document.getElementById(type + '_street2').value;
	var city 		= document.getElementById(type + '_city').value;
	var state 		= document.getElementById(type + '_state').value;
	var zip 		= document.getElementById(type + '_zip').value;
	var unit_id 	= document.getElementById('unit_id').value;
	var country		= document.getElementById(type + '_country').value;
	var string 		= type + '|' + unit_id + '|' + street1 + '|' + street2 + '|' + city + '|' + state + '|' + zip + '|' + country;
	ajaxpage('ajax/ajax.admin.php?action=unit_addresses&info=' + string, 'addressalerts', 0, 1);
	setTimeout("shiftOpacity('addressalerts', 2000)", 1000);
	
}


function newcontactform()
{
	var firstname	= document.getElementById('first_name').value;
	var lastname	= document.getElementById('last_name').value;
	var rank 		= document.getElementById('rank_id').value;
	var position	= document.getElementById('position').value;
	var social 		= document.getElementById('social').value;
	var phone 		= document.getElementById('phone').value;
	var dsn		 	= document.getElementById('dsn').value;
	var email	 	= document.getElementById('email').value;
	var unit 		= document.getElementById('unit_id').value;
	
	var string = firstname + '|' + lastname + '|' + rank + '|' + position + '|' + social + '|' + phone + '|' + dsn + '|' + email + '|' + unit;
	ajaxpage('ajax/ajax.admin.php?action=newcontact&info=' + string, 'personnel', 0, 1);
	setTimeout("shiftOpacity('personnelalerts', 2000)", 4000);
	
	document.getElementById('first_name').value = '';
	document.getElementById('last_name').value = '';
	
	document.getElementById('social').value = '';
	document.getElementById('phone').value = '';
	document.getElementById('email').value = '';
	
	
}


function dayfill(monthid, dayid, yearid)
{
	var month = document.getElementById(monthid).value;
	var day = document.getElementById(dayid).value;
	var year = document.getElementById(yearid).value;
	if (month == 2){
		if(year%4 == 0){
			days = 29;
		}
		else {
			days = 28;
		}
	}
	else if (month == 4 || month == 6 || month == 9 || month == 11){
		days = 30;
	} else {
		days = 31;
	}
	document.getElementById(dayid).options.length=1;
	
	if(day > days){
		day = days;
	}

	for (i=1;i<=days;i++){
		if(i == day){
			document.getElementById(dayid).options[i-1] = new Option(i,i, true, true);							
			//document.getElementById(dayid).innerHTML += '<option value='+i+' selected>'+i+'</option>';
		}
		else {
			document.getElementById(dayid).options[i-1] = new Option(i,i);							
			//document.getElementById(dayid).innerHTML += '<option value='+i+'>'+i+'</option>';
		}
	}
}
				
				


function opentveyes(){
	document.getElementById('tveyesvids').style.visibility = 'visible';
}


function popUp(URL,X,Y)
{
    //eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=0,location=0,statusbar=1,menubar=0,resizable=0,width="+X+",height="+Y+",left = 400,top = 300');");
	window.open(URL, "", "toolbar=0,scrollbars=0,location=0,statusbar=1,menubar=0,resizable=0,width="+X+",height="+Y+"");
}

function visit(newURL)
{
    if (newURL != "")
    {
        location.href=newURL
    }
}

function replaceDocument(content)
{
    document.open("text/html","replace");
    document.write(content);
    document.close();
}

//create the xmlhttprequest object
function getXmlHttpRequestObject() 
{
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	} 
}

function monitorStream()
{
	if (mainReq.readyState == 4 || mainReq.readyState == 0) {
		mainReq.open("GET", 'ssimain/exec/siteStream.php?action=read_invite&user='+siteUsername, true);
		mainReq.onreadystatechange = handleReceiveStream; 
		mainReq.send(null);
	}
}

function handleReceiveStream() {
	if (mainReq.readyState == 4) {
		var xmldoc = mainReq.responseXML;        
		var invite_nodes = xmldoc.getElementsByTagName("invite"); 
		var n_invites = invite_nodes.length
		
		if(n_invites && n_invites > 0)
		{
			var user_node = invite_nodes[i].getElementsByTagName("user");
			var text_node = invite_nodes[i].getElementsByTagName("text");
			var invCount = invite_nodes[i].getAttribute('id');
			var mysernme = text_node[0].firstChild.nodeValue;
			
			if(mysernme == siteUsername)
			{
				alert('You have been invited to chat by '+user_node[0].firstChild.nodeValue);
			}
		}
		if(invCount) { 
			lastCount = invCount; //Keep lastCount from reseting on first try
		}
		statusBox.innerHTML = "1";
	}
	sTimer = setTimeout('monitorStream();',1000);
}

function scrollmarquee(){
	if (parseInt(marquee.style.top)>(actualheight*(-1)+8)) //if scroller hasn't reached the end of its height
		marquee.style.top=parseInt(marquee.style.top)-speed+"px" //move scroller upwards
	else //else, reset to original position
		marquee.style.top=parseInt(marqueeheight)+8+"px"
}

function init_marquee(){
	marquee=document.getElementById("marquee")
	marquee.style.top=0
	marqueeheight=document.getElementById("scroller").offsetHeight
	actualheight=marquee.offsetHeight //height of marquee content (much of which is hidden from view)
	setTimeout('lefttime=setInterval("scrollmarquee()",30)', 2000)
}

function checkUncheckAll(f,butn,nme){
	nme = nme||"streamy";
	//alert(nme);
	for(x=0; x<=f.elements.length-1; x++)
	{
		var boxColl=f.elements[x];
		if(nme != "streamy")
		{
			if(boxColl.name == nme)
			{
				boxColl.checked = checked;
			}
		}
		else
		{
			boxColl.checked = checked;
		}
			
	}
	if(checked == true){
		butn.value = "Uncheck All";
		checked = false;
	} else {
		butn.value = "Check All";
		checked = true;
	}
}

function email_personnel(form) {
    var cbResults = '';
    var radioResults = 'Radio buttons: ';
    for (var i = 0; i < form.elements.length; i++ ) {
        if (form.elements[i].type == 'checkbox') {
            if (form.elements[i].checked == true && form.elements[i].name != 'checkbox' && form.elements[i].value != '') {
                cbResults += form.elements[i].value + '; ';
            }
        }
        
    }
    //alert(i);
    window.location = 'mailto:'+cbResults;
    
    
}

// Country/State AJAX
function ajax_Location(i,id)
{
	data = id+"="+i;
	// branch for native XMLHttpRequest object
	if (window.XMLHttpRequest) {
		
		req = new XMLHttpRequest();
		req.onreadystatechange = processReqChange;
		req.open('POST', '/ajax_handler.php?do=country_state', true);
		req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		req.send(data);
	// branch for IE/Windows ActiveX version
	} else if (window.ActiveXObject) {
		req = new ActiveXObject('Microsoft.XMLHTTP')
		if (req) {
			req.onreadystatechange = processReqChange;
			req.open('POST', '/ajax_handler.php?do=country_state', true);
			req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
			req.send(data);
		}
	}
}
	

function DoCallback(data)
{
	// branch for native XMLHttpRequest object
	if (window.XMLHttpRequest) {
		
		req = new XMLHttpRequest();
		req.onreadystatechange = processReqChange;
		req.open('POST', url, true);
		req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		req.send(data);
	// branch for IE/Windows ActiveX version
	} else if (window.ActiveXObject) {
		req = new ActiveXObject('Microsoft.XMLHTTP')
		if (req) {
			req.onreadystatechange = processReqChange;
			req.open('POST', url, true);
			req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
			req.send(data);
		}
	}
}

function processReqChange() {
	statusDiv = document.getElementById("status"); // <div id="status"></div>
	if (req.readyState == 0){ statusDiv.innerHTML = ""; } // uninitialized
  if (req.readyState == 1){ statusDiv.innerHTML = "<img src=\"/images/working.gif\">"; } // set up
  if (req.readyState == 2){ statusDiv.innerHTML = "<img src=\"/images/working.gif\">"; } // sent
  if (req.readyState == 3){ statusDiv.innerHTML = "<img src=\"/images/working.gif\">"; } // processing
	if (req.readyState == 4){ // complete
		if (req.status == 200){ 
			statusDiv.innerHTML = "<img src=\"/images/accept.png\">"; // Image: Complete
			eval(what);
		} else {
			statusDiv.innerHTML = "Error"; // Image: Error
			alert('There was a problem retrieving the XML data:\n' + req.responseText);
		}
	}
}

function ajax_GetSub(i,id) {
	DoCallback(id+"="+i); // Query string
	//alert(id+"="+i);

}

function ajax_SetSub(i, target) {
	var sub = target || "sub";
	var subBox = document.getElementById(sub);
	subBox.options.length = 0;
	if(i != "")
	{ 
		subBox.style.visibility = 'visible';
		var arrBox = i.split("|"); // Define break character for row

		for(i = 0; i < arrBox.length; i++)
		{
			if(arrBox[i] != "")
			{ 
				var textvalue = arrBox[i].split("/");
				subBox.options[subBox.options.length] = new Option(textvalue[0], textvalue[1]); // Option text, value
			}
		}
	} else {
		subBox.style.visibility = 'hidden';
	}
}

function ajax_infoDiv(i,id,target) {
	what = "ajax_setDiv(req.responseText,'"+target+"')"; // Sets value between <div id="target"></div>
	DoCallback(id+"="+i); // Query string	
}

function ajax_setDiv(i,go) {
	if(i != "")
	{
		document.getElementById(go).innerHTML = i; // text, value
	}
}

// END: Ajax Double Drop Down

// START: monthdayyear
/*
Use: $datetaken = strtotime($_POST['day']." ".$_POST['month']." ".$_POST['year']); to convert
Form name must be "dateForm"
*/
function setCurrentDate() {
  // changes the date selector menus to the current date
  var currentDate = new Date();

  document.dateForm.year.selectedIndex = 0;
  document.dateForm.month.selectedIndex = currentDate.getMonth();

  setDays();  
  document.dateForm.day.selectedIndex = currentDate.getDate() - 1;
}


function makelink(id)
{
	id = id||'emaillister';
	fe = document.getElementById(id);
	var link = 'mailto:';
	for(x=0; x<=fe.elements.length-1; x++)
	{
		var boxColl=fe.elements[x];
		if(boxColl.checked == true && boxColl.value != 'Uncheck All' && boxColl.value != 'Check All'){
			link += boxColl.value + '; ';
		}
		
	}

	if(link != 'mailto:'){
		loo = link.length;
		end = loo - 2;
		meat = link.substring(0, end);
		
		window.location = meat;
	}
}


function setDays() {

  var y = document.dateForm.year.options[document.dateForm.year.selectedIndex].value;
  var m = document.dateForm.month.selectedIndex;
  var d;

  // find number of days in current month
  if ( (m == 3) || (m == 5) || (m == 8) || (m == 10) ) {
    days = 30;
  }
  else if (m == 1) {
    // check for leapyear - Any year divisible by 4, except those divisible by 100 (but NOT 400)
    if ( (Math.floor(y/4) == (y/4)) && ((Math.floor(y/100) != (y/100)) || (Math.floor(y/400) == (y/400))) )
      days = 29
    else
      days = 28
  }
  else {
    days = 31;
  }

  // if (days in new month > current days) then we must add the extra days
  if (days > document.dateForm.day.length) {
    for (i = document.dateForm.day.length; i < days; i++) {
      document.dateForm.day.length = days;
      document.dateForm.day.options[i].text = i + 1;
      document.dateForm.day.options[i].value = i + 1;
    }
  }

  // if (days in new month < current days) then we must delete the extra days
  if (days < document.dateForm.day.length) {
    document.dateForm.day.length = days;
    if (document.dateForm.day.selectedIndex == -1) 
      document.dateForm.day.selectedIndex = days - 1;
  }
}

// END: monthdayyear

// START: Menu Toggle
function showHide(_myObj,_action) {
  var _myTableObj = document.getElementById((_myObj.parentNode.id).substring(0,(_myObj.parentNode.id).indexOf('_')));
  if (_action == 'show') {
      _myTableObj.style.display = 'block';
      _myObj.parentNode.innerHTML = '<a href="javascript:" onclick="showHide(this,\'hide\');"><img src="images/minus.gif"></a>';
  }
  if (_action == 'hide') {
      _myTableObj.style.display = 'none';
      _myObj.parentNode.innerHTML = '<a href="javascript:" onclick="showHide(this,\'show\');"><img src="images/plus.gif"></a>';
  }
}

// Temporary ... testing
function plusMinus(_myObj,_action) {
  var _myTableObj = document.getElementById((_myObj.parentNode.id).substring(0,(_myObj.parentNode.id).indexOf('_')));
  if (_action == 'show') {
      _myTableObj.style.display = '';
      _myObj.parentNode.innerHTML = '<a style="padding-top:3px;" href="javascript:" onclick="plusMinus(this,\'hide\');"><img style="padding-top:3px;" src="images/minus.gif"></a>';
  }
  if (_action == 'hide') {
      _myTableObj.style.display = 'none';
      _myObj.parentNode.innerHTML = '<a style="padding-top:3px;" href="javascript:" onclick="plusMinus(this,\'show\');"><img style="padding-top:3px;" src="images/plus.gif"></a>';
  }
}

function show_hide(the_layer){
	if(document.getElementById(the_layer)){
		if(document.getElementById(the_layer).style.display == 'none'){
			document.getElementById(the_layer).style.display = 'inline';
		}else{
			document.getElementById(the_layer).style.display = 'none';
		}
	}
}


var bustcachevar=1 //bust potential caching of external pages after initial request? (1=yes, 0=no)
var loadedobjects=""
var rootdomain="http://"+window.location.hostname
var bustcacheparameter=""

function ajaxpage(url, containerid, plus, img){
	plus = plus||0;
	img = img||0;
	var page_request = false
	if(plus == 0 && img == 0){
		document.getElementById(containerid).innerHTML = '<img src=images/working.gif>';
	}

	$.get(url,function(data){
		loadpage(data, containerid, plus);
	});

//	if (window.XMLHttpRequest) // if Mozilla, Safari etc
//		page_request = new XMLHttpRequest()
//	else if (window.ActiveXObject){ // if IE
//		try {
//			page_request = new ActiveXObject("Msxml2.XMLHTTP")
//		} 
//		catch (e){
//			try{
//				page_request = new ActiveXObject("Microsoft.XMLHTTP")
//			}
//			catch (e){}
//		}
//	}
//
//	else
//	return false
//	page_request.onreadystatechange=function(){
//	loadpage(page_request, containerid, plus)
//	}
//	if (bustcachevar) //if bust caching of external page
//	bustcacheparameter=(url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime()
//	page_request.open('GET', url+bustcacheparameter, true)
//	page_request.send(null)
}

function loadpage(page_request, containerid, plus){
	var container = document.getElementById(containerid);
	// if the container has a type property and is a select element
	if( container.type )
		isSelect = container.type.substr(0, 6).toLowerCase() == 'select' ? true : false;
	else
		isSelect = false;

	if(plus == 1){
		if( isSelect ) {				
			addSelectOptionHTML( page_request, containerid );
		}else{
			document.getElementById(containerid).innerHTML+=page_request;
		}			
	}else{
		if( isSelect ) {
			document.getElementById(containerid).innerHTML='';// clear select				
			addSelectOptionHTML( page_request, containerid );
		}else{			
			document.getElementById(containerid).innerHTML=page_request;
//			$('#'+containerid).html(page_request);
		}
	}
}

function loadobjs(){
if (!document.getElementById)
return
for (i=0; i<arguments.length; i++){
var file=arguments[i]
var fileref=""
if (loadedobjects.indexOf(file)==-1){ //Check to see if this object has not already been added to page before proceeding
if (file.indexOf(".js")!=-1){ //If object is a js file
fileref=document.createElement('script')
fileref.setAttribute("type","text/javascript");
fileref.setAttribute("src", file);
}
else if (file.indexOf(".css")!=-1){ //If object is a css file
fileref=document.createElement("link")
fileref.setAttribute("rel", "stylesheet");
fileref.setAttribute("type", "text/css");
fileref.setAttribute("href", file);
}
}
if (fileref!=""){
document.getElementsByTagName("head").item(0).appendChild(fileref)
loadedobjects+=file+" " //Remember this object as being already added to page
}
}
}

// takes in string <option value="soandso">Something</option>, wraps in parent elements <options>,
// if IE then, loads into an XML document and parses it to dynamically add select options to a select element
// along with the attribute value (value="something"), BUT does not currently add any other attribute
// if not IE, then load options like normal using innerHTML
function addSelectOptionHTML( htmlString, containerId )
{
	var container = document.getElementById(containerId);
	
	try{
		try { //IE
			xmlDoc=new ActiveXObject("Microsoft.XMLDOM");			
			xmlDoc.async="false";						
			xmlHeader = '<?xml version="1.0"?>';						
			htmlString = xmlHeader + '<options>' + htmlString + '</options>';		
			
			xmlDoc.loadXML(htmlString);			
			 
			options=xmlDoc.documentElement.childNodes;// get options(children of the parent element <options>		
				
			for(i = 0;i < options.length;i++)
			{
				option = document.createElement('option');
				option.innerHTML = options[i].childNodes[0].nodeValue;						
		
				// get array of attributes of options
				attrs = options[i].attributes;
				
				// loop through option attributes and only add attribute if it is value=
				for(j = 0;j < attrs.length;j++) {
					if( attrs[j].nodeName == 'value' )
						option[attrs[j].nodeName] = attrs[j].nodeValue; // [] notation used to convert string to variable name of option variable (option.value)
				 }			
				 
				container.appendChild(option);				
			}
		}catch(e){	// Not IE		
			
			//alert(htmlString);			
			document.getElementById(containerId).innerHTML=htmlString;		
		}			
	}catch(e){
		alert(e.message + ' Line:' + e.lineNumber);
	}
}

/*Adding Multiple Personnel As Credit for assets
* Adds select boxes populated with personnel based on a unit id
* */
function addCredit(unitId, pocId, fieldName, containerId)
{
	var container = $('#' + containerId);	

	var addImage = $(container).is(':has(select)'); // only add a remove button if there are more than one select box	
	
	$.ajax({
	  async: false,
	  url: "../../ajax/ajax.media.php?action=getpersonnel&addnew=0",	  
	  data: ({unit_id : unitId, poc_id : pocId, fieldname : fieldName}),
	  cache: false,	  
	  success: function(html){	    
	    $(container).append('<div>' + html +'</div>');

	 	// append the remove icon and functionality to the end container since anytime we add a new select, it'll come after the select
	    if(addImage){
			var image = document.createElement('img');
			$(image).attr('src', '../../images/ico_x.gif');
			$(image).css({'cursor':'pointer', 'margin-left':'5px', 'margin-top':'6px'});
			$(image).click(function(){$(this).parent().remove();}); // call remove function that sends its parent (span) to be removed
			$(container).find('div:last').append(image); // find the last appeneded div and append the image to that			
	    }	    	    
	  }	  
	});		
}
