﻿//Global Functions
Type.registerNamespace("EMI.Global");

var PH_AudioPlayer = null;

/*
  Copyright 2007 Paperheads, All Rights Reserved.
  http://www.paperheads.co.uk
*/

/***********************************
 *  Initialisation
 ***********************************/
function PH_ScrollRegion_previousMouseDown() {}
function PH_ScrollRegion_previousMouseMove() {}
function PH_ScrollRegion_previousMouseUp() {}
function PH_ScrollRegion_previousSelectStart() {}

var PH_Initialised = false;
function pageLoad() {
  if(PH_Initialised) {
    return;
  }
  PH_Initialised = true;
  
  PH_ScrollRegion_previousMouseDown = document.onmousedown;
  PH_ScrollRegion_previousMouseMove = document.onmousemove;
  PH_ScrollRegion_previousMouseUp = document.onmouseup;
  PH_ScrollRegion_previousSelectStart = document.onselectstart;

  document.onmousemove = PH_ScrollRegion_OnMouseMove;
  document.onmouseup = PH_ScrollRegion_OnMouseUp;

  if (document.images) {
    pic1= new Image(1,1); 
    pic1.src = "/style/back_01.jpg"; 

    pic2= new Image(1,1); 
    pic2.src = "/style/back_02.jpg"; 

    pic3= new Image(1,1); 
    pic3.src = "/style/back_03.jpg"; 
  }
}

/***********************************
 *  Scroll Regions
 ***********************************/

var PH_ScrollRegion_oSelectedScroll = null;
var PH_ScrollRegion_iMouseStartY = -1;

function PH_ScrollRegion_AddRegion(ID) {
  var obj = document.getElementById(ID);
  if(obj){
    obj.oScrollObject = new PH_ScrollRegion_ScrollArea(obj);
  }
}

/* 
 * OBJECT : ScrollArea 
 */
 
PH_ScrollRegion_ScrollArea = function(element) {
  this._element = element;
  this._mainArea = element.childNodes[0];

  this._scrollBar = null;
  this._scrollArea = null;
  
  this.CreateScrollBar();
}

PH_ScrollRegion_ScrollArea.prototype = {
  CreateScrollBar: function() {
    if(this._scrollArea != null) {
      return;
    }
    if(this._mainArea.scrollHeight <= this._mainArea.offsetHeight + 10) {
      return;
    }
    
    this._mainArea.style.overflow = 'hidden';
    this._mainArea.style.width = (this._mainArea.offsetWidth - 15) + 'px';
    this._mainArea._scrollObj = this;
    this._mainArea.onmousewheel = PH_ScrollRegion_OnMouseWheel;
    
    this._scrollArea = document.createElement('div');
    this._scrollArea.className = 'ScrollDiv';
    this._scrollArea.style.height = this._mainArea.offsetHeight + 'px';
    this._scrollArea.style.top = this._mainArea.offsetTop + 'px';
    this._scrollArea.style.left = (this._mainArea.offsetLeft + this._mainArea.offsetWidth + 10) + 'px';

    this._element.appendChild(this._scrollArea);

    this._scrollBar = document.createElement('div');
   
    this._scrollRatio = (this._mainArea.offsetHeight / this._mainArea.scrollHeight);
    var iScrollBarHeight = parseInt(this._mainArea.offsetHeight * this._scrollRatio)

    this._scrollBar.style.top = '0px';
    this._scrollBar.style.height = iScrollBarHeight + 'px';
    this._scrollArea.appendChild(this._scrollBar);
    
    this._scrollBar._scrollObj = this;
    this._scrollBar._maxTop = this._mainArea.offsetHeight - iScrollBarHeight;
    
    this._scrollBar.onmousedown = function() {
      document.onselectstart = function () { return false; }
      document.onmousedown = function () { return false; }
      
      PH_ScrollRegion_oSelectedScroll = this;
      this._startTop = parseInt(this.style.top);
    }
  },
  
  SetScrollBarPosition: function() {
    var iTop = this._mainArea.scrollTop * this._scrollRatio;
    if(iTop >= this._scrollBar._maxTop - 1) {
      iTop = this._scrollBar._maxTop;
    }
    this._scrollBar.style.top = iTop +'px';
  }
}

PH_ScrollRegion_OnMouseMove = function (e) {
  if(PH_ScrollRegion_oSelectedScroll != null) {
    var oMouse = PH_GetMouse(e);

    //Record start position
    if(PH_ScrollRegion_iMouseStartY < 0) {
      PH_ScrollRegion_iMouseStartY = oMouse.Y;
      return;
    }

    var iYmove = oMouse.Y - PH_ScrollRegion_iMouseStartY;
    var iNewTop = (PH_ScrollRegion_oSelectedScroll._startTop + iYmove);
    
    if(iNewTop < 0) {
      iNewTop = 0;
    } else if(iNewTop > PH_ScrollRegion_oSelectedScroll._maxTop) {
      iNewTop = PH_ScrollRegion_oSelectedScroll._maxTop;
    }
    
    PH_ScrollRegion_oSelectedScroll.style.top = iNewTop + 'px';
    PH_ScrollRegion_oSelectedScroll._scrollObj._mainArea.scrollTop = (iNewTop / PH_ScrollRegion_oSelectedScroll._scrollObj._scrollRatio);
  }
  
  if(PH_ScrollRegion_previousMouseMove) {
    return PH_ScrollRegion_previousMouseMove(e);
  } else {
    return true;
  }
}

PH_ScrollRegion_OnMouseUp = function (e) {
  if(PH_ScrollRegion_oSelectedScroll) {
    PH_ScrollRegion_oSelectedScroll = null;
    PH_ScrollRegion_iMouseStartY = -1;
  }

  (typeof(PH_ScrollRegion_previousSelectStart) !== 'undefined')?document.onselectstart=PH_ScrollRegion_previousSelectStart:document.onselectstart=null;
  (typeof(PH_ScrollRegion_previousSelectDown) !== 'undefined')?document.onmousedown=PH_ScrollRegion_previousSelectDown:document.onmousedown=null;
  
  if(PH_ScrollRegion_previousMouseUp) {
    return PH_ScrollRegion_previousMouseUp(e);
  } else {
    return true;
  }
}

PH_ScrollRegion_OnMouseWheel = function(e) {
  var delta = 0;
  if (!e) e = window.event;
  
  if (e.wheelDelta) {
    delta = e.wheelDelta/120;
    if (window.opera) delta = -delta;
  } else if (e.detail) {
    delta = -e.detail/3;
  }

  if (delta) {
    this.scrollTop += ((delta * -1) * 30);
    this._scrollObj.SetScrollBarPosition();
  };
  e.returnValue = false;
  return false;
}

/***********************************
 *  Other Functions
 ***********************************/

function PH_GetMouse(e) {
  var oPos = new Object();

  if (document.all) { // grab the x-y pos.s if browser is IE
    oPos.X = event.clientX + document.body.scrollLeft;
    oPos.Y = event.clientY + document.body.scrollTop;
  } else {  // grab the x-y pos.s if browser is NS
    oPos.X = e.pageX;
    oPos.Y = e.pageY;
  }  
  
  // catch possible negative values in NS4
  if (oPos.X < 0){oPos.X = 0;}
  if (oPos.Y < 0){oPos.Y = 0;}
  
  return oPos
}

EMI.Global.CreateDiv = function(className, parentNode) {
  var oDiv = document.createElement("div");
  oDiv.className = className;
  if(parentNode) parentNode.appendChild(oDiv);
  return oDiv;
}

// Since this script is not loaded by System.Web.Handlers.ScriptResourceHandler
// invoke Sys.Application.notifyScriptLoaded to notify ScriptManager 
// that this is the end of the script.
if (typeof(Sys) !== 'undefined') 
{
  Sys.Application.add_load(function() {

    if (EMI.Global.FunctionsInitialised) {
      return ;
    }

    EMI.Global.oWaitArea = EMI.Global.CreateDiv('wait', document.forms[0]);
    EMI.Global.FunctionsInitialised = true;

    Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(function(sender, args) {
      EMI.Global.oWaitArea.style.display = 'block';
    });
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(sender, args) {
      EMI.Global.oWaitArea.style.display = 'none';
    });
  });
  
  Sys.Application.notifyScriptLoaded(); 
}

/***********************************
 *  Active Flash
 ***********************************/
function CreateAudioPlayer(Path, Width, Height, dest) {
  var oContainer = document.getElementById(dest);
  var sOutput = '';

  if(navigator.appName.indexOf("Microsoft") != -1) {
    sOutput = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="'+Width+'" height="'+Height+'"><param name="movie" value="'+Path+'" /><param name="quality" value="high" /><param name="wmode" value="transparent" /><param name="allowscriptaccess" value="true" /><param name="swliveconnect" value="true" /></object>'
  } else {
    sOutput = '<embed src="'+Path+'" width="'+Width+'" height="'+Height+'" quality="high" wmode="transparent" allowScriptAccess="true" swLiveConnect="true" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?p1_prod_version=shockwaveflash"></embed>'
  }

  oContainer.innerHTML = sOutput;
  PH_AudioPlayer = oContainer.firstChild;
}

function createParm(Name,Value) {
  var oParm = document.createElement('parm');
  oParm.name = Name;
  oParm.value = Value;
  return oParm;
}
  
function CreateFlashObject(Path, Width, Height) {
  AC_FL_RunContent('codebase','http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0','width',Width,'height',Height,'wmode','transparent','src',Path,'quality','high','pluginspage','http://www.macromedia.com/go/getflashplayer','movie',Path,'allowScriptAccess','always','swLiveConnect','true'); //end AC code
}

function AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
  var str = '';
  if(navigator.appName.indexOf("Microsoft") != -1) {
    str += '<object ';
    for (var i in objAttrs) {
      str += i + '="' + objAttrs[i] + '" ';
    }
    str += '>';
    for (var i in params) {
      str += '<param name="' + i + '" value="' + params[i] + '" /> ';
    }
    str += '</object>';
  } else {
    str += '<embed ';
    for (var i in embedAttrs) {
      str += i + '="' + embedAttrs[i] + '" ';
    }
    str += ' ></embed>';
  }

  document.write(str);
}

function AC_FL_RunContent(){
  var ret = AC_GetArgs(arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000", "application/x-shockwave-flash");
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_SW_RunContent(){
  var ret = AC_GetArgs(arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000", null);
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();    

    switch (currArg){	
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie":	
        args[i+1] = args[i+1];
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblClick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
    
