﻿function get_ajax(url,post) 
	{
		document.body.focus();
		var xml = false;
		var ajax = this.xml;
		if (window.XMLHttpRequest) {
			ajax = new XMLHttpRequest();
		}
		else if (window.ActiveXObject) {
			ajax = new ActiveXObject("Microsoft.XMLHTTP");
		}
		ajax.open('POST', url, true);
		ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		try{ajax.setRequestHeader("Content-length", post.length);} catch(e){}
		ajax.setRequestHeader("Connection", "close");
		return ajax;
	}

function contain(slug)
{
	page(slug,document.getElementById('container'));	
}
	


function page(src, dst) {
    var ajax = get_ajax("/" + src);
	window.location.hash = "/" + src;
	setCookie("placemark",window.location.hash,365);
		
	try{
	var sup = document.getElementById('supplement');
	sup.innerHTML = '';
	sup.style.display = 'none';
	sup.style.top = 0;
	sup.style.left = 0;}catch (e) {}
	dst.innerHTML = '<div id="loading"></div>';
    ajax.onreadystatechange = function () {
        if (ajax.readyState == 4) {
            dst.innerHTML = ajax.responseText;
			if(src == "home") { home(); }
			silence();

			window.location.hash = "/" + src;
			try{ clicky.log('#/'+src, document.getElementById('pagetitle').innerHTML); }catch(e){}
            try {
                eval(document.getElementById('eval').innerHTML);
            } catch (e) {}
			
            try {
                document.title = document.getElementById('pagetitle').innerHTML;
				
            } catch (e) {}
        }
    }
    ajax.send();
}




function userdetail(src) {
    var ajax = get_ajax("/details/" + src);
		
	var dst = document.getElementById('details');
	dst.innerHTML = '<h2>Progress Detail...</h2><div id="loadinginner"></div>';
    ajax.onreadystatechange = function () {
        if (ajax.readyState == 4) {
            dst.innerHTML = ajax.responseText;
        }
    }
    ajax.send();
}

function submitcontact() {

	var name = document.getElementById('contactname').value;
	var email = document.getElementById('contactemail').value;
	var reason = document.getElementById('contactreason').options[document.getElementById('contactreason').selectedIndex].value;
	var message = document.getElementById('contactmessage').value;
	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	if(reg.test(email) == false) {
      alert('Please enter a valid email address');
      return false;
   }
   
   if(name == "")		{ alert("Please enter your name."); return false; }
   if(message == "")	{ alert("Please a message."); return false; }

	var post = "name="+escape(name)+"&email="+email+"&reason="+reason+"&message="+escape(message);
    var ajax = get_ajax("/contact",post);
	var dst = document.getElementById('container');
	dst.innerHTML = '<div id="loading"></div>';
    ajax.onreadystatechange = function () {
        if (ajax.readyState == 4) {
            dst.innerHTML = ajax.responseText;
        }
    }
    ajax.send(post);
}


function filterplaces(post) {

    var ajax = get_ajax("/placesfilter",post);
	var dst = document.getElementById('placesresults');
	dst.innerHTML = '<div id="loadingnorm"></div>';
    ajax.onreadystatechange = function () {
        if (ajax.readyState == 4) {
            dst.innerHTML = ajax.responseText;
        }
    }
    ajax.send(post);
}



function currentYPosition() {
    if (self.pageYOffset) return self.pageYOffset;
    if (document.documentElement && document.documentElement.scrollTop) return document.documentElement.scrollTop;
    if (document.body.scrollTop) return document.body.scrollTop;
    return 0;
}
function elmYPosition(eID) {
    var elm = document.getElementById(eID);
    if (elm != null) {
        var y = elm.offsetTop;
        var node = elm;
        while (node.offsetParent && node.offsetParent != document.body) {
            node = node.offsetParent;
            y += node.offsetTop;
        }
        return y;
    }
}
function stripAlphaChars(pstrSource) 
{ 
	var mstrOut = new String(pstrSource); 
    return mstrOut.replace(/[^0-9]/g, ''); 
}


function getPageRect() {
	var isquirks= document.compatMode!=='BackCompat';
	var page= isquirks? document.documentElement : document.body;
	var x= page.scrollLeft;
	var y= page.scrollTop;
    if (y == 0 || y == undefined) y = document.documentElement.scrollTop;
    if (y == 0 || y == undefined) y = document.body.scrollTop;
	var w= 'innerWidth' in window? window.innerWidth : page.clientWidth;
	var h= 'innerHeight' in window? window.innerHeight : page.clientHeight;
	return [x, y, x+w-100, y+h-100];
}

function getPageTop() {
	var isquirks= document.compatMode!=='BackCompat';
	var page= isquirks? document.documentElement : document.body;
	var x= page.scrollLeft;
	var y= page.scrollTop;
    if (y == 0 || y == undefined) y = document.documentElement.scrollTop;
    if (y == 0 || y == undefined) y = document.body.scrollTop;
	var w= 'innerWidth' in window? window.innerWidth : page.clientWidth;
	return [x, y, x+w, y+1];
}

function getElementRect(element,offset) {

	var x= 0, y= 0;
	var w= element.offsetWidth, h= element.offsetHeight;
	while (element.offsetParent!==null) {
		x+= element.offsetLeft;
		y+= element.offsetTop;
		element= element.offsetParent;
	}
	if(offset == true){	y=y-100;	}
	return [x, y, x+w, y+h];
}

function rectsIntersect(a, b) {
	return a[0]<b[2] && a[2]>b[0] && a[1]<b[3] && a[3]>b[1];
}

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}



function windowHeight()
{
	if( typeof( window.innerHeight ) == 'number' ) {
		return window.innerHeight;
	} else if( document.documentElement && (document.documentElement.clientHeight ) ) {
		return document.documentElement.clientHeight;
	} else if( document.body && (document.body.clientHeight ) ) {
    	return document.body.clientHeight;
  	}
}


function windowWidth()
{
	if( typeof( window.innerWidth ) == 'number' ) {
		return window.innerWidth;
	} else if( document.documentElement && (document.documentElement.clientWidth ) ) {
		return document.documentElement.clientWidth;
	} else if( document.body && (document.body.clientWidth ) ) {
    	return document.body.clientWidth;
  	}
}


function clearcontainer()
{
	document.getElementById('container').innerHTML = "";
}




function setCookie(c_name,value,exdays)
{
	var exdate=new Date();
	exdate.setDate(exdate.getDate() + exdays);
	var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
	document.cookie=c_name + "=" + c_value;
}


function textmark(slug)
{
	setCookie("textmark",slug,365);
}

function getCookie(c_name)
{
var i,x,y,ARRcookies=document.cookie.split(";");
for (i=0;i<ARRcookies.length;i++)
{
  x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
  y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
  x=x.replace(/^\s+|\s+$/g,"");
  if (x==c_name)
    {
    return unescape(y);
    }
  }
}


function urlencode(str) {
str = escape(str);
str = str.replace('%20', '+');
str = str.replace('*', '%2A');
str = str.replace('/', '%2F');
str = str.replace('@', '%40');
return str;
}

function searchbox(e,q,v) {
    if (e.keyCode == 13) {
		page("search/"+urlencode(q.replace(/ /g,"+")), document.getElementById("container"));
		v.blur();
    }
}


function audioswap()
{
	if(!getCookie('audio')){setCookie("audio",1,365);}
	if(getCookie('audio') == 0){setCookie("audio",1,365);}
	else if(getCookie('audio') == 1){ silence(); setCookie("audio",0,365);}
}


function noteswap()
{
	if(!getCookie('notes')){setCookie("notes",1,365);}
	if(getCookie('notes') == 0){setCookie("notes",1,365); showdots(); }
	else if(getCookie('notes') == 1){  setCookie("notes",0,365);  hidedots();}
}


document.getElementsByClassName = function(cl) {
var retnode = [];
var myclass = new RegExp('\\b'+cl+'\\b');
var elem = this.getElementsByTagName('*');
for (var i = 0; i < elem.length; i++) {
var classes = elem[i].className;
if (myclass.test(classes)) retnode.push(elem[i]);
}
return retnode;
};


function showdots()
{
	//
}


function hidedots()
{
	//
}


function toggleplaceoption(cat,key,force)
{
	var div		= document.getElementById(cat+key);
	var check 	= document.getElementById(cat+key+"check");
	
	try{
		if(div.style.color == 'black' || div.style.color == "")
		{
			div.style.color = 'silver';
			div.style.borderColor = 'silver';
			check.checked=false;
			placefilter[cat][key] = 0;
		}
		else
		{
			div.style.color = 'black';
			div.style.borderColor = 'grey';
			check.checked=true;
			placefilter[cat][key] = 1;
		}
	
		if(force=="off")
		{
			div.style.color = 'silver';
			div.style.borderColor = 'silver';
			check.checked=false;
			placefilter[cat][key] = 0;
		}
		if(force=="on") 
		{
			div.style.color = 'black';
			div.style.borderColor = 'grey';
			check.checked=true;
			placefilter[cat][key] = 1;
		}
	}catch(e){}
	
	var jsonstring = JSON.stringify(placefilter);
	setCookie("placefilter",jsonstring,365);
	document.getElementById('placesresults').innerHTML = '<div id="loadingnorm"></div>';
	clearTimeout(waiter);
	waiter = setTimeout("filterplaces('filters='+JSON.stringify(placefilter))",1000);
}

function multiplace(onoff, type)
{
	var p = placefilter[type];
	for (var key in p) 
	{
		if (p.hasOwnProperty(key)) 
		{
			toggleplaceoption(type,key,onoff);
		}
	}	
}

function getSelText()
{
	var txt = '';
if (window.getSelection)
	{ 
		txt = window.getSelection();
	}
	else if (document.getSelection)
	{
		txt = document.getSelection();
	}
	else if (document.selection)
	{
		txt = document.selection.createRange().text;
	}
	return txt;
}

function string_to_slug(str) {
  
  var sel = getSelText();
  if(sel != "") return "";
  str = str.toLowerCase();
  
  // remove accents, swap ñ for n, etc
  var from = "àáäâèéëêìíïîòóöôùúüûñç·/_,:;";
  var to   = "aaaaeeeeiiiioooouuuunc------";
  for (var i=0, l=from.length ; i<l ; i++) {
    str = str.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i));
  }

  str = str.replace(/\s+/g, '-') // collapse whitespace and replace by -
    .replace(/-+/g, '-'); // collapse dashes

	str = str.replace(/^\s+|\s+$/g, ''); // trim
	str = str.substring(0,10);
  return str;
}

function isValidEmail(str) {

   return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
}
