/**
 * General triggered behaviour on document load
 */
var general_rules = {
    '#onestat-placeholder' : function() {
        var d=document;
        var sid=Element.getClassParameter(this,'sid');
        var CONTENTSECTION="";
        var CUSTOMDATA="";
        var osp_URL=d.URL;
        var osp_Title=d.title;
        var t=new Date();
        var p="http"+(d.URL.indexOf('https:')===0?'s':'')+"://stat.onestat.com/stat.aspx?tagver=2&sid="+sid;
        p+="&url="+escape(osp_URL);
        p+="&ti="+escape(osp_Title);
        p+="&section="+escape(CONTENTSECTION);
        p+="&custom="+escape(CUSTOMDATA);
        p+="&rf="+escape(document.referrer);
        p+="&tz="+escape(t.getTimezoneOffset());
        p+="&ch="+escape(t.getHours());
        p+="&js=1";
        p+="&ul="+escape(navigator.appName=="Netscape"?navigator.language:navigator.userLanguage);
        if (osp_URL != d.URL) {
          p += "&ol=" + escape(d.URL);
        }
        if(typeof(screen)=="object"){
           p+="&sr="+screen.width+"x"+screen.height;p+="&cd="+screen.colorDepth;
           p+="&jo="+(navigator.javaEnabled()?"Yes":"No");
        }
        this.innerHTML='<img id="ONESTAT_TAG" width="1" height="1" src="'+p+'" >';
    },
	'#analytics-placeholder':function(){
    	var params = this.getClassParameters();
		if (params.sid) {
			var pageTracker = _gat._getTracker(params.sid);
			if (params.target) {
				pageTracker._trackPageview(unescape(params.target));
			} else {
				pageTracker._trackPageview();
			}
		}
	},
    '.hilite-keywords' : function() {
       var hiliter = new KeywordHiliter("ajax.php",this);
       hiliter.options.elementTag = 'ABBR';
       hiliter.fetchKeywords();
    },
    '.no-javascript' : function() {
      this.hide();
    },
    '.show-no-javascript' : function() {
      this.show();
    }
};
Event.addBehavior(general_rules);

/**
 * Rules for hyperlink behaviour
 */
var hyperlink_rules = {
    'a.void:click' : function(e) {
      return false;
    },

    'a.popup:click' : function(e) {

        /**
         * Event:  click
         * Action: open a popup window
         */
        var params = this.getClassParameters();
        var width = params.width || 684;
        var height = params.height || 350;
        var top = params.top || 200;
        var left = params.left || '50%';
        window.open(this.href,
            'PopUp',
            'width=' + width + ',height=' + height + ',top=' + top + ',left=' + left + ',scrollbars=0,status=no,resizable=0,toolbar=0,titlebar=0,menubar=0,location=0');
        return false;
    },

    'a.external:click,a.new-window:click' : function(e) {

        /**
         * Event:  click
         * Action: open a new window
         */
        if (!e.ctrlKey && !e.altKey && !e.shiftKey) {
          window.open(this.href);
          return false;
        }
    },

    'a.status:mouseover' : function(e) {

        /**
         * Event:  mouseover
         * Action: display the hyperlinks title in the status bar
         */
        window.status=this.title;
        return true;
    },
    'a.status:mouseout' : function(e) {

        /**
         * Event:  mouseout
         * Action: clear the status bar
         */
        window.status='';
        return true;
    },

    'a.switch:click': function(e) {
        /**
         * Event:  click
         * Action: show / hide the tab with the same ID minus "_switch"
         */
        var c = $(this.id.replace('-switch',''));
        var content = $(c.id + '-content');
        if (c) {
          c.toggle();
        }
        return false;
    },

    'a.tabswitch:click' : function(e) {
        /**
        * Event: click
        * Action: hide related div, show related div's related element
        */
        var container = $(this.getAttribute('rel'));
        if(container) {
          var other = $(container.getAttribute('rel'));
          if (other) {
            container.addClassName('hide');
            other.removeClassName('hide');
          }
        }
        return false;
    },
    
    'a.modal:click' : function(e) {

        /**
         * Event:  click
         * Action: open a zoomed in image
         */
        var image = this.up().next().down('img');
        var dialog = new MUIL.Dialog.Image(image);
        return false;
    },
    
    'a.submit' : function(e) {
        /**
        * Event: click
        * Action: submit the form given as a param. (used by captcha)
        */
        var params = this.getClassParameters();
        var form = $(params.form);
        if (form){
          form.submit();
        }
        return false;
    }
};
Event.addBehavior(hyperlink_rules);

/**
 * Behaviour rules for form elements
 */

var form_rules = {
	'form.overlabel' : function() {
		this.addClassName('overlabel-apply');
		this.removeClassName('overlabel');
	},
	'form.overlabel-apply label:click' : function(event) {
		// focus input field
		var field = this.getAttribute('for');
		if (field) {
			field.focus();
		}
	},
	'form.overlabel-apply input:focus' : function(event) {
		// hide label
		var label = $(this.form).down('label[for='+this.id+']');
		if (label) {
			label.setStyle({textIndent: '-10000px'});
		}
	},
	'form.overlabel-apply input:blur' : function(event) {
		if ('' == this.getValue()) {
			// show label if no value
			var label = $(this.form).down('label[for='+this.id+']');
			if (label) {
				label.setStyle({textIndent: '0px'});
			}
		}
	},
	'form.auto-submit' : function(e) {
		this.submit();
	},
	'select.auto-submit:change' : function(e) {
		this.form.submit();
	},
	/**
	 * Event:  blur
	 * Action: convert field value to upper case
	 */
	'input.auto-upper:blur' : function(e) {
		this.value = this.value.toUpperCase();
	},
	
	/**
	 * Event:  change
	 * Action: convert field value to upper case
	 */
	'input.auto-upper:change' : function(e) {
		this.value = this.value.toUpperCase();
	},
	'.default-value:blur' : function(e) {
		/**
		 * Event:  blur
		 * Action:
		 *   - when empty set default value
		 */
		if(this.value == ''){
			var params = this.getClassParameters();
			if(params.default_value != ''){
				this.value = params.default_value;
				this.addClassName('auto-clear');
			} 
		}
	},
	'input.auto-blur:focus' : function(e) {
	
		/**
		 * Event:  focus
		 * Action:
		 *   - replace field's classname from "-off" to "-on"
		 *   - if labeled, replace label's classname from "-off" to "-on"
		 *   - if label is image, replace image with "_hover" version
		 */
		this.className = this.className.replace('-off','-on');
		var fieldLabel = $(this.form).down('[for=' + this.id + ']');
		if (fieldLabel) {
			fieldLabel.className = fieldLabel.className.replace('-off','-on');
			var image = fieldLabel.down('img');
			if (image) {
				image.src = image.src.replace('_normal','_hover');
			}
		}
		// Check for grouped fields
		var fieldSet = this.up('fieldset');
		if (fieldSet && fieldSet.up('fieldset')) {
			var legend = fieldSet.down('legend');
			if (legend) {
				legend.className = legend.className.replace('-off', '-on');
			}
		}
	},
	'input.auto-blur:blur' : function(e) {
	
		/**
		 * Event:  blur
		 * Action:
		 *   - replace field's classname from "-on" to "-off"
		 *   - if labeled, replace label's classname from "-on" to "-off"
		 *   - if label is image, replace image with "_normal" version
		 */
		this.className = this.className.replace('-on','-off');
		var fieldLabel = $(this.form).down('[for=' + this.id + ']');
		if (fieldLabel) {
			fieldLabel.className = fieldLabel.className.replace('-on','-off');
			var image = fieldLabel.down('img');
			if (image) {
				image.src = image.src.replace('_hover','_normal');
			}
		}
		// Check for grouped fields
		var fieldSet = this.up('fieldset');
		if (fieldSet && fieldSet.up('fieldset')) {
			var legend = fieldSet.down('legend');
			if (legend) {
				legend.className = legend.className.replace('-on', '-off');
			}
		}
	},
	'.auto-clear:focus' : function(e) {
	
		/**
		 * Event:  focus
		 * Action:
		 *   - clear value
		 *   - remove auto-clear class
		 */
		if (this.hasClassName('auto-clear')) {
			this.value='';
		}
		this.removeClassName('auto-clear');
	},
	'input.rollover:mouseover' : function(el) {
	
		/**
		 * Event:  mouseover
		 * Action:
		 *   - if not "active", replace classname by "-hover" classname
		 *   - if type is "image", replace image by "_hover" version
		 */
		if (!this.hasClassName('active')) {
			this.className = this.className.replace('-normal','-hover');
			if (this.type == 'image') {
				this.src = this.src.replace('_normal','_hover');
			}
		}
	},
	'input.rollover:mouseout' : function(e) {
		/**
		 * Event:  mouseout
		 * Action:
		 *   - replace classname by "-hover" classname
		 *   - if type is "image", replace image by "_hover" version
		 */
		if (!this.hasClassName('active')) {
			this.className = this.className.replace('-hover','-normal');
			if (this.type == 'image') {
				this.src = this.src.replace('_hover','_normal');
			}
		}
	}
};
Event.addBehavior(form_rules);

var rollover_rules = {
    'img.rollover:mouseover' : function(el) {
      /**
       * Event:  mouseover
       * Action: show hover version
       */
    this.src = this.src.replace('_normal','_hover');
    return false;

  },
    'img.rollover:mouseout' : function(el) {
      /**
       * Event:  mouseout
       * Action: show normal version
       */
    this.src = this.src.replace('_hover','_normal');
    return false;
  }
};
Event.addBehavior(rollover_rules);

var flash_rules = {
	'#flash-video-1': function(e) {
		var FO = {
			data: "/flash/test_flash.swf",
      width: "200",
      height: "200",
			xi: "false",
      flashvars: {
				apiUrl: "/api"
			},
      version: "9.0.0",
			params: {
				menu: "false",
				allowfullscreen: "true"
			}
    };
		swfobject.embedSWF(FO.data, this.id, FO.width, FO.height, FO.version, FO.xi, FO.flashvars, FO.params, FO.attributes);
	},
	'#flash-video-2': function(e){
		var version = "10.0.0";
		swfobject.registerObject(this.id, version);
	}
};
Event.addBehavior(flash_rules);