/*
script.js
conveyinc.com (version 1.0)
copyright (c) 2009 - all rights reserved
*/


// ****************************************************************
// GLOBALS
// ****************************************************************
/*global document, navigator, Image, clearTimeout, setTimeout*/

if(!Array.indexOf) {
	Array.prototype.indexOf = function(obj) {
		for (var t = 0; t < this.length; t++) {
		if (this[t] == obj) {
                return t;
            }
        }
        return -1;
    };
}


// ****************************************************************
// PAGES
// ****************************************************************

function fPage(rWhich, rSubpage) {
	var t, tPage, tID, tLink, tName, tAlt,
		tStr = '',
		tPages = ['who','what','why','things','clients','contact'],
		tNames = ['WHO WE ARE','WHAT WE DO','WHY WE DO IT','THINGS WE\'VE DONE','OUR CLIENTS','CONTACT'];

	for (t=0; t<tPages.length; t++) {
		tPage = tPages[t];
		tID = (tPage == rWhich) ? tPage + '-on' : tPage;
		tLink = (tPage == 'who') ? '../index' : tPage;
		tName = tNames[t];
		tStr += '<div id="menu-' + tID + '" class="menu m-' + tPage + '"><a href="' + tLink + '.html">' + tName + '</a></div>';
		if (tPage == rWhich) {
			tAlt = tName;
		}
	}
	document.getElementById("menu-wrap").innerHTML = tStr;
	
	document.getElementById("logo").innerHTML = '<a href="../index.html"><img src="../media/convey.gif" width="200" height="64" border="0" alt="Convey Marketing &amp; Communications" /></a>';

	if (rSubpage == 1) {
		tLink = (rWhich == 'who') ? '../index' : rWhich;
		tStr = '<a href="' + tLink + '.html"><img src="../media/title/' + rWhich + '.gif" height="30" border="0" alt="' + tAlt + '" /></a>';
	} else {
		tStr = '<img src="../media/title/' + rWhich + '.gif" height="30" border="0" alt="' + tAlt + '" />';
	}
	document.getElementById("pagetitle").innerHTML = tStr;
}

function fThingMenu(rOn) {
	var t, tClass,
		tStr = '',
		tThing = ['books','websites','brochures','video','publicity','magazines','presentations'],
		tTitle = ['Books','Websites','Brochures &amp; Reports','Video, Audio, &amp; Electronic Media Production','Publicity &amp; Media Relations','Magazines &amp; Newsletters','Presentations &amp; Speeches'];
	for (t=0; t<tThing.length; t++) {
		if (t == rOn) {
			tClass = 'class="thing-on" ';
		} else {
			tClass = '';
		}
		tStr+= '<a ' + tClass + 'href="things-' + tThing[t] + '.html">' + tTitle[t] + '</a>';
	}
	document.getElementById("things-menu").innerHTML = tStr;
}

function fELink(rID, rName, rDomain, rDisplay) {
	var tAddress = rName + String.fromCharCode(64) + rDomain,
		tDisplay = (typeof(rDisplay) == 'undefined') ? tAddress : rDisplay,
		tLink = '<a href="mailto:' + tAddress + '">' + tDisplay + '<' + '/a>';
	document.getElementById(rID).innerHTML = tLink;
}


// ****************************************************************
// CSS RULES
// ****************************************************************

function fCSSRule(rName) {
	var tSNum, tSheet, tRNum, tRule, tLast;
	rName = rName.toLowerCase();
	if (document.styleSheets) {
		for (tSNum = 0; tSNum < document.styleSheets.length; tSNum++) {
			tRNum = 0;
			tRule = false;
			tLast = false;
			tSheet = document.styleSheets[tSNum];
			do {
				if (tSheet.cssRules) {
					tRule = tSheet.cssRules[tRNum];
				} else {
					tRule = tSheet.rules[tRNum];
				}
				if (tRule)  {
					if (tRule.selectorText.toLowerCase() == rName) {
						return tRule;
					}
					// Chrome Fix
					if (tRule == tLast) {
						tRule = false;
					}
					tLast = tRule;
				}
				tRNum++;
			} while (tRule);
		}
	}
	return false;
}

function fCSSRuleAdd(rName) {
	if (document.styleSheets) {
		if (!fCSSRule(rName)) {
			if (document.styleSheets[0].addRule) {
				document.styleSheets[0].addRule(rName, null, 0);
			} else {
				document.styleSheets[0].insertRule(rName + ' { }', 0);
			}
		}
	}
	return fCSSRule(rName);
} 


// ****************************************************************
// CLIENTS
// ****************************************************************

var vClients, vClientPtr;
var fClientHide, fClientNext;
var vClientShowTime = 1500;
var vClientSpeed = 20;
var vClientDelta = 5;
var vClientDelay = 100;
var vClientOpacity = 100;

function fClientShow() {
	vClientOpacity += vClientDelta;
	if (vClientOpacity >= 100) {
		vClientOpacity = 100;
		setTimeout(fClientHide, vClientShowTime);
	} else {
		setTimeout(fClientShow, vClientSpeed);
	}
	fOpacity(vClients[vClientPtr], vClientOpacity);
}

fClientHide = function () { //JSLint Fix
	vClientOpacity -= vClientDelta;
	if (vClientOpacity <= 0) {
		vClientOpacity = 0;
		fClientNext();
	} else {
		setTimeout(fClientHide, vClientSpeed);
	}
	fOpacity(vClients[vClientPtr], vClientOpacity);
};

fClientNext = function () { //JSLint Fix
	var tRule;
	for (var t = 0; t < vClients.length; t++) {
		tRule = fCSSRuleAdd('#' + vClients[t]);
		tRule.style.display = 'none';
		fOpacity(vClients[t], 0);
	}
	if (++vClientPtr >= vClients.length) {
		vClientPtr = 0;
	}
	tRule = fCSSRule('#' + vClients[vClientPtr]);
	tRule.style.display = 'inline';
	setTimeout(fClientShow, vClientDelay);
};

function fClientStart() {
	var tClient;
	var tString = '';
	var tMax = (vClients.length);
	vClientPtr = (Math.floor(Math.random()*tMax)-1);
	for (var t = 0; t < vClients.length; t++) {
		tClient = vClients[t];
		tString += '<img id="' + tClient + '" class="clientlogo" src="../media/logo/' + tClient + '.gif" width="100" height="100" alt="">';
	}
	document.getElementById('client-wrap').innerHTML = tString;
	fClientNext();
}


// ****************************************************************
// HEADERS
// ****************************************************************

var vHeadCel = 'cel',
	vAniFade = [],
	vAniDelay = 1500,

	vCityTotal = 34,
	vCityHeight = 100,
	vCityMaxTime = 2000,
	vCityLast = -1,
	
	vGearTotal = 16,
	vGearHeight = 107,
	vGearTime = 500,
	vGearOn = 0,
		
	vWatrTotal = 20,
	vWatrHeight = 47,
	vWatrDrops = 4,
	vWatrCels = 5,
	vWatrMaxTime = 2500,
	vWatrMinTime = 500,
	vWatrOnTime = 500,
	vWatrOffTime = 2500,
	vWatrFadeDelta = 2,
	vWatrFadeSpeed = 20,
		
	vGrasTotal = 14,
	vGrasHeight = 100,
	vGrasMaxTime = 2500,
	vGrasMinTime = 500,
	vGrasNum = 0,
	
	vBublTotal = 36,
	vBublHeight = 100,
	vBublNum = 5,
	vBublMaxTime = 1000,
	vBublOnTime = 250,
	vBublFadeDelta = 5,
	vBublFadeSpeed = 10,
	
	vPoleTotal = 15,
	vPoleHeight = 125,
	vPoleMaxTime = 1000,
	vPoleOnTime = 150,
	vPoleMinTime = 25;


function fAniStart(rName, rTotal, rHeight) {
	var t, tStr = '';
	for (t=0; t<rTotal; t++) {
		tStr += ('<div class="ani ani-' + rName + '" id="' + vHeadCel + t + '" style="background-position: 0px ' + (t*-rHeight) + 'px;"></' + 'div>');
	}
	document.getElementById("ani").innerHTML = tStr;
}

function fAni(rNum, rVal) {
	var tSty = document.getElementById(vHeadCel + rNum).style;
	tSty.display = rVal;
}

function fRandom(rRange, rPlus) {
	if (typeof(rPlus) == 'undefined') { rPlus = 0; }
	return(Math.floor(Math.random()*rRange) + rPlus);
}

function fOpacity(rID, rVal) { 
    var tSty = document.getElementById(rID).style,
		tVal = (rVal / 100);
    tSty.opacity = tVal; 
    tSty.MozOpacity = tVal; 
    tSty.KhtmlOpacity = tVal; 
    tSty.filter = 'alpha(opacity=' + rVal + ')'; 
} 

// CITY - Who We Are

function fCityAni() {
	var tNum = fRandom(vCityTotal),
		tVal = (fRandom(3)) ? 'block' : 'none';
	if (tNum != vCityLast) {
		fAni(tNum, tVal);
		vCityLast = tNum;
	}
	setTimeout(fCityAni, fRandom(vCityMaxTime));
}

function fCity() {
	fAniStart('city', vCityTotal, vCityHeight);
	setTimeout(fCityAni, vAniDelay);
}

// GEAR - What We Do

function fGearAni() {
	fAni(vGearOn, 'none');
	if (++vGearOn >= vGearTotal) {
		vGearOn = 0;
	}
	fAni(vGearOn, 'block');
	setTimeout(fGearAni, vGearTime);
}

function fGear() {
	fAniStart('gear', vGearTotal, vGearHeight);
	setTimeout(fGearAni, vAniDelay);
}

// WATR - Why We Do It

function fWatrAni() {
	var t, tNum,
		tCelStart = (fRandom(vWatrDrops) * vWatrCels);
	for (t = 0; t < vWatrCels; t++) {
		vAniFade[t] = 0;
		tNum = t + tCelStart;
		fOpacity((vHeadCel + tNum), 0);
		fAni(tNum, 'block');
		setTimeout('fWatrOn(' + t + ',' + tNum + ')', (vWatrOnTime * t));
	}
}

function fWatrOn(rWhich, rNum) {
	var tFade = (vAniFade[rWhich] += vWatrFadeDelta);
	fOpacity((vHeadCel + rNum), tFade);
	if (tFade >= 100) {
		setTimeout('fWatrOff(' + rWhich + ',' + rNum + ')', vWatrOffTime);
	} else {
		setTimeout('fWatrOn(' + rWhich + ',' + rNum + ')', vWatrFadeSpeed);
	}
}

function fWatrOff(rWhich, rNum) {
	var tFade = (vAniFade[rWhich] -= vWatrFadeDelta);
	fOpacity((vHeadCel + rNum), tFade);
	if (tFade <= 0) {
		fAni(rNum, 'none');
		if (rWhich == (vWatrCels - 1)) {
			setTimeout(fWatrAni, fRandom(vWatrMaxTime, vWatrMinTime));
		}
	} else {
		setTimeout('fWatrOff(' + rWhich + ',' + rNum + ')', vWatrFadeSpeed);
	}
}

function fWatr() {
	fAniStart('watr', vWatrTotal, vWatrHeight);
	setTimeout(fWatrAni, vAniDelay);
}

// GRAS - What We Do

function fGrasAni() {
	var t, 
		tMinTime = vGrasMinTime;
	if (++vGrasNum > vGrasTotal) {
		for (t=0; t<vGrasTotal; t++) {
			setTimeout('fAni(' + t + ', "none")', fRandom(vGrasMinTime/2));
		}
		vGrasNum = 0;
		tMinTime = vGrasMaxTime;
	} else {
		fAni(fRandom(vGrasTotal), 'block');
	}
	setTimeout(fGrasAni, fRandom(vGrasMaxTime, tMinTime));
}

function fGras() {
	fAniStart('gras', vGrasTotal, vGrasHeight);
	setTimeout(fGrasAni, vAniDelay);
}

// BUBL - Our Clients

function fBublAni(rWhich) {
	var tNum = fRandom(vBublTotal);
	fAni(tNum, 'block');
	fOpacity((vHeadCel + tNum), 100);
	vAniFade[rWhich] = 100;
	setTimeout('fBublOff(' + rWhich + ',' + tNum + ')', vBublOnTime);
}

function fBublOff(rWhich, rNum) {
	var tFade = (vAniFade[rWhich] -= vBublFadeDelta);
	fOpacity((vHeadCel + rNum), tFade);
	if (tFade <= 0) {
		fAni(rNum, 'none');
		setTimeout('fBublAni(' + rWhich + ')', fRandom(vBublMaxTime));
	} else {
		setTimeout('fBublOff(' + rWhich + ',' + rNum + ')', vBublFadeSpeed);
	}
}

function fBubl() {
	var t;
	fAniStart('bubl', vBublTotal, vBublHeight);
	for (t=0; t<vBublNum; t++) {
		setTimeout('fBublAni(' + t + ')', fRandom(vBublMaxTime) + vAniDelay);
	}
}

// POLE - Contact Us

function fPoleAni(rNum) {
	if (typeof(rNum) == 'undefined' || rNum == -1) { rNum = fRandom(vPoleTotal); }
	fAni(rNum, 'block');
	setTimeout('fPoleOff(' + rNum + ')', fRandom(vPoleOnTime)+(vPoleMinTime*2));
}

function fPoleOff(rNum) {
	fAni(rNum, 'none');
	if (fRandom(3) == 1) {
		setTimeout('fPoleAni(' + -1 + ')', fRandom(vPoleMaxTime));
	} else {
		setTimeout('fPoleAni(' + rNum + ')', fRandom(vPoleMinTime));
	}
}

function fPole() {
	fAniStart('pole', vPoleTotal, vPoleHeight);
	setTimeout(fPoleAni, vAniDelay);
}
