/**
 * @author Eds
 */

var pointers = new Array();
var divarrays = new Array();
var numberPerRule = 6;

var pagePointer = 0;
var numPages =  0;

function mailMe()
{
	var str ="mail";
	str+="to:";
	str+="info";
	str+="@";
	str+="e";
	str+="ds";
	str+="kei";
	str+="ze";
	str+="r.nl";
	location.href=str;
}

function switchStylesheetTo(obj,color)
{
	document.getElementById('themesheet').href='assets/styles/'+color+'.css';
}
function initPFItems(rule)
{
	var pfitems = document.getElementById('pf'+rule+'Items');
	pointers[rule] = 0;
	var pfitemdivs = pfitems.getElementsByTagName('DIV');
	var pfitemsPos = getPos(pfitems);
	var divarray = new Array();
	for(var i = 0; i<pfitemdivs.length;i++)
	{
		var pfdiv = pfitemdivs[i];
		
		if(pfdiv.className="portfolioItem")
		{
			pfdiv.onmouseover=function()
			{
				showPfThumb(this);
			}
			pfdiv.onmouseout=function()
			{
				clearTimeout(timer);
			};
			if(i>=numberPerRule)
				pfdiv.style.display='none';
				
			divarray.push(new Divvie(pfdiv.innerHTML, pfdiv.title));
		}	
	}
	divarrays[rule] = divarray;
}
function Divvie(html, title)
{
	this.innerHTML = html;
	this.title = title;
}
function slidePortfolioRule(rule, right)
{

	var pfitems = document.getElementById('pf'+rule+'Items');
	if(right)
		pointers[rule] += 1;
	else
		pointers[rule] -= 1;

	var innerhtmldivs = new Array();
	for(var i=0; i<numberPerRule;i++)
	{
		var pointer = (pointers[rule]+i)%(divarrays[rule].length);
		
		if(pointer>=divarrays[rule].length)
		{
			pointer -= divarrays[rule].length;
		}
		innerhtmldivs.push(divarrays[rule][pointer]);
		
	}
	//alert(divarrays[rule][2].innerHTML);
	var innerHTML = "";
	
	for(var i = 0; i<innerhtmldivs.length;i++)
	{
		
		innerHTML += '<div class="portfolioItem" title="'+innerhtmldivs[i].title+'" onmouseover="showPfThumb(this);">'+innerhtmldivs[i].innerHTML+'</div>';
		//innerHTML += '<div class="portfolioItem" title="" onmouseover="showPfThumb(this);">'+innerhtmldivs[i]+'</div>';
	}
	
	pfitems.innerHTML = innerHTML;
	//alert(divarrays[rule][2].innerHTML);
	
}
var timer = 0;
function showPfThumb(obj)
{
	clearTimeout(timer);
	timer = setTimeout(function()
	{
		showPfThumbTimed(obj);
	}, 500);
}

function showPfThumbTimed(obj)
{
	//alert(obj.innerHTML);
	var pos = getPos(obj);
	var largeThumbDiv = document.getElementById('pfLargeThumb');
	largeThumbDiv.onmouseout = hidePfThumb;
	largeThumbDiv.innerHTML = obj.innerHTML + '<br/>'+obj.title;
	largeThumbDiv.style.left = pos.x + 'px';
	largeThumbDiv.style.top = pos.y + 'px';
	largeThumbDiv.style.display = 'block';
}

function hidePfThumb()
{
	clearTimeout(timer);
	var largeThumbDiv = document.getElementById('pfLargeThumb');
	largeThumbDiv.style.display = 'none';
}

function initPages(max)
{
	var rightColumn = document.getElementById('rightColumn');
	var divs = rightColumn.getElementsByTagName('DIV');
	for(var i = 0; i<divs.length;i++)
	{
		var pagediv = divs[i];
		
		if(pagediv.className=="content")
		{
			pagediv.id = 'page'+numPages;
			numPages++;
		}
	}
	if(max)
		numPages = max;
		
	if (numPages==0)
	{
		if(document.getElementById('pageNavPrevious'))
			document.getElementById('pageNavPrevious').style.visibility = 'hidden';
		if(document.getElementById('pageNavNext'))
			document.getElementById('pageNavNext').style.visibility = 'hidden';
	}
	var qs = getPageAttribute('page');
	if(qs && qs<numPages)
		navPageTo(qs);
	else
		navPageTo(0);
	
}

function navPageTo(pointer, force)
{	
	var oldpage = document.getElementById('page'+(pagePointer));
	oldpage.style.display = 'none';
	if(!force)
	{
		if(pointer>=numPages)
			pointer=numPages;
		if(pointer<0)
			pointer = 0;
	}

	if (document.selection)
	{
		document.selection.empty();
	}
	else
	{
		window.getSelection().removeAllRanges();
	}
	document.getElementById('pageNavPrevious').blur();
	document.getElementById('pageNavNext').blur();
	
	pagePointer = pointer;
	var page = document.getElementById('page'+(pointer));
	
	if (page=='undefined')
		page = document.getElementById('page0');

	page.style.display = 'block';
	setInnerUrl('page='+pagePointer);
	
	
	if(pagePointer>0)
		document.getElementById('pageNavPrevious').style.visibility = 'visible';
	else
		document.getElementById('pageNavPrevious').style.visibility = 'hidden';
		
	if(pagePointer<numPages-1)
		document.getElementById('pageNavNext').style.visibility = 'visible';
	else
		document.getElementById('pageNavNext').style.visibility = 'hidden';
}

function setInnerUrl(url)
{
	var loc = location.href;
	if(loc.indexOf('#')>0)
		loc =loc.split('#')[0];
	
	location.href = loc + '#' + url;
}

function getPageAttribute(name)
{
	var loc = location.href;
	if(loc.indexOf('#')>0)
	{
		loc =loc.split('#')[1];
	
		if(loc.indexOf('=')>0)
		{
			atts = loc.split('=');
			for(var i = 0; i<atts.length; i++)
			{
				if(atts[i] == name)
				{
					if(atts[i+1])
						return parseInt(atts[i+1]);
				}
			}
		}
	}
	
}
var goedimg = "<img src='assets/images/themes/white/icon_right.gif' alt='Goed ingevuld'/>";
var verkeerdimg = "<img src='assets/images/themes/white/icon_wrong.gif' alt='Verkeerd ingevuld, controleer uw invoer'/>";
function getPos(theObj){
  x = y = 0;
	var oldstyle = theObj.style.display;	
	theObj.style.display = 'block';
  h = theObj.offsetHeight;
  w = theObj.offsetWidth;
	theObj.style.display = oldstyle;
  while(theObj){
	x += theObj.offsetLeft;
	y += theObj.offsetTop;
	theObj = theObj.offsetParent;
  }
  return {height:h,width:w,x:x,y:y}
}

function empty(obj)
{
	var name = obj.name;
	document.getElementById(name+'Validatie').innerHTML = "";
}

function validateText(obj)
{
	var name = obj.name;
	if(obj.value.length > 0)
	{
		document.getElementById(name+'Validatie').innerHTML = goedimg;
	
		return true;
	}
	else
	{
		document.getElementById(name+'Validatie').innerHTML = verkeerdimg;
		return false;
	}
	
}

function validateNumber(obj)
{
	var name = obj.name;
	if(obj.value.length == 0)
	{
		document.getElementById(name+'Validatie').innerHTML = "";
	}
	else if(obj.value.length > 3)
	{
		if(checkInternationalPhone(obj.value))
		{
			document.getElementById(name+'Validatie').innerHTML = goedimg;
			return true;
		}
	}
	else
	{
		document.getElementById(name+'Validatie').innerHTML = verkeerdimg;
	}
	return false;
}

function validateEmail(obj)
{
	var valid = false;
	var name = obj.name;
	if(obj.value.length > 3)
	{
		valid = checkEmail(obj.value);
	}
	if (valid)
	{
		document.getElementById(name+'Validatie').innerHTML = goedimg;
	}
	else
	{
		document.getElementById(name+'Validatie').innerHTML = verkeerdimg;
	}
	return valid;
}

function checkEmail(str) 
{
	var at="@";
	var dot=".";
	var lat=str.indexOf(at);
	var lstr=str.length;
	var ldot=str.indexOf(dot);
	if (str.indexOf(at)==-1){		   
	   return false;
	}
	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){		   
	   return false;
	}
	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){		    
		return false;
	}
	 if (str.indexOf(at,(lat+1))!=-1){		    
		return false;
	 }
	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		return false;
	 }
	 if (str.indexOf(dot,(lat+2))==-1){
		return false;
	 }		
	 if (str.indexOf(" ")!=-1){		    
		return false;
	 }
	 return true;				
}

// Declaring required variables
var digits = "0123456789";
// non-digit characters which are allowed in phone numbers
var phoneNumberDelimiters = "()- ";
// characters which are allowed in international phone numbers
// (a leading + is OK)
var validWorldPhoneChars = phoneNumberDelimiters + "+";
// Minimum no of digits in an international phone no.
var minDigitsInIPhoneNumber = 10;

function isInteger(s)
{   var i;
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function checkInternationalPhone(strPhone){
s=stripCharsInBag(strPhone,validWorldPhoneChars);
return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}

var xmlhttp;

function loadXMLDoc(url)
{
xmlhttp=null;
// code for Mozilla, etc.
if (window.XMLHttpRequest)
  {
  xmlhttp=new XMLHttpRequest();
  }
// code for IE
else if (window.ActiveXObject)
  {
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
if (xmlhttp!=null)
  {
  xmlhttp.onreadystatechange=state_Change;
  //alert(url);
  xmlhttp.open("GET",url,true);
  xmlhttp.send("");
  }
else
  {
  alert("Uw browser is helaas verouderd, neem op een andere manier contact op.");
  }
}

function state_Change()
{
// if xmlhttp shows "loaded"
if (xmlhttp.readyState==4)
  {
  // if "OK"
  if (xmlhttp.status==200)
    {
    // ...some code here...
		navPageTo(3,true);
    }
  else
    {
    alert("Problem met versturen formulier. Neem s.v.p. op een andere manier contact op.");
    }
  }
}

function submitContactForm(form)
{
	
	var qs = "?versturen=1";
	
	for(var i=0;i<form.elements.length;i++)
	{
		if(form.elements[i].className.indexOf('required')>=0)
		{
			if(!validateText(form.elements[i]) && form.elements[i].name=='naam')
			{
				alert('Zou u alle alle verplichte velden willen invullen?');
				return false;
			}
			if(!validateEmail(form.elements[i]) && form.elements[i].name=='emailadres')
			{
				alert('Zou u alle alle verplichte velden willen invullen?');
				return false;
			}
			if(!validateNumber(form.elements[i]) && form.elements[i].name=='telefoonnummer' && form.elements[i].value.length>0)
			{
				alert('Zou u alle alle verplichte velden willen invullen?');
				return false;
			}
		}
		qs += '&' + form.elements[i].name + '=' + urlencode(form.elements[i].value); 
	}
	
	loadXMLDoc("http://www.edskeizer.nl/elvis/contact_xmlhttp.php"+qs);
	
	return false;
}

function doOnload()
{
	replaceSIFR();
}

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


window.onload=doOnload;