<!--

Array.prototype.in_array = function (value)
// Returns true if the passed value is found in the
// array.  Returns false if it is not.
{
    var i;
    for (i=0; i < this.length; i++) {
        if (this[i] == value) {
            return true;
        }
    }
    return false;
};

function switch_class(t,c,p,v){
    var elements;
    if(t == '*') {
        // '*' not supported by IE/Win 5.5 and below
        elements = (ie) ? document.all : document.getElementsByTagName('*');
    } else {
        elements = document.getElementsByTagName(t);
    }
    for(var i = 0; i < elements.length; i++){
        var node = elements.item(i);
        found = false;
        var j = 0;
        while(j < node.attributes.length && !found) {
            if(node.attributes.item(j).nodeName == 'class') {
                if(node.attributes.item(j).nodeValue == c) {
                    node.attributes.item(j).nodeValue  = v;
                }
                found=true;
            }
            j++;
        }
    }
}

function is_empty(theField) {
	if(theField.value == "") { return true; }
	else { return false; }
}
function validate_email(theField) {
	var errorChars = ' :;`"+!#$%^&*(){}[]|/'




	for (x=0; x<errorChars.length; x++) {
		if (theField.value.indexOf(errorChars.substring(x,x+1)) != -1) { return false; }
	}
	if (theField.value.indexOf('@') == -1) { return false; }
	if (theField.value.indexOf('.') == -1) { return false; }
	else { return true; }


}

// this function gets the cookie, if it exists
function getcookie( name ) {
	
var start = document.cookie.indexOf( name + "=" );
var len = start + name.length + 1;
if ( ( !start ) &&
( name != document.cookie.substring( 0, name.length ) ) )
{
return 0;
}
if ( start == -1 ) return 0;
var end = document.cookie.indexOf( ";", len );
if ( end == -1 ) end = document.cookie.length;
return unescape( document.cookie.substring( len, end ) );
}
	
function setcookie( name, value, expires, path, domain, secure ) 
{
// set time, it's in milliseconds
var today = new Date();
today.setTime( today.getTime() );

/*
if the expires variable is set, make the correct 
expires time, the current script below will set 
it for x number of days, to make it for hours, 
delete * 24, for minutes, delete * 60 * 24
*/
if ( expires )
{
expires = expires * 1000 * 60 * 60 * 24;
}
var expires_date = new Date( today.getTime() + (expires) );

document.cookie = name + "=" +escape( value ) +
( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + 
( ( path ) ? ";path=" + path : "" ) + 
( ( domain ) ? ";domain=" + domain : "" ) +
( ( secure ) ? ";secure" : "" );

}


//JOIN FUNCTIONS

function validate_join_form(f)
{
	err = '';
	
	if(f.username.value == '')
	{
		if(err == '')
			f.username.focus();
			
		err = err + ' Please fill your username \r\n';
	}
	
	if(f.remail.value == '')
	{
		if(err == '')
			f.remail.focus();
			
		err = err + ' Please fill your email \r\n';
	}
	else{
		if(!validate_email(f.remail)) { 
			err = err + 'Invalid email\r\n';
		}
	}
	
	if(f.rpassword.value == '')
	{
		if(err == '')
			f.rpassword.focus();
			
		err = err + ' Please fill your password \r\n';
	}
	
	if(typeof(f.country_code) != 'undefined'){ 
		cc = f.country_code.options[f.country_code.selectedIndex].value;
		if(cc) {
			if(cc == 'US' || cc == 'CA') { 
			  if(typeof(f.state_code) != 'undefined'){ 
				  sc = f.state_code.options[f.state_code.selectedIndex].value;
				  if((!sc) || sc == '--') {
				  if(err == '')
					  f.state_code.focus();
				  err = err + ' Please select your state \r\n';
			  }
			}//end us canada
	}		
		
		} else {
			if(err == '')
				f.country_code.focus();
			err = err + ' Please select your country \r\n';
		}
	}
	
	if(err)
	{
		window.alert(err);
		return false;
	}
	else
		return true;
		
}


//END JOIN FUNCTIONS


//INVITE FUNCTIONS 
function check_fields(form, idx) {
/* 
   returns 0 for erronous.
 		   1 for ok.
   		   2 for empty.
*/

	if(eval("!is_empty(form.to_emails" + idx + ")"))
	{
		if(eval("!validate_email(form.to_emails" + idx +")"))
		{
			alert("Your friend's email is invalid");
			eval("form.to_emails" + idx + ".focus();");
			return false;
		}
		


		if(eval("is_empty(form.to_names" + idx + ")")) {
			alert("You have to enter your friend's name");
			eval("form.to_names" + idx + ".focus();");
			return false;
		}
		
		if(!validate_email(form.from_email))
		{
			alert("You must fill in your email");
			form.from_email.focus();
			return false;
		}
		
		if(is_empty(form.from_name)) {
			alert("You must fill in your name");
			form.from_name.focus();
			return false;
		}
	
		return 1;
	}

	return 2;
}

function process_form(form)
{
	nb_entries = 10;
	ok=1;
	
	//needs at least one email to submit. 
	least_one=0;




	i = 0;
	while(i<nb_entries && ok)
	{
		ok = check_fields(form, i);
		if(ok == 1)
			least_one=1;




		i++;
	}
	if(ok)
	{
		if(least_one == 0)
		{
			alert("You must fill at least one friend to submit!!");
		    return false;
		}
		else
			return true;
	}
	else
		return false;
}


//END INVITE FUNCTIONS



//ads 
function initAd(){

      if(!ns && !ie && !w3) return;
      if(ie)          adDiv=eval('document.all.winner.style');
      else if(ns)     adDiv=eval('document.layers["winner"]');
      else if(w3)     adDiv=eval('document.getElementById("winner").style');

     if (ie||w3){
      adDiv.visibility="visible";
    }
      else{
      adDiv.visibility ="show";
	  }
}

function showAd(){
    if(ie)          adDiv=eval('document.all.winner.style');
    else if(ns)     adDiv=eval('document.layers["winner"]');
    else if(w3)     adDiv=eval('document.getElementById("winner").style');
 
    if (ie||w3)
    {
         adDiv.visibility="visible";
         adDiv.display='inline';
    }
   else
    {
        adDiv.visibility ="show";
    }

}

function closeAd(){
    if(ie)          adDiv=eval('document.all.winner.style');
    else if(ns)     adDiv=eval('document.layers["winner"]');
    else if(w3)     adDiv=eval('document.getElementById("winner").style');

if (ie||w3)
    adDiv.display="none";
else
    adDiv.visibility ="hidden";
}

//end ads


//DEBUG INFORMATION 

/* Reference Article:
Dustin Diaz:
http://www.dustindiaz.com/top-ten-javascript/
*/

/* addEvent: simplified event attachment */
function addEvent( obj, type, fn ) {
	if (obj.addEventListener) {
		obj.addEventListener( type, fn, false );
		EventCache.add(obj, type, fn);
	}
	else if (obj.attachEvent) {
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
		EventCache.add(obj, type, fn);
	}
	else {
		obj["on"+type] = obj["e"+type+fn];
	}
}
	
var EventCache = function(){
	var listEvents = [];
	return {
		listEvents : listEvents,
		add : function(node, sEventName, fHandler){
			listEvents.push(arguments);
		},
		flush : function(){
			var i, item;
			for(i = listEvents.length - 1; i >= 0; i = i - 1){
				item = listEvents[i];
				if(item[0].removeEventListener){
					item[0].removeEventListener(item[1], item[2], item[3]);
				};
				if(item[1].substring(0, 2) != "on"){
					item[1] = "on" + item[1];
				};
				if(item[0].detachEvent){
					item[0].detachEvent(item[1], item[2]);
				};
				item[0][item[1]] = null;
			};
		}
	};
}();
addEvent(window,'unload',EventCache.flush);

/* window 'load' attachment */
function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	}
	else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}

/* grab Elements from the DOM by className */
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;
}

/* toggle an element's display */
function toggle(obj) {
	var el = document.getElementById(obj);
	if ( el.style.display != 'none' ) {
		el.style.display = 'none';
	}
	else {
		el.style.display = '';
	}
}

/* insert an element after a particular node */
function insertAfter(parent, node, referenceNode) {
	parent.insertBefore(node, referenceNode.nextSibling);
}

/* Array prototype, matches value in array: returns bool */
Array.prototype.inArray = function (value) {
	var i;
	for (i=0; i < this.length; i++) {
		if (this[i] === value) {
			return true;
		}
	}
	return false;
};
	
function deleteCookie( name, path, domain ) {
	if ( getCookie( name ) ) document.cookie = name + "=" +
			( ( path ) ? ";path=" + path : "") +
			( ( domain ) ? ";domain=" + domain : "" ) +
			";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}

/* quick getElement reference */
function $() {
	var elements = new Array();
	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == 'string')
			element = document.getElementById(element);
		if (arguments.length == 1)
			return element;
		elements.push(element);
	}
	return elements;
}


function validate_login_form(f)
{
	err = '';
	
	if(f.email.value == '')
	{
		err = err + ' Please fill your email \r\n';
		f.email.focus();
	}
	
	if(f.password.value == '')
	{
		if(err != '')
			f.password.focus();
			
		err = err + ' Please fill your password \r\n';
	}

	if(err)
	{
		window.alert(err);
		return false;
	}
	else
		return true;
		
}


function calculate_date_diff(f, calc_today) { 

	var arrival = new Date(f.year_start.options[f.year_start.selectedIndex].value + '/' + 
					   f.month_start.options[f.month_start.selectedIndex].value + '/' +
					   f.day_start.options[f.day_start.selectedIndex].value);
	var departure = new Date(f.year_end.options[f.year_end.selectedIndex].value + '/' + 
					   f.month_end.options[f.month_end.selectedIndex].value + '/' +
					   f.day_end.options[f.day_end.selectedIndex].value);
					   

	//Set 1 day in milliseconds
	var one_day=1000*60*60*24

	if(calc_today) { 
		var today = new Date();
		diff = Math.ceil((arrival.getTime()-today.getTime())/(one_day));		
	}
	else { 
		diff = Math.ceil((departure.getTime()-arrival.getTime())/(one_day));
	}
//Calculate difference btw the two dates, and convert to days


	return diff;

}

function validate_contact_form(f) 
{
	err = '';
	
	if(f.email.value == '')
	{
		f.email.focus();
		err = err + ERR_EMAIL_EMPTY;
	}
	else{
		if(!validate_email(f.email)) { 
			f.email.focus();
			err = err + ERR_EMAIL_INVALID;
		}
	}
	
	if(f.body.value == '')
	{
		if(err != '')
			f.body.focus();
			
		err = err + ERR_COMMENT;
	}
	
	if(err)
	{
		err = ERR_INTRO + err;
		window.alert(err);
		return false;
	}
	else
		return true;
		
}

function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}

//INVITE FUNCTIONS 
function check_fields(form, idx) {
/* 
   returns 0 for erronous.
 		   1 for ok.
   		   2 for empty.
*/

	if(eval("!is_empty(form.to_emails" + idx + ")"))
	{
		if(eval("!validate_email(form.to_emails" + idx +")"))
		{
			alert("Your friend's email is invalid");
			eval("form.to_emails" + idx + ".focus();");
			return false;
		}
		


		if(eval("is_empty(form.to_names" + idx + ")")) {
			alert("You have to enter your friend's name");
			eval("form.to_names" + idx + ".focus();");
			return false;
		}
		
		if(!validate_email(form.from_email))
		{
			alert("You must fill in your email");
			form.from_email.focus();
			return false;
		}
		
		if(is_empty(form.from_name)) {
			alert("You must fill in your name");
			form.from_name.focus();
			return false;
		}
	
		return 1;
	}

	return 2;
}

function validate_taf_form(form)
{
	nb_entries = 10;
	ok=1;
	
	//needs at least one email to submit. 
	least_one=0;




	i = 0;
	while(i<nb_entries && ok)
	{
		ok = check_fields(form, i);
		if(ok == 1)
			least_one=1;




		i++;
	}
	if(ok)
	{
		if(least_one == 0)
		{
			alert("You must fill at least one friend to submit!!");
		    return false;
		}
		else
			return true;
	}
	else
		return false;
}


//END INVITE FUNCTIONS

function obj_properties() {
    var elements = new Array();
    var k=0;
    var ret='';
    for (var i = 0; i < arguments.length; i++) {
        var element = arguments[i];
        att = element.attributes;
        for(k=0; k < att.length; k++) { 
            ret = ret + att[k].name +  ' = ' + att[k].value + '\n';
        }
    }
    return ret;
}
//-->
