var activecalls=0;

var transactionObject = {
	start:function(type, args){
    activecalls+=1;
	},

	complete:function(type, args){
    activecalls-=1;
	},

	success:function(type, args){
		if(args[0].responseText !== undefined){
      var explodedvars=args[0].responseText.split('|||||');
      for(i=0;i<explodedvars.length;i++) {
        var ele=explodedvars[i].split('===');
        if (ele[0].substr(0,1)=='~'){
          if (ele[0].substr(1,1)=='V'){document.getElementById(ele[0].substr(2)).value=unescape(ele[1].replace("\n",""));}
          if (ele[0].substr(1,1)=='R'){window.location.reload();}
          if (ele[0].substr(1,1)=='D'){var eid=document.getElementById(ele[0].substr(2)); eid.parentNode.removeChild(eid);}
          if (ele[0].substr(1,1)=='S'){document.getElementById(ele[0].substr(2)).src=unescape(ele[1].replace("\n",""));}
          if (ele[0].substr(1,3)=='OKB'){okfadebg(unescape(ele[1].replace("\n","")));}
          if (ele[0].substr(1,3)=='NAB'){nafadebg(unescape(ele[1].replace("\n","")));}
          if (ele[0].substr(1,3)=='CAR'){cartfadebg(unescape(ele[1].replace("\n","")));}
          if (ele[0].substr(1,2)=='Cc'){if(document.getElementById(ele[0].substr(3))){ChangeClass(ele[0].substr(3), ele[1]);}}
        } else {
          var elementID = document.getElementById(ele[0]);
      		elementID.innerHTML = unescape(ele[1].replace("\n",""));
        }
      }
		}
	},

	failure:function(type, args){
	},

	abort:function(type, args){
	}
};

var handleSuccess = function(o){
};

var handleFailure = function(o){
};

var callback = {
	success:handleSuccess,
	failure:handleFailure,
	customevents:{
		onStart:transactionObject.start,
		onComplete:transactionObject.complete,
		onSuccess:transactionObject.success,
		onFailure:transactionObject.failure,
		onAbort:transactionObject.abort
	},
 	argument:["foo","bar"]
};


function makeAJAXcall(action, vars){
	var sUrl = "ajaxcalls.php?a="+action+"&"+vars;
	var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);
}

function submitf(action, sub){
  if (action=="red"){
    var aaction='cart';
  	var ssub="mine_"+sub;
    var elementIDE = document.getElementById(ssub);
    if (elementIDE.checked){var tmp=elementIDE.value;} else {var tmp="0";}
    var lvars='s=addreddomain&d='+sub+'&ssub='+tmp;
  }
  makeAJAXcall(aaction, lvars);
}

function okfadebg(type){colorFade(type,'background','00FF00','DFE0FF',35,70);}
function nafadebg(type){colorFade(type,'background','FF0000','DFE0FF',35,70);}
function cartfadebg(type){colorFade(type,'background','FFFF00','FFFFFF',35,70);}

function redbg(id){
  var target = document.getElementById(id);
  target.style.backgroundColor = "FF0000";
}

// main function to process the fade request //
function colorFade(id,element,start,end,steps,speed) {
  var startrgb,endrgb,er,eg,eb,step,rint,gint,bint,step;
  var target = document.getElementById(id);
  clearInterval(target.timer);
  endrgb = colorConv(end);  er = endrgb[0];  eg = endrgb[1];  eb = endrgb[2];
  if(!target.r) {
    startrgb = colorConv(start);    r = startrgb[0];    g = startrgb[1];    b = startrgb[2];
    target.r = r;    target.g = g;    target.b = b;
  }
  rint = Math.round(Math.abs(target.r-er)/steps);
  gint = Math.round(Math.abs(target.g-eg)/steps);
  bint = Math.round(Math.abs(target.b-eb)/steps);
  if(rint == 0) { rint = 1 }
  if(gint == 0) { gint = 1 }
  if(bint == 0) { bint = 1 }
  target.step = 1;
  target.timer = setInterval( function() { animateColor(id,element,steps,er,eg,eb,rint,gint,bint) }, speed);
}

// incrementally close the gap between the two colors //
function animateColor(id,element,steps,er,eg,eb,rint,gint,bint) {
  var target = document.getElementById(id);
  var color;
  if(target.step <= steps) {
    var r = target.r;    var g = target.g;    var b = target.b;
    if(r >= er) {r = r - rint;} else {r = parseInt(r) + parseInt(rint);}
    if(g >= eg) {g = g - gint;} else {g = parseInt(g) + parseInt(gint);}
    if(b >= eb) {b = b - bint;} else {b = parseInt(b) + parseInt(bint);}
    color = 'rgb(' + r + ',' + g + ',' + b + ')';
    if(element == 'background') {
      target.style.backgroundColor = color;
    } else if(element == 'border') {
      target.style.borderColor = color;
    } else {
      target.style.color = color;
    }
    target.r = r; target.g = g; target.b = b;
    target.step = target.step + 1;
  } else {
    clearInterval(target.timer);
    target.r=0;
    color = 'rgb(' + er + ',' + eg + ',' + eb + ')';
    if(element == 'background') {
      target.style.backgroundColor = color;
    } else if(element == 'border') {
      target.style.borderColor = color;
    } else {
      target.style.color = color;
    }
  }
}

// convert the color to rgb from hex //
function colorConv(color) {
  var rgb = [parseInt(color.substring(0,2),16), parseInt(color.substring(2,4),16), parseInt(color.substring(4,6),16)];
  return rgb;
}

function ChangeClass(button, toclass){
  var currElement = document.getElementById(button); 
  currElement.setAttribute("class", toclass); 
  currElement.setAttribute("className", toclass); 
}

