﻿String.Format = function()
{
    if( arguments.length == 0 )
        return null;

    var str = arguments[0];

    for(var i=1;i<arguments.length;i++)
    {
        var re = new RegExp('\\{' + (i-1) + '\\}','gm');
        str = str.replace(re, arguments[i]);
    }

    return str;
};

/* Get javascript file params */
function getJsParams(javascriptfile){
    var params = {};

    javascriptfile = javascriptfile + '?';
    var tags = document.getElementsByTagName('script');
    for (var n = 0; n < tags.length; n++)
    {
        var startIndex = tags[n].src.indexOf(javascriptfile);
        if(startIndex != -1){
           var urlparams = tags[n].src.substring(javascriptfile.length+startIndex);
           var params2 = urlparams.split('&');
           for(var i = 0;i<params2.length;i++){
             var param = params2[i].split('=');
             if(param[1] != null && param[1] != ''){
                params[param[0]] = param[1];
             }
           }
        }
    }
    
    return params;
}
function getURLParam(strParameterName)
{
    var strURL = window.document.URL.toString();
    if ( strURL.indexOf ("?") > 0 )
    {
        var strParameters = strURL.split ("?")[1].split ("&");
        for ( i = 0; i < strParameters.length; i++ )
        {
            if ( strParameters[i].indexOf ("=") > 0 )
            {
                var strParameterValue = strParameters[ i ].split ("=");
                if ( strParameterValue [0] == strParameterName ){
                    var returnValue = '';
                    for (var i = 1; i < strParameterValue.length; i++)
                    {
                        returnValue += returnValue == "" ? strParameterValue[i] : "=" + strParameterValue[i];
                    }
                    return returnValue;
                }
            }
        }
    }

    return "";
}
function URLEncode(urlToEncode)
{
	// The Javascript escape and unescape functions do not correspond
	// with what browsers actually do...
	var SAFECHARS = "0123456789" +					// Numeric
					"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +	// Alphabetic
					"abcdefghijklmnopqrstuvwxyz" +
					"-_.!~*'()";					// RFC2396 Mark characters
	var HEX = "0123456789ABCDEF";

	var plaintext = urlToEncode;
	var encoded = "";
	for (var i = 0; i < plaintext.length; i++ ) {
		var ch = plaintext.charAt(i);
	    if (ch == " ") {
		    encoded += "+";				// x-www-urlencoded, rather than %20
		} else if (SAFECHARS.indexOf(ch) != -1) {
		    encoded += ch;
		} else {
		    var charCode = ch.charCodeAt(0);
			if (charCode > 255) {
			    alert( "Unicode Character '" 
                        + ch 
                        + "' cannot be encoded using standard URL encoding.\n" +
				          "(URL encoding only supports 8-bit characters.)\n" +
						  "A space (+) will be substituted." );
				encoded += "+";
			} else {
				encoded += "%";
				encoded += HEX.charAt((charCode >> 4) & 0xF).toLowerCase();
				encoded += HEX.charAt(charCode & 0xF).toLowerCase();
			}
		}
	} // for

	return encoded;
}
function URLDecode(urlToDecode)
{
   // Replace + with ' '
   // Replace %xx with equivalent character
   // Put [ERROR] in output if %xx is invalid.
   var HEXCHARS = "0123456789ABCDEFabcdef"; 
   var encoded = urlToDecode;
   var plaintext = "";
   var i = 0;
   while (i < encoded.length) {
       var ch = encoded.charAt(i);
	   if (ch == "+") {
	       plaintext += " ";
		   i++;
	   } else if (ch == "%") {
			if (i < (encoded.length-2) 
					&& HEXCHARS.indexOf(encoded.charAt(i+1)) != -1 
					&& HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) {
				plaintext += unescape( encoded.substr(i,3) );
				i += 3;
			} else {
				alert( 'Bad escape combination near ...' + encoded.substr(i) );
				plaintext += "%[ERROR]";
				i++;
			}
		} else {
		   plaintext += ch;
		   i++;
		}
	} // while
   return plaintext;
}
/* End Get javascript file params */

/* Handling events */
function addEvent(element, type, handler) {
	if (element.addEventListener) {
		element.addEventListener(type, handler, false);
	} else {
		// assign each event handler a unique ID
		if (!handler.$$guid) handler.$$guid = addEvent.guid++;
		// create a hash table of event types for the element
		if (!element.events) element.events = {};
		// create a hash table of event handlers for each element/event pair
		var handlers = element.events[type];
		if (!handlers) {
			handlers = element.events[type] = {};
			// store the existing event handler (if there is one)
			if (element["on" + type]) {
				handlers[0] = element["on" + type];
			}
		}
		// store the event handler in the hash table
		handlers[handler.$$guid] = handler;
		// assign a global event handler to do all the work
		element["on" + type] = handleEvent;
	}
}
// a counter used to create unique IDs
addEvent.guid = 1;

function removeEvent(element, type, handler) {
	if (element.removeEventListener) {
		element.removeEventListener(type, handler, false);
	} else {
		// delete the event handler from the hash table
		if (element.events && element.events[type]) {
			delete element.events[type][handler.$$guid];
		}
	}
}

function handleEvent(event) {
	var returnValue = true;
	// grab the event object (IE uses a global event object)
	event = event || fixEvent(((this.ownerDocument || this.document || this).parentWindow || window).event);
	// get a reference to the hash table of event handlers
	var handlers = this.events[event.type];
	// execute each event handler
	for (var i in handlers) {
		this.$$handleEvent = handlers[i];
		if (this.$$handleEvent(event) === false) {
			returnValue = false;
		}
	}
	return returnValue;
}

function fixEvent(event) {
	// add W3C standard event methods
	event.preventDefault = fixEvent.preventDefault;
	event.stopPropagation = fixEvent.stopPropagation;
	return event;
}
fixEvent.preventDefault = function() {
	this.returnValue = false;
};
fixEvent.stopPropagation = function() {
	this.cancelBubble = true;
};

/* End Handling events */

/* Navigation tabs */
function loadMainTabs(){
    var ctrl = true;
    var tabPages = new Array("Default", "Zoeken,Detail,Kaart","Nieuwsbrief,Activeren","Aanbiedingen,Aanbiedingenoverzicht","Arrangementen,Arrangementenoverzicht","Bewaard" );
    if(window.location.href.indexOf("aspx") == -1){
        document.getElementById("a0").className = "sel";
        return;
    }
    for(i=0;i<tabPages.length;i++){
        var splitPages = tabPages[i].split(",");
        for(j=0;j<splitPages.length && ctrl;j++){
            if(window.location.href.replace(/www.hogenboomvakantieparken.nl/,'').replace(/zoekenboek.vakantiegevoel.nl/,'').toLowerCase().indexOf(splitPages[j].toLowerCase()) != -1){
                if(document.getElementById("a"+i) != null)
                {
                document.getElementById("a"+i).className = "sel";
                ctrl = false;
                break;
                }
                if(document.getElementById("ctl00_a"+i) != null)
                {
                document.getElementById("ctl00_a"+i).className = "sel";
                ctrl = false;
                break;
                }
                if(document.getElementById("ctl00_ctl00_a"+i) != null)
                {
                document.getElementById("ctl00_ctl00_a"+i).className = "sel";
                ctrl = false;
                break;
                }
            }else if(document.getElementById("a"+i) != null){
                if(document.getElementById("a"+i) != null)
                {
                document.getElementById("a"+i).className = "before";
                }
                if(document.getElementById("ctl00_a"+i) != null)
                {
                document.getElementById("ctl00_a"+i).className = "before";
                }
                if(document.getElementById("ctl00_ctl00_a"+i) != null)
                {
                document.getElementById("ctl00_ctl00_a"+i).className = "before";
                }
            }
        } 
    }
}

function loadInnerTabs(){
    var tabPages = new Array("Default", "Default","Back");
    for(i=0;i<tabPages.length;i++){
        if(window.location.href.indexOf(tabPages[i]) != -1){
            document.getElementById("li"+i).className = "Sel";
            break;
        }else{
            document.getElementById("li"+i).className = "Other";
        }    
    }
}

function showhide(parkId){	
	if($('accom'+parkId).style.display == 'none'){  
        $('accom'+parkId).style.display = '';
        var changeText = $('collapseText'+parkId).value;
        $('collapseText'+parkId).value = $('changeText'+parkId).innerHTML;
        $('changeText'+parkId).innerHTML = changeText;
        
    }else{ 
        $('accom'+parkId).style.display = 'none';
        var changeText = $('collapseText'+parkId).value;
        $('collapseText'+parkId).value = $('changeText'+parkId).innerHTML;
        $('changeText'+parkId).innerHTML = changeText;     
    }
}
/* End Navigation tabs */

/* Check mail */
function emailCheck(emailStr) {
    var emailPat=/^(.+)@(.+)$/
    var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
    var validChars="\[^\\s" + specialChars + "\]"
    var quotedUser="(\"[^\"]*\")"
    var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
    var atom=validChars + '+'
    var word="(" + atom + "|" + quotedUser + ")"
    var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
    var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")

    var matchArray=emailStr.match(emailPat)
    if (matchArray==null) {
	    return false
    }
    var user=matchArray[1]
    var domain=matchArray[2]

    if (user.match(userPat)==null) {
        return false
    }

    var IPArray=domain.match(ipDomainPat)
    if (IPArray!=null) {
        // this is an IP address
	      for (var i=1;i<=4;i++) {
	        if (IPArray[i]>255) {
	            //alert("Destination IP address is invalid!")
		    return false
	        }
        }
        return true
    }

    var domainArray=domain.match(domainPat)
    if (domainArray==null) {
        return false
    }

    var atomPat=new RegExp(atom,"g")
    var domArr=domain.match(atomPat)
    var len=domArr.length
    if (domArr[domArr.length-1].length<2 || 
        domArr[domArr.length-1].length>3) {
       return false
    }

    if (len<2) {
       return false
    }

    return true;
}
/* End Check mail */

/*telephone number check*/
function phoneCheck(phonestr)
{
    var phonePat = /^(((\+|00)[1-9]{1}[0-9]{0,2})[-\s]?)?[-0-9\s]{8,15}$/
    if(phonestr.match(phonePat)==null)
    {
        return false
    }
    return true;
}
/*end telephone number check*/

/*postal check*/
function postalCheck(postalstr)
{
    var postalPat = /^[0-9a-zA-Z]{1,5}(\s?|\-?)[0-9a-zA-Z]{2,5}$/
    if(postalstr.match(postalPat)==null)
    {
        return false
    }
    return true;
}
/*end postal check*/

/*house number check*/
function housenumberCheck(housenumberstr)
{
    var housenumberPat = /^[1-9]{1}\d{0,4}$/
    if(housenumberstr.match(housenumberPat)==null)
    {
        return false
    }
    return true;
}
/*end house number check*/