$(document).ready(function(){
	
	var loadingPanel = '<div class="loadingPanel"><span id="totalCount"></span></div>';
	var itemCount = 0;
	var replaceCount = 0;
	var invisibleButtonKeyPressR = '<div id="invisibleButtonKeyPressR"></div>';
	var invisibleButtonDoubleClick = '<div id="invisibleButtonDoubleClick"></div>'
	var totalNumberOfXML = 20;
	var checkLatest = false;
	var xmlCount = 1;
	var xmlNameArray = [];
	var xmlNameArrayCount = 0;
	
	//Counts number of relevent dom elements and binds a double click funtion to all relevent elements
	$('*[lang]').each(function(){
							   
		var elemTxt = $(this).html();
		elemTxt = elemTxt.replace(/^\s+|\s+$/g, '');
		elemTxt = elemTxt.replace(/\s+/g, '');
		var elemID = $(this).attr('lang');
		
		elemID = elemID.split('.');
		xmlNameArray[xmlNameArrayCount] = elemID[0];
		xmlNameArrayCount++;
		itemCount++;
		
		$(this).bind('dblclick', function(){
			$('#invisibleButtonDoubleClick').trigger('click');
			var t = $(this);
			var rds = $(this).data('resourceDisplayStatus');
			if(rds == 'on'){
				hideResourceID(t);
			}else{
				hideResourceID(t);
				showResourceID(t);
			}
		});
		
		if(elemTxt == ''){
			$(this).data('contentCurrent', 'no');
		}
		
	});
	

	xmlNameArray = xmlNameArray.removeDuplicate();
	$.each(xmlNameArray, function() {
        var t = this + '_contentID.xml';	
    });
	
	totalNumberOfXML = xmlNameArray.length;
	
	itemCount = itemCount - 1;
	
	//insert invisible button
	$('body').append(invisibleButtonKeyPressR);
	$('body').append(invisibleButtonDoubleClick);


	//Hot Key Controls
	$.hotkeys.add('Alt+r', function(){ 
		$('#invisibleButtonKeyPressR').trigger('click');
	});
	
	$.hotkeys.add('Alt+u', function(){
		startContentUpdate();				 
	});
	
	//Set Toggle for invisibleButton Alt R
	$('#invisibleButtonKeyPressR').toggle(
		function(){
			$('*[lang]').each(function(){	
				var t = $(this);
				hideResourceID(t);
				showResourceID(t);
			});	
		},
		function(){
			$('*[lang]').each(function(){
				var t = $(this);
				hideResourceID(t);
			});
		}
	);
	
	//Set flag to store a dom element's default display
	function setFlag(obj){
		var t = $(obj).css('display');
		if(t == 'none'){
			$(obj).data('isThisAlreadyHidden', 'yes');
		}
	}

	//Function to show dom element's resource information
	function showResourceID(obj){
		setFlag($(obj));
		$(obj).show()
			  .css('background-color', '#FFFFCC')
			  .prepend('<div class="resourceIDTab"><strong>Content ID: </strong><span class="titleContainer"> </span></div> ')
			  .data('resourceDisplayStatus', 'on');
			  
		$('.resourceIDTab').css({ backgroundColor:"#009900", padding:"3px"});
		
		var t = $(obj).attr('lang');
		var t2 = $(obj).data('contentCurrent')
		
		$(obj).find('.resourceIDTab').css({
			color: 'black',
			fontSize: '12px',
			backgroundColor: '#009900'
		}).children().css('background-color','#009900');
		$(obj).find('.titleContainer').html(t).css('color','white');
		
		if(t2 == 'no'){
			$(obj).find('.resourceIDTab').prepend('<span class="notCurrent">&nbsp;=>&nbsp;</span>&nbsp;&nbsp;');
			$('.notCurrent').css({ backgroundColor:"orange", width:"10px", height:"10px"});
		}
	}
	
	//Function to hide dom element's resource information and turn page back to normal
	function hideResourceID(obj){		
		$(obj).css('background-color', '')	
			  .find('.resourceIDTab')
			  .remove();
			  
		//Return default hidden resource id dom elements to initial display state  
		var t = $(obj).data('isThisAlreadyHidden');
		$(obj).data('resourceDisplayStatus', 'off');
		if(t == 'yes'){
			$(obj).hide();
		}
	}
	
	//Load xml and calls check function
	function getXML(xmlFile){
		
		if(xmlCount > totalNumberOfXML){
			$('.loadingPanel').remove();
			return false;	
		}else{
			//Retrieve and Parse XML Document
			$.get('../xml/' + xmlFile + '.xml', function(data) {
				//Check to see if the browser is IE and add ActiveXObject if it is.
				
				if($.browser.msie){
					var xml;
					if (typeof data == "string") {
					   xml = new ActiveXObject("Microsoft.XMLDOM");
					   xml.async = false;
					   xml.loadXML(data);
					} else {
					   xml = data;
					};
				}else{
					var xml = data;
				}			
				
				$('*[lang]').each(function(){
					var t = $(this);
					var t2 = $(this).attr('lang');	
					checkXML(xml,t,t2);	
				});
	
				var t2 = xmlNameArray[xmlCount];
				xmlCount++;
				var msg = 'Scanning XML File ' + t2 + ' : ' + xmlCount + ' of ' + totalNumberOfXML;
				$('#totalCount').text(msg);	
				getXML(t2);			
			});	
		}
	}
	
	
	//checks dom elements with xml and replaces content with latest version
	function checkXML(xml, obj, contentID){
		$(xml).find('copy[contentID='+ contentID +']').each(function(){
			var t = $(this).text();
			var tTemp = '';
			t = t.replace(/^\s+|\s+$/g, '');
			tTemp = t.replace(/\s+/g,'');
		

			
			var t2 = $(obj).html();
			var intIndexOfMatch = t2.indexOf('<br>');
			
			t2 = t2.replace(/^\s+|\s+$/g, '');
			t2 = t2.replace(/\s+/g,'');
			
			while (intIndexOfMatch != -1){
				t2 = t2.replace('<br>','<br/>');
			 	intIndexOfMatch = t2.indexOf('<br>');
			}
			
			
			if(tTemp == t2){
				$(obj).data('contentCurrent', 'yes');
			}else{
				$(obj).html(t)
					  .data('contentCurrent', 'no');
//				alert('Changing ' + tTemp + ' and ' + t2);
			}
			
			replaceCount++;
		});	
	}

	//Set function for Alt U
	function startContentUpdate(){
		$('.pageHeaderContainer').before(loadingPanel);
		$('.loadingPanel').css({
			backgroundColor: "#009900",
			width: "2000px",
			fontWeight: "bold",
			color: "white",
			padding: "10px",
			position: "fixed",
			top: "0px",
			left: "0px",
			zIndex: "1000",
			borderTop: "2px solid white",
			borderBottom: "2px solid white"
		});
		
		$('*[lang]').each(function(){
			var t = $(this);
			hideResourceID(t);
		});
		
		if(!checkLatest){
			var startXML = xmlNameArray[0];
			startXML = startXML + '_contentID';
			getXML(startXML);
			var msg = 'Scanning XML File ' + startXML + ' : ' + xmlCount + ' of ' + totalNumberOfXML;
			$('#totalCount').text(msg);
			checkLatest = true;
		}else{
			setTimeout("$('.loadingPanel').remove()", 500);
		}	
	}

});

Array.prototype.removeDuplicate = function(){
	// Here we remove duplicate values from first array
	var array4 = new Array;
	for(var i=0; i<this.length; i++) 
	{
		  var xx = true;
		for(var j=i+1; j<this.length; j++)
		{
			if(this[i] == this[j])
				xx = false;		
		}	
		if(xx == true)
			array4.push(this[i]);
	}
	return array4;
}
	