var flash = true;
var flash_count = 0;
makeFlash();

$(document).ready(function(){ 
	var pic1 = new Image(); 
	pic1.src= location.protocol+'//'+location.host+"/css/assets/menu/menu_bg.png"; 
	
	var pic2 = new Image(); 
	pic2.src= location.protocol+'//'+location.host+"/css/assets/menu/menu_bg_over.png"; 
	
	$(document).pngFix(); 
	resizeAllHomePageColumns();
	$('#nav').nmcDropDown();
	
	addCarouselLoader();
	if(typeof addVideoListener == 'function') 
	{
		addVideoListener();
	}
}); 

function resizeAllHomePageColumns()
{
	var news = $('#newsAndOffers');
	if(news)
	{
		var a = [$('#youDoIt').height(), $('#weDoIt').height(), $('#news').height()];
		var i = greatest(a);
		var h = a[i];
		
		var doItDif = $('#youDoIt').height() - $('#youDoIt .option_text').height();
		var newsDif = $('#news').height() - $('#news_items').height();
		if(i == 2)
		{
			h = h - doItDif;
			$('#youDoIt .option_text').height(h);
			$('#weDoIt .option_text').height(h);
		}
		else
		{
			$('#news_items').height(h - newsDif);
			$('#youDoIt .option_text').height(h - doItDif);
			$('#weDoIt .option_text').height(h - doItDif);
		}
	}
}

function greatest(array)
{
	var val = 0;
	var result = 0;
	for(var i=0; i < array.length; i++)
	{
		if(array[i] > val)
		{
			val = array[i];
			result = i;
		}
	}
	return result;
}


function incrementold(v)
{
	$("#item_"+example_increment).css("visibility", "hidden");
	example_increment = example_increment+v;
	if(example_increment == 0)
	{
		example_increment = no_examples;
	}
	if(example_increment > no_examples)
	{
		example_increment = 1;
	}
	$("#item_"+example_increment).css("visibility", "visible");
	return false;
}

function removeElement(id)
{
	var changeObj = document.getElementById(id);
	changeObj.style.display = 'none';
}

function checkHowHeard(d)
{
	var has_note = false;
	for(var i=1; i <= d.length; i++)
	{	
		var changeObj = document.getElementById('how_heard_label_'+i);
		if(changeObj)
		{
			if(d.value == i)
			{
				has_note = true;
				changeObj.style.display = 'block';
				document.getElementById('how_heard_note_input').value = "";
			}
			else
			{
				changeObj.style.display = 'none';
			}
		}

	}
	
	var parentObj = document.getElementById('how_heard_note');
	if(has_note)
	{
		parentObj.style.display = 'block';
	}
	else
	{
		parentObj.style.display = 'none';
	}
	return false;	
}

function peekABoo(id)
{	
	//	[0] class
	//	[1] hide
	//	[2] unhide
	var ifStatus = [
		['topics', 'none', 'block'],
		['blackboard', 'none', 'block'],
		['bb_attachment', 'none', 'block'],
		['bb_attachment_buttons', 'none', 'block'],
		['peekABoo', 'none', 'block']
	];
	
	//loops through the ifStatus array
	for(var i=0; i< ifStatus.length; i++)
	{	
		var elements = getElementsByAttribute("class", ifStatus[i][0]);
		var changeObj = document.getElementById(id);

		//apply style to all
		for(var p = 0; p < elements.length; p++)
		{
			if(changeObj.className == ifStatus[i][0])
			{
				elements[p].style.display = ifStatus[i][1];
			}
		}
		
		
		changeObj.style.display = ifStatus[i][2];
	}
}

function unset_form(id, postvalue)
{
	var form = document.getElementById(id);
	for (var i=0;i<form.length;i++)
	{
		if(form.elements[i].name == postvalue)
		{
			form.elements[i].valie = 0;
			if(form.elements[i].type == 'radio')
			{
				form.elements[i].checked = false;
			}
		}
	}
}

function makeFlash()
{
	var flash_time = 300;
	if(flash_count < 10)
	{
		if(flash)
		{
			flash = false;
			setTimeout('doFlash("hidden")', flash_time);
			
		}
		else
		{
			flash = true;
			setTimeout('doFlash("visible")', flash_time);
		}
		flash_count++;
	}
}

function doFlash(visible)
{
	var flashname = 'flashing';
	var elements = getElementsByAttribute('class', flashname);
	for(var i = 0; i < elements.length; i++)
	{
		elements[i].style.visibility = visible;
	}
	makeFlash();
}

function styleCheck(id)
{
	//	[0] the element id's that needs to be styled
	//	[1] the element which calls the function
	//	[2] the value this must hold
	//	[3] the style that is being amended
	//	[4] the false state
	//	[5] the true state
	//	[6] the group value
	
	var ifStatus = [];
	
	ifStatus['dd_country'] = ['dd_country', 'country', ['country'], 'display', 'none', 'block', 1];
	ifStatus['dd_city'] = ['dd_city', 'city', ['city'], 'display', 'none', 'block', 1];
	ifStatus['tb_postcode'] = ['tb_postcode', 'postcode', [true], 'display', 'none', 'block', 1];
	
	//ifStatus['compose_dog'] = ['compose_dog', 'to_is_dog', [true], 'display', 'none', 'block', 2];
	//ifStatus['compose_owner'] = ['compose_owner', 'to_is_dog', [true], 'display', 'none', 'block', 2];
	
	var groupNumber = ifStatus[id][6];
	
	for(var i in ifStatus)
	{
		if(ifStatus[i][6] == groupNumber)
		{
			var changeObj = document.getElementById(ifStatus[i][0]);
			changeObj.style.display=ifStatus[i][4];
		}
	}
	
	changeObj = document.getElementById(id);
	changeObj.style.display=ifStatus[id][5];
}

function init()
{
	form_check();
}

function form_check()
{
	var formname = get_formname();
	if(formname)
	{
		var form = document.getElementById(formname);
		if(form)
		{
  			addEvent(form, "submit", form_complete);
		}
	}
}

function get_formname()
{
	var formnames = ['editdog', 'editowner'];
	for(var i = 0; i < formnames.length; i++)
	{
		var form = document.getElementById(formnames[i]);
		if(form)
		{
  			return formnames[i];
		}
	}
	return false;
}

function form_complete(e)
{
	// form[formname][error_id] = items to check
	// items to check, are the items that mandatory, a array within a array mean or
	var return_val = false;
	var formname = get_formname();
	
	if(formname)
	{
		var forms = [];
		forms['editdog'] = [[['name']], [['breed_id', 'bread_manual']], [['dob_day'], ['dob_month'], ['dob_year']], [['rday1', 'rday2', 'rday3', 'rday4', 'rday5', 'rday6', 'rday7']]];
		forms['editdog_error'] = ['name_error', 'breed_id_error', 'dob_error', 'rendezvous_error'];
		
		forms['editowner'] = [[['dob_day'], ['dob_month'], ['dob_year']]];
		forms['editowner_error'] = ['dob_error'];
		
		return_val = true;
		var complete = false;
		//iterate over form total inputs
		for(var i = 0; i < forms[formname].length; i++)
		{	
			//iterate over single inputs within
			for(var j = 0; j < forms[formname][i].length; j++)
			{
				complete = false;
				
				//iterate over inner inputs
				for(var k = 0; k < forms[formname][i][j].length; k++)
				{
					var checkObj = document.getElementById(forms[formname][i][j][k]);
					if(checkObj && !complete)
					{
						if((checkObj.value != 0 && checkObj.value != ''))
						{
							complete = true;	
						}

						if(checkObj.type == 'checkbox')
						{
							if(checkObj.checked == false)
							{
								complete = false;
							}
						}
					}
				}
			}

			var errorObj = document.getElementById(forms[formname+'_error'][i]);
			if(!complete)
			{
				errorObj.style.display= 'block';
				return_val = false;
				
			}
			else
			{
				errorObj.style.display= 'none';
			}
		}
	}
	
	if(!return_val)
	{
		if (e && e.preventDefault)
		e.preventDefault(); // DOM style
		return false; // IE style	
	}
}

function drop_down_selected(id)
{
	var ifStatus = [];
	ifStatus['breed_id'] = ["other_bread", 10, 'display', 'none', 'block'];
	
	var checkObj = document.getElementById(id);
	if(ifStatus[id][1] == checkObj.value)
	{
		changeObj = document.getElementById(ifStatus[id][0]);
		changeObj.style.display=ifStatus[id][4];	
	}
	else
	{
		changeObj = document.getElementById(ifStatus[id][0]);
		changeObj.style.display=ifStatus[id][3];	
	}

}

function setElementStyle(id)
{	
	
	//	[0] the element id's/classname that needs to be styled
	//	[1] the element which calls the function
	//	[2] the value this must hold
	//	[3] the style that is being amended
	//	[4] the false state
	//	[5] the true state
	//	[6] the group value that share connection on the page
	//	[7] if the group also has a number, therefore numbe rof these elements
	
	var ifStatus = [
		[['di'], 'diactive', [true], 'display', 'none', 'block', 1, true],
		[['diactive'], 'dideactive', [true], 'display', 'none', 'block', 1, true]
	];

	//loops through the ifStatus array
	for(var i=0; i< ifStatus.length; i++)
	{	
		//loops through the style element array
		for(var l=0; l< ifStatus[i][0].length; l++)
		{
			var group_name = false;
			var group_number = 0;
			
			//if the element is using group and numbers
			//retrieve the group number passed
			
			if(ifStatus[i][7] == true)
			{
				var group_arr = id.split("_");
				group_name = group_arr[0];
				group_number = group_arr[1];
			}
			
			//if the style element is the id passes
			if(ifStatus[i][0][l] == id || ifStatus[i][0][l] == group_name)
			{

				//gets the object we need to verify
				if(ifStatus[i][7] == true)
				{
					var checkObj = document.getElementById(ifStatus[i][1]+'_'+group_number);
				}
				else
				{
					var checkObj = document.getElementById(ifStatus[i][1]);
				}
				var inArray = false;

				//loops through the values the check element must meet
				for(var j=0; j< ifStatus[i][2].length; j++)
				{
					
					//if the check element meets the criteria or hodls a true value
					if(ifStatus[i][2][j] == true || checkObj.value == ifStatus[i][2][j])
					{
						inArray = true;
						//loops through the ifStatus array
						for(var k=0; k < ifStatus.length; k++)
						{
							//if the element in focus is in the same group as the one been iterated
							if(ifStatus[i][6] == ifStatus[k][6])
							{
								
								//loop over the style elements and hide all
								for(var m=0; m< ifStatus[k][0].length; m++)
								{
									//gets all elements that might have this attribute
									if(ifStatus[i][7] == true)
									{
										var elements = getElementsByAttribute("class", ifStatus[k][0][m]+'_'+group_number);
									}
									else
									{
										var elements = getElementsByAttribute("class", ifStatus[k][0][m]);
									}
									
									// if there are elements that share this attribute eg classname
									if(elements.length > 0)
									{
										//apply style to all
										for(var p = 0; p < elements.length; p++)
										{
											elements[p].style.display=ifStatus[k][4];
										}
									}
									else
									{
										var groupObj = document.getElementById(ifStatus[k][0][m]);
										groupObj.style.display = ifStatus[k][4];
									}
								}
							}
						}
					}
				}
				
				//if the item has been verified and is in array
				if(inArray)
				{
					//loop over the elements that need to styled
					for(var n=0; n< ifStatus[i][0].length; n++)
					{
						//gets all elements that might have this attribute
						if(ifStatus[i][7] == true)
						{
							var elements = getElementsByAttribute("class", ifStatus[i][0][n]+'_'+group_number);
						}
						else
						{
							var elements = getElementsByAttribute("class", ifStatus[i][0][n]);
						}
						
						// if there are elements that share this attribute eg classname
						if(elements.length > 0)
						{
							//apply style to all
							for(var p = 0; p < elements.length; p++)
							{
								elements[p].style.display=ifStatus[i][5];
							}
						}
						else
						{
							//styel individual element
							var changeObj = document.getElementById(ifStatus[i][0][n]);
							changeObj.style.display=ifStatus[i][5];
						}
					}
				}
			}
		}
	}
}

function validateForm(id)
{

	var validateItem = [
		['order_confirm', 'terms', 'checked', 1]
	];
	
	for(var i=0; i< validateItem.length; i++)
	{
		
		if(validateItem[i][0] == id)
		{
			
			var checkObj = document.getElementById(validateItem[i][1]);
			if(validateItem[i][2] == 'checked')
			{
				if(checkObj.checked == validateItem[i][3])
				{
					return true;
				}
			}

		}
	}
	return false;
}

function checkbox_radio(id)
{
	var ele_arr = id.split("_");
	ele_name = ele_arr[0];
	ele_number = ele_arr[1];
	
	if(ele_name == 'r')
	{
		//if a radio was clicked
		var checkboxes = getElementsByAttribute("class", 'c_'+ele_number);
		for(var p = 0; p < checkboxes.length; p++)
		{
			checkboxes[p].checked=1;
		}
	}
	else
	{		
		//if a checkbox was clicked
		var radio = document.getElementById('r_'+ele_number);
		radio.checked = 0;	
	}
}

function getElementsByAttribute(attribute, attributeValue)
{
  var elementArray = new Array();
  var matchedArray = new Array();

  if (document.all)
  {
    elementArray = document.all;
  }
  else
  {
    elementArray = document.getElementsByTagName("*");
  }

  for (var i = 0; i < elementArray.length; i++)
  {
    if (attribute == "class")
    {
      var pattern = new RegExp("(^| )" + attributeValue + "( |$)");

      if (elementArray[i].className.match(pattern))
      {
        matchedArray[matchedArray.length] = elementArray[i];
      }
    }
    else if (attribute == "for")
    {
      if (elementArray[i].getAttribute("htmlFor") || elementArray[i].getAttribute("for"))
      {
        if (elementArray[i].htmlFor == attributeValue)
        {
          matchedArray[matchedArray.length] = elementArray[i];
        }
      }
    }
    else if (elementArray[i].getAttribute(attribute) == attributeValue)
    {
      matchedArray[matchedArray.length] = elementArray[i];
    }
  }

  return matchedArray;
}

function addEvent(obj, evType, fn)
{
  if (obj.addEventListener)
  {
    obj.addEventListener(evType, fn, false);
    return true;
  }
  else if (obj.attachEvent)
  {
  var r = obj.attachEvent("on"+evType, fn);
    return r;
  }
  else
  {
    return false;
  }
}

