
if (!window.includeJs) window.includeJs = function (a_filenames, f_callback) {
	var o_js = document.createElement('script');
	o_js.setAttribute('language', 'javascript');
	o_js.setAttribute('type', 'text/javascript');
	o_js.setAttribute('async', true);

	var s_filename;
	if (isArray(a_filenames)){
		s_filename=a_filenames.shift();
		if (!a_filenames.length) a_filenames=undefined;
	}else{
		s_filename=a_filenames;
		a_filenames=undefined;
	}

	o_js.setAttribute('src', s_filename);

	if (a_filenames || f_callback ){
		o_js.onreadystatechange = function () {
			if (o_js.readyState == 'complete' || o_js.readyState == 'loaded') {
				if (o_js.getAttribute('b_fired_onload')!=1){
					o_js.setAttribute('b_fired_onload', 1);
					if (a_filenames){
						includeJs(a_filenames, f_callback);
					}else if (f_callback) {
						f_callback();
					}
				}
			}
		}

		o_js.onload = function () {
			if (o_js.getAttribute('b_fired_onload')!=1){
				o_js.setAttribute('b_fired_onload', 1);
				if (a_filenames){
					includeJs(a_filenames, f_callback);
				}else if (f_callback) {
					f_callback();
				}
			}
		}
	}

	var o_doc = document.getElementsByTagName('head').item(0);
	o_doc.appendChild(o_js);

	return false;
};

if (!window.includeCss) window.includeCss = function (s_filename, f_callback) {
	//<link rel="stylesheet" href=wrm_client/old.css type="text/css">
	var o_css = document.createElement('link');
	o_css.setAttribute('rel', 'stylesheet');
	o_css.setAttribute('type', 'text/css');
	o_css.setAttribute('href', s_filename);
	o_css.setAttribute('async', true);

	if (f_callback){

		o_css.onreadystatechange = function () {
			if (o_css.readyState == 'complete' || o_css.readyState == 'loaded') {
				if (o_css.getAttribute('b_fired_onload')!=1){
					o_css.setAttribute('b_fired_onload', 1);
					f_callback();
				}
			}
		}

		o_css.onload = function () {
			if (o_css.getAttribute('b_fired_onload')!=1){
				o_css.setAttribute('b_fired_onload', 1);
				f_callback();
			}
		}
	}

	var o_doc = document.getElementsByTagName('head').item(0);
	o_doc.appendChild(o_css);

	return false;
};

if (!window.isArray) window.isArray=function(s_var) {
	//return Object.prototype.toString.call(o) === '[object Array]'; //note: this was wrong... it needs to be an easy test to pass web 1.0 booking steps usage
	return typeof(s_var) === "object" && typeof(s_var.length) != "undefined";
}

if (!window.isObjValid) window.isObjValid=function(obj){
	var scope=window;
	var a=obj.split('.');
	for (var i=0; i < a.length; i++){
		var c=a[i];
		if (!scope[c]) return false;
		scope=scope[c];
	}
	return true;
}

if (!window.waitForObj) window.waitForObj=function (objs, func, params, scope, timeOut){
	var fail;
	if (isArray(objs)){
		for (var i=0; i < objs.length && !fail; i++){
			if (!isObjValid(objs[i])) fail=true;
		}
	}else{
		fail=!isObjValid(objs);
	}

	if (fail){
		setTimeout(function(){
			waitForObj(objs, func, params || [] , scope || window, timeOut);
		},timeOut||100);
	}else{
		func.apply(scope || window,params || []);
	}
}

if (!window.checkpoints) window.checkpoints={
	h_reached:{},
	a_code:[],

	on:function (a_checkpoints, f_code, a_params, f_scope){
		if (typeof a_checkpoints!="object"){
			a_checkpoints=[a_checkpoints];
		}
		if (!f_scope){
			f_scope=window;
		}
		if (!a_params){
			a_params=[];
		}

		checkpoints.a_code.push({a_checkpoints:a_checkpoints, f_code: f_code, a_params: a_params, f_scope: f_scope });
		checkpoints.run();
	},

	run: function (){
		for (var i=0; i < checkpoints.a_code.length; i++){
			var o_code=checkpoints.a_code[i], b_found=false;
			for (var j=0; j < o_code.a_checkpoints.length; j++){
				var s_checkpoint=o_code.a_checkpoints[j];
				if (!(b_found=checkpoints.h_reached[s_checkpoint])){
					break;
				}
			}
			if (b_found && o_code.f_code){
				o_code.f_code_ran=o_code.f_code;
				o_code.f_code.apply(o_code.f_scope, o_code.a_params);
				o_code.f_code=undefined;
			}
		}
	},

	set: function (s_checkpoint){
		checkpoints.h_reached[s_checkpoint]=1;
		checkpoints.run();
	}
};

if (!window.imageRotater) window.imageRotater=function(id,slideimages, slidespeed, i){
  if (!slideimages) return ;/* alert('did not specify sliding image array');*/
  if (!document.images) return;/* alert('can not find image with id:'+id);*/
  var img=document.images[id];
  if (!img) return;/* alert('can not find image with id:'+id);*/
  if (!i) i=0;

  var imageFilter=img.filters && img.filters[0];
  var blenddelay=(imageFilter ? img.filters[0].duration * 1000 : 0);
  if (!slidespeed) slidespeed= 3000;

  if (imageFilter) img.filters[0].apply();
  img.src=slideimages[i];
  if (imageFilter) img.filters[0].play();

  i++;
  if (i >= slideimages.length ) i=0;

  setTimeout(function(){
    imageRotater(id, slideimages, slidespeed, i);
  },slidespeed+blenddelay);

}

if (!window.Common_html) window.Common_html={include_js_file: window.includeJs, include_css_file: window.includeCss};

