/* Stylevision javascript file */
function externalLinks() {
 if (!document.getElementsByTagName) return;
 var anchors = document.getElementsByTagName("a");
 for (var i=0; i<anchors.length; i++) {
   var anchor = anchors[i];
   if (anchor.getAttribute("href") &&
       anchor.getAttribute("rel") == "external")
     anchor.target = "_blank";
 }
}
window.onload = externalLinks;
document.onclick = manageClick;

function entsub(event,ourform) {  
  if (event && event.which == 13) {
    manageClick;
  }else{
    return true;
  }
}

// flag for my Google Maps API implementation
var mapsRunning = false;
var geoCoder, map;

function manageClick(e) {
  if(!e) var e = window.event;
  var target = e.target || e.srcElement;  
  
  switch(target.id) {
    case "zoek":
      if (e.preventDefault){ e.preventDefault()}
      else { e.returnValue = false; }
      nearStepOne();
      break;
  }
}

function initalize() {
    geocoder = new google.maps.Geocoder();    
    mapsRunning = true;
    nearStepTwo();
}

function parseXml(str) {
    if(window.ActiveXObject) {
      var doc = new ActiveXObject('Microsoft.XMLDOM');
      doc.loadXML(str);
      return doc;
    }
    else if(window.DOMParser) {
      return (new DOMParser).parseFromString(str, 'text/xml');
    }
}

function makeMarker(latitude, longitude) {
    var markerPos = new google.maps.LatLng(latitude, longitude);
    var marker = new google.maps.Marker({
      map: map,
      position: markerPos,
      icon: '/images/stylevision-marker.png'
    });
}

function nearStepOne() {    
    //test for input
    //address = document.forms[0].address.value;
    zipcode = document.forms[0].zipcode.value.toUpperCase().split(' ').join('');    
    //rExp = /^[0-9][0-9][0-9][0-9]?[A-Z][A-Z]$/gi;     
    //OK = rExp.exec(zipcode);
        
    if (zipcode.match(/^[1-9][0-9]{3}$/)) {
        zipcode = zipcode + 'AA';
    }
    
    if (!(zipcode.match(/^[1-9][0-9]{3}([A-Z]|[a-z]){2}$/))) {
      alert("De ingevoerde postcode is geen geldige Nederlandse postcode");	  
      return false;
    }
    
    cusLoc = zipcode;
    
    //test for Google maps API
    if(!mapsRunning) {
      var script = document.createElement('script');
      script.src = 'http://maps.google.com/maps/api/js?sensor=false&callback=initalize';
      document.body.appendChild(script);
    }
    else{
	  nearStepTwo();
    }
	//offer alternative if Google Maps is Running	    
}

function nearStepTwo() {
    geocoder.geocode({'address': cusLoc}, function(results, status) {      
      if (status == google.maps.GeocoderStatus.OK) {            
        var latitude = results[0].geometry.location.lat();
        var longitude = results[0].geometry.location.lng();        
        cusStartAddress = new google.maps.LatLng(latitude, longitude);        
        nearStepThree('locaties-form.php?latitude=' + latitude + '&longitude=' + longitude, function(data) {nearStepFour(data)});
      }
      else {
        alert('De ingevoerde postcode is geen geldige nederlandse postcode');
      }
    });
}

function nearStepThree(url, callback) {
    var request = window.ActiveXObject ? 
      new ActiveXObject('Microsoft.XMLHTTP') :
      new XMLHttpRequest;
    request.onreadystatechange = function() {
      if(request.readyState == 4) {
        callback(request.responseText, request.status);
      }
    };
    request.open('GET', url, true);
    request.send(null);
}

function nearStepFour(data) {
    var xml = parseXml(data);    
    var eachStore = xml.documentElement.getElementsByTagName('store');
    
    map = new google.maps.Map(document.getElementById('googleMaps'), {    
      center: new google.maps.LatLng(parseFloat(eachStore[0].getAttribute('latitude')), parseFloat(eachStore[0].getAttribute('longitude'))),
      zoom: 13,
      mapTypeId: google.maps.MapTypeId.ROADMAP,
      mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.DROPDOWN_MENU }
    });
    document.getElementById('locaties').innerHTML='';
    
    for(var i = 0; i < eachStore.length; i++) {
      var winkel = eachStore[i].getAttribute('naam');
      var straat = eachStore[i].getAttribute('straat');
      var postcode = eachStore[i].getAttribute('postcode');
      var plaats = eachStore[i].getAttribute('plaats');
      var provincie = eachStore[i].getAttribute('provincie');
      var website = eachStore[i].getAttribute('website');
      var latitude = eachStore[i].getAttribute('latitude');
      var longitude = eachStore[i].getAttribute('longitude');
      var distance = eachStore[i].getAttribute('distance');
      
      /*if (website = '') {
        website = 'dealers.html#noggeenwebsite'
      }*/
      
      var storeInfo = document.createElement('div');
      storeInfo.id = 'store-info' + [i];
      storeInfo.innerHTML = '<div class="store-info"><a href="'+ website +'" class="link" rel="external"><span class="winkel">' + winkel + '</span><br /><span class="address">' + straat +'<br />'+ postcode + '&nbsp;' + plaats + '</span></a></div>';
      
      var parentDiv = document.getElementById('locaties');      
      parentDiv.appendChild(storeInfo);
      
      makeMarker(latitude, longitude);
    }
}


jQuery(document).ready(function() {

  $("#rechts .home-content").randombg({
    directory: "images/home/", //directory to image folder
    howmany: 4 //how many images are in this folder
  });

  $("#overlay-googlemaps").click(function() {       
    $(".clickable").animate({
      "bottom": "+=220px",
      "height": "380px"
    }, 1500 );
    $('#overlay-googlemaps').removeClass('clickable');
    $('#overlay-googlemaps').addClass('overlayisup');
    externalLinks();
    //$("#overlay-googlemaps").css("margin", "100px 0px 0px -535px");
    //$("#overlay-googlemaps").css("height", "381px");
  });
  $("#inhoud").click(function() {    
    $(".overlayisup").animate({
      "bottom": "-=220px",
      "height": "161px"
    }, 1500 );
    $('#overlay-googlemaps').addClass('clickable');
    $('#overlay-googlemaps').removeClass('overlayisup');
    //$("#overlay-googlemaps").css("margin", "341px 0px 0px -100px");
    //$("#overlay-googlemaps").css("height", "140px");
  });
  $('p.vinddealer').click(function() {
    if ($("#content .overlay").is(":hidden")) {
        $("#content .overlay").slideDown("fast");
    } else {
        $("#content .overlay").slideUp("fast");
    }
  });
  
  $("#dealer_login").click(function() {    
    $.fancybox(
		'<h2>Geachte klant</h2><p>Momenteel zijn we hard bezig om een klanten login module te maken.<br />Deze functionaliteit wordt begin 2011 ter beschikking gesteld.<br />Als u al klant bent dan krijgt u hier z.s.m. bericht over.</p><p>Voor nu fijne feestdagen en een voorspoedig 2011 toegewenst.<br /><br />Met Vriendelijke Groet,<br >Style Vision</p>',
		{
        	'autoDimensions'	: false,
			'width'         	: 600,
			'height'        	: 'auto',
			'transitionIn'		: 'none',
			'transitionOut'		: 'none'
		}
	);
  });
  
  $("div.navigation").click(function() {
    $side = $(this).attr("id");        
    if ($side == "navigation_up") {      
      $("div#foto_content").scrollTo('-=157px', 800);
    } else {
      $("div#foto_content").scrollTo('+=157px', 800);
    }    
  });
  
  $("a[rel=voorbeeldfoto]").fancybox({
    'transitionIn'		: 'elastic',
    'transitionOut'		: 'elastic',
	'titlePosition' 	: 'inside',
  });
});
