//maked all added functions work onload. at the end of each function you want to work onload add addLoadEvent(function); to the end of the function.
function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		};
	}
}
// The following two functions make it possible to have web standard popups
window.onload = function() {
  if (!document.getElementsByTagName) return false;
  var lnks = document.getElementsByTagName("a");
  for (var i=0; i<lnks.length; i++) {
    if (lnks[i].className == "popup") {
      lnks[i].onclick = function() {
        popUp(this.getAttribute("href"));
        return false;
      };
    }
    if (lnks[i].className == "popupDrive") {
      lnks[i].onclick = function() {
        popUpDrive(this.getAttribute("href"));
        return false;
      };
    }
    if (lnks[i].className == "popupMultimedia") {
      lnks[i].onclick = function() {
        popUpMultimedia(this.getAttribute("href"));
        return false;
      };
    }
    if (lnks[i].className == "popupMultimediaAgilis") {
      lnks[i].onclick = function() {
        popupMultimediaAgilis(this.getAttribute("href"));
        return false;
      };
    }
    if (lnks[i].className == "popupMultimediaDeco") {
      lnks[i].onclick = function() {
        popupMultimediaDeco(this.getAttribute("href"));
        return false;
      };
    }
    if (lnks[i].className == "moreBillboards") {
      lnks[i].onclick = function() {
        moreBillboards(this.getAttribute("href"));
        return false;
      };
    }
  }
};
function popUp(winURL) {
  window.open(winURL,"popup");
}
function popUpDrive(winURL) {
  window.open(winURL,"popupDrive","width=625,height=550,resizable=yes,scrollbars=yes");
}
function popUpMultimedia(winURL) {
  window.open(winURL,"popupMultimedia","width=600,height=500,resizable=yes");
}
function popupMultimediaAgilis(winURL) {
  window.open(winURL,"popupMultimediaAgilis","width=700,height=500,resizable=yes");
}
function popupMultimediaDeco(winURL) {
  window.open(winURL,"popupMultimediaDeco","width=700,height=435,resizable=yes");
}
function moreBillboards(winURL) {
  window.open(winURL,"moreBillboards","width=700,height=435,resizable=no");
}

function rotateFlash() {
	if (!document.getElementById('flashcontent')) return false;
	if (!document.getElementById('home')) return false;
	var ranNum= Math.round((Math.random()*8+1));
	var flash = document.getElementById('flashcontent').getElementsByTagName('div');
	for (var i=0; i<flash.length; i++) {
		if (flash[i].className == 'flasherror') {
			flash[i].style.backgroundImage = 'url(/pnmg/swf/banner'+ranNum+'.jpg)';
		}
	}
}
addLoadEvent(rotateFlash);

function changePrintHeader() {
	if (!document.getElementById('print-header')) return false;
	var bodyClass = document.body.className;
	var header = document.getElementById('print-header');
	header.setAttribute('src','/pnmg/images/print-hdr-' + bodyClass + '.jpg');
}
addLoadEvent(changePrintHeader);

//set up page grid and scroller
function buildPageGrid() {
	if (!document.getElementById('listofallprojectsInner')) return false;
	if (!document.getElementById('viewprojects')) return false;
	var projectsList = document.getElementById('listofallprojectsInner').getElementsByTagName('div');//get all divs inside 'listofallprojectsInner'
	var viewProjects = document.getElementById('viewprojects').getElementsByTagName('a');//get all a's inside 'viewprojects'
	if ((document.getElementById('portfolioLeft') != null) || (document.getElementById('portfolioRight') != null)) {
		for (var j=0; j<viewProjects.length-1; j++) {//loop through all 'viewprojects' a's found
			viewProjects[j].setAttribute('id','projectlink'+j);//assign all a's inside 'viewprojects an id of 'projectlink[plus the counter of j]
		}
		var k = 0;//initialize counter called k
		for (var i=0; i<projectsList.length; i++) {//loop through all 'listofallprojectsInner' divs found
			if (projectsList[i].className == 'project') {
				$('projectlink'+k).addEvent('click', function(event) {//add an onclick event to all 'projectlink'
					event = new Event(event).stop();
					scroll.toElement('project'+this.id.replace("projectlink", ""));//scroll to the div of the linked clicked
				});
				projectsList[i].setAttribute('id','project'+k);//set all divs found with an id of 'project[plus the counter of k]
				if (k < 3) {
					document.getElementById('project'+k).style.top = (0*484)+'px';//set the top style of divs 0-2 to 0
					document.getElementById('project'+k).style.left = (k*842)+'px';//set the left style of divs 0-3 to 842 * [number]
				}
				else if (k < 6) {
					document.getElementById('project'+k).style.top = (1*484)+'px';//set the top style of divs 3-5 to 484
					document.getElementById('project'+k).style.left = ((k-3)*842)+'px';//set the left style of divs 4-7 to 842 * [number-4]
				}
				else if (k < 9) {
					document.getElementById('project'+k).style.top = (2*484)+'px';//set the top style of divs 6-8 to 968
					document.getElementById('project'+k).style.left = ((k-6)*842)+'px';//set the left style of divs 8-11 to 842 * [number-8]
				}
				k++;//increment k
			}
		}		
	} else if (document.getElementById('portfolioMiddle') != null) {
		for (var j=0; j<viewProjects.length-2; j++) {//loop through all 'viewprojects' a's found
			viewProjects[j].setAttribute('id','projectlink'+j);//assign all a's inside 'viewprojects an id of 'projectlink[plus the counter of j]
		}
		var k = 0;//initialize counter called k
		for (var i=0; i<projectsList.length; i++) {//loop through all 'listofallprojectsInner' divs found
			if (projectsList[i].className == 'project') {
				$('projectlink'+k).addEvent('click', function(event) {//add an onclick event to all 'projectlink'
					event = new Event(event).stop();
					scroll.toElement('project'+this.id.replace("projectlink", ""));//scroll to the div of the linked clicked
				});
				projectsList[i].setAttribute('id','project'+k);//set all divs found with an id of 'project[plus the counter of k]
				if (k < 3) {
					document.getElementById('project'+k).style.top = (0*484)+'px';//set the top style of divs 0-2 to 0
					document.getElementById('project'+k).style.left = (k*842)+'px';//set the left style of divs 0-3 to 842 * [number]
				}
				else if (k < 6) {
					document.getElementById('project'+k).style.top = (1*484)+'px';//set the top style of divs 3-5 to 484
					document.getElementById('project'+k).style.left = ((k-3)*842)+'px';//set the left style of divs 4-7 to 842 * [number-4]
				}
				else if (k < 9) {
					document.getElementById('project'+k).style.top = (2*484)+'px';//set the top style of divs 6-8 to 968
					document.getElementById('project'+k).style.left = ((k-6)*842)+'px';//set the left style of divs 8-11 to 842 * [number-8]
				}
				k++;//increment k
			}
		}		
	} else {
		for (var j=0; j<viewProjects.length; j++) {//loop through all 'viewprojects' a's found
			viewProjects[j].setAttribute('id','projectlink'+j);//assign all a's inside 'viewprojects an id of 'projectlink[plus the counter of j]
		}
		var k = 0;//initialize counter called k
		for (var i=0; i<projectsList.length; i++) {//loop through all 'listofallprojectsInner' divs found
			if (projectsList[i].className == 'project') {
				$('projectlink'+k).addEvent('click', function(event) {//add an onclick event to all 'projectlink'
					event = new Event(event).stop();
					scroll.toElement('project'+this.id.replace("projectlink", ""));//scroll to the div of the linked clicked
				});
				projectsList[i].setAttribute('id','project'+k);//set all divs found with an id of 'project[plus the counter of k]
				if (k < 3) {
					document.getElementById('project'+k).style.top = (0*484)+'px';//set the top style of divs 0-2 to 0
					document.getElementById('project'+k).style.left = (k*842)+'px';//set the left style of divs 0-3 to 842 * [number]
				}
				else if (k < 6) {
					document.getElementById('project'+k).style.top = (1*484)+'px';//set the top style of divs 3-5 to 484
					document.getElementById('project'+k).style.left = ((k-3)*842)+'px';//set the left style of divs 4-7 to 842 * [number-4]
				}
				else if (k < 9) {
					document.getElementById('project'+k).style.top = (2*484)+'px';//set the top style of divs 6-8 to 968
					document.getElementById('project'+k).style.left = ((k-6)*842)+'px';//set the left style of divs 8-11 to 842 * [number-8]
				}
				k++;//increment k
			}
		}	
	}
	//scroller from http://demos.mootools.net/Fx.Scroll
	var scroll = new Fx.Scroll('listofallprojects', {
		wait: false,
		duration: 1000,
		offset: {'x': 0, 'y': 0},
		transition: Fx.Transitions.Quad.easeInOut
	});
}
addLoadEvent(buildPageGrid);//launch 'buildPageGrid' on page load

//allow view projects bar to scroll down and up.
function viewProjectsScroll() {
	if (!document.getElementById) return false;
	if (!document.getElementById('viewprojects')) return false;
	if (!document.getElementById('title-viewprojects')) return false;
	viewProjects = document.getElementById('viewprojects');
	viewProjectsTitle = document.getElementById('title-viewprojects');
	viewProjectsAs = document.getElementById('viewprojects').getElementsByTagName('a');
	viewProjectsSpan = document.getElementById('viewprojects').getElementsByTagName('span');
	placeThumbs();
	viewProjects.onmouseover=function() {
		sliderDown();
	};
	viewProjects.onmouseout=function() {
		sliderUp();
	};
	viewProjectsTitle.onmouseover=function() {
		sliderDown();
	};
}
addLoadEvent(viewProjectsScroll);

function placeThumbs() {	
	var viewProjectsAs = document.getElementById('viewprojects').getElementsByTagName('a');
	var Found = false;
	var Current = new Array();
	if ((document.getElementById('portfolioLeft') != null) || (document.getElementById('portfolioRight') != null)) {
		var MaxValue = viewProjectsAs.length-2;
		var NumUnique = viewProjectsAs.length-1;
	} else if (document.getElementById('portfolioMiddle') != null) {
	  var MaxValue = viewProjectsAs.length-3;
		var NumUnique = viewProjectsAs.length-2;
	} else {
		var MaxValue = viewProjectsAs.length-1;
		var NumUnique = viewProjectsAs.length;
	}
	var Count = 0;
	var Current = new Array(NumUnique);
	//scroller from http://demos.mootools.net/Fx.Scroll
	var scroll = new Fx.Scroll('listofallprojects', {
		wait: false,
		duration: 1000,
		offset: {'x': 0, 'y': 0},
		transition: Fx.Transitions.Quad.easeInOut
	});
	GetUnique();
	scroll.toElement('project'+Current[0]);
	if ((document.getElementById('portfolioLeft') != null) || (document.getElementById('portfolioRight') != null)) {
		for(j=0;j<viewProjectsAs.length-1;j++) {
			viewProjectsAs[Current[j]].style.left = (j*59)+'px';
			viewProjectsAs[Current[j]].childNodes[1].style.left = (-1*(j*59))+'px';
		}
	} else if (document.getElementById('portfolioMiddle') != null) {
		for(j=0;j<viewProjectsAs.length-2;j++) {
			viewProjectsAs[Current[j]].style.left = (j*59)+'px';
			viewProjectsAs[Current[j]].childNodes[1].style.left = (-1*(j*59))+'px';
		}
	} else {
		for(j=0;j<viewProjectsAs.length;j++) {
			viewProjectsAs[Current[j]].style.left = (j*59)+'px';
			viewProjectsAs[Current[j]].childNodes[1].style.left = (-1*(j*59))+'px';
		}
	}
	function GetUnique() {
		for (i=0;Count<NumUnique;Count++) {
			Found=false;
			var rndValue = get_random();
			var j=0;
			for (j=0;j<Current.length;j++) {
				if (Current[j] == rndValue) {
					Found=true;
					break;
				}
			}
			if (Found) {
				Count--;
			} else {
				Current[Count]=rndValue;
			}
		}
	}
	function get_random() {
		var ranNum= Math.round(Math.random()*MaxValue);
		return ranNum;
	}
}

var timerID = null;
var pos = 0;
function sliderUp() {
	terminateTimer();
	if (pos > -31) {
		pos = eval(pos - 10);
		document.getElementById('viewprojects').style.top = pos+'px';
		timerID = window.setTimeout('sliderUp()',100);
	}
}
function sliderDown() {
	terminateTimer();
	if (pos == 0) {
		pos = -31;
		document.getElementById('viewprojects').style.top = pos+'px';
		timerID = window.setTimeout('sliderDown()',100);
	}
	if (pos < -1) {
		pos = eval(pos + 10);
		document.getElementById('viewprojects').style.top = pos+'px';
		timerID = window.setTimeout('sliderDown()',100);
	}
}
function terminateTimer() {
    window.clearTimeout(timerID);
}

//Image fader
function imageFader() {
	if (!document.getElementById('listofallprojectsInner')) return false;
	var divList = document.getElementById('listofallprojectsInner').getElementsByTagName('div');//get all divs inside 'listofallprojectsInner'
	var ulList = document.getElementById('listofallprojectsInner').getElementsByTagName('ul');//get all uls inside 'listofallprojectsInner'
	var imgList = document.getElementById('listofallprojectsInner').getElementsByTagName('img');//get all images inside 'listofallprojectsInner'
	a = 0;b = 0;c = 0;
  for (var i=0; i<divList.length; i++) {
		if (divList[i].className == 'blenddiv') {
			divList[i].setAttribute('id','blenddiv'+a);
			a++;
		}
	}
  for (var i=0; i<ulList.length; i++) {
		if (ulList[i].className == 'projectImages') {
			ulList[i].setAttribute('id','projectImages'+b);
			var aList = document.getElementById('projectImages'+b).getElementsByTagName('a');
			for (var j=0; j<aList.length; j++) {
				aList[0].className = 'selected';
				aList[j].onclick=function() {
					selected = document.getElementById(this.parentNode.parentNode.id).getElementsByTagName('a');
					for (var k=0; k<selected.length; k++) {
						selected[k].className = 'none';
					}
					this.className = 'selected';
					blendimage('blenddiv'+this.parentNode.parentNode.id.replace("projectImages", ""),'blendimage'+this.parentNode.parentNode.id.replace("projectImages", ""),this.getAttribute("href"),1000);
					return false;
				};
			}
			b++;
		}
	}
  for (var i=0; i<imgList.length; i++) {
		if (imgList[i].className == 'blendimage') {
			imgList[i].setAttribute('id','blendimage'+c);
			firstImage = document.getElementById('projectImages'+c).getElementsByTagName('a');
			for (var j=0; j<1; j++) {
				document.getElementById('blenddiv'+c).style.backgroundImage = 'url('+firstImage[0].getAttribute('href')+')';
				document.getElementById('blendimage'+c).setAttribute('src',firstImage[0].getAttribute('href'));
			}
			c++;
		}
	}
}
addLoadEvent(imageFader);//launch 'imageFader' on page load

function blendimage(divid, imageid, imagefile, millisec) {
	var speed = Math.round(millisec / 100);
	var timer = 0;	
	document.getElementById(divid).style.backgroundImage = "url(" + document.getElementById(imageid).src + ")";//set the current image as background
	changeOpac(0, imageid);//make image transparent
	document.getElementById(imageid).src = imagefile;//make new image
	for(i = 0; i <= 100; i++) {
		setTimeout("changeOpac(" + i + ",'" + imageid + "')",(timer * speed));//fade in image
		timer++;
	}
}
//change the opacity for different browsers
function changeOpac(opacity, id) {
	var object = document.getElementById(id).style;
	object.opacity = (opacity / 101);
	object.MozOpacity = (opacity / 101);
	object.KhtmlOpacity = (opacity / 100);
	object.filter = "alpha(opacity=" + opacity + ")";
} 

//scroolbar on divs
function showScrollBar() {
	if (!document.getElementById('copyInner')) return false;
	if (!document.getElementById('copyWrap')) return false;
	if (!document.getElementById('scrollbar')) return false;
	document.getElementById('copyWrap').style.overflow = 'hidden';
	if (document.getElementById('copyInner').offsetHeight > 400) {
		document.getElementById('scrollbar').style.display = 'block';
	}
}
addLoadEvent(showScrollBar);

//move the slider div
function moveSlider() {
	if (!document.getElementById('copyInner')) return false;
	if (!document.getElementById('pageup')) return false;
	if (!document.getElementById('pagedown')) return false;
	document.getElementById('pageup').onmouseover=function() {
		pos = document.getElementById('copyInner').style.top;
		scrollerUp('copyInner',pos);
	};
	document.getElementById('pageup').onmouseout=function() {
		terminateTimer();
	};
	document.getElementById('pagedown').onmouseover=function() {
		pos = document.getElementById('copyInner').style.top;
		scrollerDown('copyInner',pos);
	};
	document.getElementById('pagedown').onmouseout=function() {
		terminateTimer();
	};
}
addLoadEvent(moveSlider);
var timerID = null;
function scrollerUp(page,pos) {
	if (typeof pos == "string") {
		pos = pos.replace('px', '');
		pos = 1 * pos;
	}
	if ((pos * -1) > 0) {
		pos = eval(pos + 15);
	}
	document.getElementById(page).style.top =	pos+"px";
	timerID = window.setTimeout('scrollerUp("copyInner",'+pos+')',100);
}
function scrollerDown(page,pos) {
	if (typeof pos == "string") {
		pos = pos.replace('px', '');
	}
	if ((pos * -1) < (document.getElementById(page).offsetHeight - (document.getElementById(page).parentNode.offsetHeight/2))) {
		pos = eval(pos - 15);
	}
	document.getElementById(page).style.top =	pos+"px";
	timerID = window.setTimeout('scrollerDown("copyInner",'+pos+')',100);
}
function terminateTimer() {
	window.clearTimeout(timerID);
}

/*Clear info out of support form textareas*/
addLoadEvent(function(){  
  if(document.getElementById('message')){
    document.getElementById('message').onfocus = function(){
			if (document.getElementById('message').value == 'Type your message here.') {
				document.getElementById('message').value = '';
			}
		};
		if(document.getElementById('btnNext')){
			document.getElementById('btnNext').onclick = function(){
				var msg = document.getElementById('message').value;
				var url = document.getElementById('url').value;
				msg = msg.toString();
				url = url.toString();
				if(msg.length > 30000){
					document.getElementById('message').value = msg.substring(0,30000);
				}
				if(url.length > 30000){
					document.getElementById('url').value = msg.substring(0,30000);
				}
			};
		}
	}
});

//move the slider div
function showForms() {
	if (!document.getElementById('frmContact')) return false;
	
	// error checking
	$('frmContact').addEvent('submit', function(){
	  var reason = $('slctReasonforContacting').value;
	  var requiredLabels = $$('label.required');
	  var error = false;
	  var emailError = false;
	  for(var i=0;i<requiredLabels.length;i++){
	    // skip hidden elements
	    if(requiredLabels[i].getParent('fieldset').getStyle('display') == 'none'){ continue; }
	    var elem = $(requiredLabels[i].getProperty('for'));
	    if(!elem.options && elem.value.trim() == ''){ 
	      error = true;
  	    requiredLabels[i].addClass('error');
	    }
	    else if(elem.options){
	      if(elem.options[elem.options.selectedIndex].value.trim() == ''){
	        error = true;
    	    requiredLabels[i].addClass('error');
	      }
	    }
	    else {
	      requiredLabels[i].removeClass('error');
	    }
	    if(elem.getProperty('id').substr(0, 'txtEmailAddress'.length) == 'txtEmailAddress'){
	      /*
	      if(!preg_match('/^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}$/', $value)
          && !preg_match('/^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9]{1,3}\.[-0-9]{1,3}\.[-0-9]{1,3}\.[-0-9]{1,3})$/', $value)){ return false; }
	      */
	      var test1 = /^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}$/;
	      var test2 = /^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9]{1,3}\.[-0-9]{1,3}\.[-0-9]{1,3}\.[-0-9]{1,3})$/;
	      if(!test1.test(elem.value) && !test2.test(elem.value)){
	        error = true;
	        emailError = true;
    	    requiredLabels[i].addClass('error');
	      }
	      else {
	        requiredLabels[i].removeClass('error');
	      }
	    }
	  }
	  if(error){
	    msg = 'There was an error with information in the form. Please ensure that you filled out all required fields.';
	    if(emailError){
	      msg += ' Also be sure that you entered a valid email address.';
	    }
	    alert(msg);
  	  return false;
  	}
	});
	linkIntoUrl();
	selected();
	$('slctReasonforContacting').addEvent('change',function(e){
	  selected();
  });
	function selected() {
    $$('.showHide').setStyle('display','none');
    if ($('slctReasonforContacting').value == 'hiring') {
	    $$('.hiring').setStyle('display','');
	    $$('#zeroStateMessage').setStyle('display','none');
	  }
	  if ($('slctReasonforContacting').value == 'working') {
	    $$('.working').setStyle('display','');
	    $$('#zeroStateMessage').setStyle('display','none');
	  }
	  if ($('slctReasonforContacting').value == 'contacting') {
	    $$('.contacting').setStyle('display','');
	    $$('#zeroStateMessage').setStyle('display','none');
	  }
	  if ($('slctReasonforContacting').value == '') {
	    $$('#zeroStateMessage').setStyle('display','');
	  }
  }
  function linkIntoUrl() {
    if (!document.getElementById('frmContact')) return false;
    var selected = jQuery.url.attr('anchor');
    if (selected == 'hiring') {
      $j('#slctReasonforContacting option:eq(1)').attr('selected','selected');
    }
    if (selected == 'working') {
      $j('#slctReasonforContacting option:eq(2)').attr('selected','selected');
    }
    if (selected == 'contacting') {
      $j('#slctReasonforContacting option:eq(3)').attr('selected','selected');
    }
  }
}
addLoadEvent(showForms);

addLoadEvent(function(){  
  if(document.getElementById('url')){
    document.getElementById('url').onfocus = function(){
			if (document.getElementById('url').value == 'Add the address from which you received the error.') {
				document.getElementById('url').value = '';
			}
		};
	}
});