function getRelativePath() {
	var p = window.location.pathname;
	var pos = 0;
	if(-1!=(pos=p.indexOf(websiteDomain))) {
		pos += (websiteDomain).length;
		p = p.substr(pos);
	}
	p = ('/'==p.charAt(0)?p.substr(1):p);
	if(-1!=p.indexOf('/')) {
		p = p.split('/');
		for(var i=0; i<p.length-1; i++)
		p[i] = "..";
		p[p.length-1] = "";
		p = p.join('/');
	} else
		p = "";
	return p;
}

function getAbsolutePath(relativePath) {
	if(0==relativePath.indexOf('http'))
		return relativePath;
	if(0==relativePath.indexOf('#'))
		return relativePath;
	//return websitePath + relativePath;
	return getRelativePath() + relativePath;
}

function setSupportURL() {
	$$('.supporturl').each(function (el){
		if(0==el.get('href').indexOf(supportWebsiteURL))
			return;
		if(0==el.get('href').indexOf('http'))
			return;
		el.set('href', supportWebsiteURL + el.get('href'));
	});
}

function navigationHeader(id, active) {
	if(null==$(id))
		return;
	var nav_obj = { index: {ref: 'whatistringme.html', html: "What is TringMe?", 'class': "small item"},
		products: {ref: 'howitworks.html', html: 'How It Works?', 'class': "small item"},
		pricing: {ref: 'checkrates.html', html: 'How Much It Costs?', 'class': "small item" },
		developer: {ref: 'developers.html', html: 'For Developers', 'class': "small item" },
		support: {ref: supportWebsiteURL, html: 'Support', 'class': "small item"},
		press: {ref: 'press.html', html: 'Press', 'class': "small item" },
		about: {ref: 'company.html', html: 'About Us', 'class': "last small item" }
	};

	var logo = new Element('a', {href: getAbsolutePath("index.html"), id: "logo", 'class': "ir"});
	logo.inject($(id));

	/*var tagLine = new Element('div', { id: "tagline", 'class': "ir", text: "Next Generation Communication Platform"});*/
	var tagLine = new Element('div', { id: "tagline", 'class': "ir", text: " "});
	tagLine.inject($(id));

	var userAuth = new Element('div', { id: "user_auth" });
	userAuth.inject($(id));
	var loginCookie = Cookie.read(loginCookieName);
	if(null!=loginCookie && ""!=loginCookie) {
		if(-1==window.location.href.indexOf(websiteAccountPath)) {
			var viewCookie = Cookie.read(viewCookieName);
			var logInURL = websiteAccountPath + "myaccount" + (null!=viewCookie?viewCookie:'') + ".php";
			if('mobile'==viewCookie)
				logInURL = websiteAccountPath + "m/myaccount.php";

			if(''!=websiteAccountPath)
					logInURL = getAbsolutePath(logInURL);
			var logInLink = new Element('a', { 'class': "small blue button login", href: logInURL});
			var logInText = new Element('span', { 'class': "login", text: "My Account"});
			logInText.inject(logInLink);
			logInLink.inject(userAuth);
		}
		var signUpURL = websiteAccountPath + "signout.php";
		if(''!=websiteAccountPath)
			signUpURL = getAbsolutePath(signUpURL);
		var signUpLink = new Element('a', { 'class': "small blue button", href: signUpURL});
		var signUpText = new Element('span', { 'class': "sign_up", text: "Sign Out"});
		signUpText.inject(signUpLink);
		signUpLink.inject(userAuth);
	} else {
		var logInURL = websiteAccountPath + "login.php";
		if(''!=websiteAccountPath)
			logInURL = getAbsolutePath(logInURL);
		var logInLink = new Element('a', { 'class': "small blue button login", href: logInURL});
		var logInText = new Element('span', { 'class': "login", text: "Login"});
		logInText.inject(logInLink);
		logInLink.inject(userAuth);
		var signUpURL = websiteAccountPath + "signup.php";
		if(''!=websiteAccountPath)
			signUpURL = getAbsolutePath(signUpURL);
		var signUpLink = new Element('a', { 'class': "small blue button", href: signUpURL});
		var signUpText = new Element('span', { 'class': "sign_up", text: "Sign up"});
		signUpText.inject(signUpLink);
		signUpLink.inject(userAuth);
	}

	var navEl = new Element('div', { id: "nav"});
	for(i in nav_obj) {
		var elProp = nav_obj[i];
		elProp.href = getAbsolutePath(elProp.ref);
		elProp.ref = null;
		elProp.id = i;
		var el = new Element('a', elProp);
		if(active==i)
			el.addClass('current');
		el.inject(navEl);
	}
	navEl.inject($(id));

	$$("input[type='button'].bluegradient, input[type='submit'].bluegradient, input[type='reset'].bluegradient").each(function(el) {
		el.addEvent('mousedown', animatePress);
		el.addEvent('mouseup', animatePress);
	});

	$$("input[type='button'].greengradient, input[type='submit'].greengradient, input[type='reset'].greengradient").each(function(el) {
		el.addEvent('mousedown', animatePress);
		el.addEvent('mouseup', animatePress);
	});
	setSupportURL();
	/*
	var addToTitle = '';
	if($('dynamic-content') && null!=$('dynamic-content').getFirst('h1'))
		addToTitle = $('dynamic-content').getFirst('h1').get('text');
	else if($('content') && 0<$$('#content h1').length)
		addToTitle = $$('#content h1')[0].get('text');
	if(-1!=addToTitle.indexOf('('))
		addToTitle = addToTitle.substr(0, addToTitle.indexOf('('));
	if(''!=addToTitle)
		document.title += ' - ' + addToTitle;
	*/
}

function animatePress(evt) {
	if('mousedown'==evt.type.toLowerCase()) {
		if(!evt.rightClick)
			evt.target.addClass('pressed');
	} else if('mouseup'==evt.type.toLowerCase())
		evt.target.removeClass('pressed');
}

function footer(id) {
	if(null==$(id))
		return;
	var footerLinks = [{ref: "tringmetospp.html#pp", text: "Privacy&nbsp;Policy  | "},
		{ref: "tringmetospp.html#tos", text: "TOS | "},
		{ref: "company.html", text: "Company | "},
		{ref: "http://blog.tringme.com", text: "Blog | "},
		{ref: "resellers.html", text: "Become a Reseller | "},
		{ref: "contact.html", text: "Contact Us"}
	];
	var links = new Element('div', {id: "tringme_links"});
	links.inject($(id));
	var copyRight = new Element('div', {id: "tringme_copyright"});
	copyRight.inject($(id));
	var copyRightText = new Element('p', {html: "Copyright &copy; 2007-2011 TringMe. All rights reserved."});
	copyRightText.inject(copyRight);
	var poweredByText = new Element('a', {href: getAbsolutePath("developers.html"), html: "Powered by: TringMe API"});
	poweredByText.inject(copyRight);

	var aEl = null;
	for(var i=0; i<footerLinks.length; i++) {
		aEl = new Element('a', {href: getAbsolutePath(footerLinks[i].ref), html: footerLinks[i].text});
		aEl.inject(links);
	}
}

function PreloadIconImage(url) {
	var imgObj = new Image();
	imgObj.src = url;
	return imgObj;
}

function sideNavigation(elId, active, nav_obj) {
	var ulEl = new Element('ul', {'class': "toplevel"});
	var liEl = null;
	var aEl = null;
	var spanEl = null;
	var imgEl = null;
	var childul = null;
	var childli = null;
	var selected = false;
	for(id in nav_obj) {
		selected = false;
		var prop = nav_obj[id];
		liEl = new Element('li', {'class': "toplevel"});
		if(prop.noNext)
			liEl.addClass('nonext');
		aEl = new Element('a', {'class': "toplevel", href: getAbsolutePath(prop.ref)});
		imgEl = new Element('img', {'class': "icon", src: getAbsolutePath(prop.img), styles: prop.imgStyle});
		imgEl.inject(aEl);
		PreloadIconImage(getAbsolutePath(prop.img));
		aEl.appendText(prop.text);
		aEl.addEvent('click', showHide);
		aEl.inject(liEl);

		if(null!=prop.child && ""!=prop.child) {
			childul = new Element('ul', {'class': "sublevel"});
			for(childid in prop.child) {
				childprop = prop.child[childid];
				childli = new Element('li', {'class': "sublevel"});
				aEl = new Element('a', {'class': "sublevel", href: getAbsolutePath(childprop.ref)});
				spanEl = new Element('span', {'class': "sublevel"});
				if(null!=childprop.img) {
					imgEl = new Element('img', {'class': "icon", src: getAbsolutePath(childprop.img), styles: childprop.imgStyle});
					imgEl.inject(spanEl);
					PreloadIconImage(getAbsolutePath(childprop.img));
				}
				spanEl.appendText(childprop.text);
				spanEl.inject(aEl);
				aEl.inject(childli);
				if(active==childid) {
					childli.addClass('selected');
					selected = true;
				}
				childli.inject(childul);
			}
			childul.inject(liEl);
			if(selected)
				childul.addClass('visible');
		} else if(active==id)
			selected = true;

		if(selected)
			liEl.addClass('selected');

		liEl.inject(ulEl);
		if(prop.drawBorder) {
			liEl = new Element('li', {'class': 'showborder'});
			liEl.inject(ulEl);
		}
	}
	ulEl.inject($(elId));
	fixSideNav();
}

function showHide(evt) {
	var aEl = evt.target;
	if("A"!=aEl.get('tag').toUpperCase())
		aEl = aEl.getParent();
	if('#'==aEl.get('href') || ''==aEl.get('href') )
		evt.stop();
	else
		return true;
	var subUl = aEl.getNext();
	if(subUl.hasClass('visible')) {
		subUl.removeClass('visible');
		return;
	}
	liEls = aEl.getParent().getParent().getChildren('li');
	liEls.each(function (item){
		if(null==item.getLast())
			return;
		if("UL"!=item.getLast().get('tag').toUpperCase())
			return;
		item.getLast().removeClass('visible');
	});
	subUl.addClass('visible');
}

function fixCodeHeight() {
	var cols = null;
	var rowH = 0;
	var i = 0;
	$$('.code>.paramrow').each(function(item){
		rowH = 0;
		cols = item.getChildren();
		for(i=0; i<cols.length; i++) {
			if(rowH < cols[i].scrollHeight)
				rowH = cols[i].scrollHeight;
		}
		item.setStyle('height', rowH);
	});
}

var selectedYOffset = 0;

function fixSideNav() {
	$(window).addEvent('scroll', function (evt) {
		var winH = 0;
		if(window.innerHeight)
			winH = window.innerHeight;
		else if(window.screen.availHeight)
			winH = window.screen.availHeight;

		var scrollY = 0;
		scrollY = $(window).getScroll().y;

		var posY = 0;
		var elId = "";
		var yOffset = 0;
		if($('header')) {
			yOffset = $('header').offsetHeight;
			yOffset += $('header').getStyle('margin-top').toInt();
			yOffset += $('header').getStyle('margin-bottom').toInt();
		}

		// what the y position of the scroll is
		//if (scrollY > selectedYOffset) {
		if (scrollY > yOffset && yOffset>0) {
			// if so, add the fixed class
			//$$('#side_nav>ul.toplevel>li.selected')[0].addClass('fixed');
			$$('#side_nav>ul.toplevel')[0].addClass('fixed');
		} else {
			// otherwise remove it
			//$$('#side_nav>ul.toplevel>li.selected')[0].removeClass('fixed');
			$$('#side_nav>ul.toplevel')[0].removeClass('fixed');
		}

		$$('#dynamic-content>div>h3.apiheader').each( function(item) {
			if(posY>0)
				return;
			var t = item.getPosition().y;
			var th = item.getSize().y;
			if((t + th)>scrollY && (t + th)<=(scrollY + winH)) {
				if(null!=item.get('id') && ""!=item.get('id')) {
					posY = t;
					elId = item.get('id');
				}
			}
		});
		$$('#dynamic-content>div>h3.scrollto').each( function(item) {
			if(posY>0)
				return;
			var t = item.getPosition().y;
			var th = item.getSize().y;
			if((t + th)>scrollY && (t + th)<(scrollY + winH)) {
				if(null!=item.get('id') && ""!=item.get('id')) {
					posY = t;
					elId = item.get('id');
				}
			}
		});
		if(""==elId)
			return;

		var link = $$('#side_nav>ul.toplevel>li.selected>ul>li>a').filter('[href*=#' + elId + ']');
		if(null==link)
			return false;
		if(null==link.length || 0==link.length)
			return false;

		if(link[0].getParent().hasClass('.selected'))
			return;

		$$('#side_nav>ul.toplevel>li.selected>ul>li').each( function(item) {
			item.removeClass('selected');
		});
		link[0].getParent().addClass('selected');
	});

	if(Fx.SmoothScroll) {
		var scroll = new Fx.SmoothScroll({links: '#side_nav a[href*=#]',
			wheelStops: true,
			onScrolledTo: function(linkURL, el) {
				var link = $$('#side_nav>ul.toplevel>li.selected>ul>li>a').filter('[href*=#' + el.get('id') + ']');
				if(null==link)
					return false;
				if(null==link.length || 0==link.length)
					return false;
				if(link[0].getParent().hasClass('.selected'))
					return;

				$$('#side_nav>ul.toplevel>li.selected>ul>li').each( function(item) {
					item.removeClass('selected');
				});
				link[0].getParent().addClass('selected');
			}
		});
	}

	var selected = $$('#side_nav>ul.toplevel>li.selected');
	if(null!=selected) {
		if(null!=selected.length && selected.length>0)
			selectedYOffset = $$('#side_nav>ul.toplevel>li.selected')[0].offsetTop - parseFloat($$('#side_nav>ul.toplevel>li.selected')[0].getStyle('marginTop').replace(/auto/, 0));
	}
}

function repositionTextForImage() {
	$$('#dynamic-content>div.clearfix, #content.full>div.clearfix').each(function (el, index){
		var imgEl = el.getFirst('img');
		var hEl = el.getFirst('h3');
		if(null==imgEl)
			return;
		if(null==hEl)
			return;
		if(imgEl.hasClass('ignore'))
			return;
		var childEl = el.getChildren();
		var h = 0;
		var sh = 0;
		for(var i=0; i<childEl.length; i++) {
			if(childEl[i] == imgEl)
				continue;
			h += childEl[i].offsetHeight;
			if(! isNaN(parseInt(childEl[i].getStyle('margin-top'))))
				h += parseInt(childEl[i].getStyle('margin-top'));
			if(! isNaN(parseInt(childEl[i].getStyle('margin-bottom'))))
				h += parseInt(childEl[i].getStyle('margin-bottom'));
			sh += childEl[i].scrollHeight;
		}

		if(! isNaN(parseInt(hEl.getStyle('padding-top'))))
			h -= parseInt(hEl.getStyle('padding-top'));
		if(! isNaN(parseInt(hEl.getStyle('padding-bottom'))))
			h -= parseInt(hEl.getStyle('padding-bottom'));

		var pad = 0;
		if(h<imgEl.offsetHeight) {
			pad = parseInt((imgEl.offsetHeight - h) / 2);
			hEl.setStyle('padding-top', pad);
		} else if(h>imgEl.offsetHeight && 0<imgEl.offsetHeight) {
			pad = parseInt((h - imgEl.offsetHeight) / 2);
			imgEl.setStyle('margin-top', pad);
			imgEl.setStyle('margin-bottom', pad);
		}
	});
}

function tringmelog(obj) {

}

function ShowPage(evt) {
	evt.stop();
	$$('li.toplevel').each(function(el) {
		if(!el.hasClass('selected'))
			return;
		var theEl = el;
		var linkEl = null;
		var pagetoChange =null;
		var continueSearch = true;
		while(null!=theEl) {
			theEl=theEl.getNext();
			if(null==theEl)
				return;
			if(theEl.getChildren().length<=0)
				continue;
			if(theEl.hasClass('nonext'))
				continue;
			linkEl = theEl.getFirst();
			pagetoChange = linkEl.get('href');
			if(null==pagetoChange)
				continue;
			if(''==pagetoChange.trim() || 0==pagetoChange.trim().indexOf('#'))
				continue;
			break;
		}
		window.location = pagetoChange;
	});
}

function MM_preloadImages() { //v3.0
	var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
	var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
	if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function fireClickEvent(el) {
	var e = null;
	if (document.createEventObject) { 
		e = document.createEventObject();
		try {
		el.fireEvent('onclick', e);
			e = null;
		} catch (exp) { } 
	} else {
		e = document.createEvent('MouseEvents');
		try {
			e.initMouseEvent('click', true, true);
			el.dispatchEvent(e);
			e = null;
		} catch (exp) { } 
	}
	return e;
}

function fireFocusEvent(el) {
	var e = null;
	if (document.createEventObject) { 
		e = document.createEventObject();
		try {
			el.fireEvent('onfocus', e);
			e = null;
		} catch (exp) { } 
	} else {
		e = document.createEvent('HTMLEvents');
		if(null==e)
			e = document.createEvent('Event');
		try {
			e.initEvent('focus', true, true);
			el.dispatchEvent(e);
			e = null;
		} catch (exp) { } 
	}
	return e;
}

