// JavaScript Document

function editDeal(id, action) {
	
	var container = document.getElementById('articleContainer');
	var url = 'ajax.php?show=edit&id='+id+'&action='+action;
	var xmlHttp=createXMLHttp();
	
	xmlHttp.onreadystatechange = function() {
			if (xmlHttp.status == 200 && xmlHttp.readyState == 4) {
				container.innerHTML = xmlHttp.responseText;
			}
		}
	xmlHttp.open("GET", url);
	xmlHttp.send(null);

}

function editArticle(id, action) {
	
	var container = document.getElementById('articleContainer');
	var url = 'ajax.php?show=edit&id='+id+'&action='+action;
	var xmlHttp=createXMLHttp();
	
	xmlHttp.onreadystatechange = function() {
			if (xmlHttp.status == 200 && xmlHttp.readyState == 4) {
				container.innerHTML = xmlHttp.responseText;
			}
		}
	xmlHttp.open("GET", url);
	xmlHttp.send(null);

}

function removeArticle(id,redirect) {
	var conf = confirm('Are you sure you want to delete this article?');
	if (conf) {
		var xmlHttp=createXMLHttp();
		var url = 'ajax.php?show=remove&type=news&id='+id+'&nocache='+Math.random();
		xmlHttp.onreadystatechange = function() {
			if (xmlHttp.status == 200 && xmlHttp.readyState == 4) {
				window.location=redirect;
			}
		}
		xmlHttp.open("GET", url);
		xmlHttp.send(null);
		
	} else {
		return false;	
	}
	
}

function removeDeal(id,redirect) {
	var conf = confirm('Are you sure you want to delete this deal?');
	if (conf) {
		var xmlHttp=createXMLHttp();
		var url = 'ajax.php?show=remove&type=deal&id='+id+'&nocache='+Math.random();
		
		xmlHttp.onreadystatechange = function() {
			if (xmlHttp.status == 200 && xmlHttp.readyState == 4) {
				window.location=redirect;
			}
		}
		
		xmlHttp.open("GET", url);
		xmlHttp.send(null);
		
	} else {
		return false;	
	}
	
}

function showResponse(type,news) {
	news = (news != 'N') ? 1 : 0;
	var span = document.getElementById('response');
	var xmlHttp = createXMLHttp();
	var url = "ajax.php?show="+type+"&news="+news+"&nochache="+Math.random();
	xmlHttp.onreadystatechange=function() {
		if (xmlHttp.readyState==4 && xmlHttp.status==200) {
			span.innerHTML=xmlHttp.responseText;
			if (type=='logout') {
				window.location.reload();
			}
		} else if (xmlHttp.status!=200) {
			span.innerHTML="Error "+xmlHttp.status+": "+xmlHttp.statusText;
		}
	}
	xmlHttp.open("GET",url);
	xmlHttp.send(null);
}



function hide(element) {
	document.getElementById(element).style.display='none';	
}
function show(element) {
	document.getElementById(element).style.display='block';	
}
function currentPage(element) {
	document.getElementById(element).className='current';	
}

// Create XMLHttpRequest object
function createXMLHttp() {
	var xmlHttp;
  	try {
    	// Firefox, Opera 8.0+, Safari
    	xmlHttp=new XMLHttpRequest();
    } catch (e) {
    	// Internet Explorer
    	try {
      		xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
      	} catch (e) {
      		try {
        		xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        	} catch (e) {
        		alert("Your web browser does not support this feature.");
        		return false;
        	}
      	}
    }
	return xmlHttp;
}


function menu() {
	var menu=document.getElementById("mainNav");
	var lists=menu.getElementsByTagName("li");
	if(lists) {
		for(var i=0; i<lists.length; i++) {
			lists[i].onfocus=function() {
				this.className="over";
			}
			
			lists[i].onblur=function() {
				this.className="";
			}
		}
	}
}


//ALLOWS EXTERNAL LINKS TO BE OPENED IN A NEW WINDOW WITHOUT THE USE OF TARGET ATTRIBUTE
//LOOPS THROUGH LINKS ON PAGE FINDS EXTERNAL LINKS AND ADDS TARGET//
function externalLinks() {
	//SETS DOMAIN OF SITE
	var domainName=document.domain;
	
	//FIND ALL LINKS ON THE CURRENT PAGE
	var externalLinks=document.getElementsByTagName("a");
	//LOOP THROUGH LINKS ARRAY
	for(var i=0; i<externalLinks.length; i++) {
		//GETS CONTENT OF 'HREF' ATTRIBUTE ON CLICKED LINK
		var attribute=externalLinks[i].getAttribute("href");
		
		//GET VALUE http IN 'HREF' **FOR MOZILLA&&
		var contains_http=attribute.indexOf("http");
		
		//GET VALUE domainName **FOR IE**
		var contains_domain=attribute.indexOf(domainName);
		
		//DOES CONTAIN AN 'http' OR DOES NOT CONTAIN domainName
		if(contains_http>-1 && contains_domain==-1) {
			//SET NEW ATTRIBUTE ON LINK
			externalLinks[i].setAttribute("target", "_blank");
		}
		
	}
	
}

//FORM VALIDATION
//LOOPS THROUGH THE ELEMENTS IN A SUBMITTED FORM, CHECKS IF THEY ARE MARKED AS MANDATORY (class='mand') AND HIGHTLIGHTS LABELS

/**REQUIRED
//EACH REQUIRED FIELD NEEDS CLASS OF mand
**/

/**OPTIONAL
//AN ERROR PARAGRAPH AT THE TOP OF THE PAGE ID=error
//A LINK OR INPUT FIELD IN error TO FOCUS ON
**/

//HIGHLIGHT LABEL IF ELEMENT IS BLANK OR NORMALISE IF COMPLETED
function highlightLabel(form, id, color, weight) {
	var forAttribute="";
	//FIND LABELS ON FORM
	var labels=form.getElementsByTagName("label");
	for(var z=0; z<labels.length; z++) {
		//GET FOR ATTRIBUTE
		//forAttribute=labels[z].getAttribute('for')?labels[z].getAttribute('for'):labels[z].getAttribute('htmlFor');
		if(navigator.appName=="Microsoft Internet Explorer") {
			forAttribute=labels[z].getAttribute('htmlFor');
		}else{
			forAttribute=labels[z].getAttribute('for');
		}
		
		//MATCH FOR WITH ELEMENT ID
		if(forAttribute==id) {
			//APPLY STYLES AS APPROPRIATE
			labels[z].style.color='#'+color;
			labels[z].style.fontWeight=weight;
		}
	}
}


//VALIDATES INPUT FIELDS
function checkInputs(form, fail) {
	//GET INPUTS
	var inputs=form.getElementsByTagName("input");
	for(var x=0; x<inputs.length; x++) {
		//DEFINE ELEMENT ID
		var elementId=inputs[x].getAttribute("id");
		//IS FIELD MANDATORY AND NOT COMPLETED
		if(inputs[x].className.indexOf("mand")>-1 && inputs[x].value=="") {
			//CHANGE LABEL
			highlightLabel(form, elementId, 'cb0000', 'bold');
			//INCREMENT FAIL VAL
			fail++;
		//THIS COVERS CHECKBOXES
		}else if((inputs[x].className.indexOf("mand")>-1 && inputs[x].className.indexOf("checkbox")>-1) && inputs[x].checked==false) {
			//CHANGE LABEL
			highlightLabel(form, elementId, '00603A', 'normal');
			//INCREMENT FAIL VAL
			fail++;
		}else if((inputs[x].className.indexOf("mand")>-1 && inputs[x].className.indexOf("checkbox")>-1) && inputs[x].checked==true) {
			//CHANGE LABEL
			highlightLabel(form, elementId, '000', 'normal');
		}else if(inputs[x].className.indexOf("mand")>-1 && inputs[x].value!="") {
			//CHANGE LABEL
			highlightLabel(form, elementId, '00603A', 'normal');
		}
		
	}
	//SEND FAIL BACK TO FUNCTION
	return fail;
}

//VALIDATES TEXTAREAS FIELDS
function checkTextArea(form, fail) {
	//GET TEXTAREAS
	var textareas=form.getElementsByTagName("textarea");
	for(var n=0; n<textareas.length; n++) {
		//DEFINE ELEMENT ID
		var elementId=textareas[n].getAttribute("id");
		//IS FIELD MANDATORY AND NOT COMPLETED
		if(textareas[n].className.indexOf("mand")>-1 && textareas[n].value=="") {
			//CHANGE LABEL
			highlightLabel(form, elementId, 'cb0000', 'bold');
			//INCREMENT FAIL VAL
			fail++;
		}else if(textareas[n].className.indexOf("mand")>-1 && textareas[n].value!="") {
			//CHANGE LABEL
			highlightLabel(form, elementId, '00603A', 'normal');
		}
		
	}
	//SEND FAIL BACK TO FUNCTION
	return fail;
}

//VALIDATES SELECTS FIELDS
function checkSelects(form, fail) {
	//GET SELECTS
	var selects=form.getElementsByTagName("select");
	for(var b=0; b<selects.length; b++) {
		//DEFINE ELEMENT ID
		var elementId=selects[b].getAttribute("id");
		//IS FIELD MANDATORY AND NOT COMPLETED
		if(selects[b].className.indexOf("mand")>-1 && (selects[b].value=="0" || selects[b].value=="")) {
			//CHANGE LABEL
			highlightLabel(form, elementId, 'cb0000', 'bold');
			//INCREMENT FAIL VAL
			fail++;
		}else if(selects[b].className.indexOf("mand")>-1 && (selects[b].value!="0" && selects[b].value!="")) {
			//CHANGE LABEL
			highlightLabel(form, elementId, '00603A', 'normal');
		}
	}
	//SEND FAIL BACK TO FUNCTION
	return fail;
}

//FINDS THE SUBMITTED FORM
function formValidation(formId) {

	var forms=document.getElementsByTagName("form");
	//LOOP THROUGH FORMS
	for(var i=0; i<forms.length; i++) {
		//FORM HAS BEEN SUBMITTED
		//forms[i].onsubmit=function() {
			//SET FAIL VAL
			var fail=0;
			//ASSIGN CURRENT FAIL VAL TO CHECKING FUNCTIONS
			fail += checkInputs(formId, fail);
			fail += checkTextArea(formId, fail);
			fail += checkSelects(formId, fail);
			
			//CHECK PASSWORDS MATCH
			if(document.getElementById('password_1') && document.getElementById('password_2')) {
				
				var password = document.getElementById('password_1');
				var repassword = document.getElementById('password_2');
				
				var passwordFail = 0;
				
				if(password.value != repassword.value) {
					
					passwordFail++;
					
				}
				
				
			}
			
			//RETURN RESULT OF CHECKING
			if(fail>0) {
				
				if(document.getElementById('error')) {
					var errorText = document.getElementById('error');
					errorText.style.display='block';
					//NEED TO PUT A LINK OR INPUT IN THE ERROR PARA TO GET FOCUS - OPTIONAL
					if(document.getElementById('error_input')) {
						var errorInput = document.getElementById('error_input');
						errorInput.focus();
					}
				}else{
					alert('Please make sure you have completed all fields marked *\n\n');
				}
				
				return false;
				
			}else{
				
				//CHECK IF PASSWORDS MATCH
				if(passwordFail>0) {
					if(document.getElementById('passwordError')) {
					
						var passwordError = document.getElementById('passwordError');
						passwordError.style.display='block';
						var errorInput = document.getElementById('error_password');
						errorInput.focus();
					
					}else{
						alert('Please make sure your passwords match\n\n');
					}
					
					return false;
					
				}else{
				
					return true;
				
				}
			}
		//}
	}
}

//EXECUTES ONLOAD FUNCTIONS
function loadfunctions() {
	externalLinks();
	formValidation();
	menu();
}
//LOADS IN MULTIPLE FUNCTIONS ONLOAD
window.onload=loadfunctions;
