var ocs_form = null;
var ocs_autosubmit_coregOnClick = false;
var ocs_popup_window_top = 0;
var ocs_popup_window_left = 0;
var ocs_popup_window_height = 590;
var ocs_popup_window_width = 790;
var ocs_popup_window_scrollbars = 'yes';
var ocs_popup_window_resizable = 'yes';
var ocs_popup_window_location = 'yes';
var ocs_popup_window_menubar = 'yes';
var ocs_popup_window_directories = 'yes';
var ocs_popup_window_status = 'yes';
var ocs_xml_loader_base_url = '/tools.mp?f=ocsxml&url=';
var ocs_pixellog_base_url = '';

/* DEFINE THE MULTIPURPOSE OCS CLASS */
function OCS_CLASS() {
        this._ocs_r0X0rZ = true;
        this.System = new Array();
        this.System.js_version = '$Revision: 1.37 $';
	this.System.version = '0.0';
	this.Offer = new Array();
	this.Offer.flags = new Array();
	this.Offer.Product2CreativeMap = new Array();
	this.Offer.Creative2ProductMap = new Array();
	this.Offer.ProfileID = 0;
}

var OCS = new OCS_CLASS();

var ocs_log_enabled = false;


/* VARIOUS DEBUGGING FUNCTIONS */

function getProperties(obj){
	var properties = '';

	for (var propName in obj){
		properties += propName+"="+obj[propName]+"\n";
	}

	return properties;
}


/* ocs_form GENERAL FUNCTIONS */

function ocs_form_submit(obj) {
	if((obj) && (obj.form)) {
		if(obj.form.onsubmit()) {
			obj.form.submit();
		}
	}
	else if((ocs_form) && (ocs_form != null)) {
		if((!ocs_form.onsubmit) || (ocs_form.onsubmit())) {
			ocs_form.submit();
		}
/*
		if(ocs_form.onsubmit) {
			if(ocs_form.onsubmit()) {
			ocs_form.submit();
		}
*/
	}
}


/* ocs_layer VARIOUS FUNCTIONS USEFUL FOR LAYER HIDE/SHOW MANIPULATION */

var ocs_layerStateArray = new Array();

function ocs_layer_expander(layerName,mode) {
	var l, lstate;
	if(document.getElementById) {
		l = document.getElementById(layerName);
		lstate = document.getElementById("ocs_layerStates");

		ocs_layerStateArray[layerName] = mode;

		if((l) && (l.style)) {
			if(mode == -1) {
				l.style.display= (l.style.display == 'block')?'none':'block';
			}
			else {
				l.style.display= (mode==1)?'block':'none';
			}
		}

		if(lstate) {
			lstate.value='';
			for(var i in ocs_layerStateArray) {
				lstate.value += i + "=" + ocs_layerStateArray[i] + ",";
			}
		}
		return true;
	}
	return false;
}

function ocs_layer_getstate(layerName) {
	var l;
	if(document.getElementById) {
		l = document.getElementById(layerName);

		if((l) && (l.style)) {
			return (l.style.display == 'none') ? 0 : 1;
		}
	}

	return -1;
}

function ocs_layer_initstate() {
	var lstate;
	if(document.getElementById) {
		lstate = document.getElementById("ocs_layerStates");
		var layerArr = lstate.value.split(',');

		for (var i=0; i<layerArr.length; i++) {
			if(layerArr[i] != '') {
				var tmpArr = layerArr[i].split('=');
				ocs_layer_expander(tmpArr[0], tmpArr[1]);
			}
		}
	}
}

/* ocs_pendingList FUNCTIONS */

function ocs_pendingList_add(c) {
        ocs_pendingList_remove(c);
	c = OCS.Offer.ProfileID + ':' + c;
        var p = ocs_form['ocs_pendingList'];
        if(p) {
                var x = p.value.split(',');
                x.push(c);
                if(x[0] == '') { x.shift(); }
                p.value = x.join(',');
        }
}

function ocs_pendingList_remove(c) {
	c = OCS.Offer.ProfileID + ':' + c;
        var p = ocs_form['ocs_pendingList'];
        if(p) {
                var x = p.value.split(',');
                var z = new Array();
                
                for(var y=x.shift(); y; y=x.shift()) {
                        if((y != '') && (y != c)) {
                                z.push(y);
                        }
                }
                p.value = z.join(',');
        }
}


/* ocs_listing VARIOUS FUNCTIONS USEFUL FOR LISTING MODE */

function ocs_listing_isAllChecked(formPtr) {
        var f=formPtr;
	if(!formPtr) { f = ocs_form; }

	var aggregatedList = new Array();
	var i;
	for(i=0; i<f.elements.length; i++) {
		var e = f.elements[i];
                var t=e.name;

                if((t.slice(0,6) == "ocs_c_") || (t.slice(0,11) == "ocs_ignore_")) {
			if((!aggregatedList[e.name]) || (aggregatedList[e.name] == false)) {
				aggregatedList[e.name] = e.checked;
			}
                }
        }

	for(i in aggregatedList) {
		if(aggregatedList[i] == false) {
			return false;
		}
	}

        return true;
}

function ocs_listing_numYesNo(formPtr, query) {
        var f=formPtr;
	if(!formPtr) { f = ocs_form; }

	var numNo = 0, numYes = 0;

	for(var i=0; i<f.elements.length; i++) {
		var e = f.elements[i];

			var t=e.name;
			if((t.slice(0,6) == "ocs_c_") || (t.slice(0,11) == "ocs_ignore_")){
				if(e.checked == true) {
					if(e.value == "NO") {
						numNo++;
					}
					else {
						numYes++;
					}
				}
			}
        }

        return ((query) && (query == 'NO')) ? numNo : numYes;
}

function ocs_listing_notChecked(formPtr, marker) {
	var f = formPtr;
	if(!formPtr) { f = ocs_form; }

	var answerList = new Array();

	var i=0;
	for(i=0;i<f.elements.length;i++){
		var e = f.elements[i];
		var t = e.name;
		if ((t.slice(0,6) == "ocs_c_") || (t.slice(0,11) == "ocs_ignore_")){
			if ( (!answerList[t]) || (answerList[t] == false) ){
				answerList[t] = e.checked;
			}
		}
	}

	for (i in answerList){
		var nameSplit = i.split("_");
		var markerId = "ocs_marker_" + nameSplit[2];
		var divTag = document.getElementById(markerId);
		if (divTag){
			divTag.innerHTML = '';
			if (answerList[i] == false){
				divTag.innerHTML = marker;
			}
		}	
	}
}

function ocs_listing_expander(formPtr, coregconfirmName, layerName, value) {
	var f = formPtr;
	if(!formPtr) { f = ocs_form; }

	if(value == 'YES') {
		var sliceStop = coregconfirmName.indexOf('_coregconfirm') + 1;

		if(sliceStop <= -1) { return false; }
		var sample = coregconfirmName.slice(0, sliceStop);

		for(var i=0; i<f.elements.length; i++) {
			var e = f.elements[i];
			var t=e.name;
			if((t.slice(0, sliceStop) == sample) && (t.indexOf('_coregconfirm') <= -1) && (e.type != 'hidden')) {
				ocs_layer_expander(layerName, 1);
				return true;
			}
		}

		// No non-hidden fields found
		if((ocs_autosubmit_coregOnClick) && (ocs_autosubmit_coregOnClick == true)) {
			ocs_form_submit();
		}
	}
	else if(value == 'NO') {
		ocs_layer_expander(layerName, 0);
		if((ocs_autosubmit_coregOnClick) && (ocs_autosubmit_coregOnClick == true)) {
			ocs_form_submit();
		}
	}

	return false;
}


function ocs_register_ui(label, obj) {
	if(!obj) { return false; }
	if(label == 'previous') {
		obj.onclick = function() {
				if(ocs_log_enabled == true) { ocs_log('PREVIOUS_BUTTON'); }
				obj.disabled = true;
				ocs_form['ocs_ui_command'].value = 'previous';
				ocs_form_submit();
				return false;
		}
		return true;
	}
	else if(label == 'next') {
		obj.onclick = function() {
				if(ocs_log_enabled == true) { ocs_log('NEXT_BUTTON'); }
				obj.disabled = true;
				ocs_form['ocs_ui_command'].value = 'next';
				ocs_form_submit();
				return false;
		}
		return true;
	}
	else if(label == 'skip') {
		obj.onclick = function() {
				if(ocs_log_enabled == true) { ocs_log('SKIP_BUTTON'); }
				obj.disabled = true;
				ocs_form['ocs_ui_command'].value = 'skip';
				ocs_form_skip();
				return false;
		}
		return true;
	}
	else if(label == 'submit') {
		obj.onclick = function() {
			//if(ocs_log_enabled == true) { ocs_log('SUBMIT_BUTTON'); }
			obj.disabled = true;
			ocs_form['ocs_ui_command'].value = '';
			ocs_form_submit();
			return false;
		}
		return true;
	}

}

function ocs_form_skip(formPtr) {
	var f=formPtr;
	if(!formPtr) { f = ocs_form; }

	for(var i=0; i<f.elements.length; i++) {
		var e=f.elements[i];
		var t=e.name;
		var o;
		if((t.slice(0,5) == "ocs_p") && (t.slice(-12) == "coregconfirm")) {
			if(e.type.slice(0,6) == 'select') {
				for(o=0; o<e.options.length; o++) {
					if(e.options[o].value == "NO") {
						e.selectedIndex = o;
					}
				}
			}
			else {
				if(e.value == "NO") {
					e.checked = true;
				}
			}
		}
		else if((t.slice(0,6) == "ocs_c_") || (t.slice(0,11) == "ocs_ignore_")) {
			if(e.type.slice(0,6) == 'select') {
				for(o=0; o<e.options.length; o++) {
					if(e.options[o].value == "NO") {
						e.selectedIndex = o;
					}
				}
			}
			else {
				if(e.value == "NO") {
					e.checked = true;
				}
			}
		}
	}

	ocs_form_submit();
}



/* ocs_register VARIOUS OBJECT REGISTRATION FUNCTIONS */

var ocs_errorCheckChain = new Array();
var ocs_onSubmitChain = new Array();

function ocs_register_form(formPtr) {
	if(formPtr == null) { return; }
	if(formPtr == ocs_form) { return; }

	if(ocs_form != null) {
		if(ocs_form.oldonsubmit) {
			ocs_form.onsubmit = ocs_form.oldonsubmit;
			ocs_form.oldonsubmit = null;
		}
	}

	ocs_form = formPtr;

	if(ocs_form.onsubmit) {
		ocs_form.oldonsubmit = ocs_form.onsubmit;
	}

	ocs_form.onsubmit = function () {
		var i;
		for(i=0; i<ocs_errorCheckChain.length; i++) {
			if(eval(ocs_errorCheckChain[i]) == false) {
				return false;
			}
		}

		for(i=0; i<ocs_onSubmitChain.length; i++) {
			if(eval(ocs_onSubmitChain[i]) == false) {
				return false;
			}
		}

		if((ocs_form.oldonsubmit) && (ocs_form.oldonsubmit != null)) {
			return ocs_form.oldonsubmit();
		}

		return true;
	}

}

function ocs_register_onSubmit(funcCall, chainEnd) {
	if(funcCall.indexOf('(') > -1) {
		(chainEnd == 0) ? ocs_onSubmitChain.unshift(funcCall) : ocs_onSubmitChain.push(funcCall);
	}
	else {
		(chainEnd == 0) ? ocs_onSubmitChain.unshift(funcCall + "(ocs_form)") : ocs_onSubmitChain.push(funcCall + "(ocs_form)");
	}
}

var ocs_onLoadChain = new Array();
function ocs_register_onLoad(funcCall, chainEnd) {
	if(funcCall.indexOf('(') > -1) {
		(chainEnd == 0) ? ocs_onLoadChain.unshift(funcCall) : ocs_onLoadChain.push(funcCall);
	}
	else {
		(chainEnd == 0) ? ocs_onLoadChain.unshift(funcCall + "(ocs_form)") : ocs_onLoadChain.push(funcCall + "(ocs_form)");
	}
}


var ocs_onUnloadChain = new Array();
function ocs_register_onUnload(funcCall, chainEnd) {
	if(funcCall.indexOf('(') > -1) {
		(chainEnd == 0) ? ocs_onUnloadChain.unshift(funcCall) : ocs_onUnloadChain.push(funcCall);
	}
	else {
		(chainEnd == 0) ? ocs_onUnloadChain.unshift(funcCall + "(ocs_form)") : ocs_onUnloadChain.push(funcCall + "(ocs_form)");
	}
}


var ocs_signalHistory = new Array();
var ocs_signalChain = new Array();
function ocs_register_signal(name, value, funcCall, retroactiveFlag, chainEnd) {
	var i = new Array(name, value, funcCall);
	(chainEnd == 0) ? ocs_signalChain.unshift(i) : ocs_signalChain.push(i);

	if(retroactiveFlag == true) {
		for(i=0; i<ocs_signalHistory.length; i++) {
			if(ocs_signalHistory[i][0] == name) {
				if((ocs_signalHistory[i][1] == value) || (value == '*')) {
					var call = funcCall;
					if(call.indexOf('(') <= -1) {
						call = call + "('" + ocs_signalHistory[i][0] + "', '" + ocs_signalHistory[i][1] + "');";
					}
					if((call.length > 0) && (eval(call) == true)) {
					}
					else { }
				}
			}
		}
	}
}

function ocs_signal(name, value) {
	if(name.length <= 0) { return(false); }

	var sig = new Array(name, value);
	ocs_signalHistory.push(sig);

	for(var i=0; i<ocs_signalChain.length; i++) {
		if(ocs_signalChain[i][0] == name) {
			if((ocs_signalChain[i][1] == value) || (ocs_signalChain[i][1] == '*')) {
				var funcCall = ocs_signalChain[i][2];
				if(funcCall.indexOf('(') <= -1) {
					funcCall = funcCall + "('" + name + "', '" + value + "');";
				}
				if((funcCall.length > 0) && (eval(funcCall) == true)) {

				}
				else { }
			}
		}
        }
	return(true);
}

function ocs_register_errorChecker(funcCall) {
	if(funcCall.indexOf('(') > -1) {
		ocs_errorCheckChain.push(funcCall);
	}
	else {
		ocs_errorCheckChain.push(funcCall + "(ocs_form)");
	}
}


var ocs_coregOnClickChain = new Array();
function ocs_register_coregOnClick(name, value, funcCall, chainEnd) {
	var i;
	if(funcCall.indexOf('(') > -1) {
		i = new Array(name, value, funcCall);
		(chainEnd == 0) ? ocs_coregOnClickChain.unshift(i) : ocs_coregOnClickChain.push(i);
	}
	else {
		i = new Array(name, value, funcCall + "('" + name + "', '" + value + "')");
		(chainEnd == 0) ? ocs_coregOnClickChain.unshift(i) : ocs_coregOnClickChain.push(i);
	}
}

/* ocs_error PROCESSING FUNCTIONS */

var ocs_errorArray = new Array();
function ocs_error_add(ocsnamespace, error, fieldname, hidebinds) {
	var i = new Array(ocsnamespace, error, fieldname, hidebinds);
        ocs_errorArray.push(i);
}

function ocs_error_alert(ocsnamespace) {
        var errorMsg = '';
        var i;

	return true; // Let the server handle the error reporting

	i = ocs_errorArray.shift();
        while(i) {
                errorMsg += "\t- "+ i[1] + "\n";
		i = ocs_errorArray.shift();
        }

        if(errorMsg.length > 0) {
                document.location = '#' + ocsnamespace + 'offerAnchor';
                alert('There were errors in your submission:\n' + errorMsg);
                return false;
        }
        return true;
}

function ocs_error_setPassthru() {
	var i;
	i = ocs_errorArray.shift();
	while(i) {
		ocs_form[i[0] + 'jsErrorPassThru'].value += "|" + ((i[2]!=undefined)?i[2]:'') + "^" + ((i[1]!=undefined)?i[1]:'') + "^" + ((i[3]!=undefined)?i[3]:'');
		i = ocs_errorArray.shift();
	}

	return true;
}


/* ocs_coregOnClick HANDLER DRIVER FOR coregconfirm BUTTON BLOCKS */

var ocs_coregOnClick_reentrant_lock = false;
function ocs_coregOnClick(name, value) {

	if(ocs_coregOnClick_reentrant_lock) { return; }   // protect against reentrant calls to ocs_coregOnClick() (wouldn't want recursion)
	ocs_coregOnClick_reentrant_lock = true;

	for(var i=0; i<ocs_coregOnClickChain.length; i++) {
		if(((name == '*') || (ocs_coregOnClickChain[i][0] == '*') || (ocs_coregOnClickChain[i][0] == name)) && ((value == '*') || (ocs_coregOnClickChain[i][1] == '*') || (ocs_coregOnClickChain[i][1] == value))) {
			eval(ocs_coregOnClickChain[i][2]);
		}
	}

	ocs_coregOnClick_reentrant_lock = false;
}


/* ocs_check VARIOUS CHECKING ROUTINES FOR BLOCKS OF FORM FIELDS */

function ocs_check_radioSetChecked(radioObj) {
        var options = radioObj.options;

	var i;
        for (i in options) {
                if(options[i].checked) {
                        return true;
                }
        }
        return false;
}


/* ocs_toggle_button */
var ocs_toggle_button_lock = false;
function ocs_toggle_button(name) {
	if(ocs_form[name]) {
		var buttonSet = ocs_form[name];

		if(buttonSet) { 
			if(ocs_toggle_button_lock) { return; }
			ocs_toggle_button_lock = true;

			if (buttonSet.length) {
				var toggled=false;
				for(var i=0; i<buttonSet.length; i++) {
					if(buttonSet[i].checked) {
						if(buttonSet[(i+1)%buttonSet.length].click) {
							buttonSet[(i+1)%buttonSet.length].click();
							toggled = true;
							break;
						}
					}
				}
				if(!toggled) {
					if(buttonSet[0].click) {
						buttonSet[0].click();
					}
				}
			}
			else {
				if(buttonSet.click) {
					buttonSet.click();
				}
			}

			ocs_toggle_button_lock = false;
		}
	}

}


/* ocs_xml_loader */
var ocs_xml_req_arr = new Array();

function ocs_xml_prefill_object(destTarget, responseText, selectValue) {
	if(document.getElementById(destTarget)) {
		dest = document.getElementById(destTarget);
	}
	else if(ocs_form[destTarget]) {
		dest = ocs_form[destTarget];
	}
	else {
		return;
	}

	if(dest) {
		if(dest.type) {
			if(dest.type.slice(0,6) == 'select') {
				var arr = responseText.split('\n');
				if(!dest.options) {
					dest.options = new Array();
				}
				dest.options.length = 0;
				for(var i=0; i<arr.length; i++) {
					if(arr[i].length > 0) {
						var pair = arr[i].split('=');
						if((pair[0].length > 0) || (pair[1].length > 0)) {
							dest.options[i] = new Option(pair[1],pair[0]);
						}
					}
				}
				dest.value = selectValue;
			}
		}
		else if(dest.innerHTML) {
			dest.innerHTML = responseText;
		}
	}
}


function ocs_xml_loader(xml_url, destTarget, selectValue) {

	xml_url = ocs_xml_loader_base_url + escape(xml_url);

//alert(xml_url);
        var req;
        if(window.XMLHttpRequest) {
                req = new XMLHttpRequest();
        }
        else if(window.ActiveXObject) {
                req = new ActiveXObject('Microsoft.XMLHTTP');
        }
        var i=0;
        ocs_xml_req_arr[i=ocs_xml_req_arr.length] = req;

	var callback_js = 'var req=ocs_xml_req_arr['+i+'];' +
			'if((req.readyState==4) && (req.status==200)) { ocs_xml_prefill_object("'+destTarget+'", req.responseText, "'+((selectValue)?selectValue:'')+'"); }';

        if(ocs_xml_req_arr[i]) {
                ocs_xml_req_arr[i].onreadystatechange =  new Function(callback_js);
                ocs_xml_req_arr[i].open("GET", xml_url, true);
                (window.XMLHttpRequest) ?  ocs_xml_req_arr[i].send(null) : ocs_xml_req_arr[i].send();
        }
}


/* ocs_onLoad/ocs_onUnload FUNCTIONS TO EXECUTE onLoad AND onUnload CHAINS */

function ocs_onLoad() {
	for(var i=0; i<ocs_onLoadChain.length; i++) {
		if(eval(ocs_onLoadChain[i]) == false) {
			return false;
		}
	}
	return true;
}

function ocs_onUnload() {
	for(var i=0; i<ocs_onUnloadChain.length; i++) {
		if(eval(ocs_onUnloadChain[i]) == false) {
			return false;
		}
	}
	return true;
}

function ocs_pixellog(params) {
	var url = ocs_pixellog_base_url + params;

	if((ocs_pixellog_base_url.length > 0) && (params.length > 0)) {
		var x = new Image();
		x.src = url;
	}
}

/* EXECUTED CODE BELOW */

if(document.forms[0]) {
	ocs_register_form(document.forms[0]);	// we register the first form on the page by default
}

ocs_register_onSubmit('ocs_error_setPassthru()'); // register jserror passthru handler


