var http = createRequestObject();



function createRequestObject() 

{

	var ro;

	var browser = navigator.appName;

	if(browser == "Microsoft Internet Explorer")

	{

		ro = new ActiveXObject("Microsoft.XMLHTTP");

	}

	else

	{

		ro = new XMLHttpRequest();

	}

	return ro;

}



function toggle(id) 

{ 

  var tr = document.getElementById(id); if (tr==null) { return; };

  var bExpand = tr.style.display == ''; tr.style.display = (bExpand ? 'none' : '');   

} 



function toggleAll(id,cnt) 

{ 

var i; 



	for(i=0;i<=cnt;i++)

	{

    var tr = document.getElementById(id+i); if (tr==null) { return; };

    var bExpand = tr.style.display == ''; tr.style.display = (bExpand ? 'none' : '');  

  } 

  var tr = document.getElementById('all'); if (tr==null) { return; };

  tr.innerHTML  = tr.innerHTML=='[Expand All]'?'[Collapse All]':'[Expand All]';

}



function GetColors()

{

    //document.getElementById('TagText1').value = 'Loading...';



    http.open('get', 'index.php?templ_c='+escape(document.getElementById('template_name').value));

    http.onreadystatechange = GetColorsResponse;

    http.send(null);

}

function GetColorsResponse() 

{ 

      var response = http.responseText;              

      var obj = document.getElementById('template_color');

      obj.innerHTML = response;                           

}





function vote(id)

{

	document.getElementById('voted'+id).innerHTML = 'sending';



	http.open('get', '/index.php?pag=vote&deal_id='+id);

    http.onreadystatechange = digResponse;

    http.send(null);

}



function tagGuess()

{

	document.getElementById('TagText1').value = 'Guessing...';



	http.open('get', 'index.php?section=guess&title='+escape(document.getElementById('deal_title').value));

    http.onreadystatechange = PutResponse;

    http.send(null);

}







function PutResponse() 

{ 

	  var response = http.responseText;		

		returned = response.split('|');

		

		var tags=returned[0];

    var cats=returned[1];    

    

    cats2 = cats.split(',');

		

		document.getElementById('TagText1').value = tags;

		

		for ( it in cats2 ) {

      document.getElementById("ctg"+it).selected = "1";

    }

}



function changeAff(oelement)

{

	http.open('get', '../index.php?pag=getAffForStore&id='+oelement.value);

  http.onreadystatechange = changeAffResponse;

  http.send(null);

}

function changeAffResponse() 

{ 

	  var response = http.responseText;

		document.getElementById('aff_network_id').value = response;		

}











function digResponse() 

{ 

	if(http.readyState == 4)

	{

        var response = http.responseText;

		

		response = response.replace('\n','');

		

    returned = response.split('|');



		if(response.indexOf('|' != -1)) 

		{

			var status=returned[0];

      var id=returned[1];

			var votes=returned[2];			

			

			if(status == '1')

			{

				document.getElementById('voted'+id).innerHTML = 'Voted';

				document.getElementById('votes'+id).innerHTML = votes;

  			}

			else if(status == '2')

			{

				document.getElementById('voted'+id).innerHTML = 'Voted';

			}

			else if(status == '0')

			{

				document.getElementById('voted'+id).innerHTML = '<a href="?login">Login<\/a>';

			}

		}

    }

}



//=============================

/* An autosuggest textbox control.*/

function AutoSuggestControl(oTextbox /*:HTMLInputElement*/, oProvider /*:SuggestionProvider*/, oType) {

    this.cur /*:int*/ = -1;

    this.layer = null;

    this.provider /*:SuggestionProvider*/ = oProvider;

    this.type /*:Type*/ = oType;

    this.textbox /*:HTMLInputElement*/ = oTextbox;

    this.init();

    

}



/* Autosuggests one or more suggestions for what the user has typed. If no suggestions are passed in, then no autosuggest occurs.*/

AutoSuggestControl.prototype.autosuggest = function (aSuggestions /*:Array*/, bTypeAhead /*:boolean*/) {

    //make sure there's at least one suggestion

    if (aSuggestions.length > 0) { if (bTypeAhead) {this.typeAhead(aSuggestions[0]);

        }this.showSuggestions(aSuggestions);

    } else {this.hideSuggestions();}

};



/* Creates the dropdown layer to display multiple suggestions.*/

AutoSuggestControl.prototype.createDropDown = function () {

    var oThis = this; //create the layer and assign styles    

    this.layer = document.createElement("div");

    this.layer.className = "suggestions";

    this.layer.style.visibility = "hidden";

    this.layer.style.width = this.textbox.offsetWidth;    

    //when the user clicks on the a suggestion, get the text (innerHTML) and place it into a textbox

    this.layer.onmousedown = 

    this.layer.onmouseup = 

    this.layer.onmouseover = function (oEvent) {

        oEvent = oEvent || window.event;  oTarget = oEvent.target || oEvent.srcElement;

        if (oEvent.type == "mousedown") { oThis.textbox.value = oTarget.firstChild.nodeValue;

            oThis.hideSuggestions();

        } else if (oEvent.type == "mouseover") {oThis.highlightSuggestion(oTarget);

        } else {oThis.textbox.focus();}

    };

    document.body.appendChild(this.layer);

};



/* Gets the left coordinate of the textbox. 

 * @return The left coordinate of the textbox in pixels. */

AutoSuggestControl.prototype.getLeft = function () /*:int*/ {

    var oNode = this.textbox;  var iLeft = 0;    

    while(oNode.tagName != "BODY") {

        iLeft += oNode.offsetLeft;

        oNode = oNode.offsetParent;        

    } return iLeft;

};



/* Gets the top coordinate of the textbox.*/

AutoSuggestControl.prototype.getTop = function () /*:int*/ {

    var oNode = this.textbox; var iTop = 0;    

    while(oNode.tagName != "BODY") {

        iTop += oNode.offsetTop;

        oNode = oNode.offsetParent;

    } return iTop;

};



/* Handles three keydown events. */

AutoSuggestControl.prototype.handleKeyDown = function (oEvent /*:Event*/) {

    switch(oEvent.keyCode) {

        case 38: this.previousSuggestion();  break; //up arrow

        case 40: this.nextSuggestion();      break; //down arrow

        case 13: this.hideSuggestions();     break; //enter

    }

};



/* Handles keyup events. */

AutoSuggestControl.prototype.handleKeyUp = function (oEvent /*:Event*/) {

    var iKeyCode = oEvent.keyCode;

    //for backspace (8) and delete (46), shows suggestions without typeahead

    if (iKeyCode == 8 || iKeyCode == 46) { this.provider.requestSuggestions(this, false);        

    //make sure not to interfere with non-character keys

    } else if (iKeyCode < 32 || (iKeyCode >= 33 && iKeyCode < 46) || (iKeyCode >= 112 && iKeyCode <= 123)) {

        //ignore

    } else {this.provider.requestSuggestions(this, true); } //request suggestions from the suggestion provider with typeahead

};



/* Hides the suggestion dropdown.*/

AutoSuggestControl.prototype.hideSuggestions = function () {this.layer.style.visibility = "hidden";};



/* Highlights the given node in the suggestions dropdown.*/

AutoSuggestControl.prototype.highlightSuggestion = function (oSuggestionNode) {

    for (var i=0; i < this.layer.childNodes.length; i++) {

        var oNode = this.layer.childNodes[i];

        if (oNode == oSuggestionNode) {

            oNode.className = "current"

        } else if (oNode.className == "current") {

            oNode.className = "";

        }

    }

};



/* Initializes the textbox with event handlers for auto suggest functionality.*/

AutoSuggestControl.prototype.init = function () { //save a reference to this object    

    var oThis = this;  

    if (oThis.textbox!=null){  

    this.textbox.onkeyup = function (oEvent) {  //assign the onkeyup event handler        

        if (!oEvent) {oEvent = window.event;} //check for the proper location of the event object

        oThis.handleKeyUp(oEvent);  //call the handleKeyUp() method with the event object

    };    

    this.textbox.onkeydown = function (oEvent) {  //assign onkeydown event handler

        if (!oEvent) { oEvent = window.event; } //check for the proper location of the event object

        oThis.handleKeyDown(oEvent); //call the handleKeyDown() method with the event object

    };

    //assign onblur event handler (hides suggestions)    

    this.textbox.onblur = function () { oThis.hideSuggestions(); };

    //create the suggestions dropdown

    this.createDropDown();

    }

};



/* Highlights the next suggestion in the dropdown and places the suggestion into the textbox.*/

AutoSuggestControl.prototype.nextSuggestion = function () {

    var cSuggestionNodes = this.layer.childNodes;



    if (cSuggestionNodes.length > 0 && this.cur < cSuggestionNodes.length-1) {

        var oNode = cSuggestionNodes[++this.cur];

        this.highlightSuggestion(oNode);

        this.textbox.value = oNode.firstChild.nodeValue; 

    }

};



/* Highlights the previous suggestion in the dropdown and places the suggestion into the textbox.*/

AutoSuggestControl.prototype.previousSuggestion = function () {

    var cSuggestionNodes = this.layer.childNodes;

    if (cSuggestionNodes.length > 0 && this.cur > 0) {

        var oNode = cSuggestionNodes[--this.cur];

        this.highlightSuggestion(oNode);

        this.textbox.value = oNode.firstChild.nodeValue;   

    }

};



/* Selects a range of text in the textbox. 

 * @param iStart The start index (base 0) of the selection.

 * @param iLength The number of characters to select. */

AutoSuggestControl.prototype.selectRange = function (iStart /*:int*/, iLength /*:int*/) {

    //use text ranges for Internet Explorer

    if (this.textbox.createTextRange) {

        var oRange = this.textbox.createTextRange();  oRange.moveStart("character", iStart); 

        oRange.moveEnd("character", iLength - this.textbox.value.length);  oRange.select();

    //use setSelectionRange() for Mozilla

    } else if (this.textbox.setSelectionRange) {

        this.textbox.setSelectionRange(iStart, iLength);

    }     

   //set focus back to the textbox

    this.textbox.focus();      

}; 



/* Builds the suggestion layer contents, moves it into position, and displays the layer. 

 * @param aSuggestions An array of suggestions for the control. */

AutoSuggestControl.prototype.showSuggestions = function (aSuggestions /*:Array*/) {    

    var oDiv = null;

    this.layer.innerHTML = "";  //clear contents of the layer    

    for (var i=0; i < aSuggestions.length; i++) {

        oDiv = document.createElement("div");

        oDiv.appendChild(document.createTextNode(aSuggestions[i]));

        this.layer.appendChild(oDiv);

    }

    this.layer.style.left = this.getLeft() + "px";

    this.layer.style.top = (this.getTop()+this.textbox.offsetHeight) + "px";

    this.layer.style.visibility = "visible";

};



/* Inserts a suggestion into the textbox, highlighting the suggested part of the text.

 * @param sSuggestion The suggestion for the textbox. */

AutoSuggestControl.prototype.typeAhead = function (sSuggestion /*:String*/) {

    //check for support of typeahead functionality

    if (this.textbox.createTextRange || this.textbox.setSelectionRange){

        var iLen = this.textbox.value.length; 

        this.textbox.value = sSuggestion; 

        this.selectRange(iLen, sSuggestion.length);

    }

};



//-------------------





//===================

function RemoteStateSuggestions() {

  if (typeof XMLHttpRequest != "undefined") {this.http = new XMLHttpRequest();} 

  else if (typeof ActiveXObject != "undefined") {this.http = new ActiveXObject("MSXML2.XmlHttp");

  } else {alert("No XMLHttpRequest object available. This functionality will not work.");}

}



RemoteStateSuggestions.prototype.requestSuggestions = function (oAutoSuggestControl, bTypeAhead) {

    var oHttp = this.http;

    if (oHttp.readyState != 0) {oHttp.abort();}    

    

    var sURL = "rpc.php?type="+oAutoSuggestControl.type+"&queryString=" + encodeURIComponent(oAutoSuggestControl.textbox.value);

    oHttp.open("get", sURL , true);  bTypeAhead = false;

    oHttp.onreadystatechange = function () {

        if (oHttp.readyState == 4) {

            //evaluate the returned text JavaScript (an array)

            var aSuggestions = eval(oHttp.responseText);        

            //provide suggestions to the control

            oAutoSuggestControl.autosuggest(aSuggestions, bTypeAhead);        

        }    

    };

    oHttp.send(null);

};





// =====================



/***********************************************

* Cool DHTML tooltip script- © Dynamic Drive DHTML code library (www.dynamicdrive.com)

* This notice MUST stay intact for legal use

* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code

***********************************************/



var offsetxpoint=-60 //Customize x offset of tooltip

var offsetypoint=20 //Customize y offset of tooltip

var ie=document.all

var ns6=document.getElementById && !document.all

var enabletip=false

if (ie||ns6)

var tipobj=document.all? document.all["dhtmltooltip"] : document.getElementById? document.getElementById("dhtmltooltip") : ""



function ietruebody(){

return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body

}



function ddrivetip(thetext, thecolor, thewidth){

if (ns6||ie){

if (typeof thewidth!="undefined") tipobj.style.width=thewidth+"px"

if (typeof thecolor!="undefined" && thecolor!="") tipobj.style.backgroundColor=thecolor

tipobj.innerHTML=thetext

enabletip=true

return false

}

}



function positiontip(e){

if (tipobj==null) tipobj=document.all? document.all["dhtmltooltip"] : document.getElementById? document.getElementById("dhtmltooltip") : ""



if (enabletip){

var curX=(ns6)?e.pageX : event.clientX+ietruebody().scrollLeft;

var curY=(ns6)?e.pageY : event.clientY+ietruebody().scrollTop;

//Find out how close the mouse is to the corner of the window

var rightedge=ie&&!window.opera? ietruebody().clientWidth-event.clientX-offsetxpoint : window.innerWidth-e.clientX-offsetxpoint-20

var bottomedge=ie&&!window.opera? ietruebody().clientHeight-event.clientY-offsetypoint : window.innerHeight-e.clientY-offsetypoint-20



var leftedge=(offsetxpoint<0)? offsetxpoint*(-1) : -1000



//if the horizontal distance isn't enough to accomodate the width of the context menu

if (rightedge<tipobj.offsetWidth)

//move the horizontal position of the menu to the left by it's width

tipobj.style.left=ie? ietruebody().scrollLeft+event.clientX-tipobj.offsetWidth+"px" : window.pageXOffset+e.clientX-tipobj.offsetWidth+"px"

else if (curX<leftedge)

tipobj.style.left="5px"

else

//position the horizontal position of the menu where the mouse is positioned

tipobj.style.left=curX+offsetxpoint+"px"



//same concept with the vertical position

if (bottomedge<tipobj.offsetHeight)

tipobj.style.top=ie? ietruebody().scrollTop+event.clientY-tipobj.offsetHeight-offsetypoint+"px" : window.pageYOffset+e.clientY-tipobj.offsetHeight-offsetypoint+"px"

else

tipobj.style.top=curY+offsetypoint+"px"

tipobj.style.visibility="visible"

}

}



function hideddrivetip(){

if (tipobj==null) tipobj=document.all? document.all["dhtmltooltip"] : document.getElementById? document.getElementById("dhtmltooltip") : ""



if (ns6||ie){

enabletip=false

tipobj.style.visibility="hidden"

tipobj.style.left="-1000px"

tipobj.style.backgroundColor=''

tipobj.style.width=''

}

}



document.onmousemove=positiontip



/**
 * Confirm plugin 1.2
 *
 * Copyright (c) 2007 Nadia Alramli (http://nadiana.com/)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 */

/**
 * For more docs and examples visit:
 * http://nadiana.com/jquery-confirm-plugin
 * For comments, suggestions or bug reporting,
 * email me at: http://nadiana.com/contact/
 */

jQuery.fn.confirm = function(options) {
  options = jQuery.extend({
    msg: 'Are you sure?',
    stopAfter: 'never',
    wrapper: '<span></span>',
    eventType: 'click',
    dialogShow: 'show',
    dialogSpeed: '',
    timeout: 0
  }, options);
  options.stopAfter = options.stopAfter.toLowerCase();
  if (!options.stopAfter in ['never', 'once', 'ok', 'cancel']) {
    options.stopAfter = 'never';
  }
  options.buttons = jQuery.extend({
    ok: 'Yes',
    cancel: 'No',
    wrapper:'<a href="#"></a>',
    separator: '/'
  }, options.buttons);

  // Shortcut to eventType.
  var type = options.eventType;

  return this.each(function() {
    var target = this;
    var $target = jQuery(target);
    var timer;
    var saveHandlers = function() {
      var events = jQuery.data(target, 'events');
      if (!events) {
        // There are no handlers to save.
        return;
      }
      target._handlers = new Array();
      for (var i in events[type]) {
        target._handlers.push(events[type][i]);
      }
    }
    
    // Create ok button, and bind in to a click handler.
    var $ok = jQuery(options.buttons.wrapper)
      .append(options.buttons.ok)
      .click(function() {
      // Check if timeout is set.
      if (options.timeout != 0) {
        clearTimeout(timer);
      }
      $target.unbind(type, handler);
      $target.show();
      $dialog.hide();
      // Rebind the saved handlers.
      if (target._handlers != undefined) {
        jQuery.each(target._handlers, function() {
          $target.click(this);
        });
      }
      // Trigger click event.
      $target.click();
      if (options.stopAfter != 'ok' && options.stopAfter != 'once') {
        $target.unbind(type);
        // Rebind the confirmation handler.
        $target.one(type, handler);
      }
      return false;
    })

    var $cancel = jQuery(options.buttons.wrapper).append(options.buttons.cancel).click(function() {
      // Check if timeout is set.
      if (options.timeout != 0) {
        clearTimeout(timer);
      }
      if (options.stopAfter != 'cancel' && options.stopAfter != 'once') {
        $target.one(type, handler);
      }
      $target.show();
      $dialog.hide();
      return false;
    });

    if (options.buttons.cls) {
      $ok.addClass(options.buttons.cls);
      $cancel.addClass(options.buttons.cls);
    }

    var $dialog = jQuery(options.wrapper)
    .append(options.msg)
    .append($ok)
    .append(options.buttons.separator)
    .append($cancel);

    var handler = function() {
      jQuery(this).hide();

      // Do this check because of a jQuery bug
      if (options.dialogShow != 'show') {
        $dialog.hide();
      }

      $dialog.insertBefore(this);
      // Display the dialog.
      $dialog[options.dialogShow](options.dialogSpeed);
      if (options.timeout != 0) {
        // Set timeout
        clearTimeout(timer);
        timer = setTimeout(function() {$cancel.click(); $target.one(type, handler);}, options.timeout);
      }
      return false;
    };

    saveHandlers();
    $target.unbind(type);
    target._confirm = handler
    target._confirmEvent = type;
    $target.one(type, handler);
  });
}
