
hs.graphicsDir = '/highslide/graphics/';
hs.outlineType = 'drop-shadow';
hs.headingEval = 'this.thumb.title';
hs.captionEval = 'this.thumb.alt';

function getXmlhttp() {
    var xmlhttp=false;
    /*@cc_on @*/
    /*@if (@_jscript_version >= 5)
     try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
     } catch (e) {
      try {
       xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (E) {
       xmlhttp = false;
      }
     }
    @end @*/
    if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
        try {
            xmlhttp = new XMLHttpRequest();
        } catch (e) {
            xmlhttp=false;
        }
    }
    if (!xmlhttp && window.createRequest) {
        try {
            xmlhttp = window.createRequest();
        } catch (e) {
            xmlhttp=false;
        }
    }
    return xmlhttp;
}

function timeResult(id) {
    var t = document.getElementById('timeinput' + id).value;
    if (t == '') {
        return;
    }
    var xmlhttp = getXmlhttp();
    xmlhttp.open("GET", "/get.php?test="+urlencode(t), true);
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4) {
            document.getElementById('timeresult' + id).innerHTML = xmlhttp.responseText;
        }
    }
    xmlhttp.send(null);
}

function exCategory(id) {
    var i = document.getElementById('catbutton' + id);
    var d = document.getElementById('subcats' + id);
    
//    var on = (i.getAttribute('src') == '/images/plus.png');
    var on = (d.style.display == "none");
    
    i.setAttribute('src', (on? '/images/minus.png': '/images/plus.png'));
    i.setAttribute('alt', (on? 'Collapse': 'Expand'));
    d.style.display = (on? 'block': 'none');
}

function showHideNews() {
    var texts = document.getElementById('newstexts');
    var current = texts.style.display;
    texts.style.display = (current == 'none'? 'block': 'none');
    
//    var h = document.getElementById('newsheader');
//    h.setAttribute("style", "border-bottom: " + (current == 'none'? '0px solid black': 'none') );
    fixNewsFeedHeight();
    var xmlhttp = getXmlhttp();
    xmlhttp.open("GET", "/get.php?news="+(current == 'none'? 'hide': 'show'), true);
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4) {
            // alert(xmlhttp.responseText);
        }
    }
    xmlhttp.send(null);
    
    return (current == 'none'? 'hide': 'show');
}

function fixNewsFeedHeight() {
    var newsFeed = document.getElementById("newsfeed");
    var texts = document.getElementById('newstexts');
    if (texts.style.display == 'none') {
        newsFeed.style.marginBottom = '6px';
        return;
    }
    var currentHeight;
//    if (newsFeed.currentStyle)
//        currentHeight = newsFeed.currentStyle["height"];
//    else 
    if (window.getComputedStyle) {
    // ff
        currentHeight = document.defaultView.getComputedStyle(newsFeed,null).getPropertyValue("height");
    }
    else {
    // ?
        currentHeight = newsFeed.offsetHeight;
        currentHeight = parseInt(currentHeight)+9;
    }

    if (currentHeight) {  // IE6 will not be able to figure out currentHeight. too bad. they were warned.
        var len = currentHeight.length;
        if ((""+currentHeight).substr(len-2,2) == "px")
            currentHeight = currentHeight.substr(0,len-2);

        currentHeightInt = parseInt(currentHeight);
        var newHeight = 25; // exactly
        while (newHeight < currentHeightInt+6) newHeight += 219;
        var oldStyle = newsFeed.getAttribute("style");
        var newStyle = oldStyle + "; margin-bottom: " + (newHeight - currentHeightInt+4) + "px";
        newsFeed.setAttribute("style", newStyle);
    }
}

function hideBrowserAlert() {
    var texts = document.getElementById('browseralert');
    texts.style.display =  'none';
    
    var xmlhttp = getXmlhttp();
    xmlhttp.open("GET", "/get.php?browseralert=hide", true);
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4) {
            // alert(xmlhttp.responseText);
        }
    }
    xmlhttp.send(null);
}

/*
function showHide(elementId) {
    var el = document.getElementById(elementId);
    var current = el.style.display;
    el.style.display = (current == 'none'? 'block': 'none');
}
*/

var pending_preview = false;
var pending_update_timeout = 1500;
var current_preview = null;
var image_file_active = 0;  
function updateClassifiedPreview() {
    if (pending_preview) return;
    pending_preview = true;

    var form = document.forms[1]; // todo: get rid of that 1
/*    var radio = form.package_id;
    
    for (i=0; i<radio.length; i++) {
        if (radio[i].checked) {
            var package_id = radio[i].value;
            break;
        }
    }
    */
    var category = form.cat_id.value;
    var title = form.title.value;
    var description = form.description.value;
    var price = form.price.value;
    var contact = form.contact.value;
    
//    if (!title || !description) return;
    
    var xmlhttp = getXmlhttp();
    xmlhttp.open("GET", "/get.php?preview_classified=2"/*+"&package_id="+urlencode(package_id)*/+"&title="+urlencode(title)+"&description="+urlencode(description)+"&price="+urlencode(price)+"&contact="+urlencode(contact)+"&category="+urlencode(category)+"&file="+image_file_active, true);
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4) {
            if (xmlhttp.responseText != current_preview) {  // these are never equal for some stupid reason
//                alert(current_preview + " != " + xmlhttp.responseText);
                document.getElementById('classified_preview').innerHTML = xmlhttp.responseText;
                current_preview = xmlhttp.responseText;
                pending_update_timeout = 1500;
            }
            else if (pending_update_timeout < 10000) {
                pending_update_timeout += 500;
            }
            setTimeout('updateClassifiedPreview()',pending_update_timeout);
            pending_preview = false;
        }
    }
    xmlhttp.send(null);
}

function updatePackageDescription() {

    var radio = document.forms[1].package_id;
    
    for (i=0; i<radio.length; i++) {
        if (radio[i].checked == true) {
            var package_id = radio[i].value;
            break;
        }
    }
    if (!package_id) return false;

    document.getElementById('package_description').innerHTML
        = '<i>Please wait, loading...</i><br />';
    document.getElementById('package_description_label').innerHTML
        = 'Images';
    
    var xmlhttp = getXmlhttp();
    xmlhttp.open("GET", "/get.php?pid="+package_id, true);
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4) {
            document.getElementById('package_description').innerHTML = xmlhttp.responseText;
        }
    }
    xmlhttp.send(null);
}

function updateBodyColour(hex) {

    var elements = document.getElementsByClassName("ytcolour");
    var titled_blocks = document.getElementsByClassName("titled_block");
    
    var block;
    var h3s;
    var element;
    
    var oldBG = -1;
    var newBG = '#' + hex + ' url(\'/images/header-fade2.png\') repeat-x 0 100%';
    
	for (var i = 0; (element = elements[i]) != null; i++) {
	    element.style.background = '#' + hex;
	}
	
	if (titled_blocks) {
	    for (var i = 0; (block = titled_blocks[i]) != null; i++) {
	        h3s = block.getElementsByTagName("h3");
	        if (h3s) {
	            for (var j = 0; (element = h3s[j]) != null; j++) {
	                if (oldBG == -1) {
	                    oldBG = element.style.background;
	                }
	                if (element.style.background == oldBG) {
                	    element.style.background = newBG;
	                }
	            }
	        }
	    }
	}
    
    var xmlhttp = getXmlhttp();
    xmlhttp.open("GET", "/get.php?colour="+hex, true);
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4) {
            // alert(xmlhttp.responseText);
        }
    }
    xmlhttp.send(null);
}

function updateBodyBackground(title) {
    
    document.body.style.background = '#FFFFFF url(/images/' + title + '.jpg) no-repeat fixed 0 100%';
    
    var xmlhttp = getXmlhttp();
    xmlhttp.open("GET", "/get.php?bg="+title, true);
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4) {
            // alert(xmlhttp.responseText);
        }
    }
    xmlhttp.send(null);
}

function checkUncheck(namePart,valuePart) {
    var inputs = document.getElementsByTagName('input');
    
	var element;
	for (var i = 0; (element = inputs[i]) != null; i++) {
	    if (element.name.indexOf(namePart) != -1 && element.defaultValue.indexOf(valuePart) != -1 ) {
	        element.checked = true;
        }
	}
}

function clickAd(aid) {
    var xmlhttp = getXmlhttp();
    xmlhttp.open("GET", "/get.php?aid="+aid, true);
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4) {
//            window.location = xmlhttp.responseText;
        }
    }
    xmlhttp.send(null);
}

function clickClassified(cid, anchor, hsid) {
    updateClClicks(cid);
    hs.htmlExpand(anchor, {contentId: "highslide-"+hsid });
}

function updateClClicks(cid) {
    if (!cid) return;
    var xmlhttp = getXmlhttp();
    xmlhttp.open("GET", "/get.php?cid="+cid, true);
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4) {
           // alert(xmlhttp.responseText);
        }
    }
    xmlhttp.send(null);
}

if (document.getElementsByClassName == undefined) {
	document.getElementsByClassName = function(className)
	{
		var hasClassName = new RegExp("(?:^|\\s)" + className + "(?:$|\\s)");
		var allElements = document.getElementsByTagName("*");
		var results = [];

		var element;
		for (var i = 0; (element = allElements[i]) != null; i++) {
			var elementClass = element.className;
			if (elementClass && elementClass.indexOf(className) != -1 && hasClassName.test(elementClass))
				results.push(element);
		}

		return results;
	}
}

function urlencode (clearString) {
  if (clearString == null || clearString == '') return '';
  var output = '';
  var x = 0;
  clearString = clearString.toString();
  var regex = /(^[a-zA-Z0-9_.]*)/;
  var match;
  while (x < clearString.length) {
    match = regex.exec(clearString.substr(x));
    if (match != null && match.length > 1 && match[1] != '') {
    	output += match[1];
      x += match[1].length;
    } else {
      if (clearString[x] == ' ')
        output += '+';
      else {
        var charCode = clearString.charCodeAt(x);
        var hexVal = charCode.toString(16);
        output += '%' + ( hexVal.length < 2 ? '0' : '' ) + hexVal.toUpperCase();
      }
      x++;
    }
  }
  return output;
}


function stripe(id) {

    // the flag we'll use to keep track of 
    // whether the current row is odd or even
    var even = false;

    // if arguments are provided to specify the colours
    // of the even & odd rows, then use the them;
    // otherwise use the following defaults:
    var evenColor = arguments[1] ? arguments[1] : "#fff";
    var oddColor = arguments[2] ? arguments[2] : "#eee";

    // obtain a reference to the desired table
    // if no such table exists, abort
    var table = document.getElementById(id);
    if (! table) { return; }

    // by definition, tables can have more than one tbody
    // element, so we'll have to get the list of child
    // &lt;tbody&gt;s 
    var tbodies = table.getElementsByTagName("tbody");

    // and iterate through them...
    for (var h = 0; h < tbodies.length; h++) {

        // find all the &lt;tr&gt; elements... 
        var trs = tbodies[h].getElementsByTagName("tr");

        // ... and iterate through them
        for (var i = 0; i < trs.length; i++) {

            // avoid rows that have a class attribute
            // or backgroundColor style
            if (! hasClass(trs[i]) &&
            ! trs[i].style.backgroundColor) {

                // get all the cells in this row...
                var tds = trs[i].getElementsByTagName("td");

                // and iterate through them...
                for (var j = 0; j < tds.length; j++) {

                    var mytd = tds[j];

                    // avoid cells that have a class attribute
                    // or backgroundColor style
                    if (! hasClass(mytd) &&
                    ! mytd.style.backgroundColor) {

                        mytd.style.backgroundColor =
                        even ? evenColor : oddColor;

                    }
                }
            }
            even =  ! even;
        }
    }
}

function hasClass(obj) {
    var result = false;
    if (obj.getAttributeNode("class") != null) {
        result = obj.getAttributeNode("class").value;
    }
    return result;
}



