function selectCheckDisabled(s) {

    var o = s.options[s.selectedIndex];
    if (o.className && o.className.indexOf('disabled') >= 0) {
        for (var i = 0; i < s.options.length; i++) {
            var o2 = s.options[i];
            if (!o2.className || o2.className.indexOf('disabled') == -1) {
                s.selectedIndex = i;
                break;
            }
        }
    }
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function markGuestSEOAdVisit(guestId, adId)
{
	if (guestId) {
		var n = 'av-' + guestId;
		var v = readCookie(n);
		if (!v) v = '';
		v += adId + ',';
		document.cookie = (n + '=' + v);
	}
}

function commentsSubmit() {

 with (document.quickcomments) {
   if ( (comments.value.length < 10) || (comments.value.indexOf('Have comments on our site? Please let us know here!')>-1) ) {
     alert('Please enter your comments (of at least 10 characters) and submit again.');
     return false;
   }
   else {
     if (name.value == "") name.value = "Anonymous";
     return true;
   }
 }

}

function checkLimitGeneralAdsProductType(sel, originalType)
{
    if (!originalType) {
        originalType = '';
    }
    var err_str = limitGeneralAds(sel.form);
    if (err_str) {
        alert(err_str);
        jQuery(sel).val(originalType);
    }
}

function limitGeneralAds(f)
{
    var error_str = '';

    if (window.generalAdsLimits && (f.f_prod_cat.selectedIndex != -1)) {

        var product = f.f_prod_cat.options[f.f_prod_cat.selectedIndex].value
        if (document.getElementById('ad_area-ff').checked &&
            window.generalAdsLimits['ff'] &&
            (window.generalAdsLimits['ff'][product] == 0)) {
            error_str += "Sorry, Only one General Listing per product category can be posted on FF Retail at a time. You already have a General Listing for this product category (" + product + ").  \n\nPlease cancel, go back and create a Specific Listing instead. \n(Specific listings have no limits per category.)  \n\nOr, you can un-check the FF Retail box on the top of this page. But your listing WILL NOT be displayed on FF.";
        }
        if (document.getElementById('ad_area-ffx').checked &&
            window.generalAdsLimits['ffx'] &&
            (window.generalAdsLimits['ffx'][product] == 0)) {
            error_str += "You may not create/update a Generic listing for " + product + " in FFX.\n";
        }
    }
    return error_str;
}

function traverseElements(formName, code, arg)
{
    var f = document.forms[formName];
    if (f) 
        _traverseExamineElt(f, code, arg)
}

function _traverseExamineElt(elt, code, arg)
{
    var tagName = elt.tagName ? elt.tagName.toUpperCase() : '';

    if ((tagName == 'INPUT') || (tagName == 'SELECT') || 
        (tagName == 'TEXTAREA' )) {

        code(elt, arg);

    }

    var i;
    for (i in elt.childNodes) {
        if (elt.childNodes[i])
            _traverseExamineElt(elt.childNodes[i], code, arg);
    }
}

var origColors = new Object();

function _validateFormVisitElt(elt, arg)
{
    var ignoreElt = {
    	hidden: 1,
    	button: 1,
    	submit: 1
    }
    
    if (elt.name != '') {
        // we ignore input type=hidden/button/submit
        if (! ((elt.tagName.toLowerCase() == 'input') && 
                ignoreElt[elt.type.toLowerCase()] )) {

            if (!origColors[elt.name])
                origColors[elt.name] = elt.style.backgroundColor;
            //elt.style.backgroundColor = origColors[elt.name];
            elt.style.backgroundColor = 'white';
        } 
        arg.push(elt);
    }
}

function validateUnescape(s)
{
	s = s.replace(/&amp;/g, '&');
	return s;
}

function validateGetValue(elt)
{
	var value = '';
	if (elt.tagName.toLowerCase() == 'select') {
    	var options = elt.options;
		for (var selIdx = 0; selIdx < options.length; selIdx++) {
			var o = options[selIdx];
			var val = o.value;
			if (/please\s+select/i.test(val)) {
				val = '';
			}
			if (o.selected && (val != '')) {
				if (value) {
					value += '|';
				}
				value += val;
			}
	    }
    } else {
    	switch (elt.type.toLowerCase()) {
    		case 'checkbox':
    			value = elt.checked ? '1' : '';
    			break;
    		default:
    			value = elt.value;
    	}
    }
    value = value.replace(/(^\s+)|(\s+$)/g, '')
    return value;
}

function validateForm()
{
    var f        = arguments[0];
    var formData = arguments[1];
    var customCB = (arguments.length == 3) ? arguments[2] : '';

    var s = ''
    var required, min_s, max_s;
    var title, value, elt, bad_elt, regex, elementType;

    var eltsSequence = [];
    traverseElements(f.name, _validateFormVisitElt, eltsSequence);

    var error_str = '';

    for (var j = 0; j < eltsSequence.length; j++) {
    	
        var i = eltsSequence[j].name;
        i = i.replace('[]', '');
        if (formData[i]) {

            elt = eltsSequence[j];
            elt.errStr = '';
            value = validateGetValue(elt);
            
            min_s     =  formData[i][0];
            if (min_s == '0') {
                min_s = 0;
            }
            max_s     =  formData[i][1];
            if (max_s == '0') {
                max_s = 0;
            }
            error_str =  validateUnescape(formData[i][3]); 
            title     =  formData[i][4];
            required  =  formData[i][2];
            regex     =  formData[i][5];
            elementType = (formData[i].length > 6) ? formData[i][6] : '';
            
            ok = true
            
            var isRequired = (required.toLowerCase() == 'yes');

            if (isRequired && value == '') {
                bad_elt = elt;
            	elt.errStr = error_str;
                if (elt.errStr == '') {
                    elt.errStr = 'Please provide the ' + title + '.';
                }
            	min_s = 0;
            	max_s = 0;
            }

            if ( (!bad_elt) && (value != '') && elementType) {
                if (elementType == 'email') {
                    if (!validEmail(value)) {
                        bad_elt = elt;
                        elt.errStr = 'Invalid format for ' + title + '.';
                    }
                }
            }

            if (!bad_elt && regex) {
            	if (value != '') {
	            	var r = new RegExp(regex);
	            	if (!r.test(value)) {
	            		bad_elt = elt;
	            		elt.errStr = 'Invalid format for ' + title + '.';
	            	    min_s = 0;
	                	max_s = 0;
	            	} else {
	            		//alert('regexp worked!');
	            		//alert(regex);
	            		//alert(value);
	            	}
            	}
            }

            if (!bad_elt && (min_s != '')) {
                if (value.length < min_s) { 
                    bad_elt = elt;
                }
            }
            if (!bad_elt && (max_s != '')) {
                if (value.length > max_s) { 
                    bad_elt = elt;
                }
            }

            if (bad_elt) {
                break;
            }

            if (customCB) {
                if (!customCB(elt, formData, f)) {
                    bad_elt = elt
                    break;
                }
            }
        }
    }

    if (bad_elt) {
    	
        elt = bad_elt
        elt.focus()
        elt.style.backgroundColor = '#fdfcd8';
        
        if (elt.errStr) {
            error_str = elt.errStr;
        }
        
        if (error_str == '')
            error_str = 'Please enter ' + title
        if (min_s)
            error_str += ' (min length: ' + min_s + ' characters'
        if (max_s) {
            if (min_s)
                error_str += ', '
            else
                error_str += ' ('
            error_str += 'max length: ' + max_s + ' characters'
        }
        if (min_s || max_s)
            error_str += ')'
        alert(error_str)
		
    }
    return bad_elt ? false : true;
}

function getParamsFromURL() {

    var result = new Object();
    var idx = location.href.indexOf('?');
    if (idx != -1) {
        var rest = location.href.substr(idx+1);
        var parts = rest.split('&'); 
        for (var i = 0; i < parts.length; i++) {
            var pair = parts[i].split('=');
            var name = pair[0];
            var val  = pair[1];
            if (('' + val) != '') {
                result[name] = val;
            }
        }
    }
    return result;
}

function getFromURL(paramName, defaultValue)
{
    var params = getParamsFromURL();
    return params[paramName];
}

function validateAddForm(f)
{
    var result    = true;
    var error_str = '';

    if (window.formData) 
        result = validateForm(f, window.formData)
        
    if (result) {
        var action = f.action;
        if (action != '') {
            if (action.match(/.*\/dboffice\/index\.php$/)) {
                f.action = window.location;
            }
        }
    }
        
    if (result) {
        var cid = getFromURL('cid');
        if (cid == '99') {
	        // the photos - at least 1 is required:
	        if (f['hi_upload1']) {
	            var field = f['hi_upload1'];
	            if (field.value == '') {
	                alert('Please upload at least one photo');
	                field.focus();
	                result = false;
	            }
	        }
        }
    }

    if (result) {
        error_str = limitGeneralAds(f)
        if (error_str != '') {
            alert(error_str);
            result = false;
        }
    }
    
    return result;
}

function GetLastModified(){

  var a,lm_year,lm_month,lm_day;
  a=new Date(document.lastModified);
  lm_year=a.getYear();lm_year=((lm_year<1000)?((lm_year<70)?2000:1900):0)+lm_year;
  lm_month=a.getMonth()+1;lm_month=((lm_month<10)?'0':'')+lm_month;
  lm_day=a.getDate();lm_day=((lm_day<10)?'0':'')+lm_day;
  return lm_year+'-'+lm_month+'-'+lm_day;

}


function GetCurDate() {

var today = new Date();
var date = today.getDate();
var day = today.getDay();
var month = today.getMonth();
var year = today.getYear();
var dayName;
var daySuffix;
var monthName;

if (day == 0) dayName = "Sunday";
else if (day == 1) dayName = "Monday";
else if (day == 2) dayName = "Tuesday";
else if (day == 3) dayName = "Wednesday";
else if (day == 4) dayName = "Thursday";
else if (day == 5) dayName = "Friday";
else if (day == 6) dayName = "Saturday";

if (month == 0) monthName = "January";
else if (month == 1) monthName = "February";
else if (month == 2) monthName = "March";
else if (month == 3) monthName = "April";
else if (month == 4) monthName = "May";
else if (month == 5) monthName = "June";
else if (month == 6) monthName = "July";
else if (month == 7) monthName = "August";
else if (month == 8) monthName = "September";
else if (month == 9) monthName = "October";
else if (month == 10) monthName = "November";
else if (month == 11) monthName = "December";

return (dayName + " " + monthName + " " + date + ", " + year);

}

window.popupWins = {};

function popUpWinIsOpen(sName)
{
    var w = window.popupWins[sName];
    return (w && (typeof(w) == "object") && (!w.closed)) ? w : null;
}

function popUp (sURL, sName, x, y, dx, dy, extra) {

    var extraParams = ',scrollbars=1,resizable=1';
    if (extra) {
        extraParams = extra;
    }
    var params = 'left='+x+',top='+y+',width='+dx+',height=' + dy +
                 extraParams;    

    sURL = sURL.replace(/&amp;/g, '&');
    if ( typeof( window.popupWins[sName] ) != "object" ){
        window.popupWins[sName] = window.open(sURL, sName, params);        
    } else {
        if (!window.popupWins[sName].closed) {
            if (sURL != '')
                window.popupWins[sName].location.href = sURL;
        } else {
            window.popupWins[sName] =
                window.open(sURL, sName, params);
        }
    }

    window.popupWins[sName].focus();
    return window.popupWins[sName];
/*
	window.open(sURL, sName, 'left='+x+',top='+y+',width='+dx+',height='+dy+',scrollbars=1,resizable=1');
*/
}

function GoURL(s) {
    s = s.replace(/&amp;/g, '&');
    document.location = s;
}

function GetBaseURL() {
    var current = location.href;
    var idx = current.indexOf('?');
    if (idx > -1) {
        current = current.substr(0, idx);
    }
    return current;
}

function Add2Fav(){
  if (document.all)
    window.external.AddFavorite(document.location.href,document.title)
}

function OpenHelp(s_url) {
  var w = window.screen.width / 2;
  var h = window.screen.height / 2;
  var w_s = window.screen.width / 4;
  var h_s = window.screen.height / 4;
  popUp(s_url,'HelpWin', w_s, h_s, w, h);
  return void(0);
}

function OpenPreview(s_url) {
  var w_s = 50;
  var h_s = 50;
  var w = window.screen.width;
  var h = window.screen.height;
  popUp(s_url,'PreviewWin', w_s, h_s, w-2*w_s, h-2*h_s-50);
}

function OpenImages(id,f){

    var url = 'index.php?page=images&id='+id+'&f='+f;
    var prefix = window.FFHome ? window.FFHome : '/dboffice/';
    OpenPreview(prefix + url);
}

function CloseImages() {
    if (parent) 
        parent.close()
    else
        window.close();
}

function hwReloadCat(page,cid,hwJsCats){

  var catbox = document.frm.cid;
  var new_cid = catbox.options[catbox.selectedIndex].value;
  var f1,f2,s1,s2;
  s1 = '|' + new_cid + '|';
  s2 = '|' + cid + '|';

  for (i = 0; i < hwJsCats.length; i++) {
    f1 = hwJsCats[i].indexOf(s1) != -1;
    f2 = hwJsCats[i].indexOf(s2) != -1;
    if(f1 && f2) return;
    if(f1 || f2) break;
  }
  
  var ch_sep = page.indexOf('?') != -1 ? '&' : '?';  
  document.location = page + ch_sep + 'cid=' + new_cid;
}

function hwReloadCat2(page,currentCid,selbox)
{
  var new_cid = selbox.options[selbox.selectedIndex].value;
  if (new_cid != currentCid) {
    var url = 'index.php?page=' + page + '&cid=' + new_cid;
    var theme = getFromURL('theme', '');
    if (theme) {
        url += '&theme=' + theme;
    }
    document.location = url;
  }
}

var activeBusinessType = 0;
function businessTypeChanged(elt)
{
    if (activeBusinessType > 0) {
        var detailsElt = 
            document.getElementById('btype-' + activeBusinessType + '-details');
        if (detailsElt) {
            detailsElt.style.display = 'none';
        }
    }
    var typeId = elt.options[elt.selectedIndex].value
    if (typeId > 0) {
        var detailsElt = 
            document.getElementById('btype-' + typeId + '-details');
        if (detailsElt) {
            detailsElt.style.display = 'block';
        }
        activeBusinessType = typeId
    }
}

function disableCheckboxes(btypeId, disabled)
{
    var elt = document.getElementById('btype-' + btypeId + '-details');
    if (elt) {
        for (i in elt.childNodes) {
            var c1 =  elt.childNodes[i];
            for (j in c1.childNodes) {
                var c2 = c1.childNodes[j]
                if (c2.type == 'checkbox') {
                    c2.disabled = disabled
                }
            }
        }
    }
}

function activateDetailsElt(bTypeId, activate)
{
    var elt = document.getElementById('btype-' + bTypeId + '-radios');
    if (elt) {
        elt.className = activate ? 'businessTypeActive' : ''
    }
    disableCheckboxes(bTypeId, ! activate);
}

function businessTypeRadioChanged(formName, name, id)
{
    if (id != 0) {
        checkRadioButton(formName, name, id);
        // disable current checkboxes:
        if (activeBusinessType) {
            activateDetailsElt(activeBusinessType, false);
        }
        // enable all child checkboxes:
        activateDetailsElt(id, true);
        activeBusinessType = id 
    }
}

function checkRadioButton(formName, name, id)
{
    var idString = 'btype-' + id;
    buttons = document.forms[formName][name]
    for (i = 0; i < buttons.length; i++) {
        buttons[i].checked = (buttons[i].id == idString);
    }
}

function adRenew(txt)
{
    var elt;
    elt = document.getElementById('ad-exp-date');
    if (elt) {
        elt.innerHTML = txt;
        elt.className = 'ad-renewed-date';
    }
    elt = document.getElementById('ad-renew-elt');
    if (elt) {
        elt.innerHTML = 'The Ad will become renewed.';
    }
    elt = document.getElementById('ad_renew_hidden');
    if (elt) {
        elt.value = 1;
    }
}

/* Add/Modify Ad: ff/ffx/mysite checkbox clicked */
function adPlacementAddModifyChanged(checkboxId)
{
    /*
    var f = document.forms.frm;
    var product = '';
    var chk = document.getElementById(checkboxId);
    if (chk.checked && (f.f_prod_cat.selectedIndex != -1)) {
        product = f.f_prod_cat.options[f.f_prod_cat.selectedIndex].value
        // get the context from the checkbox's name:
        var i1 = checkboxId.indexOf('[');
        var i2 = checkboxId.indexOf(']');
        var area = checkboxId.substring(i1+1, i2)
        alert('-' + area + '-');
        //if (window.generalAdsCount && window.generalAdsCount['ff'][product])
    }
    */
}

function ajaxResponse(response)
{
    var s = response;
    if (s.substr(0, 9) == 'REDIRECT:') {
        var targetURL = s.substr(9);
        alert('You have to re-login to access this resource');
        response.responseText = '';
        location.href = targetURL;
    } 
}

function trimString(s)
{
    var result = s.replace(/^\s+/, '');
    result = s.replace(/\s+$/, '');
    return result;
}

function trimElement(elt)
{
    elt.value = trimString(elt.value);
}

function getNumberFromId(s)
{
    var i = s.lastIndexOf('-');
    return s.substr(i + 1);
}

function getElt(id)
{
    return document.getElementById(id);
}

function hideElt(id, visibility)
{

    var elt = getElt(id)
    if (elt)
        if (visibility)
            elt.style.visibility = 'hidden';
        else
            elt.style.display = 'none';
}

function showElt(id, visibility)
{
    var elt = getElt(id)
    if (elt) {
        if (elt.tagName.toUpperCase() == 'SPAN') {
            elt.style.display = 'inline';
        } else {
            if (visibility)
                elt.style.visibility = 'visible';
            else
                elt.style.display = 'block';
        }
    }
}

function setElt(id, html)
{
    var elt = getElt(id)
    if (elt)
        elt.innerHTML = html;
}

function checkboxIsSet(name)
{
    var result = false;
    var e = document.getElementById(name)
    if (e)
        result = e.checked
    return result;

}

function checkToggle(name)
{
    var e = document.getElementById(name)
    if (e) {
        e.checked = !e.checked 
    }
}

function inchesToFeetExact(inches)
{
   return Math.floor((inches-3)/6)/2+0.5;
}

function validEmail(email)
{
    var filter = 
        /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    return filter.test(email);
}

function validZip(zip)
{
    return /^[A-Z0-9]{5}/.test(zip);
}

function numberWide(number, width)
{
    number = '' + number;
    var diff = width - number.length
    for (var i = 1; i <= diff; i++)
        number = '0' + number
    return number
}

function callJS(url)
{
    var head = document.getElementsByTagName('head').item(0);
	var old  = document.getElementById('lastLoadedCmds');
	if (old) 
        head.removeChild(old);
	script = document.createElement('script');
	script.src   = url;
	script.type  = 'text/javascript';
	//script.defer = true;
	script.id = 'lastLoadedCmds';
	void(head.appendChild(script));
}

function initFileUploads(picture) {

    var W3CDOM = (document.createElement && document.getElementsByTagName);
    if (!W3CDOM) return;

    var fakeFileUpload = document.createElement('div');
    fakeFileUpload.className = 'fakefile';
    
    //fakeFileUpload.appendChild(document.createElement('input'));

    var button = document.createElement('input');
    button.type = 'button';
    button.value = "Select ...";
    //button.style.width = '80px';

    var image = document.createElement('img');
    //image.src = window.FFHome + 'img/button_select.gif';

    image.src = window.FFHome + 'img/' + picture;

    fakeFileUpload.appendChild(button);

    //fakeFileUpload.appendChild(image);
    
    var x = document.getElementsByTagName('input');
    for (var i=0;i<x.length;i++) {
        if (x[i].type != 'file') continue;
        if (x[i].parentNode.className != 'fileinputs') continue;
        x[i].className = 'file hidden';

        var clone = fakeFileUpload.cloneNode(true);
        x[i].parentNode.appendChild(clone);
        //x[i].relatedElement = clone.getElementsByTagName('input')[0];
        //x[i].onchange = x[i].onmouseout = function () {
        //   this.relatedElement.value = this.value;
        //}
    }
}


callJS('/dboffice/img/prevNext.js?v=1');

