/*****************************************
 * @author       ini.con
 * @copyright    ini.con
 * @language     JavaScript
 *****************************************/


// +----------------------+
// | CONSTANTS:           |
// +----------------------+

//DRAGGING:
var dragGoalX           =   30;
var dragGoalY           =   30;
var dragGoalDeltaWidth  =  118;
var dragGoalDeltaHeight =   54;


// +----------------------+
// | VARIABLES:           |
// +----------------------+

// DRAGGING:
var dragObject          = null;
var dragX               =    0;
var dragY               =    0;
var initLayerPosLeft    =    0;
var initLayerPosTop     =    0;
var initZIndex          =    0;
var posX                =    0;
var posY                =    0;


// +----------------------+
// | DIRECT RUN:          |
// +----------------------+

//LoadContentToFrame
function loadContentToFrame() {
  if(top.frames.length < 1) {
    top.location.href="http://www.ini-con.com/";
  }
}


// +----------------------+
// | FUNCTIONS:           |
// | - openPopUp          |
// | - preLoader          |
// | - findObject         |
// | - ImageSwapping      |
// | - replaceSubstring   |
// | - YbC-Vinyl-Player   |
// +----------------------+

/*****************
 * openPopUp
 *****************/

function openPopUp(url, width, height, isImage)
{
  if (url && width && height)
  {
    if (isImage) {
      width  += 20;
      height += 30;
    }
    var popUp = window.open(url,"popUp","toolbar=no,location=no,directories=no,status=no,scrollbars=no,resizable=no,copyhistory=no,width=" + width + ",height=" + height);
  }
  return;
}
//ENDE openPopUp



/*****************
 * preLoader
 *****************/
function preLoader() 
{
  var d = document;

  if(d.images) {
    if(!d.p) {
      d.p = new Array();
    }
  
    var i = d.p.length
    var j = d.p.length
    var a = preLoader.arguments; 

    for(i=0; i < a.length; i++) {
      if (a[i].indexOf("#") != 0) {
        d.p[j] = new Image;
        d.p[j++].src = a[i];
      }
    }
  }
}
//ENDE preLoader



/*****************
 * findObject
 *****************/

function findObject(n, d) 
{
  var p,i,x;

  if(!d) d = document;
 
  p = n.indexOf("?")
  if( (p > 0) && (parent.frames.length) ) {
    d = parent.frames[n.substring(p+1)].document;
    n = n.substring(0, p);
  }

  if( !(x = d[n]) && d.all) {
    x = d.all[n];
  }

  for (i=0; (!x && (i<d.forms.length) ); i++) {
    x = d.forms[i][n];
  }

  for(i=0; ( (!x&&d.layers) && (i<d.layers.length) ); i++) {
    x = findObject(n,d.layers[i].document);
  }

  if(!x && document.getElementById) {
    x = document.getElementById(n);
  }

  return x;
}
//ENDE findObject



/*****************
 * ImageSwapping
 * - swapImage
 * - swapImageRestore
 *****************/

function swapImage()
{
  var i,j = 0
  var x,a = swapImage.arguments;

  document.sr = new Array;

  for(i = 0; i<(a.length-2); i += 3) {
    if ((x = findObject(a[i])) != null)
    {
      document.sr[j++] = x;
      if( !x.oSrc ) {
        x.oSrc = x.src;
     }
     x.src = a[i+2];
    }
  }
}
//ENDE swapImage


function swapImageRestore() 
{
  var i, x, a = document.sr;
  for(i = 0; a && i < a.length && (x = a[i]) && x.oSrc; i++) {
    x.src = x.oSrc;
  }
}
//ENDE swapImageRestore



/*****************
 * replaceSubstring
 *****************/

function replaceSubstring(inputString, fromString, toString) {
  var result = inputString;
  if (fromString == "") {
    return inputString;
  }
  if (toString.indexOf(fromString) == -1) {
    while (result.indexOf(fromString) != -1) {
      var toTheLeft = result.substring(0, result.indexOf(fromString));
      var toTheRight = result.substring(result.indexOf(fromString)+fromString.length, result.length);
      result = toTheLeft + toString + toTheRight;
    }
  }
  else {
    var midStrings = new Array("~", "`", "_", "^", "#");
    var midStringLen = 1;
    var midString = "";

    while (midString == "") {
      for (var i=0; i < midStrings.length; i++) {
        var tempMidString = "";
        for (var j=0; j < midStringLen; j++) {
          tempMidString += midStrings[i]; 
        }
        if (fromString.indexOf(tempMidString) == -1) {
          midString = tempMidString;
          i = midStrings.length + 1;
        }
      }
    } 
    while (result.indexOf(fromString) != -1) {
      var toTheLeft = result.substring(0, result.indexOf(fromString));
      var toTheRight = result.substring(result.indexOf(fromString)+fromString.length, result.length);
      result = toTheLeft + midString + toTheRight;
    }
    while (result.indexOf(midString) != -1) {
      var toTheLeft = result.substring(0, result.indexOf(midString));
      var toTheRight = result.substring(result.indexOf(midString)+midString.length, result.length);
      result = toTheLeft + toString + toTheRight;
    }
  }
  return result;
}
//ENDE replaceSubstring



/*****************
 * YbC-Vinyl-Player
 * - draginit
 * - dragStart
 * - dragStop
 * - drag
 *****************/

function draginit() {
  document.onmousemove = drag;
  document.onmouseup = dragStop;
}
//ENDE draginit


function dragStart(element) {
  dragObject = element;
  dragX = posX - dragObject.offsetLeft;
  dragY = posY - dragObject.offsetTop;

  initLayerPosLeft = dragObject.offsetLeft;
  initLayerPosTop = dragObject.offsetTop;

  initZIndex = dragObject.style.zIndex;
  dragObject.style.zIndex = 100;
}
//ENDE dragStart


function toggle(element) {
  element.style.left = 90;
}
//ENDE toggle


function toggleBack(element) {
  element.style.left = 100;
}
//ENDE toggle

function dragStop() {
  if(dragObject != null) {
    var centerGoalX = Math.floor(dragGoalDeltaWidth / 2) + dragGoalX;
    var centerGoalY = Math.floor(dragGoalDeltaHeight / 2) + dragGoalY;
    var validX1 = dragGoalX + dragGoalDeltaWidth;
    var validY1 = dragGoalY + dragGoalDeltaHeight;
    var validX2 = dragGoalX - dragGoalDeltaWidth;
    var validY2 = dragGoalY - dragGoalDeltaHeight;
    var left = replaceSubstring(dragObject.style.left, "px", "");
    var top  = replaceSubstring(dragObject.style.top, "px", "");		

    if ((left <= validX1) && (top <= validY1) && (left >= validX2) && (top >= validY2))  {
      dragObject.style.left = dragGoalX;
      dragObject.style.top  = dragGoalY;
      dragObject.style.zIndex = 99;
    } 
    else {
      dragObject.style.left = initLayerPosLeft;
      dragObject.style.top  = initLayerPosTop;
      dragObject.style.zIndex  = initZIndex;
    }
  }
  dragObject=null;
}
//ENDE dragStop


function drag(ereignis) {
  posX = document.all ? window.event.clientX : ereignis.pageX;
  posY = document.all ? window.event.clientY : ereignis.pageY;
  if(dragObject != null) {
    dragObject.style.left = (posX - dragX) + "px";
    dragObject.style.top = (posY - dragY) + "px";
    dragObject.style.cursor = "hand";
  }
}
//ENDE drag

